Files
qt5-legatus-legacy/Lts/Tools/ArAssetsV2/www/main.js
T
2026-08-13 18:33:10 +02:00

1 line
508 KiB
JavaScript
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
!function(){return function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){return o(e[i][1][r]||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}}()({1:[function(require,module,exports){!function(window){"use strict";var minErrConfig={objectMaxDepth:5,urlErrorParamsEnabled:!0};function errorHandlingConfig(config){if(!isObject(config))return minErrConfig;isDefined(config.objectMaxDepth)&&(minErrConfig.objectMaxDepth=isValidObjectMaxDepth(config.objectMaxDepth)?config.objectMaxDepth:NaN),isDefined(config.urlErrorParamsEnabled)&&isBoolean(config.urlErrorParamsEnabled)&&(minErrConfig.urlErrorParamsEnabled=config.urlErrorParamsEnabled)}function isValidObjectMaxDepth(maxDepth){return isNumber(maxDepth)&&maxDepth>0}function minErr(module,ErrorConstructor){ErrorConstructor=ErrorConstructor||Error;var url="https://errors.angularjs.org/1.7.7/",regex=url.replace(".","\\.")+"[\\s\\S]*",errRegExp=new RegExp(regex,"g");return function(){var paramPrefix,i,code=arguments[0],template=arguments[1],message="["+(module?module+":":"")+code+"] ",templateArgs=sliceArgs(arguments,2).map(function(arg){return toDebugString(arg,minErrConfig.objectMaxDepth)});if(message+=template.replace(/\{\d+\}/g,function(match){var index=+match.slice(1,-1);return index<templateArgs.length?templateArgs[index].replace(errRegExp,""):match}),message+="\n"+url+(module?module+"/":"")+code,minErrConfig.urlErrorParamsEnabled)for(i=0,paramPrefix="?";i<templateArgs.length;i++,paramPrefix="&")message+=paramPrefix+"p"+i+"="+encodeURIComponent(templateArgs[i]);return new ErrorConstructor(message)}}var msie,jqLite,jQuery,angularModule,REGEX_STRING_REGEXP=/^\/(.+)\/([a-z]*)$/,VALIDITY_STATE_PROPERTY="validity",hasOwnProperty=Object.prototype.hasOwnProperty,lowercase=function(string){return isString(string)?string.toLowerCase():string},uppercase=function(string){return isString(string)?string.toUpperCase():string},slice=[].slice,splice=[].splice,push=[].push,toString=Object.prototype.toString,getPrototypeOf=Object.getPrototypeOf,ngMinErr=minErr("ng"),angular=window.angular||(window.angular={}),uid=0;function isArrayLike(obj){if(null==obj||isWindow(obj))return!1;if(isArray(obj)||isString(obj)||jqLite&&obj instanceof jqLite)return!0;var length="length"in Object(obj)&&obj.length;return isNumber(length)&&(length>=0&&length-1 in obj||"function"==typeof obj.item)}function forEach(obj,iterator,context){var key,length;if(obj)if(isFunction(obj))for(key in obj)"prototype"!==key&&"length"!==key&&"name"!==key&&obj.hasOwnProperty(key)&&iterator.call(context,obj[key],key,obj);else if(isArray(obj)||isArrayLike(obj)){var isPrimitive="object"!=typeof obj;for(key=0,length=obj.length;key<length;key++)(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("function"==typeof obj.hasOwnProperty)for(key in obj)obj.hasOwnProperty(key)&&iterator.call(context,obj[key],key,obj);else for(key in obj)hasOwnProperty.call(obj,key)&&iterator.call(context,obj[key],key,obj);return obj}function forEachSorted(obj,iterator,context){for(var keys=Object.keys(obj).sort(),i=0;i<keys.length;i++)iterator.call(context,obj[keys[i]],keys[i]);return keys}function reverseParams(iteratorFn){return function(value,key){iteratorFn(key,value)}}function nextUid(){return++uid}function setHashKey(obj,h){h?obj.$$hashKey=h:delete obj.$$hashKey}function baseExtend(dst,objs,deep){for(var h=dst.$$hashKey,i=0,ii=objs.length;i<ii;++i){var obj=objs[i];if(isObject(obj)||isFunction(obj))for(var keys=Object.keys(obj),j=0,jj=keys.length;j<jj;j++){var key=keys[j],src=obj[key];deep&&isObject(src)?isDate(src)?dst[key]=new Date(src.valueOf()):isRegExp(src)?dst[key]=new RegExp(src):src.nodeName?dst[key]=src.cloneNode(!0):isElement(src)?dst[key]=src.clone():(isObject(dst[key])||(dst[key]=isArray(src)?[]:{}),baseExtend(dst[key],[src],!0)):dst[key]=src}}return setHashKey(dst,h),dst}function extend(dst){return baseExtend(dst,slice.call(arguments,1),!1)}function merge(dst){return baseExtend(dst,slice.call(arguments,1),!0)}function toInt(str){return parseInt(str,10)}msie=window.document.documentMode;var isNumberNaN=Number.isNaN||function(num){return num!=num};function inherit(parent,extra){return extend(Object.create(parent),extra)}function noop(){}function identity($){return $}function valueFn(value){return function(){return value}}function hasCustomToString(obj){return isFunction(obj.toString)&&obj.toString!==toString}function isUndefined(value){return void 0===value}function isDefined(value){return void 0!==value}function isObject(value){return null!==value&&"object"==typeof value}function isBlankObject(value){return null!==value&&"object"==typeof value&&!getPrototypeOf(value)}function isString(value){return"string"==typeof value}function isNumber(value){return"number"==typeof value}function isDate(value){return"[object Date]"===toString.call(value)}function isArray(arr){return Array.isArray(arr)||arr instanceof Array}function isError(value){switch(toString.call(value)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return value instanceof Error}}function isFunction(value){return"function"==typeof value}function isRegExp(value){return"[object RegExp]"===toString.call(value)}function isWindow(obj){return obj&&obj.window===obj}function isScope(obj){return obj&&obj.$evalAsync&&obj.$watch}function isBoolean(value){return"boolean"==typeof value}function isPromiseLike(obj){return obj&&isFunction(obj.then)}noop.$inject=[],identity.$inject=[];var TYPED_ARRAY_REGEXP=/^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/;var trim=function(value){return isString(value)?value.trim():value},escapeForRegexp=function(s){return s.replace(/([-()[\]{}+?*.$^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")};function isElement(node){return!(!node||!(node.nodeName||node.prop&&node.attr&&node.find))}function nodeName_(element){return lowercase(element.nodeName||element[0]&&element[0].nodeName)}function includes(array,obj){return-1!==Array.prototype.indexOf.call(array,obj)}function arrayRemove(array,value){var index=array.indexOf(value);return index>=0&&array.splice(index,1),index}function copy(source,destination,maxDepth){var obj,value,stackSource=[],stackDest=[];if(maxDepth=isValidObjectMaxDepth(maxDepth)?maxDepth:NaN,destination){if((value=destination)&&isNumber(value.length)&&TYPED_ARRAY_REGEXP.test(toString.call(value))||(obj=destination,"[object ArrayBuffer]"===toString.call(obj)))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.");return isArray(destination)?destination.length=0:forEach(destination,function(value,key){"$$hashKey"!==key&&delete destination[key]}),stackSource.push(source),stackDest.push(destination),copyRecurse(source,destination,maxDepth)}return copyElement(source,maxDepth);function copyRecurse(source,destination,maxDepth){if(--maxDepth<0)return"...";var key,h=destination.$$hashKey;if(isArray(source))for(var i=0,ii=source.length;i<ii;i++)destination.push(copyElement(source[i],maxDepth));else if(isBlankObject(source))for(key in source)destination[key]=copyElement(source[key],maxDepth);else if(source&&"function"==typeof source.hasOwnProperty)for(key in source)source.hasOwnProperty(key)&&(destination[key]=copyElement(source[key],maxDepth));else for(key in source)hasOwnProperty.call(source,key)&&(destination[key]=copyElement(source[key],maxDepth));return setHashKey(destination,h),destination}function copyElement(source,maxDepth){if(!isObject(source))return source;var index=stackSource.indexOf(source);if(-1!==index)return stackDest[index];if(isWindow(source)||isScope(source))throw ngMinErr("cpws","Can't copy! Making copies of Window or Scope instances is not supported.");var needsRecurse=!1,destination=function(source){switch(toString.call(source)){case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Float32Array]":case"[object Float64Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return new source.constructor(copyElement(source.buffer),source.byteOffset,source.length);case"[object ArrayBuffer]":if(!source.slice){var copied=new ArrayBuffer(source.byteLength);return new Uint8Array(copied).set(new Uint8Array(source)),copied}return source.slice(0);case"[object Boolean]":case"[object Number]":case"[object String]":case"[object Date]":return new source.constructor(source.valueOf());case"[object RegExp]":var re=new RegExp(source.source,source.toString().match(/[^/]*$/)[0]);return re.lastIndex=source.lastIndex,re;case"[object Blob]":return new source.constructor([source],{type:source.type})}if(isFunction(source.cloneNode))return source.cloneNode(!0)}(source);return void 0===destination&&(destination=isArray(source)?[]:Object.create(getPrototypeOf(source)),needsRecurse=!0),stackSource.push(source),stackDest.push(destination),needsRecurse?copyRecurse(source,destination,maxDepth):destination}}function simpleCompare(a,b){return a===b||a!=a&&b!=b}function equals(o1,o2){if(o1===o2)return!0;if(null===o1||null===o2)return!1;if(o1!=o1&&o2!=o2)return!0;var length,key,keySet,t1=typeof o1;if(t1===typeof o2&&"object"===t1){if(!isArray(o1)){if(isDate(o1))return!!isDate(o2)&&simpleCompare(o1.getTime(),o2.getTime());if(isRegExp(o1))return!!isRegExp(o2)&&o1.toString()===o2.toString();if(isScope(o1)||isScope(o2)||isWindow(o1)||isWindow(o2)||isArray(o2)||isDate(o2)||isRegExp(o2))return!1;for(key in keySet=createMap(),o1)if("$"!==key.charAt(0)&&!isFunction(o1[key])){if(!equals(o1[key],o2[key]))return!1;keySet[key]=!0}for(key in o2)if(!(key in keySet)&&"$"!==key.charAt(0)&&isDefined(o2[key])&&!isFunction(o2[key]))return!1;return!0}if(!isArray(o2))return!1;if((length=o1.length)===o2.length){for(key=0;key<length;key++)if(!equals(o1[key],o2[key]))return!1;return!0}}return!1}var csp=function(){if(!isDefined(csp.rules)){var ngCspElement=window.document.querySelector("[ng-csp]")||window.document.querySelector("[data-ng-csp]");if(ngCspElement){var ngCspAttribute=ngCspElement.getAttribute("ng-csp")||ngCspElement.getAttribute("data-ng-csp");csp.rules={noUnsafeEval:!ngCspAttribute||-1!==ngCspAttribute.indexOf("no-unsafe-eval"),noInlineStyle:!ngCspAttribute||-1!==ngCspAttribute.indexOf("no-inline-style")}}else csp.rules={noUnsafeEval:function(){try{return new Function(""),!1}catch(e){return!0}}(),noInlineStyle:!1}}return csp.rules},jq=function(){if(isDefined(jq.name_))return jq.name_;var el,i,prefix,name,ii=ngAttrPrefixes.length;for(i=0;i<ii;++i)if(prefix=ngAttrPrefixes[i],el=window.document.querySelector("["+prefix.replace(":","\\:")+"jq]")){name=el.getAttribute(prefix+"jq");break}return jq.name_=name};function concat(array1,array2,index){return array1.concat(slice.call(array2,index))}function sliceArgs(args,startIndex){return slice.call(args,startIndex||0)}function bind(self,fn){var curryArgs=arguments.length>2?sliceArgs(arguments,2):[];return!isFunction(fn)||fn instanceof RegExp?fn: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)}}function toJsonReplacer(key,value){var val=value;return"string"==typeof key&&"$"===key.charAt(0)&&"$"===key.charAt(1)?val=void 0:isWindow(value)?val="$WINDOW":value&&window.document===value?val="$DOCUMENT":isScope(value)&&(val="$SCOPE"),val}function toJson(obj,pretty){if(!isUndefined(obj))return isNumber(pretty)||(pretty=pretty?2:null),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){return(date=new Date(date.getTime())).setMinutes(date.getMinutes()+minutes),date}function convertTimezoneToLocal(date,timezone,reverse){reverse=reverse?-1:1;var dateTimezoneOffset=date.getTimezoneOffset();return addDateMinutes(date,reverse*(timezoneToOffset(timezone,dateTimezoneOffset)-dateTimezoneOffset))}function startingTag(element){element=jqLite(element).clone().empty();var elemHtml=jqLite("<div></div>").append(element).html();try{return element[0].nodeType===NODE_TYPE_TEXT?lowercase(elemHtml):elemHtml.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/,function(match,nodeName){return"<"+lowercase(nodeName)})}catch(e){return lowercase(elemHtml)}}function tryDecodeURIComponent(value){try{return decodeURIComponent(value)}catch(e){}}function parseKeyValue(keyValue){var obj={};return forEach((keyValue||"").split("&"),function(keyValue){var splitPoint,key,val;keyValue&&(key=keyValue=keyValue.replace(/\+/g,"%20"),-1!==(splitPoint=keyValue.indexOf("="))&&(key=keyValue.substring(0,splitPoint),val=keyValue.substring(splitPoint+1)),isDefined(key=tryDecodeURIComponent(key))&&(val=!isDefined(val)||tryDecodeURIComponent(val),hasOwnProperty.call(obj,key)?isArray(obj[key])?obj[key].push(val):obj[key]=[obj[key],val]:obj[key]=val))}),obj}function encodeUriSegment(val){return encodeUriQuery(val,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").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-"];var isAutoBootstrapAllowed=function(document){var script=document.currentScript;if(!script)return!0;if(!(script instanceof window.HTMLScriptElement||script instanceof window.SVGScriptElement))return!1;var attributes=script.attributes;return[attributes.getNamedItem("src"),attributes.getNamedItem("href"),attributes.getNamedItem("xlink:href")].every(function(src){if(!src)return!0;if(!src.value)return!1;var link=document.createElement("a");if(link.href=src.value,document.location.origin===link.origin)return!0;switch(link.protocol){case"http:":case"https:":case"ftp:":case"blob:":case"file:":case"data:":return!0;default:return!1}})}(window.document);function angularInit(element,bootstrap){var appElement,module,config={};if(forEach(ngAttrPrefixes,function(prefix){var name=prefix+"app";!appElement&&element.hasAttribute&&element.hasAttribute(name)&&(appElement=element,module=element.getAttribute(name))}),forEach(ngAttrPrefixes,function(prefix){var candidate,name=prefix+"app";!appElement&&(candidate=element.querySelector("["+name.replace(":","\\:")+"]"))&&(appElement=candidate,module=candidate.getAttribute(name))}),appElement){if(!isAutoBootstrapAllowed)return void window.console.error("AngularJS: disabling automatic bootstrap. <script> protocol indicates an extension, document.location.href does not match.");config.strictDi=null!==function(element,ngAttr){var attr,i,ii=ngAttrPrefixes.length;for(i=0;i<ii;++i)if(attr=ngAttrPrefixes[i]+ngAttr,isString(attr=element.getAttribute(attr)))return attr;return null}(appElement,"strict-di"),bootstrap(appElement,module?[module]:[],config)}}function bootstrap(element,modules,config){isObject(config)||(config={});config=extend({strictDi:!1},config);var doBootstrap=function(){if((element=jqLite(element)).injector()){var tag=element[0]===window.document?"document":startingTag(element);throw ngMinErr("btstrpd","App already bootstrapped with this element '{0}'",tag.replace(/</,"&lt;").replace(/>/,"&gt;"))}(modules=modules||[]).unshift(["$provide",function($provide){$provide.value("$rootElement",element)}]),config.debugInfoEnabled&&modules.push(["$compileProvider",function($compileProvider){$compileProvider.debugInfoEnabled(!0)}]),modules.unshift("ng");var injector=createInjector(modules,config.strictDi);return injector.invoke(["$rootScope","$rootElement","$compile","$injector",function(scope,element,compile,injector){scope.$apply(function(){element.data("$injector",injector),compile(element)(scope)})}]),injector},NG_ENABLE_DEBUG_INFO=/^NG_ENABLE_DEBUG_INFO!/,NG_DEFER_BOOTSTRAP=/^NG_DEFER_BOOTSTRAP!/;if(window&&NG_ENABLE_DEBUG_INFO.test(window.name)&&(config.debugInfoEnabled=!0,window.name=window.name.replace(NG_ENABLE_DEBUG_INFO,"")),window&&!NG_DEFER_BOOTSTRAP.test(window.name))return doBootstrap();window.name=window.name.replace(NG_DEFER_BOOTSTRAP,""),angular.resumeBootstrap=function(extraModules){return forEach(extraModules,function(module){modules.push(module)}),doBootstrap()},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){return separator=separator||"_",name.replace(SNAKE_CASE_REGEXP,function(letter,pos){return(pos?separator:"")+letter.toLowerCase()})}var bindJQueryFired=!1;function assertArg(arg,name,reason){if(!arg)throw ngMinErr("areq","Argument '{0}' is {1}",name||"?",reason||"required");return arg}function assertArgFn(arg,name,acceptArrayAnnotation){return acceptArrayAnnotation&&isArray(arg)&&(arg=arg[arg.length-1]),assertArg(isFunction(arg),name,"not a function, got "+(arg&&"object"==typeof arg?arg.constructor.name||"Object":typeof arg)),arg}function assertNotHasOwnProperty(name,context){if("hasOwnProperty"===name)throw ngMinErr("badname","hasOwnProperty is not a valid {0} name",context)}function getBlockNodes(nodes){for(var blockNodes,node=nodes[0],endNode=nodes[nodes.length-1],i=1;node!==endNode&&(node=node.nextSibling);i++)(blockNodes||nodes[i]!==node)&&(blockNodes||(blockNodes=jqLite(slice.call(nodes,0,i))),blockNodes.push(node));return blockNodes||nodes}function createMap(){return Object.create(null)}function stringify(value){if(null==value)return"";switch(typeof value){case"string":break;case"number":value=""+value;break;default:value=!hasCustomToString(value)||isArray(value)||isDate(value)?toJson(value):value.toString()}return value}var NODE_TYPE_ELEMENT=1,NODE_TYPE_TEXT=3,NODE_TYPE_COMMENT=8,NODE_TYPE_DOCUMENT=9,NODE_TYPE_DOCUMENT_FRAGMENT=11;function shallowCopy(src,dst){if(isArray(src)){dst=dst||[];for(var i=0,ii=src.length;i<ii;i++)dst[i]=src[i]}else if(isObject(src))for(var key in dst=dst||{},src)"$"===key.charAt(0)&&"$"===key.charAt(1)||(dst[key]=src[key]);return dst||src}function toDebugString(obj,maxDepth){return"function"==typeof obj?obj.toString().replace(/ \{[\s\S]*$/,""):isUndefined(obj)?"undefined":"string"!=typeof obj?function(obj,maxDepth){var seen=[];return isValidObjectMaxDepth(maxDepth)&&(obj=angular.copy(obj,null,maxDepth)),JSON.stringify(obj,function(key,val){if(isObject(val=toJsonReplacer(key,val))){if(seen.indexOf(val)>=0)return"...";seen.push(val)}return val})}(obj,maxDepth):obj}var version={full:"1.7.7",major:1,minor:7,dot:7,codeName:"kingly-exiting"};JQLite.expando="ng339";var jqCache=JQLite.cache={},jqId=1;JQLite._data=function(node){return this.cache[node[this.expando]]||{}};var DASH_LOWERCASE_REGEXP=/-([a-z])/g,MS_HACK_REGEXP=/^-ms-/,MOUSE_EVENT_MAP={mouseleave:"mouseout",mouseenter:"mouseover"},jqLiteMinErr=minErr("jqLite");function fnCamelCaseReplace(all,letter){return letter.toUpperCase()}function kebabToCamel(name){return name.replace(DASH_LOWERCASE_REGEXP,fnCamelCaseReplace)}var SINGLE_TAG_REGEXP=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,HTML_REGEXP=/<|&#?\w+;/,TAG_NAME_REGEXP=/<([\w:-]+)/,XHTML_TAG_REGEXP=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wrapMap={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};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 jqLiteBuildFragment(html,context){var tmp,tag,wrap,i,fragment=context.createDocumentFragment(),nodes=[];if(jqLiteIsTextNode(html))nodes.push(context.createTextNode(html));else{for(tmp=fragment.appendChild(context.createElement("div")),tag=(TAG_NAME_REGEXP.exec(html)||["",""])[1].toLowerCase(),wrap=wrapMap[tag]||wrapMap._default,tmp.innerHTML=wrap[1]+html.replace(XHTML_TAG_REGEXP,"<$1></$2>")+wrap[2],i=wrap[0];i--;)tmp=tmp.lastChild;nodes=concat(nodes,tmp.childNodes),(tmp=fragment.firstChild).textContent=""}return fragment.textContent="",fragment.innerHTML="",forEach(nodes,function(node){fragment.appendChild(node)}),fragment}wrapMap.optgroup=wrapMap.option,wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead,wrapMap.th=wrapMap.td;var jqLiteContains=window.Node.prototype.contains||function(arg){return!!(16&this.compareDocumentPosition(arg))};function JQLite(element){if(element instanceof JQLite)return element;var argIsString,html,context,parsed;if(isString(element)&&(element=trim(element),argIsString=!0),!(this instanceof JQLite)){if(argIsString&&"<"!==element.charAt(0))throw jqLiteMinErr("nosel","Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");return new JQLite(element)}argIsString?jqLiteAddNodes(this,(html=element,context=context||window.document,(parsed=SINGLE_TAG_REGEXP.exec(html))?[context.createElement(parsed[1])]:(parsed=jqLiteBuildFragment(html,context))?parsed.childNodes:[])):isFunction(element)?jqLiteReady(element):jqLiteAddNodes(this,element)}function jqLiteClone(element){return element.cloneNode(!0)}function jqLiteDealoc(element,onlyDescendants){!onlyDescendants&&jqLiteAcceptsData(element)&&jqLite.cleanData([element]),element.querySelectorAll&&jqLite.cleanData(element.querySelectorAll("*"))}function isEmptyObject(obj){var name;for(name in obj)return!1;return!0}function removeIfEmptyData(element){var expandoId=element.ng339,expandoStore=expandoId&&jqCache[expandoId],events=expandoStore&&expandoStore.events,data=expandoStore&&expandoStore.data;data&&!isEmptyObject(data)||events&&!isEmptyObject(events)||(delete jqCache[expandoId],element.ng339=void 0)}function jqLiteOff(element,type,fn,unsupported){if(isDefined(unsupported))throw jqLiteMinErr("offargs","jqLite#off() does not support the `selector` argument");var expandoStore=jqLiteExpandoStore(element),events=expandoStore&&expandoStore.events,handle=expandoStore&&expandoStore.handle;if(handle){if(type){var removeHandler=function(type){var listenerFns=events[type];isDefined(fn)&&arrayRemove(listenerFns||[],fn),isDefined(fn)&&listenerFns&&listenerFns.length>0||(element.removeEventListener(type,handle),delete events[type])};forEach(type.split(" "),function(type){removeHandler(type),MOUSE_EVENT_MAP[type]&&removeHandler(MOUSE_EVENT_MAP[type])})}else for(type in events)"$destroy"!==type&&element.removeEventListener(type,handle),delete events[type];removeIfEmptyData(element)}}function jqLiteRemoveData(element,name){var expandoId=element.ng339,expandoStore=expandoId&&jqCache[expandoId];expandoStore&&(name?delete expandoStore.data[name]:expandoStore.data={},removeIfEmptyData(element))}function jqLiteExpandoStore(element,createIfNecessary){var expandoId=element.ng339,expandoStore=expandoId&&jqCache[expandoId];return createIfNecessary&&!expandoStore&&(element.ng339=expandoId=++jqId,expandoStore=jqCache[expandoId]={events:{},data:{},handle:void 0}),expandoStore}function jqLiteData(element,key,value){if(jqLiteAcceptsData(element)){var prop,isSimpleSetter=isDefined(value),isSimpleGetter=!isSimpleSetter&&key&&!isObject(key),massGetter=!key,expandoStore=jqLiteExpandoStore(element,!isSimpleGetter),data=expandoStore&&expandoStore.data;if(isSimpleSetter)data[kebabToCamel(key)]=value;else{if(massGetter)return data;if(isSimpleGetter)return data&&data[kebabToCamel(key)];for(prop in key)data[kebabToCamel(prop)]=key[prop]}}}function jqLiteHasClass(element,selector){return!!element.getAttribute&&(" "+(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," "),newClasses=existingClasses;forEach(cssClasses.split(" "),function(cssClass){cssClass=trim(cssClass),newClasses=newClasses.replace(" "+cssClass+" "," ")}),newClasses!==existingClasses&&element.setAttribute("class",trim(newClasses))}}function jqLiteAddClass(element,cssClasses){if(cssClasses&&element.setAttribute){var existingClasses=(" "+(element.getAttribute("class")||"")+" ").replace(/[\n\t]/g," "),newClasses=existingClasses;forEach(cssClasses.split(" "),function(cssClass){cssClass=trim(cssClass),-1===newClasses.indexOf(" "+cssClass+" ")&&(newClasses+=cssClass+" ")}),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("number"==typeof length&&elements.window!==elements){if(length)for(var i=0;i<length;i++)root[root.length++]=elements[i]}else root[root.length++]=elements}}function jqLiteController(element,name){return jqLiteInheritedData(element,"$"+(name||"ngController")+"Controller")}function jqLiteInheritedData(element,name,value){element.nodeType===NODE_TYPE_DOCUMENT&&(element=element.documentElement);for(var names=isArray(name)?name:[name];element;){for(var i=0,ii=names.length;i<ii;i++)if(isDefined(value=jqLite.data(element,names[i])))return value;element=element.parentNode||element.nodeType===NODE_TYPE_DOCUMENT_FRAGMENT&&element.host}}function jqLiteEmpty(element){for(jqLiteDealoc(element,!0);element.firstChild;)element.removeChild(element.firstChild)}function jqLiteRemove(element,keepData){keepData||jqLiteDealoc(element);var parent=element.parentNode;parent&&parent.removeChild(element)}function jqLiteReady(fn){function trigger(){window.document.removeEventListener("DOMContentLoaded",trigger),window.removeEventListener("load",trigger),fn()}"complete"===window.document.readyState?window.setTimeout(fn):(window.document.addEventListener("DOMContentLoaded",trigger),window.addEventListener("load",trigger))}var JQLitePrototype=JQLite.prototype={ready:jqLiteReady,toString:function(){var value=[];return forEach(this,function(e){value.push(""+e)}),"["+value.join(", ")+"]"},eq:function(index){return jqLite(index>=0?this[index]:this[this.length+index])},length:0,push:push,sort:[].sort,splice:[].splice},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]=!0});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 defaultHandlerWrapper(element,event,handler){handler.call(element,event)}function specialMouseHandlerWrapper(target,event,handler){var related=event.relatedTarget;related&&(related===target||jqLiteContains.call(target,related))||handler.call(target,event)}function $$jqLiteProvider(){this.$get=function(){return extend(JQLite,{hasClass:function(node,classes){return node.attr&&(node=node[0]),jqLiteHasClass(node,classes)},addClass:function(node,classes){return node.attr&&(node=node[0]),jqLiteAddClass(node,classes)},removeClass:function(node,classes){return node.attr&&(node=node[0]),jqLiteRemoveClass(node,classes)}})}}function hashKey(obj,nextUidFn){var key=obj&&obj.$$hashKey;if(key)return"function"==typeof key&&(key=obj.$$hashKey()),key;var objType=typeof obj;return key="function"===objType||"object"===objType&&null!==obj?obj.$$hashKey=objType+":"+(nextUidFn||nextUid)():objType+":"+obj}forEach({data:jqLiteData,removeData:jqLiteRemoveData,hasData:function(node){for(var key in jqCache[node.ng339])return!0;return!1},cleanData:function(nodes){for(var i=0,ii=nodes.length;i<ii;i++)jqLiteRemoveData(nodes[i]),jqLiteOff(nodes[i])}},function(fn,name){JQLite[name]=fn}),forEach({data:jqLiteData,inheritedData:jqLiteInheritedData,scope:function(element){return jqLite.data(element,"$scope")||jqLiteInheritedData(element.parentNode||element,["$isolateScope","$scope"])},isolateScope:function(element){return jqLite.data(element,"$isolateScope")||jqLite.data(element,"$isolateScopeNoTemplate")},controller:jqLiteController,injector:function(element){return jqLiteInheritedData(element,"$injector")},removeAttr:function(element,name){element.removeAttribute(name)},hasClass:jqLiteHasClass,css:function(element,name,value){if(name=function(name){return kebabToCamel(name.replace(MS_HACK_REGEXP,"ms-"))}(name),!isDefined(value))return element.style[name];element.style[name]=value},attr:function(element,name,value){var ret,nodeType=element.nodeType;if(nodeType!==NODE_TYPE_TEXT&&2!==nodeType&&nodeType!==NODE_TYPE_COMMENT&&element.getAttribute){var lowercasedName=lowercase(name),isBooleanAttr=BOOLEAN_ATTR[lowercasedName];if(!isDefined(value))return ret=element.getAttribute(name),isBooleanAttr&&null!==ret&&(ret=lowercasedName),null===ret?void 0:ret;null===value||!1===value&&isBooleanAttr?element.removeAttribute(name):element.setAttribute(name,isBooleanAttr?lowercasedName:value)}},prop:function(element,name,value){if(!isDefined(value))return element[name];element[name]=value},text:function(){return getText.$dv="",getText;function getText(element,value){if(isUndefined(value)){var nodeType=element.nodeType;return nodeType===NODE_TYPE_ELEMENT||nodeType===NODE_TYPE_TEXT?element.textContent:""}element.textContent=value}}(),val:function(element,value){if(isUndefined(value)){if(element.multiple&&"select"===nodeName_(element)){var result=[];return forEach(element.options,function(option){option.selected&&result.push(option.value||option.text)}),result}return element.value}element.value=value},html:function(element,value){if(isUndefined(value))return element.innerHTML;jqLiteDealoc(element,!0),element.innerHTML=value},empty:jqLiteEmpty},function(fn,name){JQLite.prototype[name]=function(arg1,arg2){var i,key,nodeCount=this.length;if(fn!==jqLiteEmpty&&isUndefined(2===fn.length&&fn!==jqLiteHasClass&&fn!==jqLiteController?arg1:arg2)){if(isObject(arg1)){for(i=0;i<nodeCount;i++)if(fn===jqLiteData)fn(this[i],arg1);else for(key in arg1)fn(this[i],key,arg1[key]);return this}for(var value=fn.$dv,jj=isUndefined(value)?Math.min(nodeCount,1):nodeCount,j=0;j<jj;j++){var nodeValue=fn(this[j],arg1,arg2);value=value?value+nodeValue:nodeValue}return value}for(i=0;i<nodeCount;i++)fn(this[i],arg1,arg2);return this}}),forEach({removeData:jqLiteRemoveData,on:function(element,type,fn,unsupported){if(isDefined(unsupported))throw jqLiteMinErr("onargs","jqLite#on() does not support the `selector` or `eventData` parameters");if(jqLiteAcceptsData(element)){var expandoStore=jqLiteExpandoStore(element,!0),events=expandoStore.events,handle=expandoStore.handle;handle||(handle=expandoStore.handle=function(element,events){var eventHandler=function(event,type){event.isDefaultPrevented=function(){return event.defaultPrevented};var eventFns=events[type||event.type],eventFnsLength=eventFns?eventFns.length:0;if(eventFnsLength){if(isUndefined(event.immediatePropagationStopped)){var originalStopImmediatePropagation=event.stopImmediatePropagation;event.stopImmediatePropagation=function(){event.immediatePropagationStopped=!0,event.stopPropagation&&event.stopPropagation(),originalStopImmediatePropagation&&originalStopImmediatePropagation.call(event)}}event.isImmediatePropagationStopped=function(){return!0===event.immediatePropagationStopped};var handlerWrapper=eventFns.specialHandlerWrapper||defaultHandlerWrapper;eventFnsLength>1&&(eventFns=shallowCopy(eventFns));for(var i=0;i<eventFnsLength;i++)event.isImmediatePropagationStopped()||handlerWrapper(element,event,eventFns[i])}};return eventHandler.elem=element,eventHandler}(element,events));for(var types=type.indexOf(" ")>=0?type.split(" "):[type],i=types.length,addHandler=function(type,specialHandlerWrapper,noEventListener){var eventFns=events[type];eventFns||((eventFns=events[type]=[]).specialHandlerWrapper=specialHandlerWrapper,"$destroy"===type||noEventListener||element.addEventListener(type,handle)),eventFns.push(fn)};i--;)type=types[i],MOUSE_EVENT_MAP[type]?(addHandler(MOUSE_EVENT_MAP[type],specialMouseHandlerWrapper),addHandler(type,void 0,!0)):addHandler(type)}},off:jqLiteOff,one:function(element,type,fn){(element=jqLite(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){index?parent.insertBefore(node,index.nextSibling):parent.replaceChild(node,element),index=node})},children:function(element){var children=[];return forEach(element.childNodes,function(element){element.nodeType===NODE_TYPE_ELEMENT&&children.push(element)}),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)for(var i=0,ii=(node=new JQLite(node)).length;i<ii;i++){var child=node[i];element.appendChild(child)}},prepend:function(element,node){if(element.nodeType===NODE_TYPE_ELEMENT){var index=element.firstChild;forEach(new JQLite(node),function(child){element.insertBefore(child,index)})}},wrap:function(element,wrapNode){var node,wrapper,parent;node=element,wrapper=jqLite(wrapNode).eq(0).clone()[0],(parent=node.parentNode)&&parent.replaceChild(wrapper,node),wrapper.appendChild(node)},remove:jqLiteRemove,detach:function(element){jqLiteRemove(element,!0)},after:function(element,newElement){var index=element,parent=element.parentNode;if(parent)for(var i=0,ii=(newElement=new JQLite(newElement)).length;i<ii;i++){var node=newElement[i];parent.insertBefore(node,index.nextSibling),index=node}},addClass:jqLiteAddClass,removeClass:jqLiteRemoveClass,toggleClass:function(element,selector,condition){selector&&forEach(selector.split(" "),function(className){var classCondition=condition;isUndefined(classCondition)&&(classCondition=!jqLiteHasClass(element,className)),(classCondition?jqLiteAddClass:jqLiteRemoveClass)(element,className)})},parent:function(element){var parent=element.parentNode;return parent&&parent.nodeType!==NODE_TYPE_DOCUMENT_FRAGMENT?parent:null},next:function(element){return element.nextElementSibling},find:function(element,selector){return element.getElementsByTagName?element.getElementsByTagName(selector):[]},clone:jqLiteClone,triggerHandler:function(element,event,extraParameters){var dummyEvent,eventFnsCopy,handlerArgs,eventName=event.type||event,expandoStore=jqLiteExpandoStore(element),events=expandoStore&&expandoStore.events,eventFns=events&&events[eventName];eventFns&&(dummyEvent={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return!0===this.defaultPrevented},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return!0===this.immediatePropagationStopped},stopPropagation:noop,type:eventName,target:element},event.type&&(dummyEvent=extend(dummyEvent,event)),eventFnsCopy=shallowCopy(eventFns),handlerArgs=extraParameters?[dummyEvent].concat(extraParameters):[dummyEvent],forEach(eventFnsCopy,function(fn){dummyEvent.isImmediatePropagationStopped()||fn.apply(element,handlerArgs)}))}},function(fn,name){JQLite.prototype[name]=function(arg1,arg2,arg3){for(var value,i=0,ii=this.length;i<ii;i++)isUndefined(value)?isDefined(value=fn(this[i],arg1,arg2,arg3))&&(value=jqLite(value)):jqLiteAddNodes(value,fn(this[i],arg1,arg2,arg3));return isDefined(value)?value:this}}),JQLite.prototype.bind=JQLite.prototype.on,JQLite.prototype.unbind=JQLite.prototype.off;var nanKey=Object.create(null);function NgMapShim(){this._keys=[],this._values=[],this._lastKey=NaN,this._lastIndex=-1}NgMapShim.prototype={_idx:function(key){return key!==this._lastKey&&(this._lastKey=key,this._lastIndex=this._keys.indexOf(key)),this._lastIndex},_transformKey:function(key){return isNumberNaN(key)?nanKey:key},get:function(key){key=this._transformKey(key);var idx=this._idx(key);if(-1!==idx)return this._values[idx]},has:function(key){return key=this._transformKey(key),-1!==this._idx(key)},set:function(key,value){key=this._transformKey(key);var idx=this._idx(key);-1===idx&&(idx=this._lastIndex=this._keys.length),this._keys[idx]=key,this._values[idx]=value},delete:function(key){key=this._transformKey(key);var idx=this._idx(key);return-1!==idx&&(this._keys.splice(idx,1),this._values.splice(idx,1),this._lastKey=NaN,this._lastIndex=-1,!0)}};var NgMap=NgMapShim,$$MapProvider=[function(){this.$get=[function(){return NgMap}]}],ARROW_ARG=/^([^(]+?)=>/,FN_ARGS=/^[^(]*\(\s*([^)]*)\)/m,FN_ARG_SPLIT=/,/,FN_ARG=/^\s*(_?)(\S+?)\1\s*$/,STRIP_COMMENTS=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,$injectorMinErr=minErr("$injector");function stringifyFn(fn){return Function.prototype.toString.call(fn)}function extractArgs(fn){var fnText=stringifyFn(fn).replace(STRIP_COMMENTS,"");return fnText.match(ARROW_ARG)||fnText.match(FN_ARGS)}function createInjector(modulesToLoad,strictDi){strictDi=!0===strictDi;var INSTANTIATING={},providerSuffix="Provider",path=[],loadedModules=new NgMap,providerCache={$provide:{provider:supportObject(provider),factory:supportObject(factory),service:supportObject(function(name,constructor){return factory(name,["$injector",function($injector){return $injector.instantiate(constructor)}])}),value:supportObject(function(name,val){return factory(name,valueFn(val),!1)}),constant:supportObject(function(name,value){assertNotHasOwnProperty(name,"constant"),providerCache[name]=value,instanceCache[name]=value}),decorator:function(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})}}}},providerInjector=providerCache.$injector=createInternalInjector(providerCache,function(serviceName,caller){throw angular.isString(caller)&&path.push(caller),$injectorMinErr("unpr","Unknown provider: {0}",path.join(" <- "))}),instanceCache={},protoInstanceInjector=createInternalInjector(instanceCache,function(serviceName,caller){var provider=providerInjector.get(serviceName+providerSuffix,caller);return instanceInjector.invoke(provider.$get,provider,void 0,serviceName)}),instanceInjector=protoInstanceInjector;providerCache["$injector"+providerSuffix]={$get:valueFn(protoInstanceInjector)},instanceInjector.modules=providerInjector.modules=createMap();var runBlocks=loadModules(modulesToLoad);return(instanceInjector=protoInstanceInjector.get("$injector")).strictDi=strictDi,forEach(runBlocks,function(fn){fn&&instanceInjector.invoke(fn)}),instanceInjector.loadNewModules=function(mods){forEach(loadModules(mods),function(fn){fn&&instanceInjector.invoke(fn)})},instanceInjector;function supportObject(delegate){return function(key,value){if(!isObject(key))return delegate(key,value);forEach(key,reverseParams(delegate))}}function provider(name,provider_){if(assertNotHasOwnProperty(name,"service"),(isFunction(provider_)||isArray(provider_))&&(provider_=providerInjector.instantiate(provider_)),!provider_.$get)throw $injectorMinErr("pget","Provider '{0}' must define $get factory method.",name);return providerCache[name+providerSuffix]=provider_}function factory(name,factoryFn,enforce){return provider(name,{$get:!1!==enforce?function(name,factory){return function(){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}}(name,factoryFn):factoryFn})}function loadModules(modulesToLoad){assertArg(isUndefined(modulesToLoad)||isArray(modulesToLoad),"modulesToLoad","not an array");var moduleFn,runBlocks=[];return forEach(modulesToLoad,function(module){if(!loadedModules.get(module)){loadedModules.set(module,!0);try{isString(module)?(moduleFn=angularModule(module),instanceInjector.modules[module]=moduleFn,runBlocks=runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks),runInvokeQueue(moduleFn._invokeQueue),runInvokeQueue(moduleFn._configBlocks)):isFunction(module)?runBlocks.push(providerInjector.invoke(module)):isArray(module)?runBlocks.push(providerInjector.invoke(module)):assertArgFn(module,"module")}catch(e){throw isArray(module)&&(module=module[module.length-1]),e.message&&e.stack&&-1===e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),$injectorMinErr("modulerr","Failed to instantiate module {0} due to:\n{1}",module,e.stack||e.message||e)}}function runInvokeQueue(queue){var i,ii;for(i=0,ii=queue.length;i<ii;i++){var invokeArgs=queue[i],provider=providerInjector.get(invokeArgs[0]);provider[invokeArgs[1]].apply(provider,invokeArgs[2])}}}),runBlocks}function createInternalInjector(cache,factory){function getService(serviceName,caller){if(cache.hasOwnProperty(serviceName)){if(cache[serviceName]===INSTANTIATING)throw $injectorMinErr("cdep","Circular dependency found: {0}",serviceName+" <- "+path.join(" <- "));return cache[serviceName]}try{return path.unshift(serviceName),cache[serviceName]=INSTANTIATING,cache[serviceName]=factory(serviceName,caller),cache[serviceName]}catch(err){throw cache[serviceName]===INSTANTIATING&&delete cache[serviceName],err}finally{path.shift()}}function injectionArgs(fn,locals,serviceName){for(var args=[],$inject=createInjector.$$annotate(fn,strictDi,serviceName),i=0,length=$inject.length;i<length;i++){var key=$inject[i];if("string"!=typeof key)throw $injectorMinErr("itkn","Incorrect injection token! Expected service name as string, got {0}",key);args.push(locals&&locals.hasOwnProperty(key)?locals[key]:getService(key,serviceName))}return args}return{invoke:function(fn,self,locals,serviceName){"string"==typeof locals&&(serviceName=locals,locals=null);var args=injectionArgs(fn,locals,serviceName);return isArray(fn)&&(fn=fn[fn.length-1]),function(func){if(msie||"function"!=typeof func)return!1;var result=func.$$ngIsClass;return isBoolean(result)||(result=func.$$ngIsClass=/^class\b/.test(stringifyFn(func))),result}(fn)?(args.unshift(null),new(Function.prototype.bind.apply(fn,args))):fn.apply(self,args)},instantiate:function(Type,locals,serviceName){var ctor=isArray(Type)?Type[Type.length-1]:Type,args=injectionArgs(Type,locals,serviceName);return args.unshift(null),new(Function.prototype.bind.apply(ctor,args))},get:getService,annotate:createInjector.$$annotate,has:function(name){return providerCache.hasOwnProperty(name+providerSuffix)||cache.hasOwnProperty(name)}}}}function $AnchorScrollProvider(){var autoScrollingEnabled=!0;this.disableAutoScrolling=function(){autoScrollingEnabled=!1},this.$get=["$window","$location","$rootScope",function($window,$location,$rootScope){var document=$window.document;function scrollTo(elem){if(elem){elem.scrollIntoView();var offset=function(){var offset=scroll.yOffset;if(isFunction(offset))offset=offset();else if(isElement(offset)){var elem=offset[0];offset="fixed"!==$window.getComputedStyle(elem).position?0:elem.getBoundingClientRect().bottom}else isNumber(offset)||(offset=0);return offset}();if(offset){var elemTop=elem.getBoundingClientRect().top;$window.scrollBy(0,elemTop-offset)}}else $window.scrollTo(0,0)}function scroll(hash){var elm,list,result;(hash=isString(hash)?hash:isNumber(hash)?hash.toString():$location.hash())?(elm=document.getElementById(hash))?scrollTo(elm):(list=document.getElementsByName(hash),result=null,Array.prototype.some.call(list,function(element){if("a"===nodeName_(element))return result=element,!0}),(elm=result)?scrollTo(elm):"top"===hash&&scrollTo(null)):scrollTo(null)}return autoScrollingEnabled&&$rootScope.$watch(function(){return $location.hash()},function(newVal,oldVal){var action,win;newVal===oldVal&&""===newVal||(action=function(){$rootScope.$evalAsync(scroll)},"complete"===(win=win||window).document.readyState?win.setTimeout(action):jqLite(win).on("load",action))}),scroll}]}createInjector.$$annotate=function(fn,strictDi,name){var $inject,last;if("function"==typeof fn){if(!($inject=fn.$inject)){if($inject=[],fn.length){if(strictDi)throw isString(name)&&name||(name=fn.name||function(fn){var args=extractArgs(fn);return args?"function("+(args[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}(fn)),$injectorMinErr("strictdi","{0} is not using explicit annotation and cannot be invoked in strict mode",name);forEach(extractArgs(fn)[1].split(FN_ARG_SPLIT),function(arg){arg.replace(FN_ARG,function(all,underscore,name){$inject.push(name)})})}fn.$inject=$inject}}else isArray(fn)?(assertArgFn(fn[last=fn.length-1],"fn"),$inject=fn.slice(0,last)):assertArgFn(fn,"fn",!0);return $inject};var $animateMinErr=minErr("$animate"),ELEMENT_NODE=1;function mergeClasses(a,b){return a||b?a?b?(isArray(a)&&(a=a.join(" ")),isArray(b)&&(b=b.join(" ")),a+" "+b):a:b:""}function prepareAnimateOptions(options){return isObject(options)?options:{}}var $$CoreAnimateJsProvider=function(){this.$get=noop},$$CoreAnimateQueueProvider=function(){var postDigestQueue=new NgMap,postDigestElements=[];this.$get=["$$AnimateRunner","$rootScope",function($$AnimateRunner,$rootScope){return{enabled:noop,on:noop,off:noop,pin:noop,push:function(element,event,options,domOperation){domOperation&&domOperation(),(options=options||{}).from&&element.css(options.from),options.to&&element.css(options.to),(options.addClass||options.removeClass)&&function(element,add,remove){var data=postDigestQueue.get(element)||{},classesAdded=updateData(data,add,!0),classesRemoved=updateData(data,remove,!1);(classesAdded||classesRemoved)&&(postDigestQueue.set(element,data),postDigestElements.push(element),1===postDigestElements.length&&$rootScope.$$postDigest(handleCSSClassChanges))}(element,options.addClass,options.removeClass);var runner=new $$AnimateRunner;return runner.complete(),runner}};function updateData(data,classes,value){var changed=!1;return classes&&forEach(classes=isString(classes)?classes.split(" "):isArray(classes)?classes:[],function(className){className&&(changed=!0,data[className]=value)}),changed}function handleCSSClassChanges(){forEach(postDigestElements,function(element){var data=postDigestQueue.get(element);if(data){var existing=function(classes){isString(classes)&&(classes=classes.split(" "));var obj=createMap();return forEach(classes,function(klass){klass.length&&(obj[klass]=!0)}),obj}(element.attr("class")),toAdd="",toRemove="";forEach(data,function(status,className){status!==!!existing[className]&&(status?toAdd+=(toAdd.length?" ":"")+className:toRemove+=(toRemove.length?" ":"")+className)}),forEach(element,function(elm){toAdd&&jqLiteAddClass(elm,toAdd),toRemove&&jqLiteRemoveClass(elm,toRemove)}),postDigestQueue.delete(element)}}),postDigestElements.length=0}}]},$AnimateProvider=["$provide",function($provide){var provider=this,classNameFilter=null,customFilter=null;this.$$registeredAnimations=Object.create(null),this.register=function(name,factory){if(name&&"."!==name.charAt(0))throw $animateMinErr("notcsel","Expecting class selector starting with '.' got '{0}'.",name);var key=name+"-animation";provider.$$registeredAnimations[name.substr(1)]=key,$provide.factory(key,factory)},this.customFilter=function(filterFn){return 1===arguments.length&&(customFilter=isFunction(filterFn)?filterFn:null),customFilter},this.classNameFilter=function(expression){if(1===arguments.length&&((classNameFilter=expression instanceof RegExp?expression:null)&&new RegExp("[(\\s|\\/)]ng-animate[(\\s|\\/)]").test(classNameFilter.toString())))throw classNameFilter=null,$animateMinErr("nongcls",'$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.',"ng-animate");return classNameFilter},this.$get=["$$animateQueue",function($$animateQueue){function domInsert(element,parentElement,afterElement){if(afterElement){var afterNode=function(element){for(var i=0;i<element.length;i++){var elm=element[i];if(elm.nodeType===ELEMENT_NODE)return elm}}(afterElement);!afterNode||afterNode.parentNode||afterNode.previousElementSibling||(afterElement=null)}afterElement?afterElement.after(element):parentElement.prepend(element)}return{on:$$animateQueue.on,off:$$animateQueue.off,pin:$$animateQueue.pin,enabled:$$animateQueue.enabled,cancel:function(runner){runner.cancel&&runner.cancel()},enter:function(element,parent,after,options){return parent=parent&&jqLite(parent),after=after&&jqLite(after),domInsert(element,parent=parent||after.parent(),after),$$animateQueue.push(element,"enter",prepareAnimateOptions(options))},move:function(element,parent,after,options){return parent=parent&&jqLite(parent),after=after&&jqLite(after),domInsert(element,parent=parent||after.parent(),after),$$animateQueue.push(element,"move",prepareAnimateOptions(options))},leave:function(element,options){return $$animateQueue.push(element,"leave",prepareAnimateOptions(options),function(){element.remove()})},addClass:function(element,className,options){return(options=prepareAnimateOptions(options)).addClass=mergeClasses(options.addclass,className),$$animateQueue.push(element,"addClass",options)},removeClass:function(element,className,options){return(options=prepareAnimateOptions(options)).removeClass=mergeClasses(options.removeClass,className),$$animateQueue.push(element,"removeClass",options)},setClass:function(element,add,remove,options){return(options=prepareAnimateOptions(options)).addClass=mergeClasses(options.addClass,add),options.removeClass=mergeClasses(options.removeClass,remove),$$animateQueue.push(element,"setClass",options)},animate:function(element,from,to,className,options){return(options=prepareAnimateOptions(options)).from=options.from?extend(options.from,from):from,options.to=options.to?extend(options.to,to):to,className=className||"ng-inline-animate",options.tempClasses=mergeClasses(options.tempClasses,className),$$animateQueue.push(element,"animate",options)}}}]}],$$AnimateAsyncRunFactoryProvider=function(){this.$get=["$$rAF",function($$rAF){var waitQueue=[];function waitForTick(fn){waitQueue.push(fn),waitQueue.length>1||$$rAF(function(){for(var i=0;i<waitQueue.length;i++)waitQueue[i]();waitQueue=[]})}return function(){var passed=!1;return waitForTick(function(){passed=!0}),function(callback){passed?callback():waitForTick(callback)}}}]},$$AnimateRunnerFactoryProvider=function(){this.$get=["$q","$sniffer","$$animateAsyncRun","$$isDocumentHidden","$timeout",function($q,$sniffer,$$animateAsyncRun,$$isDocumentHidden,$timeout){function AnimateRunner(host){this.setHost(host);var rafTick=$$animateAsyncRun();this._doneCallbacks=[],this._tick=function(fn){$$isDocumentHidden()?function(fn){$timeout(fn,0,!1)}(fn):rafTick(fn)},this._state=0}return AnimateRunner.chain=function(chain,callback){var index=0;!function next(){if(index===chain.length)return void callback(!0);chain[index](function(response){!1!==response?(index++,next()):callback(!1)})}()},AnimateRunner.all=function(runners,callback){var count=0,status=!0;function onProgress(response){status=status&&response,++count===runners.length&&callback(status)}forEach(runners,function(runner){runner.done(onProgress)})},AnimateRunner.prototype={setHost:function(host){this.host=host||{}},done:function(fn){2===this._state?fn():this._doneCallbacks.push(fn)},progress:noop,getPromise:function(){if(!this.promise){var self=this;this.promise=$q(function(resolve,reject){self.done(function(status){!1===status?reject():resolve()})})}return this.promise},then:function(resolveHandler,rejectHandler){return this.getPromise().then(resolveHandler,rejectHandler)},catch:function(handler){return this.getPromise().catch(handler)},finally:function(handler){return this.getPromise().finally(handler)},pause:function(){this.host.pause&&this.host.pause()},resume:function(){this.host.resume&&this.host.resume()},end:function(){this.host.end&&this.host.end(),this._resolve(!0)},cancel:function(){this.host.cancel&&this.host.cancel(),this._resolve(!1)},complete:function(response){var self=this;0===self._state&&(self._state=1,self._tick(function(){self._resolve(response)}))},_resolve:function(response){2!==this._state&&(forEach(this._doneCallbacks,function(fn){fn(response)}),this._doneCallbacks.length=0,this._state=2)}},AnimateRunner}]},$CoreAnimateCssProvider=function(){this.$get=["$$rAF","$q","$$AnimateRunner",function($$rAF,$q,$$AnimateRunner){return function(element,initialOptions){var options=initialOptions||{};options.$$prepared||(options=copy(options)),options.cleanupStyles&&(options.from=options.to=null),options.from&&(element.css(options.from),options.from=null);var closed,runner=new $$AnimateRunner;return{start:run,end:run};function run(){return $$rAF(function(){!function(){options.addClass&&(element.addClass(options.addClass),options.addClass=null);options.removeClass&&(element.removeClass(options.removeClass),options.removeClass=null);options.to&&(element.css(options.to),options.to=null)}(),closed||runner.complete(),closed=!0}),runner}}}]};function $BrowserProvider(){this.$get=["$window","$log","$sniffer","$document","$$taskTrackerFactory",function($window,$log,$sniffer,$document,$$taskTrackerFactory){return new function(window,document,$log,$sniffer,$$taskTrackerFactory){var self=this,location=window.location,history=window.history,setTimeout=window.setTimeout,clearTimeout=window.clearTimeout,pendingDeferIds={},taskTracker=$$taskTrackerFactory($log);self.isMock=!1,self.$$completeOutstandingRequest=taskTracker.completeTask,self.$$incOutstandingRequestCount=taskTracker.incTaskCount,self.notifyWhenNoOutstandingRequests=taskTracker.notifyWhenNoPendingTasks;var cachedState,lastHistoryState,lastBrowserUrl=location.href,baseElement=document.find("base"),pendingLocation=null,getCurrentState=$sniffer.history?function(){try{return history.state}catch(e){}}:noop;cacheState(),self.url=function(url,replace,state){if(isUndefined(state)&&(state=null),location!==window.location&&(location=window.location),history!==window.history&&(history=window.history),url){var sameState=lastHistoryState===state;if(url=urlResolve(url).href,lastBrowserUrl===url&&(!$sniffer.history||sameState))return self;var sameBase=lastBrowserUrl&&stripHash(lastBrowserUrl)===stripHash(url);return lastBrowserUrl=url,lastHistoryState=state,!$sniffer.history||sameBase&&sameState?(sameBase||(pendingLocation=url),replace?location.replace(url):sameBase?location.hash=function(url){var index=url.indexOf("#");return-1===index?"":url.substr(index)}(url):location.href=url,location.href!==url&&(pendingLocation=url)):(history[replace?"replaceState":"pushState"](state,"",url),cacheState()),pendingLocation&&(pendingLocation=url),self}return function(url){return url.replace(/#$/,"")}(pendingLocation||location.href)},self.state=function(){return cachedState};var urlChangeListeners=[],urlChangeInit=!1;function cacheStateAndFireUrlChange(){pendingLocation=null,fireStateOrUrlChange()}var lastCachedState=null;function cacheState(){equals(cachedState=isUndefined(cachedState=getCurrentState())?null:cachedState,lastCachedState)&&(cachedState=lastCachedState),lastCachedState=cachedState,lastHistoryState=cachedState}function fireStateOrUrlChange(){var prevLastHistoryState=lastHistoryState;cacheState(),lastBrowserUrl===self.url()&&prevLastHistoryState===cachedState||(lastBrowserUrl=self.url(),lastHistoryState=cachedState,forEach(urlChangeListeners,function(listener){listener(self.url(),cachedState)}))}self.onUrlChange=function(callback){return urlChangeInit||($sniffer.history&&jqLite(window).on("popstate",cacheStateAndFireUrlChange),jqLite(window).on("hashchange",cacheStateAndFireUrlChange),urlChangeInit=!0),urlChangeListeners.push(callback),callback},self.$$applicationDestroyed=function(){jqLite(window).off("hashchange popstate",cacheStateAndFireUrlChange)},self.$$checkUrlChange=fireStateOrUrlChange,self.baseHref=function(){var href=baseElement.attr("href");return href?href.replace(/^(https?:)?\/\/[^/]*/,""):""},self.defer=function(fn,delay,taskType){var timeoutId;return delay=delay||0,taskType=taskType||taskTracker.DEFAULT_TASK_TYPE,taskTracker.incTaskCount(taskType),timeoutId=setTimeout(function(){delete pendingDeferIds[timeoutId],taskTracker.completeTask(fn,taskType)},delay),pendingDeferIds[timeoutId]=taskType,timeoutId},self.defer.cancel=function(deferId){if(pendingDeferIds.hasOwnProperty(deferId)){var taskType=pendingDeferIds[deferId];return delete pendingDeferIds[deferId],clearTimeout(deferId),taskTracker.completeTask(noop,taskType),!0}return!1}}($window,$document,$log,$sniffer,$$taskTrackerFactory)}]}function $CacheFactoryProvider(){this.$get=function(){var caches={};function cacheFactory(cacheId,options){if(cacheId in caches)throw minErr("$cacheFactory")("iid","CacheId '{0}' is already taken!",cacheId);var size=0,stats=extend({},options,{id:cacheId}),data=createMap(),capacity=options&&options.capacity||Number.MAX_VALUE,lruHash=createMap(),freshEnd=null,staleEnd=null;return caches[cacheId]={put:function(key,value){if(!isUndefined(value)){if(capacity<Number.MAX_VALUE)refresh(lruHash[key]||(lruHash[key]={key:key}));return key in data||size++,data[key]=value,size>capacity&&this.remove(staleEnd.key),value}},get:function(key){if(capacity<Number.MAX_VALUE){var lruEntry=lruHash[key];if(!lruEntry)return;refresh(lruEntry)}return data[key]},remove:function(key){if(capacity<Number.MAX_VALUE){var lruEntry=lruHash[key];if(!lruEntry)return;lruEntry===freshEnd&&(freshEnd=lruEntry.p),lruEntry===staleEnd&&(staleEnd=lruEntry.n),link(lruEntry.n,lruEntry.p),delete lruHash[key]}key in data&&(delete data[key],size--)},removeAll:function(){data=createMap(),size=0,lruHash=createMap(),freshEnd=staleEnd=null},destroy:function(){data=null,stats=null,lruHash=null,delete caches[cacheId]},info:function(){return extend({},stats,{size:size})}};function refresh(entry){entry!==freshEnd&&(staleEnd?staleEnd===entry&&(staleEnd=entry.n):staleEnd=entry,link(entry.n,entry.p),link(entry,freshEnd),(freshEnd=entry).n=null)}function link(nextEntry,prevEntry){nextEntry!==prevEntry&&(nextEntry&&(nextEntry.p=prevEntry),prevEntry&&(prevEntry.n=nextEntry))}}return cacheFactory.info=function(){var info={};return forEach(caches,function(cache,cacheId){info[cacheId]=cache.info()}),info},cacheFactory.get=function(cacheId){return caches[cacheId]},cacheFactory}}function $TemplateCacheProvider(){this.$get=["$cacheFactory",function($cacheFactory){return $cacheFactory("templates")}]}var $compileMinErr=minErr("$compile");var _UNINITIALIZED_VALUE=new function(){};function $CompileProvider($provide,$$sanitizeUriProvider){var hasDirectives={},Suffix="Directive",COMMENT_DIRECTIVE_REGEXP=/^\s*directive:\s*([\w-]+)\s+(.*)$/,CLASS_DIRECTIVE_REGEXP=/(([\w-]+)(?::([^;]+))?;?)/,ALL_OR_NOTHING_ATTRS=function(str){var i,obj={},items=str.split(",");for(i=0;i<items.length;i++)obj[items[i]]=!0;return obj}("ngSrc,ngSrcset,src,srcset"),REQUIRE_PREFIX_REGEXP=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,EVENT_HANDLER_ATTR_REGEXP=/^(on[a-z]+|formaction)$/,bindingCache=createMap();function parseIsolateBindings(scope,directiveName,isController){var LOCAL_REGEXP=/^([@&]|[=<](\*?))(\??)\s*([\w$]*)$/,bindings=createMap();return forEach(scope,function(definition,scopeName){if((definition=definition.trim())in bindingCache)bindings[scopeName]=bindingCache[definition];else{var match=definition.match(LOCAL_REGEXP);if(!match)throw $compileMinErr("iscp","Invalid {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}",directiveName,scopeName,definition,isController?"controller bindings definition":"isolate scope definition");bindings[scopeName]={mode:match[1][0],collection:"*"===match[2],optional:"?"===match[3],attrName:match[4]||scopeName},match[4]&&(bindingCache[definition]=bindings[scopeName])}}),bindings}function parseDirectiveBindings(directive,directiveName){var bindings={isolateScope:null,bindToController:null};if(isObject(directive.scope)&&(!0===directive.bindToController?(bindings.bindToController=parseIsolateBindings(directive.scope,directiveName,!0),bindings.isolateScope={}):bindings.isolateScope=parseIsolateBindings(directive.scope,directiveName,!1)),isObject(directive.bindToController)&&(bindings.bindToController=parseIsolateBindings(directive.bindToController,directiveName,!0)),bindings.bindToController&&!directive.controller)throw $compileMinErr("noctrl","Cannot bind to controller without directive '{0}'s controller.",directiveName);return bindings}this.directive=function registerDirective(name,directiveFactory){return assertArg(name,"name"),assertNotHasOwnProperty(name,"directive"),isString(name)?(!function(name){var letter=name.charAt(0);if(!letter||letter!==lowercase(letter))throw $compileMinErr("baddir","Directive/Component name '{0}' is invalid. The first character must be a lowercase letter",name);if(name!==name.trim())throw $compileMinErr("baddir","Directive/Component name '{0}' is invalid. The name should not contain leading or trailing whitespaces",name)}(name),assertArg(directiveFactory,"directiveFactory"),hasDirectives.hasOwnProperty(name)||(hasDirectives[name]=[],$provide.factory(name+Suffix,["$injector","$exceptionHandler",function($injector,$exceptionHandler){var directives=[];return forEach(hasDirectives[name],function(directiveFactory,index){try{var directive=$injector.invoke(directiveFactory);isFunction(directive)?directive={compile:valueFn(directive)}:!directive.compile&&directive.link&&(directive.compile=valueFn(directive.link)),directive.priority=directive.priority||0,directive.index=index,directive.name=directive.name||name,directive.require=function(directive){var require=directive.require||directive.controller&&directive.name;return!isArray(require)&&isObject(require)&&forEach(require,function(value,key){var match=value.match(REQUIRE_PREFIX_REGEXP);value.substring(match[0].length)||(require[key]=match[0]+key)}),require}(directive),directive.restrict=function(restrict,name){if(restrict&&(!isString(restrict)||!/[EACM]/.test(restrict)))throw $compileMinErr("badrestrict","Restrict property '{0}' of directive '{1}' is invalid",restrict,name);return restrict||"EA"}(directive.restrict,name),directive.$$moduleName=directiveFactory.$$moduleName,directives.push(directive)}catch(e){$exceptionHandler(e)}}),directives}])),hasDirectives[name].push(directiveFactory)):forEach(name,reverseParams(registerDirective)),this},this.component=function registerComponent(name,options){if(!isString(name))return forEach(name,reverseParams(bind(this,registerComponent))),this;var controller=options.controller||function(){};function factory($injector){function makeInjectable(fn){return isFunction(fn)||isArray(fn)?function(tElement,tAttrs){return $injector.invoke(fn,this,{$element:tElement,$attrs:tAttrs})}:fn}var template=options.template||options.templateUrl?options.template:"",ddo={controller:controller,controllerAs:function(controller,ident){if(ident&&isString(ident))return ident;if(isString(controller)){var match=CNTRL_REG.exec(controller);if(match)return match[3]}}(options.controller)||options.controllerAs||"$ctrl",template:makeInjectable(template),templateUrl:makeInjectable(options.templateUrl),transclude:options.transclude,scope:{},bindToController:options.bindings||{},restrict:"E",require:options.require};return forEach(options,function(val,key){"$"===key.charAt(0)&&(ddo[key]=val)}),ddo}return forEach(options,function(val,key){"$"===key.charAt(0)&&(factory[key]=val,isFunction(controller)&&(controller[key]=val))}),factory.$inject=["$injector"],this.directive(name,factory)},this.aHrefSanitizationWhitelist=function(regexp){return isDefined(regexp)?($$sanitizeUriProvider.aHrefSanitizationWhitelist(regexp),this):$$sanitizeUriProvider.aHrefSanitizationWhitelist()},this.imgSrcSanitizationWhitelist=function(regexp){return isDefined(regexp)?($$sanitizeUriProvider.imgSrcSanitizationWhitelist(regexp),this):$$sanitizeUriProvider.imgSrcSanitizationWhitelist()};var debugInfoEnabled=!0;this.debugInfoEnabled=function(enabled){return isDefined(enabled)?(debugInfoEnabled=enabled,this):debugInfoEnabled};var strictComponentBindingsEnabled=!1;this.strictComponentBindingsEnabled=function(enabled){return isDefined(enabled)?(strictComponentBindingsEnabled=enabled,this):strictComponentBindingsEnabled};var TTL=10;this.onChangesTtl=function(value){return arguments.length?(TTL=value,this):TTL};var commentDirectivesEnabledConfig=!0;this.commentDirectivesEnabled=function(value){return arguments.length?(commentDirectivesEnabledConfig=value,this):commentDirectivesEnabledConfig};var cssClassDirectivesEnabledConfig=!0;this.cssClassDirectivesEnabled=function(value){return arguments.length?(cssClassDirectivesEnabledConfig=value,this):cssClassDirectivesEnabledConfig};var PROP_CONTEXTS=createMap();this.addPropertySecurityContext=function(elementName,propertyName,ctx){var key=elementName.toLowerCase()+"|"+propertyName.toLowerCase();if(key in PROP_CONTEXTS&&PROP_CONTEXTS[key]!==ctx)throw $compileMinErr("ctxoverride","Property context '{0}.{1}' already set to '{2}', cannot override to '{3}'.",elementName,propertyName,PROP_CONTEXTS[key],ctx);return PROP_CONTEXTS[key]=ctx,this},function(){function registerContext(ctx,values){forEach(values,function(v){PROP_CONTEXTS[v.toLowerCase()]=ctx})}registerContext(SCE_CONTEXTS.HTML,["iframe|srcdoc","*|innerHTML","*|outerHTML"]),registerContext(SCE_CONTEXTS.CSS,["*|style"]),registerContext(SCE_CONTEXTS.URL,["area|href","area|ping","a|href","a|ping","blockquote|cite","body|background","del|cite","input|src","ins|cite","q|cite"]),registerContext(SCE_CONTEXTS.MEDIA_URL,["audio|src","img|src","img|srcset","source|src","source|srcset","track|src","video|src","video|poster"]),registerContext(SCE_CONTEXTS.RESOURCE_URL,["*|formAction","applet|code","applet|codebase","base|href","embed|src","frame|src","form|action","head|profile","html|manifest","iframe|src","link|href","media|src","object|codebase","object|data","script|src"])}(),this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$sce","$animate",function($injector,$interpolate,$exceptionHandler,$templateRequest,$parse,$controller,$rootScope,$sce,$animate){var onChangesQueue,SIMPLE_ATTR_NAME=/^\w/,specialAttrHolder=window.document.createElement("div"),commentDirectivesEnabled=commentDirectivesEnabledConfig,cssClassDirectivesEnabled=cssClassDirectivesEnabledConfig,onChangesTtl=TTL;function flushOnChangesQueue(){try{if(!--onChangesTtl)throw onChangesQueue=void 0,$compileMinErr("infchng","{0} $onChanges() iterations reached. Aborting!\n",TTL);$rootScope.$apply(function(){for(var i=0,ii=onChangesQueue.length;i<ii;++i)try{onChangesQueue[i]()}catch(e){$exceptionHandler(e)}onChangesQueue=void 0})}finally{onChangesTtl++}}function sanitizeSrcset(value,invokeType){if(!value)return value;if(!isString(value))throw $compileMinErr("srcset",'Can\'t pass trusted values to `{0}`: "{1}"',invokeType,value.toString());for(var result="",trimmedSrcset=trim(value),pattern=/\s/.test(trimmedSrcset)?/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/:/(,)/,rawUris=trimmedSrcset.split(pattern),nbrUrisWith2parts=Math.floor(rawUris.length/2),i=0;i<nbrUrisWith2parts;i++){var innerIdx=2*i;result+=$sce.getTrustedMediaUrl(trim(rawUris[innerIdx])),result+=" "+trim(rawUris[innerIdx+1])}var lastTuple=trim(rawUris[2*i]).split(/\s/);return result+=$sce.getTrustedMediaUrl(trim(lastTuple[0])),2===lastTuple.length&&(result+=" "+trim(lastTuple[1])),result}function Attributes(element,attributesToCopy){if(attributesToCopy){var i,l,key,keys=Object.keys(attributesToCopy);for(i=0,l=keys.length;i<l;i++)this[key=keys[i]]=attributesToCopy[key]}else this.$attr={};this.$$element=element}function safeAddClass($element,className){try{$element.addClass(className)}catch(e){}}Attributes.prototype={$normalize:directiveNormalize,$addClass:function(classVal){classVal&&classVal.length>0&&$animate.addClass(this.$$element,classVal)},$removeClass:function(classVal){classVal&&classVal.length>0&&$animate.removeClass(this.$$element,classVal)},$updateClass:function(newClasses,oldClasses){var toAdd=tokenDifference(newClasses,oldClasses);toAdd&&toAdd.length&&$animate.addClass(this.$$element,toAdd);var toRemove=tokenDifference(oldClasses,newClasses);toRemove&&toRemove.length&&$animate.removeClass(this.$$element,toRemove)},$set:function(key,value,writeAttr,attrName){var booleanKey=getBooleanAttrName(this.$$element[0],key),aliasedKey=ALIASED_ATTR[key],observer=key;booleanKey?(this.$$element.prop(key,value),attrName=booleanKey):aliasedKey&&(this[aliasedKey]=value,observer=aliasedKey),this[key]=value,attrName?this.$attr[key]=attrName:(attrName=this.$attr[key])||(this.$attr[key]=attrName=snake_case(key,"-")),"img"===nodeName_(this.$$element)&&"srcset"===key&&(this[key]=value=sanitizeSrcset(value,"$set('srcset', value)")),!1!==writeAttr&&(null===value||isUndefined(value)?this.$$element.removeAttr(attrName):SIMPLE_ATTR_NAME.test(attrName)?booleanKey&&!1===value?this.$$element.removeAttr(attrName):this.$$element.attr(attrName,value):function(element,attrName,value){specialAttrHolder.innerHTML="<span "+attrName+">";var attributes=specialAttrHolder.firstChild.attributes,attribute=attributes[0];attributes.removeNamedItem(attribute.name),attribute.value=value,element.attributes.setNamedItem(attribute)}(this.$$element[0],attrName,value));var $$observers=this.$$observers;$$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]=[]);return listeners.push(fn),$rootScope.$evalAsync(function(){listeners.$$inter||!attrs.hasOwnProperty(key)||isUndefined(attrs[key])||fn(attrs[key])}),function(){arrayRemove(listeners,fn)}}};var startSymbol=$interpolate.startSymbol(),endSymbol=$interpolate.endSymbol(),denormalizeTemplate="{{"===startSymbol&&"}}"===endSymbol?identity:function(template){return template.replace(/\{\{/g,startSymbol).replace(/}}/g,endSymbol)},NG_PREFIX_BINDING=/^ng(Attr|Prop|On)([A-Z].*)$/,MULTI_ELEMENT_DIR_RE=/^(.+)Start$/;return compile.$$addBindingInfo=debugInfoEnabled?function($element,binding){var bindings=$element.data("$binding")||[];isArray(binding)?bindings=bindings.concat(binding):bindings.push(binding),$element.data("$binding",bindings)}:noop,compile.$$addBindingClass=debugInfoEnabled?function($element){safeAddClass($element,"ng-binding")}:noop,compile.$$addScopeInfo=debugInfoEnabled?function($element,scope,isolated,noTemplate){var dataName=isolated?noTemplate?"$isolateScopeNoTemplate":"$isolateScope":"$scope";$element.data(dataName,scope)}:noop,compile.$$addScopeClass=debugInfoEnabled?function($element,isolated){safeAddClass($element,isolated?"ng-isolate-scope":"ng-scope")}:noop,compile.$$createComment=function(directiveName,comment){var content="";return debugInfoEnabled&&(content=" "+(directiveName||"")+": ",comment&&(content+=comment+" ")),window.document.createComment(content)},compile;function compile($compileNodes,transcludeFn,maxPriority,ignoreDirective,previousCompileContext){$compileNodes instanceof jqLite||($compileNodes=jqLite($compileNodes));var compositeLinkFn=compileNodes($compileNodes,transcludeFn,$compileNodes,maxPriority,ignoreDirective,previousCompileContext);compile.$$addScopeClass($compileNodes);var namespace=null;return function(scope,cloneConnectFn,options){if(!$compileNodes)throw $compileMinErr("multilink","This element has already been linked.");assertArg(scope,"scope"),previousCompileContext&&previousCompileContext.needsNewScope&&(scope=scope.$parent.$new());var parentElement,node,$linkNode,parentBoundTranscludeFn=(options=options||{}).parentBoundTranscludeFn,transcludeControllers=options.transcludeControllers,futureParentElement=options.futureParentElement;if(parentBoundTranscludeFn&&parentBoundTranscludeFn.$$boundTransclude&&(parentBoundTranscludeFn=parentBoundTranscludeFn.$$boundTransclude),namespace||(node=(parentElement=futureParentElement)&&parentElement[0],namespace=node&&"foreignobject"!==nodeName_(node)&&toString.call(node).match(/SVG/)?"svg":"html"),$linkNode="html"!==namespace?jqLite(wrapTemplate(namespace,jqLite("<div></div>").append($compileNodes).html())):cloneConnectFn?JQLitePrototype.clone.call($compileNodes):$compileNodes,transcludeControllers)for(var controllerName in transcludeControllers)$linkNode.data("$"+controllerName+"Controller",transcludeControllers[controllerName].instance);return compile.$$addScopeInfo($linkNode,scope),cloneConnectFn&&cloneConnectFn($linkNode,scope),compositeLinkFn&&compositeLinkFn(scope,$linkNode,$linkNode,parentBoundTranscludeFn),cloneConnectFn||($compileNodes=compositeLinkFn=null),$linkNode}}function compileNodes(nodeList,transcludeFn,$rootElement,maxPriority,ignoreDirective,previousCompileContext){for(var attrs,directives,nodeLinkFn,childNodes,childLinkFn,linkFnFound,nodeLinkFnFound,linkFns=[],notLiveList=isArray(nodeList)||nodeList instanceof jqLite,i=0;i<nodeList.length;i++)attrs=new Attributes,11===msie&&mergeConsecutiveTextNodes(nodeList,i,notLiveList),(nodeLinkFn=(directives=collectDirectives(nodeList[i],[],attrs,0===i?maxPriority:void 0,ignoreDirective)).length?applyDirectivesToNode(directives,nodeList[i],attrs,transcludeFn,$rootElement,null,[],[],previousCompileContext):null)&&nodeLinkFn.scope&&compile.$$addScopeClass(attrs.$$element),childLinkFn=nodeLinkFn&&nodeLinkFn.terminal||!(childNodes=nodeList[i].childNodes)||!childNodes.length?null:compileNodes(childNodes,nodeLinkFn?(nodeLinkFn.transcludeOnThisElement||!nodeLinkFn.templateOnThisElement)&&nodeLinkFn.transclude:transcludeFn),(nodeLinkFn||childLinkFn)&&(linkFns.push(i,nodeLinkFn,childLinkFn),linkFnFound=!0,nodeLinkFnFound=nodeLinkFnFound||nodeLinkFn),previousCompileContext=null;return linkFnFound?function(scope,nodeList,$rootElement,parentBoundTranscludeFn){var nodeLinkFn,childLinkFn,node,childScope,i,ii,idx,childBoundTranscludeFn,stableNodeList;if(nodeLinkFnFound){var nodeListLength=nodeList.length;for(stableNodeList=new Array(nodeListLength),i=0;i<linkFns.length;i+=3)idx=linkFns[i],stableNodeList[idx]=nodeList[idx]}else stableNodeList=nodeList;for(i=0,ii=linkFns.length;i<ii;)node=stableNodeList[linkFns[i++]],nodeLinkFn=linkFns[i++],childLinkFn=linkFns[i++],nodeLinkFn?(nodeLinkFn.scope?(childScope=scope.$new(),compile.$$addScopeInfo(jqLite(node),childScope)):childScope=scope,childBoundTranscludeFn=nodeLinkFn.transcludeOnThisElement?createBoundTranscludeFn(scope,nodeLinkFn.transclude,parentBoundTranscludeFn):!nodeLinkFn.templateOnThisElement&&parentBoundTranscludeFn?parentBoundTranscludeFn:!parentBoundTranscludeFn&&transcludeFn?createBoundTranscludeFn(scope,transcludeFn):null,nodeLinkFn(childLinkFn,childScope,node,$rootElement,childBoundTranscludeFn)):childLinkFn&&childLinkFn(scope,node.childNodes,void 0,parentBoundTranscludeFn)}:null}function mergeConsecutiveTextNodes(nodeList,idx,notLiveList){var sibling,node=nodeList[idx],parent=node.parentNode;if(node.nodeType===NODE_TYPE_TEXT)for(;(sibling=parent?node.nextSibling:nodeList[idx+1])&&sibling.nodeType===NODE_TYPE_TEXT;)node.nodeValue=node.nodeValue+sibling.nodeValue,sibling.parentNode&&sibling.parentNode.removeChild(sibling),notLiveList&&sibling===nodeList[idx+1]&&nodeList.splice(idx+1,1)}function createBoundTranscludeFn(scope,transcludeFn,previousBoundTranscludeFn){function boundTranscludeFn(transcludedScope,cloneFn,controllers,futureParentElement,containingScope){return transcludedScope||((transcludedScope=scope.$new(!1,containingScope)).$$transcluded=!0),transcludeFn(transcludedScope,cloneFn,{parentBoundTranscludeFn:previousBoundTranscludeFn,transcludeControllers:controllers,futureParentElement:futureParentElement})}var boundSlots=boundTranscludeFn.$$slots=createMap();for(var slotName in transcludeFn.$$slots)transcludeFn.$$slots[slotName]?boundSlots[slotName]=createBoundTranscludeFn(scope,transcludeFn.$$slots[slotName],previousBoundTranscludeFn):boundSlots[slotName]=null;return boundTranscludeFn}function collectDirectives(node,directives,attrs,maxPriority,ignoreDirective){var match,nodeName,className,nodeType=node.nodeType,attrsMap=attrs.$attr;switch(nodeType){case NODE_TYPE_ELEMENT:addDirective(directives,directiveNormalize(nodeName=nodeName_(node)),"E",maxPriority,ignoreDirective);for(var attr,name,nName,value,ngPrefixMatch,nAttrs=node.attributes,j=0,jj=nAttrs&&nAttrs.length;j<jj;j++){var multiElementMatch,attrStartName=!1,attrEndName=!1,isNgAttr=!1,isNgProp=!1,isNgEvent=!1;name=(attr=nAttrs[j]).name,value=attr.value,(ngPrefixMatch=(nName=directiveNormalize(name.toLowerCase())).match(NG_PREFIX_BINDING))?(isNgAttr="Attr"===ngPrefixMatch[1],isNgProp="Prop"===ngPrefixMatch[1],isNgEvent="On"===ngPrefixMatch[1],name=name.replace(PREFIX_REGEXP,"").toLowerCase().substr(4+ngPrefixMatch[1].length).replace(/_(.)/g,function(match,letter){return letter.toUpperCase()})):(multiElementMatch=nName.match(MULTI_ELEMENT_DIR_RE))&&directiveIsMultiElement(multiElementMatch[1])&&(attrStartName=name,attrEndName=name.substr(0,name.length-5)+"end",name=name.substr(0,name.length-6)),isNgProp||isNgEvent?(attrs[nName]=value,attrsMap[nName]=attr.name,isNgProp?addPropertyDirective(node,directives,nName,name):addEventDirective(directives,nName,name)):(attrsMap[nName=directiveNormalize(name.toLowerCase())]=name,!isNgAttr&&attrs.hasOwnProperty(nName)||(attrs[nName]=value,getBooleanAttrName(node,nName)&&(attrs[nName]=!0)),addAttrInterpolateDirective(node,directives,value,nName,isNgAttr),addDirective(directives,nName,"A",maxPriority,ignoreDirective,attrStartName,attrEndName))}if("input"===nodeName&&"hidden"===node.getAttribute("type")&&node.setAttribute("autocomplete","off"),!cssClassDirectivesEnabled)break;if(isObject(className=node.className)&&(className=className.animVal),isString(className)&&""!==className)for(;match=CLASS_DIRECTIVE_REGEXP.exec(className);)addDirective(directives,nName=directiveNormalize(match[2]),"C",maxPriority,ignoreDirective)&&(attrs[nName]=trim(match[3])),className=className.substr(match.index+match[0].length);break;case NODE_TYPE_TEXT:!function(directives,text){var interpolateFn=$interpolate(text,!0);interpolateFn&&directives.push({priority:0,compile:function(templateNode){var templateNodeParent=templateNode.parent(),hasCompileParent=!!templateNodeParent.length;return hasCompileParent&&compile.$$addBindingClass(templateNodeParent),function(scope,node){var parent=node.parent();hasCompileParent||compile.$$addBindingClass(parent),compile.$$addBindingInfo(parent,interpolateFn.expressions),scope.$watch(interpolateFn,function(value){node[0].nodeValue=value})}}})}(directives,node.nodeValue);break;case NODE_TYPE_COMMENT:if(!commentDirectivesEnabled)break;!function(node,directives,attrs,maxPriority,ignoreDirective){try{var match=COMMENT_DIRECTIVE_REGEXP.exec(node.nodeValue);if(match){var nName=directiveNormalize(match[1]);addDirective(directives,nName,"M",maxPriority,ignoreDirective)&&(attrs[nName]=trim(match[2]))}}catch(e){}}(node,directives,attrs,maxPriority,ignoreDirective)}return directives.sort(byPriority),directives}function groupScan(node,attrStart,attrEnd){var nodes=[],depth=0;if(attrStart&&node.hasAttribute&&node.hasAttribute(attrStart))do{if(!node)throw $compileMinErr("uterdir","Unterminated attribute, found '{0}' but no matching '{1}' found.",attrStart,attrEnd);node.nodeType===NODE_TYPE_ELEMENT&&(node.hasAttribute(attrStart)&&depth++,node.hasAttribute(attrEnd)&&depth--),nodes.push(node),node=node.nextSibling}while(depth>0);else nodes.push(node);return jqLite(nodes)}function groupElementsLinkFnWrapper(linkFn,attrStart,attrEnd){return function(scope,element,attrs,controllers,transcludeFn){return element=groupScan(element[0],attrStart,attrEnd),linkFn(scope,element,attrs,controllers,transcludeFn)}}function compilationGenerator(eager,$compileNodes,transcludeFn,maxPriority,ignoreDirective,previousCompileContext){var compiled;return eager?compile($compileNodes,transcludeFn,maxPriority,ignoreDirective,previousCompileContext):function(){return compiled||(compiled=compile($compileNodes,transcludeFn,maxPriority,ignoreDirective,previousCompileContext),$compileNodes=transcludeFn=previousCompileContext=null),compiled.apply(this,arguments)}}function applyDirectivesToNode(directives,compileNode,templateAttrs,transcludeFn,jqCollection,originalReplaceDirective,preLinkFns,postLinkFns,previousCompileContext){previousCompileContext=previousCompileContext||{};for(var directive,directiveName,$template,linkFn,directiveValue,terminalPriority=-Number.MAX_VALUE,newScopeDirective=previousCompileContext.newScopeDirective,controllerDirectives=previousCompileContext.controllerDirectives,newIsolateScopeDirective=previousCompileContext.newIsolateScopeDirective,templateDirective=previousCompileContext.templateDirective,nonTlbTranscludeDirective=previousCompileContext.nonTlbTranscludeDirective,hasTranscludeDirective=!1,hasTemplate=!1,hasElementTranscludeDirective=previousCompileContext.hasElementTranscludeDirective,$compileNode=templateAttrs.$$element=jqLite(compileNode),replaceDirective=originalReplaceDirective,childTranscludeFn=transcludeFn,didScanForMultipleTransclusion=!1,mightHaveMultipleTransclusionError=!1,i=0,ii=directives.length;i<ii;i++){var attrStart=(directive=directives[i]).$$start,attrEnd=directive.$$end;if(attrStart&&($compileNode=groupScan(compileNode,attrStart,attrEnd)),$template=void 0,terminalPriority>directive.priority)break;if((directiveValue=directive.scope)&&(directive.templateUrl||(isObject(directiveValue)?(assertNoDuplicate("new/isolated scope",newIsolateScopeDirective||newScopeDirective,directive,$compileNode),newIsolateScopeDirective=directive):assertNoDuplicate("new/isolated scope",newIsolateScopeDirective,directive,$compileNode)),newScopeDirective=newScopeDirective||directive),directiveName=directive.name,!didScanForMultipleTransclusion&&(directive.replace&&(directive.templateUrl||directive.template)||directive.transclude&&!directive.$$tlb)){for(var candidateDirective,scanningIndex=i+1;candidateDirective=directives[scanningIndex++];)if(candidateDirective.transclude&&!candidateDirective.$$tlb||candidateDirective.replace&&(candidateDirective.templateUrl||candidateDirective.template)){mightHaveMultipleTransclusionError=!0;break}didScanForMultipleTransclusion=!0}if(!directive.templateUrl&&directive.controller&&(controllerDirectives=controllerDirectives||createMap(),assertNoDuplicate("'"+directiveName+"' controller",controllerDirectives[directiveName],directive,$compileNode),controllerDirectives[directiveName]=directive),directiveValue=directive.transclude)if(hasTranscludeDirective=!0,directive.$$tlb||(assertNoDuplicate("transclusion",nonTlbTranscludeDirective,directive,$compileNode),nonTlbTranscludeDirective=directive),"element"===directiveValue)hasElementTranscludeDirective=!0,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=window.document.createDocumentFragment();var slotMap=createMap(),filledSlots=createMap();for(var slotName in 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))];slotName?(filledSlots[slotName]=!0,slots[slotName]=slots[slotName]||window.document.createDocumentFragment(),slots[slotName].appendChild(node)):$template.appendChild(node)}),forEach(filledSlots,function(filled,slotName){if(!filled)throw $compileMinErr("reqslot","Required transclusion slot `{0}` was not filled.",slotName)}),slots)if(slots[slotName]){var slotCompileNodes=jqLite(slots[slotName].childNodes);slots[slotName]=compilationGenerator(mightHaveMultipleTransclusionError,slotCompileNodes,transcludeFn)}$template=jqLite($template.childNodes)}else $template=jqLite(jqLiteClone(compileNode)).contents();$compileNode.empty(),(childTranscludeFn=compilationGenerator(mightHaveMultipleTransclusionError,$template,transcludeFn,void 0,void 0,{needsNewScope:directive.$$isolateScope||directive.$$newScope})).$$slots=slots}if(directive.template)if(hasTemplate=!0,assertNoDuplicate("template",templateDirective,directive,$compileNode),templateDirective=directive,directiveValue=isFunction(directive.template)?directive.template($compileNode,templateAttrs):directive.template,directiveValue=denormalizeTemplate(directiveValue),directive.replace){if(replaceDirective=directive,$template=jqLiteIsTextNode(directiveValue)?[]:removeComments(wrapTemplate(directive.templateNamespace,trim(directiveValue))),compileNode=$template[0],1!==$template.length||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:{}},templateDirectives=collectDirectives(compileNode,[],newTemplateAttrs),unprocessedDirectives=directives.splice(i+1,directives.length-(i+1));(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=!0,assertNoDuplicate("template",templateDirective,directive,$compileNode),templateDirective=directive,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;isFunction(linkFn)?addLinkFns(null,bind(context,linkFn),attrStart,attrEnd):linkFn&&addLinkFns(bind(context,linkFn.pre),bind(context,linkFn.post),attrStart,attrEnd)}catch(e){$exceptionHandler(e,startingTag($compileNode))}directive.terminal&&(nodeLinkFn.terminal=!0,terminalPriority=Math.max(terminalPriority,directive.priority))}return nodeLinkFn.scope=newScopeDirective&&!0===newScopeDirective.scope,nodeLinkFn.transcludeOnThisElement=hasTranscludeDirective,nodeLinkFn.templateOnThisElement=hasTemplate,nodeLinkFn.transclude=childTranscludeFn,previousCompileContext.hasElementTranscludeDirective=hasElementTranscludeDirective,nodeLinkFn;function addLinkFns(pre,post,attrStart,attrEnd){pre&&(attrStart&&(pre=groupElementsLinkFnWrapper(pre,attrStart,attrEnd)),pre.require=directive.require,pre.directiveName=directiveName,(newIsolateScopeDirective===directive||directive.$$isolateScope)&&(pre=cloneAndAnnotateFn(pre,{isolateScope:!0})),preLinkFns.push(pre)),post&&(attrStart&&(post=groupElementsLinkFnWrapper(post,attrStart,attrEnd)),post.require=directive.require,post.directiveName=directiveName,(newIsolateScopeDirective===directive||directive.$$isolateScope)&&(post=cloneAndAnnotateFn(post,{isolateScope:!0})),postLinkFns.push(post))}function nodeLinkFn(childLinkFn,scope,linkNode,$rootElement,boundTranscludeFn){var i,ii,linkFn,isolateScope,controllerScope,elementControllers,transcludeFn,$element,attrs,scopeBindingInfo;for(var name in compileNode===linkNode?(attrs=templateAttrs,$element=templateAttrs.$$element):attrs=new Attributes($element=jqLite(linkNode),templateAttrs),controllerScope=scope,newIsolateScopeDirective?isolateScope=scope.$new(!0):newScopeDirective&&(controllerScope=scope.$parent),boundTranscludeFn&&((transcludeFn=function(scope,cloneAttachFn,futureParentElement,slotName){var transcludeControllers;isScope(scope)||(slotName=futureParentElement,futureParentElement=cloneAttachFn,cloneAttachFn=scope,scope=void 0);hasElementTranscludeDirective&&(transcludeControllers=elementControllers);futureParentElement||(futureParentElement=hasElementTranscludeDirective?$element.parent():$element);if(!slotName)return boundTranscludeFn(scope,cloneAttachFn,transcludeControllers,futureParentElement,scopeToChild);var slotTranscludeFn=boundTranscludeFn.$$slots[slotName];if(slotTranscludeFn)return slotTranscludeFn(scope,cloneAttachFn,transcludeControllers,futureParentElement,scopeToChild);if(isUndefined(slotTranscludeFn))throw $compileMinErr("noslot",'No parent directive that requires a transclusion with slot name "{0}". Element: {1}',slotName,startingTag($element))}).$$boundTransclude=boundTranscludeFn,transcludeFn.isSlotFilled=function(slotName){return!!boundTranscludeFn.$$slots[slotName]}),controllerDirectives&&(elementControllers=function($element,attrs,transcludeFn,controllerDirectives,isolateScope,scope,newIsolateScopeDirective){var elementControllers=createMap();for(var controllerKey in controllerDirectives){var directive=controllerDirectives[controllerKey],locals={$scope:directive===newIsolateScopeDirective||directive.$$isolateScope?isolateScope:scope,$element:$element,$attrs:attrs,$transclude:transcludeFn},controller=directive.controller;"@"===controller&&(controller=attrs[directive.name]);var controllerInstance=$controller(controller,locals,!0,directive.controllerAs);elementControllers[directive.name]=controllerInstance,$element.data("$"+directive.name+"Controller",controllerInstance.instance)}return elementControllers}($element,attrs,transcludeFn,controllerDirectives,isolateScope,scope,newIsolateScopeDirective)),newIsolateScopeDirective&&(compile.$$addScopeInfo($element,isolateScope,!0,!(templateDirective&&(templateDirective===newIsolateScopeDirective||templateDirective===newIsolateScopeDirective.$$originalDirective))),compile.$$addScopeClass($element,!0),isolateScope.$$isolateBindings=newIsolateScopeDirective.$$isolateBindings,(scopeBindingInfo=initializeDirectiveBindings(scope,attrs,isolateScope,isolateScope.$$isolateBindings,newIsolateScopeDirective)).removeWatches&&isolateScope.$on("$destroy",scopeBindingInfo.removeWatches)),elementControllers){var controllerDirective=controllerDirectives[name],controller=elementControllers[name],bindings=controllerDirective.$$bindings.bindToController;controller.instance=controller(),$element.data("$"+controllerDirective.name+"Controller",controller.instance),controller.bindingInfo=initializeDirectiveBindings(controllerScope,attrs,controller.instance,bindings,controllerDirective)}for(forEach(controllerDirectives,function(controllerDirective,name){var require=controllerDirective.require;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){$exceptionHandler(e)}if(isFunction(controllerInstance.$onInit))try{controllerInstance.$onInit()}catch(e){$exceptionHandler(e)}isFunction(controllerInstance.$doCheck)&&(controllerScope.$watch(function(){controllerInstance.$doCheck()}),controllerInstance.$doCheck()),isFunction(controllerInstance.$onDestroy)&&controllerScope.$on("$destroy",function(){controllerInstance.$onDestroy()})}),i=0,ii=preLinkFns.length;i<ii;i++)invokeLinkFn(linkFn=preLinkFns[i],linkFn.isolateScope?isolateScope:scope,$element,attrs,linkFn.require&&getControllers(linkFn.directiveName,linkFn.require,$element,elementControllers),transcludeFn);var scopeToChild=scope;for(newIsolateScopeDirective&&(newIsolateScopeDirective.template||null===newIsolateScopeDirective.templateUrl)&&(scopeToChild=isolateScope),childLinkFn&&childLinkFn(scopeToChild,linkNode.childNodes,void 0,boundTranscludeFn),i=postLinkFns.length-1;i>=0;i--)invokeLinkFn(linkFn=postLinkFns[i],linkFn.isolateScope?isolateScope:scope,$element,attrs,linkFn.require&&getControllers(linkFn.directiveName,linkFn.require,$element,elementControllers),transcludeFn);forEach(elementControllers,function(controller){var controllerInstance=controller.instance;isFunction(controllerInstance.$postLink)&&controllerInstance.$postLink()})}}function getControllers(directiveName,require,$element,elementControllers){var value;if(isString(require)){var match=require.match(REQUIRE_PREFIX_REGEXP),name=require.substring(match[0].length),inheritType=match[1]||match[3],optional="?"===match[2];if("^^"===inheritType?$element=$element.parent():value=(value=elementControllers&&elementControllers[name])&&value.instance,!value){var dataName="$"+name+"Controller";value="^^"===inheritType&&$element[0]&&$element[0].nodeType===NODE_TYPE_DOCUMENT?null: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;i<ii;i++)value[i]=getControllers(directiveName,require[i],$element,elementControllers)}else isObject(require)&&(value={},forEach(require,function(controller,property){value[property]=getControllers(directiveName,controller,$element,elementControllers)}));return value||null}function markDirectiveScope(directives,isolateScope,newScope){for(var j=0,jj=directives.length;j<jj;j++)directives[j]=inherit(directives[j],{$$isolateScope:isolateScope,$$newScope:newScope})}function addDirective(tDirectives,name,location,maxPriority,ignoreDirective,startAttrName,endAttrName){if(name===ignoreDirective)return null;var match=null;if(hasDirectives.hasOwnProperty(name))for(var directive,directives=$injector.get(name+Suffix),i=0,ii=directives.length;i<ii;i++)if(directive=directives[i],(isUndefined(maxPriority)||maxPriority>directive.priority)&&-1!==directive.restrict.indexOf(location)){if(startAttrName&&(directive=inherit(directive,{$$start:startAttrName,$$end:endAttrName})),!directive.$$bindings){var bindings=directive.$$bindings=parseDirectiveBindings(directive,directive.name);isObject(bindings.isolateScope)&&(directive.$$isolateBindings=bindings.isolateScope)}tDirectives.push(directive),match=directive}return match}function directiveIsMultiElement(name){if(hasDirectives.hasOwnProperty(name))for(var directives=$injector.get(name+Suffix),i=0,ii=directives.length;i<ii;i++)if(directives[i].multiElement)return!0;return!1}function mergeTemplateAttributes(dst,src){var srcAttr=src.$attr,dstAttr=dst.$attr;forEach(dst,function(value,key){"$"!==key.charAt(0)&&(src[key]&&src[key]!==value&&(value.length?value+=("style"===key?";":" ")+src[key]:value=src[key]),dst.$set(key,value,!0,srcAttr[key]))}),forEach(src,function(value,key){dst.hasOwnProperty(key)||"$"===key.charAt(0)||(dst[key]=value,"class"!==key&&"style"!==key&&(dstAttr[key]=srcAttr[key]))})}function compileTemplateUrl(directives,$compileNode,tAttrs,$rootElement,childTranscludeFn,preLinkFns,postLinkFns,previousCompileContext){var afterTemplateNodeLinkFn,afterTemplateChildLinkFn,linkQueue=[],beforeTemplateCompileNode=$compileNode[0],origAsyncDirective=directives.shift(),derivedSyncDirective=inherit(origAsyncDirective,{templateUrl:null,transclude:null,replace:null,$$originalDirective:origAsyncDirective}),templateUrl=isFunction(origAsyncDirective.templateUrl)?origAsyncDirective.templateUrl($compileNode,tAttrs):origAsyncDirective.templateUrl,templateNamespace=origAsyncDirective.templateNamespace;return $compileNode.empty(),$templateRequest(templateUrl).then(function(content){var compileNode,tempTemplateAttrs,$template,childBoundTranscludeFn;if(content=denormalizeTemplate(content),origAsyncDirective.replace){if($template=jqLiteIsTextNode(content)?[]:removeComments(wrapTemplate(templateNamespace,trim(content))),compileNode=$template[0],1!==$template.length||compileNode.nodeType!==NODE_TYPE_ELEMENT)throw $compileMinErr("tplrt","Template for directive '{0}' must have exactly one root element. {1}",origAsyncDirective.name,templateUrl);tempTemplateAttrs={$attr:{}},replaceWith($rootElement,$compileNode,compileNode);var templateDirectives=collectDirectives(compileNode,[],tempTemplateAttrs);isObject(origAsyncDirective.scope)&&markDirectiveScope(templateDirectives,!0),directives=templateDirectives.concat(directives),mergeTemplateAttributes(tAttrs,tempTemplateAttrs)}else compileNode=beforeTemplateCompileNode,$compileNode.html(content);for(directives.unshift(derivedSyncDirective),afterTemplateNodeLinkFn=applyDirectivesToNode(directives,compileNode,tAttrs,childTranscludeFn,$compileNode,origAsyncDirective,preLinkFns,postLinkFns,previousCompileContext),forEach($rootElement,function(node,i){node===compileNode&&($rootElement[i]=$compileNode[0])}),afterTemplateChildLinkFn=compileNodes($compileNode[0].childNodes,childTranscludeFn);linkQueue.length;){var scope=linkQueue.shift(),beforeTemplateLinkNode=linkQueue.shift(),linkRootElement=linkQueue.shift(),boundTranscludeFn=linkQueue.shift(),linkNode=$compileNode[0];if(!scope.$$destroyed){if(beforeTemplateLinkNode!==beforeTemplateCompileNode){var oldClasses=beforeTemplateLinkNode.className;previousCompileContext.hasElementTranscludeDirective&&origAsyncDirective.replace||(linkNode=jqLiteClone(compileNode)),replaceWith(linkRootElement,jqLite(beforeTemplateLinkNode),linkNode),safeAddClass(jqLite(linkNode),oldClasses)}childBoundTranscludeFn=afterTemplateNodeLinkFn.transcludeOnThisElement?createBoundTranscludeFn(scope,afterTemplateNodeLinkFn.transclude,boundTranscludeFn):boundTranscludeFn,afterTemplateNodeLinkFn(afterTemplateChildLinkFn,scope,linkNode,$rootElement,childBoundTranscludeFn)}}linkQueue=null}).catch(function(error){isError(error)&&$exceptionHandler(error)}),function(ignoreChildLinkFn,scope,node,rootElement,boundTranscludeFn){var childBoundTranscludeFn=boundTranscludeFn;scope.$$destroyed||(linkQueue?linkQueue.push(scope,node,rootElement,childBoundTranscludeFn):(afterTemplateNodeLinkFn.transcludeOnThisElement&&(childBoundTranscludeFn=createBoundTranscludeFn(scope,afterTemplateNodeLinkFn.transclude,boundTranscludeFn)),afterTemplateNodeLinkFn(afterTemplateChildLinkFn,scope,node,rootElement,childBoundTranscludeFn)))}}function byPriority(a,b){var diff=b.priority-a.priority;return 0!==diff?diff:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function assertNoDuplicate(what,previousDirective,directive,element){function wrapModuleNameIfDefined(moduleName){return moduleName?" (module: "+moduleName+")":""}if(previousDirective)throw $compileMinErr("multidir","Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}",previousDirective.name,wrapModuleNameIfDefined(previousDirective.$$moduleName),directive.name,wrapModuleNameIfDefined(directive.$$moduleName),what,startingTag(element))}function wrapTemplate(type,template){switch(type=lowercase(type||"html")){case"svg":case"math":var wrapper=window.document.createElement("div");return wrapper.innerHTML="<"+type+">"+template+"</"+type+">",wrapper.childNodes[0].childNodes;default:return template}}function sanitizeSrcsetPropertyValue(value){return sanitizeSrcset($sce.valueOf(value),"ng-prop-srcset")}function addPropertyDirective(node,directives,attrName,propName){if(EVENT_HANDLER_ATTR_REGEXP.test(propName))throw $compileMinErr("nodomevents","Property bindings for HTML DOM event properties are disallowed");var nodeName=nodeName_(node),trustedContext=function(nodeName,propNormalizedName){var prop=propNormalizedName.toLowerCase();return PROP_CONTEXTS[nodeName+"|"+prop]||PROP_CONTEXTS["*|"+prop]}(nodeName,propName),sanitizer=identity;"srcset"!==propName||"img"!==nodeName&&"source"!==nodeName?trustedContext&&(sanitizer=$sce.getTrusted.bind($sce,trustedContext)):sanitizer=sanitizeSrcsetPropertyValue,directives.push({priority:100,compile:function(_,attr){var ngPropGetter=$parse(attr[attrName]),ngPropWatch=$parse(attr[attrName],function(val){return $sce.valueOf(val)});return{pre:function(scope,$element){function applyPropValue(){var propValue=ngPropGetter(scope);$element[0][propName]=sanitizer(propValue)}applyPropValue(),scope.$watch(ngPropWatch,applyPropValue)}}}})}function addEventDirective(directives,attrName,eventName){directives.push(createEventDirective($parse,$rootScope,$exceptionHandler,attrName,eventName,!1))}function addAttrInterpolateDirective(node,directives,value,name,isNgAttr){var nodeName=nodeName_(node),trustedContext=function(nodeName,attrNormalizedName){return"srcdoc"===attrNormalizedName?$sce.HTML:"src"===attrNormalizedName||"ngSrc"===attrNormalizedName?-1===["img","video","audio","source","track"].indexOf(nodeName)?$sce.RESOURCE_URL:$sce.MEDIA_URL:"xlinkHref"===attrNormalizedName?"image"===nodeName?$sce.MEDIA_URL:"a"===nodeName?$sce.URL:$sce.RESOURCE_URL:"form"===nodeName&&"action"===attrNormalizedName||"base"===nodeName&&"href"===attrNormalizedName||"link"===nodeName&&"href"===attrNormalizedName?$sce.RESOURCE_URL:"a"!==nodeName||"href"!==attrNormalizedName&&"ngHref"!==attrNormalizedName?void 0:$sce.URL}(nodeName,name),mustHaveExpression=!isNgAttr,allOrNothing=ALL_OR_NOTHING_ATTRS[name]||isNgAttr,interpolateFn=$interpolate(value,mustHaveExpression,trustedContext,allOrNothing);if(interpolateFn){if("multiple"===name&&"select"===nodeName)throw $compileMinErr("selmulti","Binding to the 'multiple' attribute is not supported. Element: {0}",startingTag(node));if(EVENT_HANDLER_ATTR_REGEXP.test(name))throw $compileMinErr("nodomevents","Interpolations for HTML DOM event attributes are disallowed");directives.push({priority:100,compile:function(){return{pre:function(scope,element,attr){var $$observers=attr.$$observers||(attr.$$observers=createMap()),newValue=attr[name];newValue!==value&&(interpolateFn=newValue&&$interpolate(newValue,!0,trustedContext,allOrNothing),value=newValue),interpolateFn&&(attr[name]=interpolateFn(scope),($$observers[name]||($$observers[name]=[])).$$inter=!0,(attr.$$observers&&attr.$$observers[name].$$scope||scope).$watch(interpolateFn,function(newValue,oldValue){"class"===name&&newValue!==oldValue?attr.$updateClass(newValue,oldValue):attr.$set(name,newValue)}))}}}})}}function replaceWith($rootElement,elementsToRemove,newNode){var i,ii,firstElementToRemove=elementsToRemove[0],removeCount=elementsToRemove.length,parent=firstElementToRemove.parentNode;if($rootElement)for(i=0,ii=$rootElement.length;i<ii;i++)if($rootElement[i]===firstElementToRemove){$rootElement[i++]=newNode;for(var j=i,j2=j+removeCount-1,jj=$rootElement.length;j<jj;j++,j2++)j2<jj?$rootElement[j]=$rootElement[j2]:delete $rootElement[j];$rootElement.length-=removeCount-1,$rootElement.context===firstElementToRemove&&($rootElement.context=newNode);break}parent&&parent.replaceChild(newNode,firstElementToRemove);var fragment=window.document.createDocumentFragment();for(i=0;i<removeCount;i++)fragment.appendChild(elementsToRemove[i]);for(jqLite.hasData(firstElementToRemove)&&(jqLite.data(newNode,jqLite.data(firstElementToRemove)),jqLite(firstElementToRemove).off("$destroy")),jqLite.cleanData(fragment.querySelectorAll("*")),i=1;i<removeCount;i++)delete elementsToRemove[i];elementsToRemove[0]=newNode,elementsToRemove.length=1}function cloneAndAnnotateFn(fn,annotation){return extend(function(){return fn.apply(null,arguments)},fn,annotation)}function invokeLinkFn(linkFn,scope,$element,attrs,controllers,transcludeFn){try{linkFn(scope,$element,attrs,controllers,transcludeFn)}catch(e){$exceptionHandler(e,startingTag($element))}}function strictBindingsCheck(attrName,directiveName){if(strictComponentBindingsEnabled)throw $compileMinErr("missingattr","Attribute '{0}' of '{1}' is non-optional and must be set!",attrName,directiveName)}function initializeDirectiveBindings(scope,attrs,destination,bindings,directive){var changes,removeWatchCollection=[],initialChanges={};function recordChanges(key,currentValue,previousValue){isFunction(destination.$onChanges)&&!simpleCompare(currentValue,previousValue)&&(onChangesQueue||(scope.$$postDigest(flushOnChangesQueue),onChangesQueue=[]),changes||(changes={},onChangesQueue.push(triggerOnChangesHook)),changes[key]&&(previousValue=changes[key].previousValue),changes[key]=new SimpleChange(previousValue,currentValue))}function triggerOnChangesHook(){destination.$onChanges(changes),changes=void 0}return forEach(bindings,function(definition,scopeName){var lastValue,parentGet,parentSet,compare,removeWatch,attrName=definition.attrName,optional=definition.optional;switch(definition.mode){case"@":optional||hasOwnProperty.call(attrs,attrName)||(strictBindingsCheck(attrName,directive.name),destination[scopeName]=attrs[attrName]=void 0),removeWatch=attrs.$observe(attrName,function(value){if(isString(value)||isBoolean(value)){var oldValue=destination[scopeName];recordChanges(scopeName,value,oldValue),destination[scopeName]=value}}),attrs.$$observers[attrName].$$scope=scope,isString(lastValue=attrs[attrName])?destination[scopeName]=$interpolate(lastValue)(scope):isBoolean(lastValue)&&(destination[scopeName]=lastValue),initialChanges[scopeName]=new SimpleChange(_UNINITIALIZED_VALUE,destination[scopeName]),removeWatchCollection.push(removeWatch);break;case"=":if(!hasOwnProperty.call(attrs,attrName)){if(optional)break;strictBindingsCheck(attrName,directive.name),attrs[attrName]=void 0}if(optional&&!attrs[attrName])break;parentGet=$parse(attrs[attrName]),compare=parentGet.literal?equals:simpleCompare,parentSet=parentGet.assign||function(){throw lastValue=destination[scopeName]=parentGet(scope),$compileMinErr("nonassign","Expression '{0}' in attribute '{1}' used with directive '{2}' is non-assignable!",attrs[attrName],attrName,directive.name)},lastValue=destination[scopeName]=parentGet(scope);var parentValueWatch=function(parentValue){return compare(parentValue,destination[scopeName])||(compare(parentValue,lastValue)?parentSet(scope,parentValue=destination[scopeName]):destination[scopeName]=parentValue),lastValue=parentValue};parentValueWatch.$stateful=!0,removeWatch=definition.collection?scope.$watchCollection(attrs[attrName],parentValueWatch):scope.$watch($parse(attrs[attrName],parentValueWatch),null,parentGet.literal),removeWatchCollection.push(removeWatch);break;case"<":if(!hasOwnProperty.call(attrs,attrName)){if(optional)break;strictBindingsCheck(attrName,directive.name),attrs[attrName]=void 0}if(optional&&!attrs[attrName])break;var isLiteral=(parentGet=$parse(attrs[attrName])).literal,initialValue=destination[scopeName]=parentGet(scope);initialChanges[scopeName]=new SimpleChange(_UNINITIALIZED_VALUE,destination[scopeName]),removeWatch=scope[definition.collection?"$watchCollection":"$watch"](parentGet,function(newValue,oldValue){if(oldValue===newValue){if(oldValue===initialValue||isLiteral&&equals(oldValue,initialValue))return;oldValue=initialValue}recordChanges(scopeName,newValue,oldValue),destination[scopeName]=newValue}),removeWatchCollection.push(removeWatch);break;case"&":if(optional||hasOwnProperty.call(attrs,attrName)||strictBindingsCheck(attrName,directive.name),(parentGet=attrs.hasOwnProperty(attrName)?$parse(attrs[attrName]):noop)===noop&&optional)break;destination[scopeName]=function(locals){return parentGet(scope,locals)}}}),{initialChanges:initialChanges,removeWatches:removeWatchCollection.length&&function(){for(var i=0,ii=removeWatchCollection.length;i<ii;++i)removeWatchCollection[i]()}}}}]}function SimpleChange(previous,current){this.previousValue=previous,this.currentValue=current}$CompileProvider.$inject=["$provide","$$sanitizeUriProvider"],SimpleChange.prototype.isFirstChange=function(){return this.previousValue===_UNINITIALIZED_VALUE};var PREFIX_REGEXP=/^((?:x|data)[:\-_])/i,SPECIAL_CHARS_REGEXP=/[:\-_]+(.)/g;function directiveNormalize(name){return name.replace(PREFIX_REGEXP,"").replace(SPECIAL_CHARS_REGEXP,function(_,letter,offset){return offset?letter.toUpperCase():letter})}function tokenDifference(str1,str2){var values="",tokens1=str1.split(/\s+/),tokens2=str2.split(/\s+/);outer:for(var i=0;i<tokens1.length;i++){for(var token=tokens1[i],j=0;j<tokens2.length;j++)if(token===tokens2[j])continue outer;values+=(values.length>0?" ":"")+token}return values}function removeComments(jqNodes){var i=(jqNodes=jqLite(jqNodes)).length;if(i<=1)return jqNodes;for(;i--;){var node=jqNodes[i];(node.nodeType===NODE_TYPE_COMMENT||node.nodeType===NODE_TYPE_TEXT&&""===node.nodeValue.trim())&&splice.call(jqNodes,i,1)}return jqNodes}var $controllerMinErr=minErr("$controller"),CNTRL_REG=/^(\S+)(\s+as\s+([\w$]+))?$/;function $ControllerProvider(){var controllers={};this.has=function(name){return controllers.hasOwnProperty(name)},this.register=function(name,constructor){assertNotHasOwnProperty(name,"controller"),isObject(name)?extend(controllers,name):controllers[name]=constructor},this.$get=["$injector",function($injector){return function(expression,locals,later,ident){var instance,match,constructor,identifier;if(later=!0===later,ident&&isString(ident)&&(identifier=ident),isString(expression)){if(!(match=expression.match(CNTRL_REG)))throw $controllerMinErr("ctrlfmt","Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.",expression);if(constructor=match[1],identifier=identifier||match[3],!(expression=controllers.hasOwnProperty(constructor)?controllers[constructor]:function(obj,path,bindFnToScope){if(!path)return obj;for(var key,keys=path.split("."),lastInstance=obj,len=keys.length,i=0;i<len;i++)key=keys[i],obj&&(obj=(lastInstance=obj)[key]);return!bindFnToScope&&isFunction(obj)?bind(lastInstance,obj):obj}(locals.$scope,constructor,!0)))throw $controllerMinErr("ctrlreg","The controller with the name '{0}' is not registered.",constructor);assertArgFn(expression,constructor,!0)}if(later){var controllerPrototype=(isArray(expression)?expression[expression.length-1]:expression).prototype;return instance=Object.create(controllerPrototype||null),identifier&&addIdentifier(locals,identifier,instance,constructor||expression.name),extend(function(){var result=$injector.invoke(expression,instance,locals,constructor);return result!==instance&&(isObject(result)||isFunction(result))&&(instance=result,identifier&&addIdentifier(locals,identifier,instance,constructor||expression.name)),instance},{instance:instance,identifier:identifier})}return instance=$injector.instantiate(expression,locals,constructor),identifier&&addIdentifier(locals,identifier,instance,constructor||expression.name),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],hidden=doc&&doc.hidden;function changeListener(){hidden=doc.hidden}return $document.on("visibilitychange",changeListener),$rootScope.$on("$destroy",function(){$document.off("visibilitychange",changeListener)}),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){return domNode?!domNode.nodeType&&domNode instanceof jqLite&&(domNode=domNode[0]):domNode=$document[0].body,domNode.offsetWidth+1}}]},APPLICATION_JSON="application/json",CONTENT_TYPE_APPLICATION_JSON={"Content-Type":APPLICATION_JSON+";charset=utf-8"},JSON_START=/^\[|^\{(?!\{)/,JSON_ENDS={"[":/]$/,"{":/}$/},JSON_PROTECTION_PREFIX=/^\)]\}',?\n/,$httpMinErr=minErr("$http");function serializeValue(v){return isObject(v)?isDate(v)?v.toISOString():toJson(v):v}function $HttpParamSerializerProvider(){this.$get=function(){return function(params){if(!params)return"";var parts=[];return forEachSorted(params,function(value,key){null===value||isUndefined(value)||isFunction(value)||(isArray(value)?forEach(value,function(v){parts.push(encodeUriQuery(key)+"="+encodeUriQuery(serializeValue(v)))}):parts.push(encodeUriQuery(key)+"="+encodeUriQuery(serializeValue(value))))}),parts.join("&")}}}function $HttpParamSerializerJQLikeProvider(){this.$get=function(){return function(params){if(!params)return"";var parts=[];return function serialize(toSerialize,prefix,topLevel){isArray(toSerialize)?forEach(toSerialize,function(value,index){serialize(value,prefix+"["+(isObject(value)?index:"")+"]")}):isObject(toSerialize)&&!isDate(toSerialize)?forEachSorted(toSerialize,function(value,key){serialize(value,prefix+(topLevel?"":"[")+key+(topLevel?"":"]"))}):(isFunction(toSerialize)&&(toSerialize=toSerialize()),parts.push(encodeUriQuery(prefix)+"="+(null==toSerialize?"":encodeUriQuery(serializeValue(toSerialize)))))}(params,"",!0),parts.join("&")}}}function defaultHttpResponseTransform(data,headers){if(isString(data)){var tempData=data.replace(JSON_PROTECTION_PREFIX,"").trim();if(tempData){var contentType=headers("Content-Type"),hasJsonContentType=contentType&&0===contentType.indexOf(APPLICATION_JSON);if(hasJsonContentType||(jsonStart=(str=tempData).match(JSON_START))&&JSON_ENDS[jsonStart[0]].test(str))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)}}}var str,jsonStart;return data}function parseHeaders(headers){var i,parsed=createMap();function fillInParsed(key,val){key&&(parsed[key]=parsed[key]?parsed[key]+", "+val:val)}return isString(headers)?forEach(headers.split("\n"),function(line){i=line.indexOf(":"),fillInParsed(lowercase(trim(line.substr(0,i))),trim(line.substr(i+1)))}):isObject(headers)&&forEach(headers,function(headerVal,headerKey){fillInParsed(lowercase(headerKey),trim(headerVal))}),parsed}function headersGetter(headers){var headersObj;return function(name){if(headersObj||(headersObj=parseHeaders(headers)),name){var value=headersObj[lowercase(name)];return void 0===value&&(value=null),value}return headersObj}}function transformData(data,headers,status,fns){return isFunction(fns)?fns(data,headers,status):(forEach(fns,function(fn){data=fn(data,headers,status)}),data)}function isSuccess(status){return 200<=status&&status<300}function $HttpProvider(){var defaults=this.defaults={transformResponse:[defaultHttpResponseTransform],transformRequest:[function(d){return!isObject(d)||(obj=d,"[object File]"===toString.call(obj))||function(obj){return"[object Blob]"===toString.call(obj)}(d)||function(obj){return"[object FormData]"===toString.call(obj)}(d)?d:toJson(d);var obj}],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"},useApplyAsync=!1;this.useApplyAsync=function(value){return isDefined(value)?(useApplyAsync=!!value,this):useApplyAsync};var interceptorFactories=this.interceptors=[],xsrfWhitelistedOrigins=this.xsrfWhitelistedOrigins=[];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 parsedAllowedOriginUrls,urlIsAllowedOrigin=(parsedAllowedOriginUrls=[originUrl].concat(xsrfWhitelistedOrigins.map(urlResolve)),function(requestUrl){var parsedUrl=urlResolve(requestUrl);return parsedAllowedOriginUrls.some(urlsAreSameOrigin.bind(null,parsedUrl))});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=function(config){var defHeaderName,lowercaseDefHeaderName,reqHeaderName,defHeaders=defaults.headers,reqHeaders=extend({},config.headers);defHeaders=extend({},defHeaders.common,defHeaders[lowercase(config.method)]);defaultHeadersIteration:for(defHeaderName in defHeaders){for(reqHeaderName in lowercaseDefHeaderName=lowercase(defHeaderName),reqHeaders)if(lowercase(reqHeaderName)===lowercaseDefHeaderName)continue defaultHeadersIteration;reqHeaders[defHeaderName]=defHeaders[defHeaderName]}return function(headers,config){var headerContent,processedHeaders={};return forEach(headers,function(headerFn,header){isFunction(headerFn)?null!=(headerContent=headerFn(config))&&(processedHeaders[header]=headerContent):processedHeaders[header]=headerFn}),processedHeaders}(reqHeaders,shallowCopy(config))}(requestConfig),config.method=uppercase(config.method),config.paramSerializer=isString(config.paramSerializer)?$injector.get(config.paramSerializer):config.paramSerializer,$browser.$$incOutstandingRequestCount("$http");var requestInterceptors=[],responseInterceptors=[],promise=$q.resolve(config);return forEach(reversedInterceptors,function(interceptor){(interceptor.request||interceptor.requestError)&&requestInterceptors.unshift(interceptor.request,interceptor.requestError),(interceptor.response||interceptor.responseError)&&responseInterceptors.push(interceptor.response,interceptor.responseError)}),promise=(promise=chainInterceptors(promise=(promise=chainInterceptors(promise,requestInterceptors)).then(function(config){var headers=config.headers,reqData=transformData(config.data,headersGetter(headers),void 0,config.transformRequest);isUndefined(reqData)&&forEach(headers,function(value,header){"content-type"===lowercase(header)&&delete headers[header]});isUndefined(config.withCredentials)&&!isUndefined(defaults.withCredentials)&&(config.withCredentials=defaults.withCredentials);return function(config,reqData){var cache,cachedResp,deferred=$q.defer(),promise=deferred.promise,reqHeaders=config.headers,isJsonp="jsonp"===lowercase(config.method),url=config.url;isJsonp?url=$sce.getTrustedResourceUrl(url):isString(url)||(url=$sce.valueOf(url));url=function(url,serializedParams){return serializedParams.length>0&&(url+=(-1===url.indexOf("?")?"?":"&")+serializedParams),url}(url,config.paramSerializer(config.params)),isJsonp&&(url=function(url,cbKey){var parts=url.split("?");if(parts.length>2)throw $httpMinErr("badjsonp",'Illegal use more than one "?", in url, "{1}"',url);return forEach(parseKeyValue(parts[1]),function(value,key){if("JSON_CALLBACK"===value)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+=(-1===url.indexOf("?")?"?":"&")+cbKey+"=JSON_CALLBACK"}(url,config.jsonpCallbackParam));$http.pendingRequests.push(config),promise.then(removePendingReq,removePendingReq),!config.cache&&!defaults.cache||!1===config.cache||"GET"!==config.method&&"JSONP"!==config.method||(cache=isObject(config.cache)?config.cache:isObject(defaults.cache)?defaults.cache:defaultCache);cache&&(isDefined(cachedResp=cache.get(url))?isPromiseLike(cachedResp)?cachedResp.then(resolvePromiseWithResult,resolvePromiseWithResult):isArray(cachedResp)?resolvePromise(cachedResp[1],cachedResp[0],shallowCopy(cachedResp[2]),cachedResp[3],cachedResp[4]):resolvePromise(cachedResp,200,{},"OK","complete"):cache.put(url,promise));if(isUndefined(cachedResp)){var xsrfValue=urlIsAllowedOrigin(config.url)?$$cookieReader()[config.xsrfCookieName||defaults.xsrfCookieName]:void 0;xsrfValue&&(reqHeaders[config.xsrfHeaderName||defaults.xsrfHeaderName]=xsrfValue),$httpBackend(config.method,url,reqData,function(status,response,headersString,statusText,xhrStatus){cache&&(isSuccess(status)?cache.put(url,[status,response,parseHeaders(headersString),statusText,xhrStatus]):cache.remove(url));function resolveHttpPromise(){resolvePromise(response,status,headersString,statusText,xhrStatus)}useApplyAsync?$rootScope.$applyAsync(resolveHttpPromise):(resolveHttpPromise(),$rootScope.$$phase||$rootScope.$apply())},reqHeaders,config.timeout,config.withCredentials,config.responseType,createApplyHandlers(config.eventHandlers),createApplyHandlers(config.uploadEventHandlers))}return promise;function createApplyHandlers(eventHandlers){if(eventHandlers){var applyHandlers={};return forEach(eventHandlers,function(eventHandler,key){applyHandlers[key]=function(event){function callEventHandler(){eventHandler(event)}useApplyAsync?$rootScope.$applyAsync(callEventHandler):$rootScope.$$phase?callEventHandler():$rootScope.$apply(callEventHandler)}}),applyHandlers}}function resolvePromise(response,status,headers,statusText,xhrStatus){(isSuccess(status=status>=-1?status:0)?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);-1!==idx&&$http.pendingRequests.splice(idx,1)}}(config,reqData).then(transformResponse,transformResponse)}),responseInterceptors)).finally(function(){$browser.$$completeOutstandingRequest(noop,"$http")});function chainInterceptors(promise,interceptors){for(var i=0,ii=interceptors.length;i<ii;){var thenFn=interceptors[i++],rejectFn=interceptors[i++];promise=promise.then(thenFn,rejectFn)}return interceptors.length=0,promise}function transformResponse(response){var resp=extend({},response);return resp.data=transformData(response.data,response.headers,response.status,config.transformResponse),isSuccess(response.status)?resp:$q.reject(resp)}}return $http.pendingRequests=[],function(names){forEach(arguments,function(name){$http[name]=function(url,config){return $http(extend({},config||{},{method:name,url:url}))}})}("get","delete","head","jsonp"),function(name){forEach(arguments,function(name){$http[name]=function(url,data,config){return $http(extend({},config||{},{method:name,url:url,data:data}))}})}("post","put","patch"),$http.defaults=defaults,$http}]}function $xhrFactoryProvider(){this.$get=function(){return function(){return new window.XMLHttpRequest}}}function $HttpBackendProvider(){this.$get=["$browser","$jsonpCallbacks","$document","$xhrFactory",function($browser,$jsonpCallbacks,$document,$xhrFactory){return function($browser,createXhr,$browserDefer,callbacks,rawDocument){return function(method,url,post,callback,headers,timeout,withCredentials,responseType,eventHandlers,uploadEventHandlers){if(url=url||$browser.url(),"jsonp"===lowercase(method))var callbackPath=callbacks.createCallback(url),jsonpDone=function(url,callbackPath,done){url=url.replace("JSON_CALLBACK",callbackPath);var script=rawDocument.createElement("script"),callback=null;return script.type="text/javascript",script.src=url,script.async=!0,callback=function(event){script.removeEventListener("load",callback),script.removeEventListener("error",callback),rawDocument.body.removeChild(script),script=null;var status=-1,text="unknown";event&&("load"!==event.type||callbacks.wasCalled(callbackPath)||(event={type:"error"}),text=event.type,status="error"===event.type?404:200),done&&done(status,text)},script.addEventListener("load",callback),script.addEventListener("error",callback),rawDocument.body.appendChild(script),callback}(url,callbackPath,function(status,text){var response=200===status&&callbacks.getResponse(callbackPath);completeRequest(callback,status,response,"",text,"complete"),callbacks.removeCallback(callbackPath)});else{var xhr=createXhr(method,url),abortedByTimeout=!1;xhr.open(method,url,!0),forEach(headers,function(value,key){isDefined(value)&&xhr.setRequestHeader(key,value)}),xhr.onload=function(){var statusText=xhr.statusText||"",response="response"in xhr?xhr.response:xhr.responseText,status=1223===xhr.status?204:xhr.status;0===status&&(status=response?200:"file"===urlResolve(url).protocol?404:0),completeRequest(callback,status,response,xhr.getAllResponseHeaders(),statusText,"complete")};if(xhr.onerror=function(){completeRequest(callback,-1,null,null,"","error")},xhr.ontimeout=function(){completeRequest(callback,-1,null,null,"","timeout")},xhr.onabort=function(){completeRequest(callback,-1,null,null,"",abortedByTimeout?"timeout":"abort")},forEach(eventHandlers,function(value,key){xhr.addEventListener(key,value)}),forEach(uploadEventHandlers,function(value,key){xhr.upload.addEventListener(key,value)}),withCredentials&&(xhr.withCredentials=!0),responseType)try{xhr.responseType=responseType}catch(e){if("json"!==responseType)throw e}xhr.send(isUndefined(post)?null:post)}if(timeout>0)var timeoutId=$browserDefer(function(){timeoutRequest("timeout")},timeout);else isPromiseLike(timeout)&&timeout.then(function(){timeoutRequest(isDefined(timeout.$$timeoutId)?"timeout":"abort")});function timeoutRequest(reason){abortedByTimeout="timeout"===reason,jsonpDone&&jsonpDone(),xhr&&xhr.abort()}function completeRequest(callback,status,response,headersString,statusText,xhrStatus){isDefined(timeoutId)&&$browserDefer.cancel(timeoutId),jsonpDone=xhr=null,callback(status,response,headersString,statusText,xhrStatus)}}}($browser,$xhrFactory,$browser.defer,$jsonpCallbacks,$document[0])}]}var $interpolateMinErr=angular.$interpolateMinErr=minErr("$interpolate");function $InterpolateProvider(){var startSymbol="{{",endSymbol="}}";this.startSymbol=function(value){return value?(startSymbol=value,this):startSymbol},this.endSymbol=function(value){return value?(endSymbol=value,this):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(scope){return unwatch(),constantInterp(scope)},listener,objectEquality);return unwatch}function $interpolate(text,mustHaveExpression,trustedContext,allOrNothing){var contextAllowsConcatenation=trustedContext===$sce.URL||trustedContext===$sce.MEDIA_URL;if(!text.length||-1===text.indexOf(startSymbol)){if(mustHaveExpression)return;var unescapedText=unescapeText(text);contextAllowsConcatenation&&(unescapedText=$sce.getTrusted(trustedContext,unescapedText));var constantInterp=valueFn(unescapedText);return constantInterp.exp=text,constantInterp.expressions=[],constantInterp.$$watchDelegate=constantWatchDelegate,constantInterp}allOrNothing=!!allOrNothing;for(var startIndex,endIndex,parseFns,exp,singleExpression,index=0,expressions=[],textLength=text.length,concat=[],expressionPositions=[];index<textLength;){if(-1===(startIndex=text.indexOf(startSymbol,index))||-1===(endIndex=text.indexOf(endSymbol,startIndex+startSymbolLength))){index!==textLength&&concat.push(unescapeText(text.substring(index)));break}index!==startIndex&&concat.push(unescapeText(text.substring(index,startIndex))),exp=text.substring(startIndex+startSymbolLength,endIndex),expressions.push(exp),index=endIndex+endSymbolLength,expressionPositions.push(concat.length),concat.push("")}singleExpression=1===concat.length&&1===expressionPositions.length;var interceptor=contextAllowsConcatenation&&singleExpression?void 0:function(value){try{return value=trustedContext&&!contextAllowsConcatenation?$sce.getTrusted(trustedContext,value):$sce.valueOf(value),allOrNothing&&!isDefined(value)?value:stringify(value)}catch(err){$exceptionHandler($interpolateMinErr.interr(text,err))}};if(parseFns=expressions.map(function(exp){return $parse(exp,interceptor)}),!mustHaveExpression||expressions.length){var compute=function(values){for(var i=0,ii=expressions.length;i<ii;i++){if(allOrNothing&&isUndefined(values[i]))return;concat[expressionPositions[i]]=values[i]}return contextAllowsConcatenation?$sce.getTrusted(trustedContext,singleExpression?concat[0]:concat.join("")):(trustedContext&&concat.length>1&&$interpolateMinErr.throwNoconcat(text),concat.join(""))};return extend(function(context){var i=0,ii=expressions.length,values=new Array(ii);try{for(;i<ii;i++)values[i]=parseFns[i](context);return compute(values)}catch(err){$exceptionHandler($interpolateMinErr.interr(text,err))}},{exp:text,expressions:expressions,$$watchDelegate:function(scope,listener){var lastValue;return scope.$watchGroup(parseFns,function(values,oldValues){var currValue=compute(values);listener.call(this,currValue,values!==oldValues?lastValue:currValue,scope),lastValue=currValue})}})}}return $interpolate.startSymbol=function(){return startSymbol},$interpolate.endSymbol=function(){return endSymbol},$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 http://docs.angularjs.org/api/ng.$sce",text)},$interpolateMinErr.interr=function(text,err){return $interpolateMinErr("interr","Can't interpolate: {0}\n{1}",text,err.toString())};var $intervalMinErr=minErr("$interval");function $IntervalProvider(){this.$get=["$$intervalFactory","$window",function($$intervalFactory,$window){var intervals={},clearIntervalFn=function(id){$window.clearInterval(id),delete intervals[id]},interval=$$intervalFactory(function(tick,delay,deferred){var id=$window.setInterval(tick,delay);return intervals[id]=deferred,id},clearIntervalFn);return interval.cancel=function(promise){if(!promise)return!1;if(!promise.hasOwnProperty("$$intervalId"))throw $intervalMinErr("badprom","`$interval.cancel()` called with a promise that was not generated by `$interval()`.");if(!intervals.hasOwnProperty(promise.$$intervalId))return!1;var id=promise.$$intervalId,deferred=intervals[id];return markQExceptionHandled(deferred.promise),deferred.reject("canceled"),clearIntervalFn(id),!0},interval}]}function $$IntervalFactoryProvider(){this.$get=["$browser","$q","$$q","$rootScope",function($browser,$q,$$q,$rootScope){return function(setIntervalFn,clearIntervalFn){return function(fn,delay,count,invokeApply){var hasParams=arguments.length>4,args=hasParams?sliceArgs(arguments,4):[],iteration=0,skipApply=isDefined(invokeApply)&&!invokeApply,deferred=(skipApply?$$q:$q).defer(),promise=deferred.promise;function callback(){hasParams?fn.apply(null,args):fn(iteration)}return count=isDefined(count)?count:0,promise.$$intervalId=setIntervalFn(function(){skipApply?$browser.defer(callback):$rootScope.$evalAsync(callback),deferred.notify(iteration++),count>0&&iteration>=count&&(deferred.resolve(iteration),clearIntervalFn(promise.$$intervalId)),skipApply||$rootScope.$apply()},delay,deferred,skipApply),promise}}}]}var $jsonpCallbacksProvider=function(){this.$get=function(){var callbacks=angular.callbacks,callbackMap={};return{createCallback:function(url){var callbackId="_"+(callbacks.$$counter++).toString(36),callbackPath="angular.callbacks."+callbackId,callback=function(callbackId){var callback=function(data){callback.data=data,callback.called=!0};return callback.id=callbackId,callback}(callbackId);return callbackMap[callbackPath]=callbacks[callbackId]=callback,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]}}}},PATH_MATCH=/^([^?#]*)(\?([^#]*))?(#(.*))?$/,DEFAULT_PORTS={http:80,https:443,ftp:21},$locationMinErr=minErr("$location");function normalizePath(pathValue,searchValue,hashValue){var parts,search=(parts=[],forEach(searchValue,function(value,key){isArray(value)?forEach(value,function(arrayValue){parts.push(encodeUriQuery(key,!0)+(!0===arrayValue?"":"="+encodeUriQuery(arrayValue,!0)))}):parts.push(encodeUriQuery(key,!0)+(!0===value?"":"="+encodeUriQuery(value,!0)))}),parts.length?parts.join("&"):""),hash=hashValue?"#"+encodeUriSegment(hashValue):"";return function(path){for(var segments=path.split("/"),i=segments.length;i--;)segments[i]=encodeUriSegment(segments[i].replace(/%2F/g,"/"));return segments.join("/")}(pathValue)+(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);prefixed&&(url="/"+url);var match=urlResolve(url),path=prefixed&&"/"===match.pathname.charAt(0)?match.pathname.substring(1):match.pathname;locationObj.$$path=function(path,html5Mode){for(var segments=path.split("/"),i=segments.length;i--;)segments[i]=decodeURIComponent(segments[i]),html5Mode&&(segments[i]=segments[i].replace(/\//g,"%2F"));return segments.join("/")}(path,html5Mode),locationObj.$$search=parseKeyValue(match.search),locationObj.$$hash=decodeURIComponent(match.hash),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-1===index?url:url.substr(0,index)}function LocationHtml5Url(appBase,appBaseNoFile,basePrefix){this.$$html5=!0,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,!0),this.$$path||(this.$$path="/"),this.$$compose()},this.$$normalizeUrl=function(url){return appBaseNoFile+url.substr(1)},this.$$parseLinkUrl=function(url,relHref){return relHref&&"#"===relHref[0]?(this.hash(relHref.slice(1)),!0):(isDefined(appUrl=stripBaseUrl(appBase,url))?(prevAppUrl=appUrl,rewrittenUrl=basePrefix&&isDefined(appUrl=stripBaseUrl(basePrefix,appUrl))?appBaseNoFile+(stripBaseUrl("/",appUrl)||appUrl):appBase+prevAppUrl):isDefined(appUrl=stripBaseUrl(appBaseNoFile,url))?rewrittenUrl=appBaseNoFile+appUrl:appBaseNoFile===url+"/"&&(rewrittenUrl=appBaseNoFile),rewrittenUrl&&this.$$parse(rewrittenUrl),!!rewrittenUrl);var appUrl,prevAppUrl,rewrittenUrl}}function LocationHashbangUrl(appBase,appBaseNoFile,hashPrefix){parseAbsoluteUrl(appBase,this),this.$$parse=function(url){var withoutHashUrl,withoutBaseUrl=stripBaseUrl(appBase,url)||stripBaseUrl(appBaseNoFile,url);isUndefined(withoutBaseUrl)||"#"!==withoutBaseUrl.charAt(0)?this.$$html5?withoutHashUrl=withoutBaseUrl:(withoutHashUrl="",isUndefined(withoutBaseUrl)&&(appBase=url,this.replace())):isUndefined(withoutHashUrl=stripBaseUrl(hashPrefix,withoutBaseUrl))&&(withoutHashUrl=withoutBaseUrl),parseAppUrl(withoutHashUrl,this,!1),this.$$path=function(path,url,base){var firstPathSegmentMatch,windowsFilePathExp=/^\/[A-Z]:(\/.*)/;startsWith(url,base)&&(url=url.replace(base,""));if(windowsFilePathExp.exec(url))return path;return(firstPathSegmentMatch=windowsFilePathExp.exec(path))?firstPathSegmentMatch[1]:path}(this.$$path,withoutHashUrl,appBase),this.$$compose()},this.$$normalizeUrl=function(url){return appBase+(url?hashPrefix+url:"")},this.$$parseLinkUrl=function(url,relHref){return stripHash(appBase)===stripHash(url)&&(this.$$parse(url),!0)}}function LocationHashbangInHtml5Url(appBase,appBaseNoFile,hashPrefix){this.$$html5=!0,LocationHashbangUrl.apply(this,arguments),this.$$parseLinkUrl=function(url,relHref){return relHref&&"#"===relHref[0]?(this.hash(relHref.slice(1)),!0):(appBase===stripHash(url)?rewrittenUrl=url:(appUrl=stripBaseUrl(appBaseNoFile,url))?rewrittenUrl=appBase+hashPrefix+appUrl:appBaseNoFile===url+"/"&&(rewrittenUrl=appBaseNoFile),rewrittenUrl&&this.$$parse(rewrittenUrl),!!rewrittenUrl);var rewrittenUrl,appUrl},this.$$normalizeUrl=function(url){return appBase+hashPrefix+url}}var locationPrototype={$$absUrl:"",$$html5:!1,$$replace:!1,$$compose:function(){this.$$url=normalizePath(this.$$path,this.$$search,this.$$hash),this.$$absUrl=this.$$normalizeUrl(this.$$url),this.$$urlUpdatedByLocation=!0},absUrl:locationGetter("$$absUrl"),url:function(url){if(isUndefined(url))return this.$$url;var match=PATH_MATCH.exec(url);return(match[1]||""===url)&&this.path(decodeURIComponent(match[1])),(match[2]||match[1]||""===url)&&this.search(match[3]||""),this.hash(match[5]||""),this},protocol:locationGetter("$$protocol"),host:locationGetter("$$host"),port:locationGetter("$$port"),path:locationGetterSetter("$$path",function(path){return"/"===(path=null!==path?path.toString():"").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))throw $locationMinErr("isrcharg","The first argument of the `$location#search()` call must be a string or an object.");forEach(search=copy(search,{}),function(value,key){null==value&&delete search[key]}),this.$$search=search}break;default:isUndefined(paramValue)||null===paramValue?delete this.$$search[search]:this.$$search[search]=paramValue}return this.$$compose(),this},hash:locationGetterSetter("$$hash",function(hash){return null!==hash?hash.toString():""}),replace:function(){return this.$$replace=!0,this}};function locationGetter(property){return function(){return this[property]}}function locationGetterSetter(property,preprocess){return function(value){return isUndefined(value)?this[property]:(this[property]=preprocess(value),this.$$compose(),this)}}function $LocationProvider(){var hashPrefix="!",html5Mode={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(prefix){return isDefined(prefix)?(hashPrefix=prefix,this):hashPrefix},this.html5Mode=function(mode){return isBoolean(mode)?(html5Mode.enabled=mode,this):isObject(mode)?(isBoolean(mode.enabled)&&(html5Mode.enabled=mode.enabled),isBoolean(mode.requireBase)&&(html5Mode.requireBase=mode.requireBase),(isBoolean(mode.rewriteLinks)||isString(mode.rewriteLinks))&&(html5Mode.rewriteLinks=mode.rewriteLinks),this):html5Mode},this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function($rootScope,$browser,$sniffer,$rootElement,$window){var $location,LocationMode,appBase,url,baseHref=$browser.baseHref(),initialUrl=$browser.url();if(html5Mode.enabled){if(!baseHref&&html5Mode.requireBase)throw $locationMinErr("nobase","$location in HTML5 mode requires a <base> tag to be present!");appBase=(url=initialUrl).substring(0,url.indexOf("/",url.indexOf("//")+2))+(baseHref||"/"),LocationMode=$sniffer.history?LocationHtml5Url:LocationHashbangInHtml5Url}else appBase=stripHash(initialUrl),LocationMode=LocationHashbangUrl;var appBaseNoFile=function(url){return url.substr(0,stripHash(url).lastIndexOf("/")+1)}(appBase);($location=new LocationMode(appBase,appBaseNoFile,"#"+hashPrefix)).$$parseLinkUrl(initialUrl,initialUrl),$location.$$state=$browser.state();var IGNORE_URI_REGEXP=/^\s*(javascript|mailto):/i;function setBrowserUrlWithFallback(url,replace,state){var oldUrl=$location.url(),oldState=$location.$$state;try{$browser.url(url,replace,state),$location.$$state=$browser.state()}catch(e){throw $location.url(oldUrl),$location.$$state=oldState,e}}$rootElement.on("click",function(event){var rewriteLinks=html5Mode.rewriteLinks;if(rewriteLinks&&!event.ctrlKey&&!event.metaKey&&!event.shiftKey&&2!==event.which&&2!==event.button){for(var elm=jqLite(event.target);"a"!==nodeName_(elm[0]);)if(elm[0]===$rootElement[0]||!(elm=elm.parent())[0])return;if(!isString(rewriteLinks)||!isUndefined(elm.attr(rewriteLinks))){var absHref=elm.prop("href"),relHref=elm.attr("href")||elm.attr("xlink:href");isObject(absHref)&&"[object SVGAnimatedString]"===absHref.toString()&&(absHref=urlResolve(absHref.animVal).href),IGNORE_URI_REGEXP.test(absHref)||!absHref||elm.attr("target")||event.isDefaultPrevented()||$location.$$parseLinkUrl(absHref,relHref)&&(event.preventDefault(),$location.absUrl()!==$browser.url()&&$rootScope.$apply())}}}),$location.absUrl()!==initialUrl&&$browser.url($location.absUrl(),!0);var initializing=!0;return $browser.onUrlChange(function(newUrl,newState){startsWith(newUrl,appBaseNoFile)?($rootScope.$evalAsync(function(){var defaultPrevented,oldUrl=$location.absUrl(),oldState=$location.$$state;$location.$$parse(newUrl),$location.$$state=newState,defaultPrevented=$rootScope.$broadcast("$locationChangeStart",newUrl,oldUrl,newState,oldState).defaultPrevented,$location.absUrl()===newUrl&&(defaultPrevented?($location.$$parse(oldUrl),$location.$$state=oldState,setBrowserUrlWithFallback(oldUrl,!1,oldState)):(initializing=!1,afterLocationChange(oldUrl,oldState)))}),$rootScope.$$phase||$rootScope.$digest()):$window.location.href=newUrl}),$rootScope.$watch(function(){if(initializing||$location.$$urlUpdatedByLocation){$location.$$urlUpdatedByLocation=!1;var oldUrl=$browser.url(),newUrl=$location.absUrl(),oldState=$browser.state(),currentReplace=$location.$$replace,urlOrStateChanged=!((a=oldUrl)===(b=newUrl)||urlResolve(a).href===urlResolve(b).href)||$location.$$html5&&$sniffer.history&&oldState!==$location.$$state;(initializing||urlOrStateChanged)&&(initializing=!1,$rootScope.$evalAsync(function(){var newUrl=$location.absUrl(),defaultPrevented=$rootScope.$broadcast("$locationChangeStart",newUrl,oldUrl,$location.$$state,oldState).defaultPrevented;$location.absUrl()===newUrl&&(defaultPrevented?($location.$$parse(oldUrl),$location.$$state=oldState):(urlOrStateChanged&&setBrowserUrlWithFallback(newUrl,currentReplace,oldState===$location.$$state?null:$location.$$state),afterLocationChange(oldUrl,oldState)))}))}var a,b;$location.$$replace=!1}),$location;function afterLocationChange(oldUrl,oldState){$rootScope.$broadcast("$locationChangeSuccess",$location.absUrl(),oldUrl,$location.$$state,oldState)}}]}function $LogProvider(){var debug=!0,self=this;this.debugEnabled=function(flag){return isDefined(flag)?(debug=flag,this):debug},this.$get=["$window",function($window){var fn,formatStackTrace=msie||/\bEdge\//.test($window.navigator&&$window.navigator.userAgent);return{log:consoleLog("log"),info:consoleLog("info"),warn:consoleLog("warn"),error:consoleLog("error"),debug:(fn=consoleLog("debug"),function(){debug&&fn.apply(self,arguments)})};function consoleLog(type){var console=$window.console||{},logFn=console[type]||console.log||noop;return function(){var args=[];return forEach(arguments,function(arg){args.push(function(arg){return isError(arg)&&(arg.stack&&formatStackTrace?arg=arg.message&&-1===arg.stack.indexOf(arg.message)?"Error: "+arg.message+"\n"+arg.stack:arg.stack:arg.sourceURL&&(arg=arg.message+"\n"+arg.sourceURL+":"+arg.line)),arg}(arg))}),Function.prototype.apply.call(logFn,console,args)}}}]}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");return this.$$state=isUndefined(state)?null:state,this.$$urlUpdatedByLocation=!0,this}});var $parseMinErr=minErr("$parse"),objectValueOf={}.constructor.prototype.valueOf;function getStringValue(name){return name+""}var OPERATORS=createMap();forEach("+ - * / % === !== == != < > <= >= && || ! = |".split(" "),function(operator){OPERATORS[operator]=!0});var ESCAPE={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},Lexer=function(options){this.options=options};Lexer.prototype={constructor:Lexer,lex:function(text){for(this.text=text,this.index=0,this.tokens=[];this.index<this.text.length;){var ch=this.text.charAt(this.index);if('"'===ch||"'"===ch)this.readString(ch);else if(this.isNumber(ch)||"."===ch&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdentifierStart(this.peekMultichar()))this.readIdent();else if(this.is(ch,"(){}[].,;:?"))this.tokens.push({index:this.index,text:ch}),this.index++;else if(this.isWhitespace(ch))this.index++;else{var ch2=ch+this.peek(),ch3=ch2+this.peek(2),op1=OPERATORS[ch],op2=OPERATORS[ch2],op3=OPERATORS[ch3];if(op1||op2||op3){var token=op3?ch3:op2?ch2:ch;this.tokens.push({index:this.index,text:token,operator:!0}),this.index+=token.length}else this.throwError("Unexpected next character ",this.index,this.index+1)}}return this.tokens},is:function(ch,chars){return-1!==chars.indexOf(ch)},peek:function(i){var num=i||1;return this.index+num<this.text.length&&this.text.charAt(this.index+num)},isNumber:function(ch){return"0"<=ch&&ch<="9"&&"string"==typeof ch},isWhitespace:function(ch){return" "===ch||"\r"===ch||"\t"===ch||"\n"===ch||"\v"===ch||" "===ch},isIdentifierStart:function(ch){return this.options.isIdentifierStart?this.options.isIdentifierStart(ch,this.codePointAt(ch)):this.isValidIdentifierStart(ch)},isValidIdentifierStart:function(ch){return"a"<=ch&&ch<="z"||"A"<=ch&&ch<="Z"||"_"===ch||"$"===ch},isIdentifierContinue:function(ch){return this.options.isIdentifierContinue?this.options.isIdentifierContinue(ch,this.codePointAt(ch)):this.isValidIdentifierContinue(ch)},isValidIdentifierContinue:function(ch,cp){return this.isValidIdentifierStart(ch,cp)||this.isNumber(ch)},codePointAt:function(ch){return 1===ch.length?ch.charCodeAt(0):(ch.charCodeAt(0)<<10)+ch.charCodeAt(1)-56613888},peekMultichar:function(){var ch=this.text.charAt(this.index),peek=this.peek();if(!peek)return ch;var cp1=ch.charCodeAt(0),cp2=peek.charCodeAt(0);return cp1>=55296&&cp1<=56319&&cp2>=56320&&cp2<=57343?ch+peek: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(){for(var number="",start=this.index;this.index<this.text.length;){var ch=lowercase(this.text.charAt(this.index));if("."===ch||this.isNumber(ch))number+=ch;else{var peekCh=this.peek();if("e"===ch&&this.isExpOperator(peekCh))number+=ch;else if(this.isExpOperator(ch)&&peekCh&&this.isNumber(peekCh)&&"e"===number.charAt(number.length-1))number+=ch;else{if(!this.isExpOperator(ch)||peekCh&&this.isNumber(peekCh)||"e"!==number.charAt(number.length-1))break;this.throwError("Invalid exponent")}}this.index++}this.tokens.push({index:start,text:number,constant:!0,value:Number(number)})},readIdent:function(){var start=this.index;for(this.index+=this.peekMultichar().length;this.index<this.text.length;){var ch=this.peekMultichar();if(!this.isIdentifierContinue(ch))break;this.index+=ch.length}this.tokens.push({index:start,text:this.text.slice(start,this.index),identifier:!0})},readString:function(quote){var start=this.index;this.index++;for(var string="",rawString=quote,escape=!1;this.index<this.text.length;){var ch=this.text.charAt(this.index);if(rawString+=ch,escape){if("u"===ch){var hex=this.text.substring(this.index+1,this.index+5);hex.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+hex+"]"),this.index+=4,string+=String.fromCharCode(parseInt(hex,16))}else{string+=ESCAPE[ch]||ch}escape=!1}else if("\\"===ch)escape=!0;else{if(ch===quote)return this.index++,void this.tokens.push({index:start,text:rawString,constant:!0,value:string});string+=ch}this.index++}this.throwError("Unterminated quote",start)}};var AST=function(lexer,options){this.lexer=lexer,this.options=options};function ifDefined(v,d){return void 0!==v?v:d}function plusFn(l,r){return void 0===l?r:void 0===r?l:l+r}AST.Program="Program",AST.ExpressionStatement="ExpressionStatement",AST.AssignmentExpression="AssignmentExpression",AST.ConditionalExpression="ConditionalExpression",AST.LogicalExpression="LogicalExpression",AST.BinaryExpression="BinaryExpression",AST.UnaryExpression="UnaryExpression",AST.CallExpression="CallExpression",AST.MemberExpression="MemberExpression",AST.Identifier="Identifier",AST.Literal="Literal",AST.ArrayExpression="ArrayExpression",AST.Property="Property",AST.ObjectExpression="ObjectExpression",AST.ThisExpression="ThisExpression",AST.LocalsExpression="LocalsExpression",AST.NGValueParameter="NGValueParameter",AST.prototype={ast:function(text){this.text=text,this.tokens=this.lexer.lex(text);var value=this.program();return 0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]),value},program:function(){for(var body=[];;)if(this.tokens.length>0&&!this.peek("}",")",";","]")&&body.push(this.expressionStatement()),!this.expect(";"))return{type:AST.Program,body:body}},expressionStatement:function(){return{type:AST.ExpressionStatement,expression:this.filterChain()}},filterChain:function(){for(var left=this.expression();this.expect("|");)left=this.filter(left);return left},expression:function(){return this.assignment()},assignment:function(){var result=this.ternary();if(this.expect("=")){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:"="}}return result},ternary:function(){var alternate,consequent,test=this.logicalOR();return this.expect("?")&&(alternate=this.expression(),this.consume(":"))?(consequent=this.expression(),{type:AST.ConditionalExpression,test:test,alternate:alternate,consequent:consequent}):test},logicalOR:function(){for(var left=this.logicalAND();this.expect("||");)left={type:AST.LogicalExpression,operator:"||",left:left,right:this.logicalAND()};return left},logicalAND:function(){for(var left=this.equality();this.expect("&&");)left={type:AST.LogicalExpression,operator:"&&",left:left,right:this.equality()};return left},equality:function(){for(var token,left=this.relational();token=this.expect("==","!=","===","!==");)left={type:AST.BinaryExpression,operator:token.text,left:left,right:this.relational()};return left},relational:function(){for(var token,left=this.additive();token=this.expect("<",">","<=",">=");)left={type:AST.BinaryExpression,operator:token.text,left:left,right:this.additive()};return left},additive:function(){for(var token,left=this.multiplicative();token=this.expect("+","-");)left={type:AST.BinaryExpression,operator:token.text,left:left,right:this.multiplicative()};return left},multiplicative:function(){for(var token,left=this.unary();token=this.expect("*","/","%");)left={type:AST.BinaryExpression,operator:token.text,left:left,right:this.unary()};return left},unary:function(){var token;return(token=this.expect("+","-","!"))?{type:AST.UnaryExpression,operator:token.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var primary,next;for(this.expect("(")?(primary=this.filterChain(),this.consume(")")):this.expect("[")?primary=this.arrayDeclaration():this.expect("{")?primary=this.object():this.selfReferential.hasOwnProperty(this.peek().text)?primary=copy(this.selfReferential[this.consume().text]):this.options.literals.hasOwnProperty(this.peek().text)?primary={type:AST.Literal,value:this.options.literals[this.consume().text]}:this.peek().identifier?primary=this.identifier():this.peek().constant?primary=this.constant():this.throwError("not a primary expression",this.peek());next=this.expect("(","[",".");)"("===next.text?(primary={type:AST.CallExpression,callee:primary,arguments:this.parseArguments()},this.consume(")")):"["===next.text?(primary={type:AST.MemberExpression,object:primary,property:this.expression(),computed:!0},this.consume("]")):"."===next.text?primary={type:AST.MemberExpression,object:primary,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return primary},filter:function(baseExpression){for(var args=[baseExpression],result={type:AST.CallExpression,callee:this.identifier(),arguments:args,filter:!0};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();return token.identifier||this.throwError("is not a valid identifier",token),{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(","));return this.consume("]"),{type:AST.ArrayExpression,elements:elements}},object:function(){var property,properties=[];if("}"!==this.peekToken().text)do{if(this.peek("}"))break;property={type:AST.Property,kind:"init"},this.peek().constant?(property.key=this.constant(),property.computed=!1,this.consume(":"),property.value=this.expression()):this.peek().identifier?(property.key=this.identifier(),property.computed=!1,this.peek(":")?(this.consume(":"),property.value=this.expression()):property.value=property.key):this.peek("[")?(this.consume("["),property.key=this.expression(),this.consume("]"),property.computed=!0,this.consume(":"),property.value=this.expression()):this.throwError("invalid key",this.peek()),properties.push(property)}while(this.expect(","));return this.consume("}"),{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(0===this.tokens.length)throw $parseMinErr("ueoe","Unexpected end of expression: {0}",this.text);var token=this.expect(e1);return token||this.throwError("is unexpected, expecting ["+e1+"]",this.peek()),token},peekToken:function(){if(0===this.tokens.length)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],t=token.text;if(t===e1||t===e2||t===e3||t===e4||!e1&&!e2&&!e3&&!e4)return token}return!1},expect:function(e1,e2,e3,e4){var token=this.peek(e1,e2,e3,e4);return!!token&&(this.tokens.shift(),token)},selfReferential:{this:{type:AST.ThisExpression},$locals:{type:AST.LocalsExpression}}};var PURITY_ABSOLUTE=1,PURITY_RELATIVE=2;function findConstantAndWatchExpressions(ast,$filter,parentIsPure){var allConstants,argsToWatch,isStatelessFilter,astIsPure=ast.isPure=function(node,parentIsPure){switch(node.type){case AST.MemberExpression:if(node.computed)return!1;break;case AST.UnaryExpression:return PURITY_ABSOLUTE;case AST.BinaryExpression:return"+"!==node.operator&&PURITY_ABSOLUTE;case AST.CallExpression:return!1}return void 0===parentIsPure?PURITY_RELATIVE:parentIsPure}(ast,parentIsPure);switch(ast.type){case AST.Program:allConstants=!0,forEach(ast.body,function(expr){findConstantAndWatchExpressions(expr.expression,$filter,astIsPure),allConstants=allConstants&&expr.expression.constant}),ast.constant=allConstants;break;case AST.Literal:ast.constant=!0,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=!1,ast.toWatch=[ast];break;case AST.MemberExpression:findConstantAndWatchExpressions(ast.object,$filter,astIsPure),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&&function($filter,filterName){return!$filter(filterName).$stateful}($filter,ast.callee.name),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=!0,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=!0,argsToWatch=[],forEach(ast.properties,function(property){findConstantAndWatchExpressions(property.value,$filter,astIsPure),allConstants=allConstants&&property.value.constant,argsToWatch.push.apply(argsToWatch,property.value.toWatch),property.computed&&(findConstantAndWatchExpressions(property.key,$filter,!1),allConstants=allConstants&&property.key.constant,argsToWatch.push.apply(argsToWatch,property.key.toWatch))}),ast.constant=allConstants,ast.toWatch=argsToWatch;break;case AST.ThisExpression:case AST.LocalsExpression:ast.constant=!1,ast.toWatch=[]}}function getInputs(body){if(1===body.length){var lastExpression=body[0].expression,candidate=lastExpression.toWatch;return 1!==candidate.length?candidate:candidate[0]!==lastExpression?candidate:void 0}}function isAssignable(ast){return ast.type===AST.Identifier||ast.type===AST.MemberExpression}function assignableAST(ast){if(1===ast.body.length&&isAssignable(ast.body[0].expression))return{type:AST.AssignmentExpression,left:ast.body[0].expression,right:{type:AST.NGValueParameter},operator:"="}}function ASTCompiler($filter){this.$filter=$filter}function ASTInterpreter($filter){this.$filter=$filter}function Parser(lexer,$filter,options){this.ast=new AST(lexer,options),this.astCompiler=options.csp?new ASTInterpreter($filter):new ASTCompiler($filter)}function getValueOf(value){return isFunction(value.valueOf)?value.valueOf():objectValueOf.call(value)}function $ParseProvider(){var identStart,identContinue,cache=createMap(),literals={true:!0,false:!1,null:null,undefined:void 0};this.addLiteral=function(literalName,literalValue){literals[literalName]=literalValue},this.setIdentifierFns=function(identifierStart,identifierContinue){return identStart=identifierStart,identContinue=identifierContinue,this},this.$get=["$filter",function($filter){var $parseOptions={csp:csp().noUnsafeEval,literals:copy(literals),isIdentifierStart:isFunction(identStart)&&identStart,isIdentifierContinue:isFunction(identContinue)&&identContinue};return $parse.$$getAst=function(exp){return new Parser(new Lexer($parseOptions),$filter,$parseOptions).getAst(exp).ast},$parse;function $parse(exp,interceptorFn){var parsedExpression,cacheKey;switch(typeof exp){case"string":if(exp=exp.trim(),!(parsedExpression=cache[cacheKey=exp]))parsedExpression=new Parser(new Lexer($parseOptions),$filter,$parseOptions).parse(exp),cache[cacheKey]=addWatchDelegate(parsedExpression);return addInterceptor(parsedExpression,interceptorFn);case"function":return addInterceptor(exp,interceptorFn);default:return addInterceptor(noop,interceptorFn)}}function expressionInputDirtyCheck(newValue,oldValueOfValue,compareObjectIdentity){return null==newValue||null==oldValueOfValue?newValue===oldValueOfValue:!("object"==typeof newValue&&"object"==typeof(newValue=getValueOf(newValue))&&!compareObjectIdentity)&&(newValue===oldValueOfValue||newValue!=newValue&&oldValueOfValue!=oldValueOfValue)}function inputsWatchDelegate(scope,listener,objectEquality,parsedExpression,prettyPrintExpression){var lastResult,inputExpressions=parsedExpression.inputs;if(1===inputExpressions.length){var oldInputValueOf=expressionInputDirtyCheck;return inputExpressions=inputExpressions[0],scope.$watch(function(scope){var newInputValue=inputExpressions(scope);return expressionInputDirtyCheck(newInputValue,oldInputValueOf,inputExpressions.isPure)||(lastResult=parsedExpression(scope,void 0,void 0,[newInputValue]),oldInputValueOf=newInputValue&&getValueOf(newInputValue)),lastResult},listener,objectEquality,prettyPrintExpression)}for(var oldInputValueOfValues=[],oldInputValues=[],i=0,ii=inputExpressions.length;i<ii;i++)oldInputValueOfValues[i]=expressionInputDirtyCheck,oldInputValues[i]=null;return scope.$watch(function(scope){for(var changed=!1,i=0,ii=inputExpressions.length;i<ii;i++){var newInputValue=inputExpressions[i](scope);(changed||(changed=!expressionInputDirtyCheck(newInputValue,oldInputValueOfValues[i],inputExpressions[i].isPure)))&&(oldInputValues[i]=newInputValue,oldInputValueOfValues[i]=newInputValue&&getValueOf(newInputValue))}return changed&&(lastResult=parsedExpression(scope,void 0,void 0,oldInputValues)),lastResult},listener,objectEquality,prettyPrintExpression)}function oneTimeWatchDelegate(scope,listener,objectEquality,parsedExpression,prettyPrintExpression){var unwatch,lastValue,isDone=parsedExpression.literal?isAllDefined:isDefined,exp=parsedExpression.$$intercepted||parsedExpression,post=parsedExpression.$$interceptor||identity,useInputs=parsedExpression.inputs&&!exp.inputs;return oneTimeWatch.literal=parsedExpression.literal,oneTimeWatch.constant=parsedExpression.constant,oneTimeWatch.inputs=parsedExpression.inputs,addWatchDelegate(oneTimeWatch),unwatch=scope.$watch(oneTimeWatch,listener,objectEquality,prettyPrintExpression);function unwatchIfDone(){isDone(lastValue)&&unwatch()}function oneTimeWatch(scope,locals,assign,inputs){return lastValue=useInputs&&inputs?inputs[0]:exp(scope,locals,assign,inputs),isDone(lastValue)&&scope.$$postDigest(unwatchIfDone),post(lastValue)}}function isAllDefined(value){var allDefined=!0;return forEach(value,function(val){isDefined(val)||(allDefined=!1)}),allDefined}function constantWatchDelegate(scope,listener,objectEquality,parsedExpression){var unwatch=scope.$watch(function(scope){return unwatch(),parsedExpression(scope)},listener,objectEquality);return unwatch}function addWatchDelegate(parsedExpression){return parsedExpression.constant?parsedExpression.$$watchDelegate=constantWatchDelegate:parsedExpression.oneTime?parsedExpression.$$watchDelegate=oneTimeWatchDelegate:parsedExpression.inputs&&(parsedExpression.$$watchDelegate=inputsWatchDelegate),parsedExpression}function addInterceptor(parsedExpression,interceptorFn){if(!interceptorFn)return parsedExpression;parsedExpression.$$interceptor&&(interceptorFn=function(first,second){function chainedInterceptor(value){return second(first(value))}return chainedInterceptor.$stateful=first.$stateful||second.$stateful,chainedInterceptor.$$pure=first.$$pure&&second.$$pure,chainedInterceptor}(parsedExpression.$$interceptor,interceptorFn),parsedExpression=parsedExpression.$$intercepted);var useInputs=!1,fn=function(scope,locals,assign,inputs){var value=useInputs&&inputs?inputs[0]:parsedExpression(scope,locals,assign,inputs);return interceptorFn(value)};return fn.$$intercepted=parsedExpression,fn.$$interceptor=interceptorFn,fn.literal=parsedExpression.literal,fn.oneTime=parsedExpression.oneTime,fn.constant=parsedExpression.constant,interceptorFn.$stateful||(useInputs=!parsedExpression.inputs,fn.inputs=parsedExpression.inputs?parsedExpression.inputs:[parsedExpression],interceptorFn.$$pure||(fn.inputs=fn.inputs.map(function(e){return e.isPure===PURITY_RELATIVE?function(s){return e(s)}:e}))),addWatchDelegate(fn)}}]}function $QProvider(){var errorOnUnhandledRejections=!0;this.$get=["$rootScope","$exceptionHandler",function($rootScope,$exceptionHandler){return qFactory(function(callback){$rootScope.$evalAsync(callback)},$exceptionHandler,errorOnUnhandledRejections)}],this.errorOnUnhandledRejections=function(value){return isDefined(value)?(errorOnUnhandledRejections=value,this):errorOnUnhandledRejections}}function $$QProvider(){var errorOnUnhandledRejections=!0;this.$get=["$browser","$exceptionHandler",function($browser,$exceptionHandler){return qFactory(function(callback){$browser.defer(callback)},$exceptionHandler,errorOnUnhandledRejections)}],this.errorOnUnhandledRejections=function(value){return isDefined(value)?(errorOnUnhandledRejections=value,this):errorOnUnhandledRejections}}function qFactory(nextTick,exceptionHandler,errorOnUnhandledRejections){var $qMinErr=minErr("$q",TypeError),queueSize=0,checkQueue=[];function defer(){return new function(){var promise=this.promise=new Promise;this.resolve=function(val){resolvePromise(promise,val)},this.reject=function(reason){rejectPromise(promise,reason)},this.notify=function(progress){notifyPromise(promise,progress)}}}function Promise(){this.$$state={status:0}}function processChecks(){for(;!queueSize&&checkQueue.length;){var toCheck=checkQueue.shift();if(!isStateExceptionHandled(toCheck)){markQStateExceptionHandled(toCheck);var errorMessage="Possibly unhandled rejection: "+toDebugString(toCheck.value);isError(toCheck.value)?exceptionHandler(toCheck.value,errorMessage):exceptionHandler(errorMessage)}}}function scheduleProcessQueue(state){!errorOnUnhandledRejections||state.pending||2!==state.status||isStateExceptionHandled(state)||(0===queueSize&&0===checkQueue.length&&nextTick(processChecks),checkQueue.push(state)),!state.processScheduled&&state.pending&&(state.processScheduled=!0,++queueSize,nextTick(function(){!function(state){var fn,promise,pending;pending=state.pending,state.processScheduled=!1,state.pending=void 0;try{for(var i=0,ii=pending.length;i<ii;++i){markQStateExceptionHandled(state),promise=pending[i][0],fn=pending[i][state.status];try{isFunction(fn)?resolvePromise(promise,fn(state.value)):1===state.status?resolvePromise(promise,state.value):rejectPromise(promise,state.value)}catch(e){rejectPromise(promise,e),e&&!0===e.$$passToExceptionHandler&&exceptionHandler(e)}}}finally{--queueSize,errorOnUnhandledRejections&&0===queueSize&&nextTick(processChecks)}}(state)}))}function resolvePromise(promise,val){promise.$$state.status||(val===promise?$$reject(promise,$qMinErr("qcycle","Expected promise to be resolved with value other than itself '{0}'",val)):function $$resolve(promise,val){var then;var done=!1;try{(isObject(val)||isFunction(val))&&(then=val.then),isFunction(then)?(promise.$$state.status=-1,then.call(val,function doResolve(val){if(done)return;done=!0,function $$resolve(promise,val){var then;var done=!1;try{(isObject(val)||isFunction(val))&&(then=val.then),isFunction(then)?(promise.$$state.status=-1,then.call(val,doResolve,doReject,function(progress){notifyPromise(promise,progress)})):(promise.$$state.value=val,promise.$$state.status=1,scheduleProcessQueue(promise.$$state))}catch(e){doReject(e)}function doResolve(val){done||(done=!0,$$resolve(promise,val))}function doReject(val){done||(done=!0,$$reject(promise,val))}}(promise,val)},doReject,function(progress){notifyPromise(promise,progress)})):(promise.$$state.value=val,promise.$$state.status=1,scheduleProcessQueue(promise.$$state))}catch(e){doReject(e)}function doResolve(val){done||(done=!0,$$resolve(promise,val))}function doReject(val){done||(done=!0,$$reject(promise,val))}}(promise,val))}function rejectPromise(promise,reason){promise.$$state.status||$$reject(promise,reason)}function $$reject(promise,reason){promise.$$state.value=reason,promise.$$state.status=2,scheduleProcessQueue(promise.$$state)}function notifyPromise(promise,progress){var callbacks=promise.$$state.pending;promise.$$state.status<=0&&callbacks&&callbacks.length&&nextTick(function(){for(var callback,result,i=0,ii=callbacks.length;i<ii;i++){result=callbacks[i][0],callback=callbacks[i][3];try{notifyPromise(result,isFunction(callback)?callback(progress):progress)}catch(e){exceptionHandler(e)}}})}function reject(reason){var result=new Promise;return rejectPromise(result,reason),result}function handleCallback(value,resolver,callback){var callbackOutput=null;try{isFunction(callback)&&(callbackOutput=callback())}catch(e){return reject(e)}return isPromiseLike(callbackOutput)?callbackOutput.then(function(){return resolver(value)},reject):resolver(value)}function when(value,callback,errback,progressBack){var result=new Promise;return resolvePromise(result,value),result.then(callback,errback,progressBack)}extend(Promise.prototype,{then:function(onFulfilled,onRejected,progressBack){if(isUndefined(onFulfilled)&&isUndefined(onRejected)&&isUndefined(progressBack))return this;var result=new Promise;return this.$$state.pending=this.$$state.pending||[],this.$$state.pending.push([result,onFulfilled,onRejected,progressBack]),this.$$state.status>0&&scheduleProcessQueue(this.$$state),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)}});var resolve=when;function $Q(resolver){if(!isFunction(resolver))throw $qMinErr("norslvr","Expected resolverFn, got '{0}'",resolver);var promise=new Promise;return resolver(function(value){resolvePromise(promise,value)},function(reason){rejectPromise(promise,reason)}),promise}return $Q.prototype=Promise.prototype,$Q.defer=defer,$Q.reject=reject,$Q.when=when,$Q.resolve=resolve,$Q.all=function(promises){var result=new Promise,counter=0,results=isArray(promises)?[]:{};return forEach(promises,function(promise,key){counter++,when(promise).then(function(value){results[key]=value,--counter||resolvePromise(result,results)},function(reason){rejectPromise(result,reason)})}),0===counter&&resolvePromise(result,results),result},$Q.race=function(promises){var deferred=defer();return forEach(promises,function(promise){when(promise).then(deferred.resolve,deferred.reject)}),deferred.promise},$Q}function isStateExceptionHandled(state){return!!state.pur}function markQStateExceptionHandled(state){state.pur=!0}function markQExceptionHandled(q){q.$$state&&markQStateExceptionHandled(q.$$state)}function $$RAFProvider(){this.$get=["$window","$timeout",function($window,$timeout){var requestAnimationFrame=$window.requestAnimationFrame||$window.webkitRequestAnimationFrame,cancelAnimationFrame=$window.cancelAnimationFrame||$window.webkitCancelAnimationFrame||$window.webkitCancelRequestAnimationFrame,rafSupported=!!requestAnimationFrame,raf=rafSupported?function(fn){var id=requestAnimationFrame(fn);return function(){cancelAnimationFrame(id)}}:function(fn){var timer=$timeout(fn,16.66,!1);return function(){$timeout.cancel(timer)}};return raf.supported=rafSupported,raf}]}function $RootScopeProvider(){var TTL=10,$rootScopeMinErr=minErr("$rootScope"),lastDirtyWatch=null,applyAsyncId=null;this.digestTtl=function(value){return arguments.length&&(TTL=value),TTL},this.$get=["$exceptionHandler","$parse","$browser",function($exceptionHandler,$parse,$browser){function destroyChildScope($event){$event.currentScope.$$destroyed=!0}function Scope(){this.$id=nextUid(),this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null,this.$root=this,this.$$destroyed=!1,this.$$suspended=!1,this.$$listeners={},this.$$listenerCount={},this.$$watchersCount=0,this.$$isolateBindings=null}Scope.prototype={constructor:Scope,$new:function(isolate,parent){var child;return parent=parent||this,isolate?(child=new Scope).$root=this.$root:(this.$$ChildScope||(this.$$ChildScope=function(parent){function ChildScope(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null,this.$$listeners={},this.$$listenerCount={},this.$$watchersCount=0,this.$id=nextUid(),this.$$ChildScope=null,this.$$suspended=!1}return ChildScope.prototype=parent,ChildScope}(this)),child=new this.$$ChildScope),child.$parent=parent,child.$$prevSibling=parent.$$childTail,parent.$$childHead?(parent.$$childTail.$$nextSibling=child,parent.$$childTail=child):parent.$$childHead=parent.$$childTail=child,(isolate||parent!==this)&&child.$on("$destroy",destroyChildScope),child},$watch:function(watchExp,listener,objectEquality,prettyPrintExpression){var get=$parse(watchExp),fn=isFunction(listener)?listener:noop;if(get.$$watchDelegate)return get.$$watchDelegate(this,fn,objectEquality,get,watchExp);var scope=this,array=scope.$$watchers,watcher={fn:fn,last:initWatchVal,get:get,exp:prettyPrintExpression||watchExp,eq:!!objectEquality};return lastDirtyWatch=null,array||((array=scope.$$watchers=[]).$$digestWatchIndex=-1),array.unshift(watcher),array.$$digestWatchIndex++,incrementWatchersCount(this,1),function(){var index=arrayRemove(array,watcher);index>=0&&(incrementWatchersCount(scope,-1),index<array.$$digestWatchIndex&&array.$$digestWatchIndex--),lastDirtyWatch=null}},$watchGroup:function(watchExpressions,listener){var oldValues=new Array(watchExpressions.length),newValues=new Array(watchExpressions.length),deregisterFns=[],self=this,changeReactionScheduled=!1,firstRun=!0;if(!watchExpressions.length){var shouldCall=!0;return self.$evalAsync(function(){shouldCall&&listener(newValues,newValues,self)}),function(){shouldCall=!1}}if(1===watchExpressions.length)return this.$watch(watchExpressions[0],function(value,oldValue,scope){newValues[0]=value,oldValues[0]=oldValue,listener(newValues,value===oldValue?newValues:oldValues,scope)});function watchGroupAction(){changeReactionScheduled=!1;try{firstRun?(firstRun=!1,listener(newValues,newValues,self)):listener(newValues,oldValues,self)}finally{for(var i=0;i<watchExpressions.length;i++)oldValues[i]=newValues[i]}}return forEach(watchExpressions,function(expr,i){var unwatchFn=self.$watch(expr,function(value){newValues[i]=value,changeReactionScheduled||(changeReactionScheduled=!0,self.$evalAsync(watchGroupAction))});deregisterFns.push(unwatchFn)}),function(){for(;deregisterFns.length;)deregisterFns.shift()()}},$watchCollection:function(obj,listener){$watchCollectionInterceptor.$$pure=$parse(obj).literal,$watchCollectionInterceptor.$stateful=!$watchCollectionInterceptor.$$pure;var newValue,oldValue,veryOldValue,self=this,trackVeryOldValue=listener.length>1,changeDetected=0,changeDetector=$parse(obj,$watchCollectionInterceptor),internalArray=[],internalObject={},initRun=!0,oldLength=0;function $watchCollectionInterceptor(_value){var newLength,key,newItem,oldItem;if(!isUndefined(newValue=_value)){if(isObject(newValue))if(isArrayLike(newValue)){oldValue!==internalArray&&(oldLength=(oldValue=internalArray).length=0,changeDetected++),newLength=newValue.length,oldLength!==newLength&&(changeDetected++,oldValue.length=oldLength=newLength);for(var i=0;i<newLength;i++)oldItem=oldValue[i],newItem=newValue[i],oldItem!=oldItem&&newItem!=newItem||oldItem===newItem||(changeDetected++,oldValue[i]=newItem)}else{for(key in oldValue!==internalObject&&(oldValue=internalObject={},oldLength=0,changeDetected++),newLength=0,newValue)hasOwnProperty.call(newValue,key)&&(newLength++,newItem=newValue[key],oldItem=oldValue[key],key in oldValue?oldItem!=oldItem&&newItem!=newItem||oldItem===newItem||(changeDetected++,oldValue[key]=newItem):(oldLength++,oldValue[key]=newItem,changeDetected++));if(oldLength>newLength)for(key in changeDetected++,oldValue)hasOwnProperty.call(newValue,key)||(oldLength--,delete oldValue[key])}else oldValue!==newValue&&(oldValue=newValue,changeDetected++);return changeDetected}}return this.$watch(changeDetector,function(){if(initRun?(initRun=!1,listener(newValue,newValue,self)):listener(newValue,veryOldValue,self),trackVeryOldValue)if(isObject(newValue))if(isArrayLike(newValue)){veryOldValue=new Array(newValue.length);for(var i=0;i<newValue.length;i++)veryOldValue[i]=newValue[i]}else for(var key in veryOldValue={},newValue)hasOwnProperty.call(newValue,key)&&(veryOldValue[key]=newValue[key]);else veryOldValue=newValue})},$digest:function(){var watch,value,last,watchers,dirty,next,current,logIdx,asyncTask,ttl=TTL,target=asyncQueue.length?$rootScope:this,watchLog=[];beginPhase("$digest"),$browser.$$checkUrlChange(),this===$rootScope&&null!==applyAsyncId&&($browser.defer.cancel(applyAsyncId),flushApplyAsync()),lastDirtyWatch=null;do{dirty=!1,current=target;for(var asyncQueuePosition=0;asyncQueuePosition<asyncQueue.length;asyncQueuePosition++){try{(0,(asyncTask=asyncQueue[asyncQueuePosition]).fn)(asyncTask.scope,asyncTask.locals)}catch(e){$exceptionHandler(e)}lastDirtyWatch=null}asyncQueue.length=0;traverseScopesLoop:do{if(watchers=!current.$$suspended&&current.$$watchers)for(watchers.$$digestWatchIndex=watchers.length;watchers.$$digestWatchIndex--;)try{if(watch=watchers[watchers.$$digestWatchIndex])if((value=(0,watch.get)(current))===(last=watch.last)||(watch.eq?equals(value,last):isNumberNaN(value)&&isNumberNaN(last))){if(watch===lastDirtyWatch){dirty=!1;break traverseScopesLoop}}else dirty=!0,lastDirtyWatch=watch,watch.last=watch.eq?copy(value,null):value,(0,watch.fn)(value,last===initWatchVal?value:last,current),ttl<5&&(watchLog[logIdx=4-ttl]||(watchLog[logIdx]=[]),watchLog[logIdx].push({msg:isFunction(watch.exp)?"fn: "+(watch.exp.name||watch.exp.toString()):watch.exp,newVal:value,oldVal:last}))}catch(e){$exceptionHandler(e)}if(!(next=!current.$$suspended&&current.$$watchersCount&&current.$$childHead||current!==target&&current.$$nextSibling))for(;current!==target&&!(next=current.$$nextSibling);)current=current.$parent}while(current=next);if((dirty||asyncQueue.length)&&!ttl--)throw clearPhase(),$rootScopeMinErr("infdig","{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",TTL,watchLog)}while(dirty||asyncQueue.length);for(clearPhase();postDigestQueuePosition<postDigestQueue.length;)try{postDigestQueue[postDigestQueuePosition++]()}catch(e){$exceptionHandler(e)}postDigestQueue.length=postDigestQueuePosition=0,$browser.$$checkUrlChange()},$suspend:function(){this.$$suspended=!0},$isSuspended:function(){return this.$$suspended},$resume:function(){this.$$suspended=!1},$destroy:function(){if(!this.$$destroyed){var parent=this.$parent;for(var eventName in this.$broadcast("$destroy"),this.$$destroyed=!0,this===$rootScope&&$browser.$$applicationDestroyed(),incrementWatchersCount(this,-this.$$watchersCount),this.$$listenerCount)decrementListenerCount(this,this.$$listenerCount[eventName],eventName);parent&&parent.$$childHead===this&&(parent.$$childHead=this.$$nextSibling),parent&&parent.$$childTail===this&&(parent.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=noop,this.$on=this.$watch=this.$watchGroup=function(){return noop},this.$$listeners={},this.$$nextSibling=null,function cleanUpScope($scope){9===msie&&($scope.$$childHead&&cleanUpScope($scope.$$childHead),$scope.$$nextSibling&&cleanUpScope($scope.$$nextSibling)),$scope.$parent=$scope.$$nextSibling=$scope.$$prevSibling=$scope.$$childHead=$scope.$$childTail=$scope.$root=$scope.$$watchers=null}(this)}},$eval:function(expr,locals){return $parse(expr)(this,locals)},$evalAsync:function(expr,locals){$rootScope.$$phase||asyncQueue.length||$browser.defer(function(){asyncQueue.length&&$rootScope.$digest()},null,"$evalAsync"),asyncQueue.push({scope:this,fn:$parse(expr),locals:locals})},$$postDigest:function(fn){postDigestQueue.push(fn)},$apply:function(expr){try{beginPhase("$apply");try{return this.$eval(expr)}finally{clearPhase()}}catch(e){$exceptionHandler(e)}finally{try{$rootScope.$digest()}catch(e){throw $exceptionHandler(e),e}}},$applyAsync:function(expr){var scope=this;expr&&applyAsyncQueue.push(function(){scope.$eval(expr)}),expr=$parse(expr),null===applyAsyncId&&(applyAsyncId=$browser.defer(function(){$rootScope.$apply(flushApplyAsync)},null,"$applyAsync"))},$on:function(name,listener){var namedListeners=this.$$listeners[name];namedListeners||(this.$$listeners[name]=namedListeners=[]),namedListeners.push(listener);var current=this;do{current.$$listenerCount[name]||(current.$$listenerCount[name]=0),current.$$listenerCount[name]++}while(current=current.$parent);var self=this;return function(){var indexOfListener=namedListeners.indexOf(listener);-1!==indexOfListener&&(delete namedListeners[indexOfListener],decrementListenerCount(self,1,name))}},$emit:function(name,args){var namedListeners,i,length,empty=[],scope=this,stopPropagation=!1,event={name:name,targetScope:scope,stopPropagation:function(){stopPropagation=!0},preventDefault:function(){event.defaultPrevented=!0},defaultPrevented:!1},listenerArgs=concat([event],arguments,1);do{for(namedListeners=scope.$$listeners[name]||empty,event.currentScope=scope,i=0,length=namedListeners.length;i<length;i++)if(namedListeners[i])try{namedListeners[i].apply(null,listenerArgs)}catch(e){$exceptionHandler(e)}else namedListeners.splice(i,1),i--,length--;if(stopPropagation)break;scope=scope.$parent}while(scope);return event.currentScope=null,event},$broadcast:function(name,args){var current=this,next=this,event={name:name,targetScope:this,preventDefault:function(){event.defaultPrevented=!0},defaultPrevented:!1};if(!this.$$listenerCount[name])return event;for(var listeners,i,length,listenerArgs=concat([event],arguments,1);current=next;){for(event.currentScope=current,i=0,length=(listeners=current.$$listeners[name]||[]).length;i<length;i++)if(listeners[i])try{listeners[i].apply(null,listenerArgs)}catch(e){$exceptionHandler(e)}else listeners.splice(i,1),i--,length--;if(!(next=current.$$listenerCount[name]&&current.$$childHead||current!==this&&current.$$nextSibling))for(;current!==this&&!(next=current.$$nextSibling);)current=current.$parent}return event.currentScope=null,event}};var $rootScope=new Scope,asyncQueue=$rootScope.$$asyncQueue=[],postDigestQueue=$rootScope.$$postDigestQueue=[],applyAsyncQueue=$rootScope.$$applyAsyncQueue=[],postDigestQueuePosition=0;return $rootScope;function beginPhase(phase){if($rootScope.$$phase)throw $rootScopeMinErr("inprog","{0} already in progress",$rootScope.$$phase);$rootScope.$$phase=phase}function clearPhase(){$rootScope.$$phase=null}function incrementWatchersCount(current,count){do{current.$$watchersCount+=count}while(current=current.$parent)}function decrementListenerCount(current,count,name){do{current.$$listenerCount[name]-=count,0===current.$$listenerCount[name]&&delete current.$$listenerCount[name]}while(current=current.$parent)}function initWatchVal(){}function flushApplyAsync(){for(;applyAsyncQueue.length;)try{applyAsyncQueue.shift()()}catch(e){$exceptionHandler(e)}applyAsyncId=null}}]}function $$SanitizeUriProvider(){var aHrefSanitizationWhitelist=/^\s*(https?|s?ftp|mailto|tel|file):/,imgSrcSanitizationWhitelist=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(regexp){return isDefined(regexp)?(aHrefSanitizationWhitelist=regexp,this):aHrefSanitizationWhitelist},this.imgSrcSanitizationWhitelist=function(regexp){return isDefined(regexp)?(imgSrcSanitizationWhitelist=regexp,this):imgSrcSanitizationWhitelist},this.$get=function(){return function(uri,isMediaUrl){var regex=isMediaUrl?imgSrcSanitizationWhitelist:aHrefSanitizationWhitelist,normalizedVal=urlResolve(uri&&uri.trim()).href;return""===normalizedVal||normalizedVal.match(regex)?uri:"unsafe:"+normalizedVal}}}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 assignable,extra="";if(this.stage="assign",assignable=assignableAST(ast)){this.state.computing="assign";var result=this.nextId();this.recurse(assignable,result),this.return_(result),extra="fn.assign="+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="+this.generateFunction("fn","s,l,a,i")+extra+this.watchFns()+"return fn;",fn=new Function("$filter","getStringValue","ifDefined","plus",fnString)(this.$filter,getStringValue,ifDefined,plusFn);return this.state=this.stage=void 0,fn},USE:"use",STRICT:"strict",watchFns:function(){var result=[],inputs=this.state.inputs,self=this;return forEach(inputs,function(input){result.push("var "+input.name+"="+self.generateFunction(input.name,"s")),input.isPure&&result.push(input.name,".isPure="+JSON.stringify(input.isPure)+";")}),inputs.length&&result.push("fn.inputs=["+inputs.map(function(i){return i.name}).join(",")+"];"),result.join("")},generateFunction:function(name,params){return"function("+params+"){"+this.varsPrefix(name)+this.body(name)+"};"},filterPrefix:function(){var parts=[],self=this;return forEach(this.state.filters,function(id,filter){parts.push(id+"=$filter("+self.escape(filter)+")")}),parts.length?"var "+parts.join(",")+";":""},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,args,expression,computed,self=this;if(recursionFn=recursionFn||noop,!skipWatchIdCheck&&isDefined(ast.watchId))return intoId=intoId||this.nextId(),void this.if_("i",this.lazyAssign(intoId,this.computedMember("i",ast.watchId)),this.lazyRecurse(ast,intoId,nameId,recursionFn,create,!0));switch(ast.type){case AST.Program:forEach(ast.body,function(expression,pos){self.recurse(expression.expression,void 0,void 0,function(expr){right=expr}),pos!==ast.body.length-1?self.current().body.push(right,";"):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,void 0,void 0,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,void 0,void 0,function(expr){left=expr}),this.recurse(ast.right,void 0,void 0,function(expr){right=expr}),expression="+"===ast.operator?this.plus(left,right):"-"===ast.operator?this.ifDefined(left,0)+ast.operator+this.ifDefined(right,0):"("+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?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(),nameId&&(nameId.context="inputs"===self.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",ast.name)+"?l:s"),nameId.computed=!1,nameId.name=ast.name),self.if_("inputs"===self.stage||self.not(self.getHasOwnProperty("l",ast.name)),function(){self.if_("inputs"===self.stage||"s",function(){create&&1!==create&&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,void 0,function(){self.if_(self.notNull(left),function(){ast.computed?(right=self.nextId(),self.recurse(ast.property,right),self.getStringValue(right),create&&1!==create&&self.if_(self.not(self.computedMember(left,right)),self.lazyAssign(self.computedMember(left,right),"{}")),expression=self.computedMember(left,right),self.assign(intoId,expression),nameId&&(nameId.computed=!0,nameId.name=right)):(create&&1!==create&&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),nameId&&(nameId.computed=!1,nameId.name=ast.property.name))},function(){self.assign(intoId,"undefined")}),recursionFn(intoId)},!!create);break;case AST.CallExpression:intoId=intoId||this.nextId(),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)):(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?void 0:self.nextId(),void 0,function(argument){args.push(argument)})}),expression=left.name?self.member(left.context,left.name,left.computed)+"("+args.join(",")+")":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,void 0,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?void 0:self.nextId(),void 0,function(argument){args.push(argument)})}),expression="["+args.join(",")+"]",this.assign(intoId,expression),recursionFn(intoId||expression);break;case AST.ObjectExpression:args=[],computed=!1,forEach(ast.properties,function(property){property.computed&&(computed=!0)}),computed?(intoId=intoId||this.nextId(),this.assign(intoId,"{}"),forEach(ast.properties,function(property){property.computed?(left=self.nextId(),self.recurse(property.key,left)):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)})):(forEach(ast.properties,function(property){self.recurse(property.value,ast.constant?void 0:self.nextId(),void 0,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")}},getHasOwnProperty:function(element,property){var key=element+"."+property,own=this.current().own;return own.hasOwnProperty(key)||(own[key]=this.nextId(!1,element+"&&("+this.escape(property)+" in "+element+")")),own[key]},assign:function(id,value){if(id)return this.current().body.push(id,"=",value,";"),id},filter:function(filterName){return this.state.filters.hasOwnProperty(filterName)||(this.state.filters[filterName]=this.nextId(!0)),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(!0===test)alternate();else{var body=this.current().body;body.push("if(",test,"){"),alternate(),body.push("}"),consequent&&(body.push("else{"),consequent(),body.push("}"))}},not:function(expression){return"!("+expression+")"},isNull:function(expression){return expression+"==null"},notNull:function(expression){return expression+"!=null"},nonComputedMember:function(left,right){return/^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(right)?left+"."+right:left+'["'+right.replace(/[^$_a-zA-Z0-9]/g,this.stringEscapeFn)+'"]'},computedMember:function(left,right){return left+"["+right+"]"},member:function(left,right,computed){return computed?this.computedMember(left,right):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(!0===value)return"true";if(!1===value)return"false";if(null===value)return"null";if(void 0===value)return"undefined";throw $parseMinErr("esc","IMPOSSIBLE")},nextId:function(skip,init){var id="v"+this.state.nextId++;return skip||this.current().vars.push(id+(init?"="+init:"")),id},current:function(){return this.state[this.state.computing]}},ASTInterpreter.prototype={compile:function(ast){var assignable,assign,self=this;findConstantAndWatchExpressions(ast,self.$filter),(assignable=assignableAST(ast))&&(assign=this.recurse(assignable));var inputs,toWatch=getInputs(ast.body);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=0===ast.body.length?noop:1===ast.body.length?expressions[0]:function(scope,locals){var lastValue;return forEach(expressions,function(exp){lastValue=exp(scope,locals)}),lastValue};return assign&&(fn.assign=function(scope,value,locals){return assign(scope,locals,value)}),inputs&&(fn.inputs=inputs),fn},recurse:function(ast,context,create){var left,right,args,self=this;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:return right=this.recurse(ast.argument),this["unary"+ast.operator](right,context);case AST.BinaryExpression:case AST.LogicalExpression:return left=this.recurse(ast.left),right=this.recurse(ast.right),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:return left=this.recurse(ast.object,!1,!!create),ast.computed||(right=ast.property.name),ast.computed&&(right=this.recurse(ast.property)),ast.computed?this.computedMember(left,right,context,create):this.nonComputedMember(left,right,context,create);case AST.CallExpression:return args=[],forEach(ast.arguments,function(expr){args.push(self.recurse(expr))}),ast.filter&&(right=this.$filter(ast.callee.name)),ast.filter||(right=this.recurse(ast.callee,!0)),ast.filter?function(scope,locals,assign,inputs){for(var values=[],i=0;i<args.length;++i)values.push(args[i](scope,locals,assign,inputs));var value=right.apply(void 0,values,inputs);return context?{context:void 0,name:void 0,value:value}:value}:function(scope,locals,assign,inputs){var value,rhs=right(scope,locals,assign,inputs);if(null!=rhs.value){for(var values=[],i=0;i<args.length;++i)values.push(args[i](scope,locals,assign,inputs));value=rhs.value.apply(rhs.context,values)}return context?{value:value}:value};case AST.AssignmentExpression:return left=this.recurse(ast.left,!0,1),right=this.recurse(ast.right),function(scope,locals,assign,inputs){var lhs=left(scope,locals,assign,inputs),rhs=right(scope,locals,assign,inputs);return lhs.context[lhs.name]=rhs,context?{value:rhs}:rhs};case AST.ArrayExpression:return args=[],forEach(ast.elements,function(expr){args.push(self.recurse(expr))}),function(scope,locals,assign,inputs){for(var value=[],i=0;i<args.length;++i)value.push(args[i](scope,locals,assign,inputs));return context?{value:value}:value};case AST.ObjectExpression:return args=[],forEach(ast.properties,function(property){property.computed?args.push({key:self.recurse(property.key),computed:!0,value:self.recurse(property.value)}):args.push({key:property.key.type===AST.Identifier?property.key.name:""+property.key.value,computed:!1,value:self.recurse(property.value)})}),function(scope,locals,assign,inputs){for(var value={},i=0;i<args.length;++i)args[i].computed?value[args[i].key(scope,locals,assign,inputs)]=args[i].value(scope,locals,assign,inputs):value[args[i].key]=args[i].value(scope,locals,assign,inputs);return context?{value:value}:value};case AST.ThisExpression:return function(scope){return context?{value:scope}:scope};case AST.LocalsExpression:return function(scope,locals){return context?{value:locals}:locals};case AST.NGValueParameter:return function(scope,locals,assign){return context?{value:assign}:assign}}},"unary+":function(argument,context){return function(scope,locals,assign,inputs){var arg=argument(scope,locals,assign,inputs);return arg=isDefined(arg)?+arg:0,context?{value:arg}:arg}},"unary-":function(argument,context){return function(scope,locals,assign,inputs){var arg=argument(scope,locals,assign,inputs);return arg=isDefined(arg)?-arg:-0,context?{value:arg}:arg}},"unary!":function(argument,context){return function(scope,locals,assign,inputs){var arg=!argument(scope,locals,assign,inputs);return context?{value:arg}:arg}},"binary+":function(left,right,context){return function(scope,locals,assign,inputs){var arg=plusFn(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 lhs=left(scope,locals,assign,inputs),rhs=right(scope,locals,assign,inputs),arg=(isDefined(lhs)?lhs:0)-(isDefined(rhs)?rhs:0);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}},"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}},"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}},"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}},"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}},"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}},"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}},"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}},"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}},"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}},"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}},"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}},"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:void 0,name:void 0,value:value}:value}},identifier:function(name,context,create){return function(scope,locals,assign,inputs){var base=locals&&name in locals?locals:scope;create&&1!==create&&base&&null==base[name]&&(base[name]={});var value=base?base[name]:void 0;return context?{context:base,name:name,value:value}:value}},computedMember:function(left,right,context,create){return function(scope,locals,assign,inputs){var rhs,value,lhs=left(scope,locals,assign,inputs);return null!=lhs&&(rhs=getStringValue(rhs=right(scope,locals,assign,inputs)),create&&1!==create&&lhs&&!lhs[rhs]&&(lhs[rhs]={}),value=lhs[rhs]),context?{context:lhs,name:rhs,value:value}:value}},nonComputedMember:function(left,right,context,create){return function(scope,locals,assign,inputs){var lhs=left(scope,locals,assign,inputs);create&&1!==create&&lhs&&null==lhs[right]&&(lhs[right]={});var value=null!=lhs?lhs[right]:void 0;return context?{context:lhs,name:right,value:value}:value}},inputs:function(input,watchId){return function(scope,value,locals,inputs){return inputs?inputs[watchId]:input(scope,value,locals)}}},Parser.prototype={constructor:Parser,parse:function(text){var ast=this.getAst(text),fn=this.astCompiler.compile(ast.ast);return fn.literal=function(ast){return 0===ast.body.length||1===ast.body.length&&(ast.body[0].expression.type===AST.Literal||ast.body[0].expression.type===AST.ArrayExpression||ast.body[0].expression.type===AST.ObjectExpression)}(ast.ast),fn.constant=function(ast){return ast.constant}(ast.ast),fn.oneTime=ast.oneTime,fn},getAst:function(exp){var oneTime=!1;return":"===(exp=exp.trim()).charAt(0)&&":"===exp.charAt(1)&&(oneTime=!0,exp=exp.substring(2)),{ast:this.ast.ast(exp),oneTime:oneTime}}};var $sceMinErr=minErr("$sce"),SCE_CONTEXTS={HTML:"html",CSS:"css",MEDIA_URL:"mediaUrl",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},UNDERSCORE_LOWERCASE_REGEXP=/_([a-z])/g;function snakeToCamel(name){return name.replace(UNDERSCORE_LOWERCASE_REGEXP,fnCamelCaseReplace)}function adjustMatchers(matchers){var adjustedMatchers=[];return isDefined(matchers)&&forEach(matchers,function(matcher){adjustedMatchers.push(function(matcher){if("self"===matcher)return matcher;if(isString(matcher)){if(matcher.indexOf("***")>-1)throw $sceMinErr("iwcard","Illegal sequence *** in string matcher. String: {0}",matcher);return matcher=escapeForRegexp(matcher).replace(/\\\*\\\*/g,".*").replace(/\\\*/g,"[^:/.?&;]*"),new RegExp("^"+matcher+"$")}if(isRegExp(matcher))return new RegExp("^"+matcher.source+"$");throw $sceMinErr("imatcher",'Matchers may only be "self", string patterns or RegExp objects')}(matcher))}),adjustedMatchers}function $SceDelegateProvider(){this.SCE_CONTEXTS=SCE_CONTEXTS;var resourceUrlWhitelist=["self"],resourceUrlBlacklist=[];this.resourceUrlWhitelist=function(value){return arguments.length&&(resourceUrlWhitelist=adjustMatchers(value)),resourceUrlWhitelist},this.resourceUrlBlacklist=function(value){return arguments.length&&(resourceUrlBlacklist=adjustMatchers(value)),resourceUrlBlacklist},this.$get=["$injector","$$sanitizeUri",function($injector,$$sanitizeUri){var htmlSanitizer=function(html){throw $sceMinErr("unsafe","Attempting to use an unsafe value in a safe context.")};function matchUrl(matcher,parsedUrl){return"self"===matcher?urlsAreSameOrigin(parsedUrl,originUrl)||function(requestUrl){return urlsAreSameOrigin(requestUrl,function(){if(window.document.baseURI)return window.document.baseURI;baseUrlParsingNode||((baseUrlParsingNode=window.document.createElement("a")).href=".",baseUrlParsingNode=baseUrlParsingNode.cloneNode(!1));return baseUrlParsingNode.href}())}(parsedUrl):!!matcher.exec(parsedUrl.href)}function generateHolderType(Base){var holderType=function(trustedValue){this.$$unwrapTrustedValue=function(){return trustedValue}};return Base&&(holderType.prototype=new Base),holderType.prototype.valueOf=function(){return this.$$unwrapTrustedValue()},holderType.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()},holderType}$injector.has("$sanitize")&&(htmlSanitizer=$injector.get("$sanitize"));var trustedValueHolderBase=generateHolderType(),byType={};return byType[SCE_CONTEXTS.HTML]=generateHolderType(trustedValueHolderBase),byType[SCE_CONTEXTS.CSS]=generateHolderType(trustedValueHolderBase),byType[SCE_CONTEXTS.MEDIA_URL]=generateHolderType(trustedValueHolderBase),byType[SCE_CONTEXTS.URL]=generateHolderType(byType[SCE_CONTEXTS.MEDIA_URL]),byType[SCE_CONTEXTS.JS]=generateHolderType(trustedValueHolderBase),byType[SCE_CONTEXTS.RESOURCE_URL]=generateHolderType(byType[SCE_CONTEXTS.URL]),{trustAs:function(type,trustedValue){var Constructor=byType.hasOwnProperty(type)?byType[type]:null;if(!Constructor)throw $sceMinErr("icontext","Attempted to trust a value in invalid context. Context: {0}; Value: {1}",type,trustedValue);if(null===trustedValue||isUndefined(trustedValue)||""===trustedValue)return trustedValue;if("string"!=typeof trustedValue)throw $sceMinErr("itype","Attempted to trust a non-string value in a content requiring a string: Context: {0}",type);return new Constructor(trustedValue)},getTrusted:function(type,maybeTrusted){if(null===maybeTrusted||isUndefined(maybeTrusted)||""===maybeTrusted)return maybeTrusted;var constructor=byType.hasOwnProperty(type)?byType[type]:null;if(constructor&&maybeTrusted instanceof constructor)return maybeTrusted.$$unwrapTrustedValue();if(isFunction(maybeTrusted.$$unwrapTrustedValue)&&(maybeTrusted=maybeTrusted.$$unwrapTrustedValue()),type===SCE_CONTEXTS.MEDIA_URL||type===SCE_CONTEXTS.URL)return $$sanitizeUri(maybeTrusted.toString(),type===SCE_CONTEXTS.MEDIA_URL);if(type===SCE_CONTEXTS.RESOURCE_URL){if(function(url){var i,n,parsedUrl=urlResolve(url.toString()),allowed=!1;for(i=0,n=resourceUrlWhitelist.length;i<n;i++)if(matchUrl(resourceUrlWhitelist[i],parsedUrl)){allowed=!0;break}if(allowed)for(i=0,n=resourceUrlBlacklist.length;i<n;i++)if(matchUrl(resourceUrlBlacklist[i],parsedUrl)){allowed=!1;break}return allowed}(maybeTrusted))return maybeTrusted;throw $sceMinErr("insecurl","Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}",maybeTrusted.toString())}if(type===SCE_CONTEXTS.HTML)return htmlSanitizer(maybeTrusted);throw $sceMinErr("unsafe","Attempting to use an unsafe value in a safe context.")},valueOf:function(maybeTrusted){return maybeTrusted instanceof trustedValueHolderBase?maybeTrusted.$$unwrapTrustedValue():maybeTrusted}}}]}function $SceProvider(){var enabled=!0;this.enabled=function(value){return arguments.length&&(enabled=!!value),enabled},this.$get=["$parse","$sceDelegate",function($parse,$sceDelegate){if(enabled&&msie<8)throw $sceMinErr("iequirks","Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode. You can fix this by adding the text <!doctype html> to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.");var sce=shallowCopy(SCE_CONTEXTS);sce.isEnabled=function(){return enabled},sce.trustAs=$sceDelegate.trustAs,sce.getTrusted=$sceDelegate.getTrusted,sce.valueOf=$sceDelegate.valueOf,enabled||(sce.trustAs=sce.getTrusted=function(type,value){return value},sce.valueOf=identity),sce.parseAs=function(type,expr){var parsed=$parse(expr);return parsed.literal&&parsed.constant?parsed:$parse(expr,function(value){return sce.getTrusted(type,value)})};var parse=sce.parseAs,getTrusted=sce.getTrusted,trustAs=sce.trustAs;return forEach(SCE_CONTEXTS,function(enumValue,name){var lName=lowercase(name);sce[snakeToCamel("parse_as_"+lName)]=function(expr){return parse(enumValue,expr)},sce[snakeToCamel("get_trusted_"+lName)]=function(value){return getTrusted(enumValue,value)},sce[snakeToCamel("trust_as_"+lName)]=function(value){return trustAs(enumValue,value)}}),sce}]}function $SnifferProvider(){this.$get=["$window","$document",function($window,$document){var eventSupport={},hasHistoryPushState=!(!($window.nw&&$window.nw.process)&&$window.chrome&&($window.chrome.app&&$window.chrome.app.runtime||!$window.chrome.app&&$window.chrome.runtime&&$window.chrome.runtime.id))&&$window.history&&$window.history.pushState,android=toInt((/android (\d+)/.exec(lowercase(($window.navigator||{}).userAgent))||[])[1]),boxee=/Boxee/i.test(($window.navigator||{}).userAgent),document=$document[0]||{},bodyStyle=document.body&&document.body.style,transitions=!1,animations=!1;return bodyStyle&&(transitions=!!("transition"in bodyStyle||"webkitTransition"in bodyStyle),animations=!!("animation"in bodyStyle||"webkitAnimation"in bodyStyle)),{history:!(!hasHistoryPushState||android<4||boxee),hasEvent:function(event){if("input"===event&&msie)return!1;if(isUndefined(eventSupport[event])){var divElm=document.createElement("div");eventSupport[event]="on"+event in divElm}return eventSupport[event]},csp:csp(),transitions:transitions,animations:animations,android:android}}]}function $$TaskTrackerFactoryProvider(){this.$get=valueFn(function(log){return new function(log){var taskCounts={},taskCallbacks=[],ALL_TASKS_TYPE=this.ALL_TASKS_TYPE="$$all$$",DEFAULT_TASK_TYPE=this.DEFAULT_TASK_TYPE="$$default$$";function getLastCallback(){var cbInfo=taskCallbacks.pop();return cbInfo&&cbInfo.cb}function getLastCallbackForType(taskType){for(var i=taskCallbacks.length-1;i>=0;--i){var cbInfo=taskCallbacks[i];if(cbInfo.type===taskType)return taskCallbacks.splice(i,1),cbInfo.cb}}this.completeTask=function(fn,taskType){taskType=taskType||DEFAULT_TASK_TYPE;try{fn()}finally{!function(taskType){taskCounts[taskType=taskType||DEFAULT_TASK_TYPE]&&(taskCounts[taskType]--,taskCounts[ALL_TASKS_TYPE]--)}(taskType);var countForType=taskCounts[taskType],countForAll=taskCounts[ALL_TASKS_TYPE];if(!countForAll||!countForType)for(var nextCb,getNextCallback=countForAll?getLastCallbackForType:getLastCallback;nextCb=getNextCallback(taskType);)try{nextCb()}catch(e){log.error(e)}}},this.incTaskCount=function(taskType){taskCounts[taskType=taskType||DEFAULT_TASK_TYPE]=(taskCounts[taskType]||0)+1,taskCounts[ALL_TASKS_TYPE]=(taskCounts[ALL_TASKS_TYPE]||0)+1},this.notifyWhenNoPendingTasks=function(callback,taskType){taskCounts[taskType=taskType||ALL_TASKS_TYPE]?taskCallbacks.push({type:taskType,cb:callback}):callback()}}(log)})}var $templateRequestMinErr=minErr("$templateRequest");function $TemplateRequestProvider(){var httpOptions;this.httpOptions=function(val){return val?(httpOptions=val,this):httpOptions},this.$get=["$exceptionHandler","$templateCache","$http","$q","$sce",function($exceptionHandler,$templateCache,$http,$q,$sce){function handleRequestFn(tpl,ignoreRequestError){handleRequestFn.totalPendingRequests++,isString(tpl)&&!isUndefined($templateCache.get(tpl))||(tpl=$sce.getTrustedResourceUrl(tpl));var transformResponse=$http.defaults&&$http.defaults.transformResponse;return isArray(transformResponse)?transformResponse=transformResponse.filter(function(transformer){return transformer!==defaultHttpResponseTransform}):transformResponse===defaultHttpResponseTransform&&(transformResponse=null),$http.get(tpl,extend({cache:$templateCache,transformResponse:transformResponse},httpOptions)).finally(function(){handleRequestFn.totalPendingRequests--}).then(function(response){return $templateCache.put(tpl,response.data)},function(resp){ignoreRequestError||(resp=$templateRequestMinErr("tpload","Failed to load template: {0} (HTTP status: {1} {2})",tpl,resp.status,resp.statusText),$exceptionHandler(resp));return $q.reject(resp)})}return handleRequestFn.totalPendingRequests=0,handleRequestFn}]}function $$TestabilityProvider(){this.$get=["$rootScope","$browser","$location",function($rootScope,$browser,$location){var testability={findBindings:function(element,expression,opt_exactMatch){var matches=[];return forEach(element.getElementsByClassName("ng-binding"),function(binding){var dataBinding=angular.element(binding).data("$binding");dataBinding&&forEach(dataBinding,function(bindingName){opt_exactMatch?new RegExp("(^|\\s)"+escapeForRegexp(expression)+"(\\s|\\||$)").test(bindingName)&&matches.push(binding):-1!==bindingName.indexOf(expression)&&matches.push(binding)})}),matches},findModels:function(element,expression,opt_exactMatch){for(var prefixes=["ng-","data-ng-","ng\\:"],p=0;p<prefixes.length;++p){var selector="["+prefixes[p]+"model"+(opt_exactMatch?"=":"*=")+'"'+expression+'"]',elements=element.querySelectorAll(selector);if(elements.length)return elements}},getLocation:function(){return $location.url()},setLocation:function(url){url!==$location.url()&&($location.url(url),$rootScope.$digest())},whenStable:function(callback){$browser.notifyWhenNoOutstandingRequests(callback)}};return testability}]}var $timeoutMinErr=minErr("$timeout");function $TimeoutProvider(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",function($rootScope,$browser,$q,$$q,$exceptionHandler){var deferreds={};function timeout(fn,delay,invokeApply){isFunction(fn)||(invokeApply=delay,delay=fn,fn=noop);var timeoutId,args=sliceArgs(arguments,3),skipApply=isDefined(invokeApply)&&!invokeApply,deferred=(skipApply?$$q:$q).defer(),promise=deferred.promise;return timeoutId=$browser.defer(function(){try{deferred.resolve(fn.apply(null,args))}catch(e){deferred.reject(e),$exceptionHandler(e)}finally{delete deferreds[promise.$$timeoutId]}skipApply||$rootScope.$apply()},delay,"$timeout"),promise.$$timeoutId=timeoutId,deferreds[timeoutId]=deferred,promise}return timeout.cancel=function(promise){if(!promise)return!1;if(!promise.hasOwnProperty("$$timeoutId"))throw $timeoutMinErr("badprom","`$timeout.cancel()` called with a promise that was not generated by `$timeout()`.");if(!deferreds.hasOwnProperty(promise.$$timeoutId))return!1;var id=promise.$$timeoutId,deferred=deferreds[id];return markQExceptionHandled(deferred.promise),deferred.reject("canceled"),delete deferreds[id],$browser.defer.cancel(id)},timeout}]}var baseUrlParsingNode,urlParsingNode=window.document.createElement("a"),originUrl=urlResolve(window.location.href);urlParsingNode.href="http://[::1]";var ipv6InBrackets="[::1]"===urlParsingNode.hostname;function urlResolve(url){if(!isString(url))return url;var href=url;msie&&(urlParsingNode.setAttribute("href",href),href=urlParsingNode.href),urlParsingNode.setAttribute("href",href);var hostname=urlParsingNode.hostname;return!ipv6InBrackets&&hostname.indexOf(":")>-1&&(hostname="["+hostname+"]"),{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 urlsAreSameOrigin(url1,url2){return url1=urlResolve(url1),url2=urlResolve(url2),url1.protocol===url2.protocol&&url1.host===url2.host}function $WindowProvider(){this.$get=valueFn(window)}function $$CookieReader($document){var rawDocument=$document[0]||{},lastCookies={},lastCookieString="";function safeDecodeURIComponent(str){try{return decodeURIComponent(str)}catch(e){return str}}return function(){var cookieArray,cookie,i,index,name,currentCookieString=function(rawDocument){try{return rawDocument.cookie||""}catch(e){return""}}(rawDocument);if(currentCookieString!==lastCookieString)for(cookieArray=(lastCookieString=currentCookieString).split("; "),lastCookies={},i=0;i<cookieArray.length;i++)(index=(cookie=cookieArray[i]).indexOf("="))>0&&(name=safeDecodeURIComponent(cookie.substring(0,index)),isUndefined(lastCookies[name])&&(lastCookies[name]=safeDecodeURIComponent(cookie.substring(index+1))));return lastCookies}}function $$CookieReaderProvider(){this.$get=$$CookieReader}function $FilterProvider($provide){var suffix="Filter";function register(name,factory){if(isObject(name)){var filters={};return forEach(name,function(filter,key){filters[key]=register(key,filter)}),filters}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(null==array)return array;throw minErr("filter")("notarray","Expected array but received: {0}",array)}var predicateFn,matchAgainstAnyProp;switch(anyPropertyKey=anyPropertyKey||"$",getTypeForFilter(expression)){case"function":predicateFn=expression;break;case"boolean":case"null":case"number":case"string":matchAgainstAnyProp=!0;case"object":predicateFn=function(expression,comparator,anyPropertyKey,matchAgainstAnyProp){var shouldMatchPrimitives=isObject(expression)&&anyPropertyKey in expression;!0===comparator?comparator=equals:isFunction(comparator)||(comparator=function(actual,expected){return!isUndefined(actual)&&(null===actual||null===expected?actual===expected:!(isObject(expected)||isObject(actual)&&!hasCustomToString(actual))&&(actual=lowercase(""+actual),expected=lowercase(""+expected),-1!==actual.indexOf(expected)))});return function(item){return shouldMatchPrimitives&&!isObject(item)?deepCompare(item,expression[anyPropertyKey],comparator,anyPropertyKey,!1):deepCompare(item,expression,comparator,anyPropertyKey,matchAgainstAnyProp)}}(expression,comparator,anyPropertyKey,matchAgainstAnyProp);break;default:return array}return Array.prototype.filter.call(array,predicateFn)}}function deepCompare(actual,expected,comparator,anyPropertyKey,matchAgainstAnyProp,dontMatchWholeObject){var actualType=getTypeForFilter(actual),expectedType=getTypeForFilter(expected);if("string"===expectedType&&"!"===expected.charAt(0))return!deepCompare(actual,expected.substring(1),comparator,anyPropertyKey,matchAgainstAnyProp);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,!0))return!0;return!dontMatchWholeObject&&deepCompare(actual,expected,comparator,anyPropertyKey,!1)}if("object"===expectedType){for(key in expected){var expectedVal=expected[key];if(!isFunction(expectedVal)&&!isUndefined(expectedVal)){var matchAnyProperty=key===anyPropertyKey;if(!deepCompare(matchAnyProperty?actual:actual[key],expectedVal,comparator,anyPropertyKey,matchAnyProperty,matchAnyProperty))return!1}}return!0}return comparator(actual,expected);case"function":return!1;default:return comparator(actual,expected)}}function getTypeForFilter(val){return null===val?"null":typeof val}$$CookieReader.$inject=["$document"],$FilterProvider.$inject=["$provide"];var MAX_DIGITS=22,DECIMAL_SEP=".",ZERO_CHAR="0";function currencyFilter($locale){var formats=$locale.NUMBER_FORMATS;return function(amount,currencySymbol,fractionSize){isUndefined(currencySymbol)&&(currencySymbol=formats.CURRENCY_SYM),isUndefined(fractionSize)&&(fractionSize=formats.PATTERNS[1].maxFrac);var currencySymbolRe=currencySymbol?/\u00A4/g:/\s*\u00A4\s*/g;return null==amount?amount:formatNumber(amount,formats.PATTERNS[1],formats.GROUP_SEP,formats.DECIMAL_SEP,fractionSize).replace(currencySymbolRe,currencySymbol)}}function numberFilter($locale){var formats=$locale.NUMBER_FORMATS;return function(number,fractionSize){return null==number?number:formatNumber(number,formats.PATTERNS[0],formats.GROUP_SEP,formats.DECIMAL_SEP,fractionSize)}}function formatNumber(number,pattern,groupSep,decimalSep,fractionSize){if(!isString(number)&&!isNumber(number)||isNaN(number))return"";var parsedNumber,isInfinity=!isFinite(number),isZero=!1,numStr=Math.abs(number)+"",formattedText="";if(isInfinity)formattedText="∞";else{(function(parsedNumber,fractionSize,minFrac,maxFrac){var digits=parsedNumber.d,fractionLen=digits.length-parsedNumber.i,roundAt=(fractionSize=isUndefined(fractionSize)?Math.min(Math.max(minFrac,fractionLen),maxFrac):+fractionSize)+parsedNumber.i,digit=digits[roundAt];if(roundAt>0){digits.splice(Math.max(parsedNumber.i,roundAt));for(var j=roundAt;j<digits.length;j++)digits[j]=0}else{fractionLen=Math.max(0,fractionLen),parsedNumber.i=1,digits.length=Math.max(1,roundAt=fractionSize+1),digits[0]=0;for(var i=1;i<roundAt;i++)digits[i]=0}if(digit>=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(;fractionLen<Math.max(0,fractionSize);fractionLen++)digits.push(0);var carry=digits.reduceRight(function(carry,d,i,digits){return d+=carry,digits[i]=d%10,Math.floor(d/10)},0);carry&&(digits.unshift(carry),parsedNumber.i++)})(parsedNumber=function(numStr){var digits,numberOfIntegerDigits,i,j,zeros,exponent=0;for((numberOfIntegerDigits=numStr.indexOf(DECIMAL_SEP))>-1&&(numStr=numStr.replace(DECIMAL_SEP,"")),(i=numStr.search(/e/i))>0?(numberOfIntegerDigits<0&&(numberOfIntegerDigits=i),numberOfIntegerDigits+=+numStr.slice(i+1),numStr=numStr.substring(0,i)):numberOfIntegerDigits<0&&(numberOfIntegerDigits=numStr.length),i=0;numStr.charAt(i)===ZERO_CHAR;i++);if(i===(zeros=numStr.length))digits=[0],numberOfIntegerDigits=1;else{for(zeros--;numStr.charAt(zeros)===ZERO_CHAR;)zeros--;for(numberOfIntegerDigits-=i,digits=[],j=0;i<=zeros;i++,j++)digits[j]=+numStr.charAt(i)}return numberOfIntegerDigits>MAX_DIGITS&&(digits=digits.splice(0,MAX_DIGITS-1),exponent=numberOfIntegerDigits-1,numberOfIntegerDigits=1),{d:digits,e:exponent,i:numberOfIntegerDigits}}(numStr),fractionSize,pattern.minFrac,pattern.maxFrac);var digits=parsedNumber.d,integerLen=parsedNumber.i,exponent=parsedNumber.e,decimals=[];for(isZero=digits.reduce(function(isZero,d){return isZero&&!d},!0);integerLen<0;)digits.unshift(0),integerLen++;integerLen>0?decimals=digits.splice(integerLen,digits.length):(decimals=digits,digits=[0]);var groups=[];for(digits.length>=pattern.lgSize&&groups.unshift(digits.splice(-pattern.lgSize,digits.length).join(""));digits.length>pattern.gSize;)groups.unshift(digits.splice(-pattern.gSize,digits.length).join(""));digits.length&&groups.unshift(digits.join("")),formattedText=groups.join(groupSep),decimals.length&&(formattedText+=decimalSep+decimals.join("")),exponent&&(formattedText+="e+"+exponent)}return number<0&&!isZero?pattern.negPre+formattedText+pattern.negSuf:pattern.posPre+formattedText+pattern.posSuf}function padNumber(num,digits,trim,negWrap){var neg="";for((num<0||negWrap&&num<=0)&&(negWrap?num=1-num:(num=-num,neg="-")),num=""+num;num.length<digits;)num=ZERO_CHAR+num;return trim&&(num=num.substr(num.length-digits)),neg+num}function dateGetter(name,size,offset,trim,negWrap){return offset=offset||0,function(date){var value=date["get"+name]();return(offset>0||value>-offset)&&(value+=offset),0===value&&-12===offset&&(value=12),padNumber(value,size,trim,negWrap)}}function dateStrGetter(name,shortForm,standAlone){return function(date,formats){var value=date["get"+name]();return formats[uppercase((standAlone?"STANDALONE":"")+(shortForm?"SHORT":"")+name)][value]}}function getFirstThursdayOfYear(year){var dayOfWeekOnFirst=new Date(year,0,1).getDay();return new Date(year,0,(dayOfWeekOnFirst<=4?5:12)-dayOfWeekOnFirst)}function weekGetter(size){return function(date){var datetime,firstThurs=getFirstThursdayOfYear(date.getFullYear()),diff=+(datetime=date,new Date(datetime.getFullYear(),datetime.getMonth(),datetime.getDate()+(4-datetime.getDay())))-+firstThurs;return padNumber(1+Math.round(diff/6048e5),size)}}function eraGetter(date,formats){return date.getFullYear()<=0?formats.ERAS[0]:formats.ERAS[1]}currencyFilter.$inject=["$locale"],numberFilter.$inject=["$locale"];var DATE_FORMATS={yyyy:dateGetter("FullYear",4,0,!1,!0),yy:dateGetter("FullYear",2,0,!0,!0),y:dateGetter("FullYear",1,0,!1,!0),MMMM:dateStrGetter("Month"),MMM:dateStrGetter("Month",!0),MM:dateGetter("Month",2,1),M:dateGetter("Month",1,1),LLLL:dateStrGetter("Month",!1,!0),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",!0),a:function(date,formats){return date.getHours()<12?formats.AMPMS[0]:formats.AMPMS[1]},Z:function(date,formats,offset){var zone=-1*offset,paddedZone=zone>=0?"+":"";return paddedZone+=padNumber(Math[zone>0?"floor":"ceil"](zone/60),2)+padNumber(Math.abs(zone%60),2)},ww:weekGetter(2),w:weekGetter(1),G:eraGetter,GG:eraGetter,GGG:eraGetter,GGGG:function(date,formats){return date.getFullYear()<=0?formats.ERANAMES[0]:formats.ERANAMES[1]}},DATE_FORMATS_SPLIT=/((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\s\S]*)/,NUMBER_STRING=/^-?\d+$/;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))?)?$/;return function(date,format,timezone){var fn,match,text="",parts=[];if(format=format||"mediumDate",format=$locale.DATETIME_FORMATS[format]||format,isString(date)&&(date=NUMBER_STRING.test(date)?toInt(date):function(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;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,m=toInt(match[5]||0)-tzMin,s=toInt(match[6]||0),ms=Math.round(1e3*parseFloat("0."+(match[7]||0)));return timeSetter.call(date,h,m,s,ms),date}return string}(date)),isNumber(date)&&(date=new Date(date)),!isDate(date)||!isFinite(date.getTime()))return date;for(;format;)(match=DATE_FORMATS_SPLIT.exec(format))?format=(parts=concat(parts,match,1)).pop():(parts.push(format),format=null);var dateTimezoneOffset=date.getTimezoneOffset();return timezone&&(dateTimezoneOffset=timezoneToOffset(timezone,dateTimezoneOffset),date=convertTimezoneToLocal(date,timezone,!0)),forEach(parts,function(value){fn=DATE_FORMATS[value],text+=fn?fn(date,$locale.DATETIME_FORMATS,dateTimezoneOffset):"''"===value?"'":value.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),text}}function jsonFilter(){return function(object,spacing){return isUndefined(spacing)&&(spacing=2),toJson(object,spacing)}}dateFilter.$inject=["$locale"];var lowercaseFilter=valueFn(lowercase),uppercaseFilter=valueFn(uppercase);function limitToFilter(){return function(input,limit,begin){return limit=Math.abs(Number(limit))===1/0?Number(limit):toInt(limit),isNumberNaN(limit)?input:(isNumber(input)&&(input=input.toString()),isArrayLike(input)?(begin=(begin=!begin||isNaN(begin)?0:toInt(begin))<0?Math.max(0,input.length+begin):begin,limit>=0?sliceFn(input,begin,begin+limit):0===begin?sliceFn(input,limit,input.length):sliceFn(input,Math.max(0,begin+limit),begin)):input)}}function sliceFn(input,begin,end){return isString(input)?input.slice(begin,end):slice.call(input,begin,end)}function orderByFilter($parse){return function(array,sortPredicate,reverseOrder,compareFn){if(null==array)return array;if(!isArrayLike(array))throw minErr("orderBy")("notarray","Expected array but received: {0}",array);isArray(sortPredicate)||(sortPredicate=[sortPredicate]),0===sortPredicate.length&&(sortPredicate=["+"]);var predicates=sortPredicate.map(function(predicate){var descending=1,get=identity;if(isFunction(predicate))get=predicate;else if(isString(predicate)&&("+"!==predicate.charAt(0)&&"-"!==predicate.charAt(0)||(descending="-"===predicate.charAt(0)?-1:1,predicate=predicate.substring(1)),""!==predicate&&(get=$parse(predicate)).constant)){var key=get();get=function(value){return value[key]}}return{get:get,descending:descending}}),descending=reverseOrder?-1:1,compare=isFunction(compareFn)?compareFn:defaultCompare,compareValues=Array.prototype.map.call(array,function(value,index){return{value:value,tieBreaker:{value:index,type:"number",index:index},predicateValues:predicates.map(function(predicate){return function(value,index){var type=typeof value;null===value?type="null":"object"===type&&(value=function(value){if(isFunction(value.valueOf)&&isPrimitive(value=value.valueOf()))return value;if(hasCustomToString(value)&&isPrimitive(value=value.toString()))return value;return value}(value));return{value:value,type:type,index:index}}(predicate.get(value),index)})}});return compareValues.sort(function(v1,v2){for(var i=0,ii=predicates.length;i<ii;i++){var result=compare(v1.predicateValues[i],v2.predicateValues[i]);if(result)return result*predicates[i].descending*descending}return(compare(v1.tieBreaker,v2.tieBreaker)||defaultCompare(v1.tieBreaker,v2.tieBreaker))*descending}),array=compareValues.map(function(item){return item.value})};function isPrimitive(value){switch(typeof value){case"number":case"boolean":case"string":return!0;default:return!1}}function defaultCompare(v1,v2){var result=0,type1=v1.type,type2=v2.type;if(type1===type2){var value1=v1.value,value2=v2.value;"string"===type1?(value1=value1.toLowerCase(),value2=value2.toLowerCase()):"object"===type1&&(isObject(value1)&&(value1=v1.index),isObject(value2)&&(value2=v2.index)),value1!==value2&&(result=value1<value2?-1:1)}else result="undefined"===type1?1:"undefined"===type2?-1:"null"===type1?1:"null"===type2?-1:type1<type2?-1:1;return result}}function ngDirective(directive){return isFunction(directive)&&(directive={link:directive}),directive.restrict=directive.restrict||"AC",valueFn(directive)}orderByFilter.$inject=["$parse"];var htmlAnchorDirective=valueFn({restrict:"E",compile:function(element,attr){if(!attr.href&&!attr.xlinkHref)return function(scope,element){if("a"===element[0].nodeName.toLowerCase()){var href="[object SVGAnimatedString]"===toString.call(element.prop("href"))?"xlink:href":"href";element.on("click",function(event){element.attr(href)||event.preventDefault()})}}}}),ngAttributeAliasDirectives={};forEach(BOOLEAN_ATTR,function(propName,attrName){if("multiple"!==propName){var normalized=directiveNormalize("ng-"+attrName),linkFn=defaultLinkFn;"checked"===propName&&(linkFn=function(scope,element,attr){attr.ngModel!==attr[normalized]&&defaultLinkFn(scope,0,attr)}),ngAttributeAliasDirectives[normalized]=function(){return{restrict:"A",priority:100,link:linkFn}}}function defaultLinkFn(scope,element,attr){scope.$watch(attr[normalized],function(value){attr.$set(attrName,!!value)})}}),forEach(ALIASED_ATTR,function(htmlAttr,ngAttr){ngAttributeAliasDirectives[ngAttr]=function(){return{priority:100,link:function(scope,element,attr){if("ngPattern"===ngAttr&&"/"===attr.ngPattern.charAt(0)){var match=attr.ngPattern.match(REGEX_STRING_REGEXP);if(match)return void attr.$set("ngPattern",new RegExp(match[1],match[2]))}scope.$watch(attr[ngAttr],function(value){attr.$set(ngAttr,value)})}}}}),forEach(["src","srcset","href"],function(attrName){var normalized=directiveNormalize("ng-"+attrName);ngAttributeAliasDirectives[normalized]=["$sce",function($sce){return{priority:99,link:function(scope,element,attr){var propName=attrName,name=attrName;"href"===attrName&&"[object SVGAnimatedString]"===toString.call(element.prop("href"))&&(name="xlinkHref",attr.$attr[name]="xlink:href",propName=null),attr.$set(normalized,$sce.getTrustedMediaUrl(attr[normalized])),attr.$observe(normalized,function(value){value?(attr.$set(name,value),msie&&propName&&element.prop(propName,attr[name])):"href"===attrName&&attr.$set(name,null)})}}}]});var nullFormCtrl={$addControl:noop,$getControls:valueFn([]),$$renameControl:function(control,name){control.$name=name},$removeControl:noop,$setValidity:noop,$setDirty:noop,$setPristine:noop,$setSubmitted:noop,$$setSubmitted:noop},PENDING_CLASS="ng-pending";function FormController($element,$attrs,$scope,$animate,$interpolate){this.$$controls=[],this.$error={},this.$$success={},this.$pending=void 0,this.$name=$interpolate($attrs.name||$attrs.ngForm||"")($scope),this.$dirty=!1,this.$pristine=!0,this.$valid=!0,this.$invalid=!1,this.$submitted=!1,this.$$parentForm=nullFormCtrl,this.$$element=$element,this.$$animate=$animate,setupValidity(this)}FormController.$inject=["$element","$attrs","$scope","$animate","$interpolate"],FormController.prototype={$rollbackViewValue:function(){forEach(this.$$controls,function(control){control.$rollbackViewValue()})},$commitViewValue:function(){forEach(this.$$controls,function(control){control.$commitViewValue()})},$addControl:function(control){assertNotHasOwnProperty(control.$name,"input"),this.$$controls.push(control),control.$name&&(this[control.$name]=control),control.$$parentForm=this},$getControls:function(){return shallowCopy(this.$$controls)},$$renameControl:function(control,newName){var oldName=control.$name;this[oldName]===control&&delete this[oldName],this[newName]=control,control.$name=newName},$removeControl:function(control){control.$name&&this[control.$name]===control&&delete this[control.$name],forEach(this.$pending,function(value,name){this.$setValidity(name,null,control)},this),forEach(this.$error,function(value,name){this.$setValidity(name,null,control)},this),forEach(this.$$success,function(value,name){this.$setValidity(name,null,control)},this),arrayRemove(this.$$controls,control),control.$$parentForm=nullFormCtrl},$setDirty:function(){this.$$animate.removeClass(this.$$element,PRISTINE_CLASS),this.$$animate.addClass(this.$$element,DIRTY_CLASS),this.$dirty=!0,this.$pristine=!1,this.$$parentForm.$setDirty()},$setPristine:function(){this.$$animate.setClass(this.$$element,PRISTINE_CLASS,DIRTY_CLASS+" ng-submitted"),this.$dirty=!1,this.$pristine=!0,this.$submitted=!1,forEach(this.$$controls,function(control){control.$setPristine()})},$setUntouched:function(){forEach(this.$$controls,function(control){control.$setUntouched()})},$setSubmitted:function(){for(var rootForm=this;rootForm.$$parentForm&&rootForm.$$parentForm!==nullFormCtrl;)rootForm=rootForm.$$parentForm;rootForm.$$setSubmitted()},$$setSubmitted:function(){this.$$animate.addClass(this.$$element,"ng-submitted"),this.$submitted=!0,forEach(this.$$controls,function(control){control.$$setSubmitted&&control.$$setSubmitted()})}},addSetValidityMethod({clazz:FormController,set:function(object,property,controller){var list=object[property];list?-1===list.indexOf(controller)&&list.push(controller):object[property]=[controller]},unset:function(object,property,controller){var list=object[property];list&&(arrayRemove(list,controller),0===list.length&&delete object[property])}});var formDirectiveFactory=function(isNgForm){return["$timeout","$parse",function($timeout,$parse){return{name:"form",restrict:isNgForm?"EAC":"E",require:["form","^^?form"],controller:FormController,compile:function(formElement,attr){formElement.addClass(PRISTINE_CLASS).addClass(VALID_CLASS);var nameAttr=attr.name?"name":!(!isNgForm||!attr.ngForm)&&"ngForm";return{pre:function(scope,formElement,attr,ctrls){var controller=ctrls[0];if(!("action"in attr)){var handleFormSubmission=function(event){scope.$apply(function(){controller.$commitViewValue(),controller.$setSubmitted()}),event.preventDefault()};formElement[0].addEventListener("submit",handleFormSubmission),formElement.on("$destroy",function(){$timeout(function(){formElement[0].removeEventListener("submit",handleFormSubmission)},0,!1)})}(ctrls[1]||controller.$$parentForm).$addControl(controller);var setter=nameAttr?getSetter(controller.$name):noop;nameAttr&&(setter(scope,controller),attr.$observe(nameAttr,function(newValue){controller.$name!==newValue&&(setter(scope,void 0),controller.$$parentForm.$$renameControl(controller,newValue),(setter=getSetter(controller.$name))(scope,controller))})),formElement.on("$destroy",function(){controller.$$parentForm.$removeControl(controller),setter(scope,void 0),extend(controller,nullFormCtrl)})}}}};function getSetter(expression){return""===expression?$parse('this[""]').assign:$parse(expression).assign||noop}}]},formDirective=formDirectiveFactory(),ngFormDirective=formDirectiveFactory(!0);function setupValidity(instance){instance.$$classCache={},instance.$$classCache[INVALID_CLASS]=!(instance.$$classCache[VALID_CLASS]=instance.$$element.hasClass(VALID_CLASS))}function addSetValidityMethod(context){var clazz=context.clazz,set=context.set,unset=context.unset;function cachedToggleClass(ctrl,className,switchValue){switchValue&&!ctrl.$$classCache[className]?(ctrl.$$animate.addClass(ctrl.$$element,className),ctrl.$$classCache[className]=!0):!switchValue&&ctrl.$$classCache[className]&&(ctrl.$$animate.removeClass(ctrl.$$element,className),ctrl.$$classCache[className]=!1)}function toggleValidationCss(ctrl,validationErrorKey,isValid){validationErrorKey=validationErrorKey?"-"+snake_case(validationErrorKey,"-"):"",cachedToggleClass(ctrl,VALID_CLASS+validationErrorKey,!0===isValid),cachedToggleClass(ctrl,INVALID_CLASS+validationErrorKey,!1===isValid)}clazz.prototype.$setValidity=function(validationErrorKey,state,controller){var combinedState;isUndefined(state)?function(ctrl,name,value,controller){ctrl[name]||(ctrl[name]={});set(ctrl[name],value,controller)}(this,"$pending",validationErrorKey,controller):function(ctrl,name,value,controller){ctrl[name]&&unset(ctrl[name],value,controller);isObjectEmpty(ctrl[name])&&(ctrl[name]=void 0)}(this,"$pending",validationErrorKey,controller),isBoolean(state)?state?(unset(this.$error,validationErrorKey,controller),set(this.$$success,validationErrorKey,controller)):(set(this.$error,validationErrorKey,controller),unset(this.$$success,validationErrorKey,controller)):(unset(this.$error,validationErrorKey,controller),unset(this.$$success,validationErrorKey,controller)),this.$pending?(cachedToggleClass(this,PENDING_CLASS,!0),this.$valid=this.$invalid=void 0,toggleValidationCss(this,"",null)):(cachedToggleClass(this,PENDING_CLASS,!1),this.$valid=isObjectEmpty(this.$error),this.$invalid=!this.$valid,toggleValidationCss(this,"",this.$valid)),toggleValidationCss(this,validationErrorKey,combinedState=this.$pending&&this.$pending[validationErrorKey]?void 0:!this.$error[validationErrorKey]&&(!!this.$$success[validationErrorKey]||null)),this.$$parentForm.$setValidity(validationErrorKey,combinedState,this)}}function isObjectEmpty(obj){if(obj)for(var prop in obj)if(obj.hasOwnProperty(prop))return!1;return!0}var ISO_DATE_REGEXP=/^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,URL_REGEXP=/^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,EMAIL_REGEXP=/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/,NUMBER_REGEXP=/^\s*(-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,DATE_REGEXP=/^(\d{4,})-(\d{2})-(\d{2})$/,DATETIMELOCAL_REGEXP=/^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,WEEK_REGEXP=/^(\d{4,})-W(\d\d)$/,MONTH_REGEXP=/^(\d{4,})-(\d\d)$/,TIME_REGEXP=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,PARTIAL_VALIDATION_EVENTS="keydown wheel mousedown",PARTIAL_VALIDATION_TYPES=createMap();forEach("date,datetime-local,month,time,week".split(","),function(type){PARTIAL_VALIDATION_TYPES[type]=!0});var inputType={text:function(scope,element,attr,ctrl,$sniffer,$browser){baseInputType(scope,element,attr,ctrl,$sniffer,$browser),stringBasedInputType(ctrl)},date:createDateInputType("date",DATE_REGEXP,createDateParser(DATE_REGEXP,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":createDateInputType("datetimelocal",DATETIMELOCAL_REGEXP,createDateParser(DATETIMELOCAL_REGEXP,["yyyy","MM","dd","HH","mm","ss","sss"]),"yyyy-MM-ddTHH:mm:ss.sss"),time:createDateInputType("time",TIME_REGEXP,createDateParser(TIME_REGEXP,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:createDateInputType("week",WEEK_REGEXP,function(isoWeek,existingDate){if(isDate(isoWeek))return isoWeek;if(isString(isoWeek)){WEEK_REGEXP.lastIndex=0;var parts=WEEK_REGEXP.exec(isoWeek);if(parts){var year=+parts[1],week=+parts[2],hours=0,minutes=0,seconds=0,milliseconds=0,firstThurs=getFirstThursdayOfYear(year),addDays=7*(week-1);return existingDate&&(hours=existingDate.getHours(),minutes=existingDate.getMinutes(),seconds=existingDate.getSeconds(),milliseconds=existingDate.getMilliseconds()),new Date(year,0,firstThurs.getDate()+addDays,hours,minutes,seconds,milliseconds)}}return NaN},"yyyy-Www"),month:createDateInputType("month",MONTH_REGEXP,createDateParser(MONTH_REGEXP,["yyyy","MM"]),"yyyy-MM"),number:function(scope,element,attr,ctrl,$sniffer,$browser,$filter,$parse){var parsedMinVal;if(badInputChecker(scope,element,attr,ctrl,"number"),numberFormatterParser(ctrl),baseInputType(scope,element,attr,ctrl,$sniffer,$browser),isDefined(attr.min)||attr.ngMin){var minVal=attr.min||$parse(attr.ngMin)(scope);parsedMinVal=parseNumberAttrVal(minVal),ctrl.$validators.min=function(modelValue,viewValue){return ctrl.$isEmpty(viewValue)||isUndefined(parsedMinVal)||viewValue>=parsedMinVal},attr.$observe("min",function(val){val!==minVal&&(parsedMinVal=parseNumberAttrVal(val),minVal=val,ctrl.$validate())})}if(isDefined(attr.max)||attr.ngMax){var maxVal=attr.max||$parse(attr.ngMax)(scope),parsedMaxVal=parseNumberAttrVal(maxVal);ctrl.$validators.max=function(modelValue,viewValue){return ctrl.$isEmpty(viewValue)||isUndefined(parsedMaxVal)||viewValue<=parsedMaxVal},attr.$observe("max",function(val){val!==maxVal&&(parsedMaxVal=parseNumberAttrVal(val),maxVal=val,ctrl.$validate())})}if(isDefined(attr.step)||attr.ngStep){var stepVal=attr.step||$parse(attr.ngStep)(scope),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){val!==stepVal&&(parsedStepVal=parseNumberAttrVal(val),stepVal=val,ctrl.$validate())})}},url:function(scope,element,attr,ctrl,$sniffer,$browser){baseInputType(scope,element,attr,ctrl,$sniffer,$browser),stringBasedInputType(ctrl),ctrl.$validators.url=function(modelValue,viewValue){var value=modelValue||viewValue;return ctrl.$isEmpty(value)||URL_REGEXP.test(value)}},email:function(scope,element,attr,ctrl,$sniffer,$browser){baseInputType(scope,element,attr,ctrl,$sniffer,$browser),stringBasedInputType(ctrl),ctrl.$validators.email=function(modelValue,viewValue){var value=modelValue||viewValue;return ctrl.$isEmpty(value)||EMAIL_REGEXP.test(value)}},radio:function(scope,element,attr,ctrl){var doTrim=!attr.ngTrim||"false"!==trim(attr.ngTrim);isUndefined(attr.name)&&element.attr("name",nextUid());element.on("change",function(ev){var value;element[0].checked&&(value=attr.value,doTrim&&(value=trim(value)),ctrl.$setViewValue(value,ev&&ev.type))}),ctrl.$render=function(){var value=attr.value;doTrim&&(value=trim(value)),element[0].checked=value===ctrl.$viewValue},attr.$observe("value",ctrl.$render)},range:function(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&&"range"===element[0].type,minVal=supportsRange?0:void 0,maxVal=supportsRange?100:void 0,stepVal=supportsRange?1:void 0,validity=element[0].validity,hasMinAttr=isDefined(attr.min),hasMaxAttr=isDefined(attr.max),hasStepAttr=isDefined(attr.step),originalRender=ctrl.$render;ctrl.$render=supportsRange&&isDefined(validity.rangeUnderflow)&&isDefined(validity.rangeOverflow)?function(){originalRender(),ctrl.$setViewValue(element.val())}:originalRender,hasMinAttr&&(minVal=parseNumberAttrVal(attr.min),ctrl.$validators.min=supportsRange?function(){return!0}:function(modelValue,viewValue){return ctrl.$isEmpty(viewValue)||isUndefined(minVal)||viewValue>=minVal},setInitialValueAndObserver("min",function(val){if(minVal=parseNumberAttrVal(val),isNumberNaN(ctrl.$modelValue))return;if(supportsRange){var elVal=element.val();minVal>elVal&&(elVal=minVal,element.val(elVal)),ctrl.$setViewValue(elVal)}else ctrl.$validate()}));hasMaxAttr&&(maxVal=parseNumberAttrVal(attr.max),ctrl.$validators.max=supportsRange?function(){return!0}:function(modelValue,viewValue){return ctrl.$isEmpty(viewValue)||isUndefined(maxVal)||viewValue<=maxVal},setInitialValueAndObserver("max",function(val){if(maxVal=parseNumberAttrVal(val),isNumberNaN(ctrl.$modelValue))return;if(supportsRange){var elVal=element.val();maxVal<elVal&&(element.val(maxVal),elVal=maxVal<minVal?minVal:maxVal),ctrl.$setViewValue(elVal)}else ctrl.$validate()}));hasStepAttr&&(stepVal=parseNumberAttrVal(attr.step),ctrl.$validators.step=supportsRange?function(){return!validity.stepMismatch}:function(modelValue,viewValue){return ctrl.$isEmpty(viewValue)||isUndefined(stepVal)||isValidForStep(viewValue,minVal||0,stepVal)},setInitialValueAndObserver("step",function(val){if(stepVal=parseNumberAttrVal(val),isNumberNaN(ctrl.$modelValue))return;supportsRange?ctrl.$viewValue!==element.val()&&ctrl.$setViewValue(element.val()):ctrl.$validate()}));function setInitialValueAndObserver(htmlAttrName,changeFn){element.attr(htmlAttrName,attr[htmlAttrName]);var oldVal=attr[htmlAttrName];attr.$observe(htmlAttrName,function(val){val!==oldVal&&(oldVal=val,changeFn(val))})}},checkbox:function(scope,element,attr,ctrl,$sniffer,$browser,$filter,$parse){var trueValue=parseConstantExpr($parse,scope,"ngTrueValue",attr.ngTrueValue,!0),falseValue=parseConstantExpr($parse,scope,"ngFalseValue",attr.ngFalseValue,!1);element.on("change",function(ev){ctrl.$setViewValue(element[0].checked,ev&&ev.type)}),ctrl.$render=function(){element[0].checked=ctrl.$viewValue},ctrl.$isEmpty=function(value){return!1===value},ctrl.$formatters.push(function(value){return equals(value,trueValue)}),ctrl.$parsers.push(function(value){return value?trueValue:falseValue})},hidden:noop,button:noop,submit:noop,reset:noop,file:noop};function stringBasedInputType(ctrl){ctrl.$formatters.push(function(value){return ctrl.$isEmpty(value)?value:value.toString()})}function baseInputType(scope,element,attr,ctrl,$sniffer,$browser){var timeout,type=lowercase(element[0].type);if(!$sniffer.android){var composing=!1;element.on("compositionstart",function(){composing=!0}),element.on("compositionupdate",function(ev){(isUndefined(ev.data)||""===ev.data)&&(composing=!1)}),element.on("compositionend",function(){composing=!1,listener()})}var listener=function(ev){if(timeout&&($browser.defer.cancel(timeout),timeout=null),!composing){var value=element.val(),event=ev&&ev.type;"password"===type||attr.ngTrim&&"false"===attr.ngTrim||(value=trim(value)),(ctrl.$viewValue!==value||""===value&&ctrl.$$hasNativeValidators)&&ctrl.$setViewValue(value,event)}};if($sniffer.hasEvent("input"))element.on("input",listener);else{var deferListener=function(ev,input,origValue){timeout||(timeout=$browser.defer(function(){timeout=null,input&&input.value===origValue||listener(ev)}))};element.on("keydown",function(event){var key=event.keyCode;91===key||15<key&&key<19||37<=key&&key<=40||deferListener(event,this,this.value)}),$sniffer.hasEvent("paste")&&element.on("paste cut drop",deferListener)}element.on("change",listener),PARTIAL_VALIDATION_TYPES[type]&&ctrl.$$hasNativeValidators&&type===attr.type&&element.on(PARTIAL_VALIDATION_EVENTS,function(ev){if(!timeout){var validity=this[VALIDITY_STATE_PROPERTY],origBadInput=validity.badInput,origTypeMismatch=validity.typeMismatch;timeout=$browser.defer(function(){timeout=null,validity.badInput===origBadInput&&validity.typeMismatch===origTypeMismatch||listener(ev)})}}),ctrl.$render=function(){var value=ctrl.$isEmpty(ctrl.$viewValue)?"":ctrl.$viewValue;element.val()!==value&&element.val(value)}}function createDateParser(regexp,mapping){return function(iso,previousDate){var parts,map;if(isDate(iso))return iso;if(isString(iso)){if('"'===iso.charAt(0)&&'"'===iso.charAt(iso.length-1)&&(iso=iso.substring(1,iso.length-1)),ISO_DATE_REGEXP.test(iso))return new Date(iso);if(regexp.lastIndex=0,parts=regexp.exec(iso)){parts.shift(),map=previousDate?{yyyy:previousDate.getFullYear(),MM:previousDate.getMonth()+1,dd:previousDate.getDate(),HH:previousDate.getHours(),mm:previousDate.getMinutes(),ss:previousDate.getSeconds(),sss:previousDate.getMilliseconds()/1e3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},forEach(parts,function(part,index){index<mapping.length&&(map[mapping[index]]=+part)});var date=new Date(map.yyyy,map.MM-1,map.dd,map.HH,map.mm,map.ss||0,1e3*map.sss||0);return map.yyyy<100&&date.setFullYear(map.yyyy),date}}return NaN}}function createDateInputType(type,regexp,parseDate,format){return function(scope,element,attr,ctrl,$sniffer,$browser,$filter,$parse){badInputChecker(scope,element,attr,ctrl,type),baseInputType(0,element,attr,ctrl,$sniffer,$browser);var previousDate,previousTimezone,isTimeType="time"===type||"datetimelocal"===type;if(ctrl.$parsers.push(function(value){return ctrl.$isEmpty(value)?null:regexp.test(value)?parseDateAndConvertTimeZoneToLocal(value,previousDate):void(ctrl.$$parserName=type)}),ctrl.$formatters.push(function(value){if(value&&!isDate(value))throw ngModelMinErr("datefmt","Expected `{0}` to be a date",value);if(isValidDate(value)){previousDate=value;var timezone=ctrl.$options.getOption("timezone");return timezone&&(previousTimezone=timezone,previousDate=convertTimezoneToLocal(previousDate,timezone,!0)),function(value,timezone){var targetFormat=format;isTimeType&&isString(ctrl.$options.getOption("timeSecondsFormat"))&&(targetFormat=format.replace("ss.sss",ctrl.$options.getOption("timeSecondsFormat")).replace(/:$/,""));var formatted=$filter("date")(value,targetFormat,timezone);isTimeType&&ctrl.$options.getOption("timeStripZeroSeconds")&&(formatted=formatted.replace(/(?::00)?(?:\.000)?$/,""));return formatted}(value,timezone)}return previousDate=null,previousTimezone=null,""}),isDefined(attr.min)||attr.ngMin){var minVal=attr.min||$parse(attr.ngMin)(scope),parsedMinVal=parseObservedDateValue(minVal);ctrl.$validators.min=function(value){return!isValidDate(value)||isUndefined(parsedMinVal)||parseDate(value)>=parsedMinVal},attr.$observe("min",function(val){val!==minVal&&(parsedMinVal=parseObservedDateValue(val),minVal=val,ctrl.$validate())})}if(isDefined(attr.max)||attr.ngMax){var maxVal=attr.max||$parse(attr.ngMax)(scope),parsedMaxVal=parseObservedDateValue(maxVal);ctrl.$validators.max=function(value){return!isValidDate(value)||isUndefined(parsedMaxVal)||parseDate(value)<=parsedMaxVal},attr.$observe("max",function(val){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)||void 0:val}function parseDateAndConvertTimeZoneToLocal(value,previousDate){var timezone=ctrl.$options.getOption("timezone");previousTimezone&&previousTimezone!==timezone&&(previousDate=addDateMinutes(previousDate,timezoneToOffset(previousTimezone)));var parsedDate=parseDate(value,previousDate);return!isNaN(parsedDate)&&timezone&&(parsedDate=convertTimezoneToLocal(parsedDate,timezone)),parsedDate}}}function badInputChecker(scope,element,attr,ctrl,parserName){var node=element[0];(ctrl.$$hasNativeValidators=isObject(node.validity))&&ctrl.$parsers.push(function(value){var validity=element.prop(VALIDITY_STATE_PROPERTY)||{};if(!validity.badInput&&!validity.typeMismatch)return value;ctrl.$$parserName=parserName})}function numberFormatterParser(ctrl){ctrl.$parsers.push(function(value){return ctrl.$isEmpty(value)?null:NUMBER_REGEXP.test(value)?parseFloat(value):void(ctrl.$$parserName="number")}),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){return isDefined(val)&&!isNumber(val)&&(val=parseFloat(val)),isNumberNaN(val)?void 0:val}function isNumberInteger(num){return(0|num)===num}function countDecimals(num){var numString=num.toString(),decimalSymbolIndex=numString.indexOf(".");if(-1===decimalSymbolIndex){if(-1<num&&num<1){var match=/e-(\d+)$/.exec(numString);if(match)return Number(match[1])}return 0}return numString.length-decimalSymbolIndex-1}function isValidForStep(viewValue,stepBase,step){var value=Number(viewValue),isNonIntegerValue=!isNumberInteger(value),isNonIntegerStepBase=!isNumberInteger(stepBase),isNonIntegerStep=!isNumberInteger(step);if(isNonIntegerValue||isNonIntegerStepBase||isNonIntegerStep){var valueDecimals=isNonIntegerValue?countDecimals(value):0,stepBaseDecimals=isNonIntegerStepBase?countDecimals(stepBase):0,stepDecimals=isNonIntegerStep?countDecimals(step):0,decimalCount=Math.max(valueDecimals,stepBaseDecimals,stepDecimals),multiplier=Math.pow(10,decimalCount);value*=multiplier,stepBase*=multiplier,step*=multiplier,isNonIntegerValue&&(value=Math.round(value)),isNonIntegerStepBase&&(stepBase=Math.round(stepBase)),isNonIntegerStep&&(step=Math.round(step))}return(value-stepBase)%step==0}function parseConstantExpr($parse,context,name,expression,fallback){var parseFn;if(isDefined(expression)){if(!(parseFn=$parse(expression)).constant)throw ngModelMinErr("constexpr","Expected constant expression for `{0}`, but saw `{1}`.",name,expression);return parseFn(context)}return fallback}var inputDirective=["$browser","$sniffer","$filter","$parse",function($browser,$sniffer,$filter,$parse){return{restrict:"E",require:["?ngModel"],link:{pre:function(scope,element,attr,ctrls){ctrls[0]&&(inputType[lowercase(attr.type)]||inputType.text)(scope,element,attr,ctrls[0],$sniffer,$browser,$filter,$parse)}}}}],hiddenInputBrowserCacheDirective=function(){var valueProperty={configurable:!0,enumerable:!1,get:function(){return this.getAttribute("value")||""},set:function(val){this.setAttribute("value",val)}};return{restrict:"E",priority:200,compile:function(_,attr){if("hidden"===lowercase(attr.type))return{pre:function(scope,element,attr,ctrls){var node=element[0];node.parentNode&&node.parentNode.insertBefore(node,node.nextSibling),Object.defineProperty&&Object.defineProperty(node,"value",valueProperty)}}}}},CONSTANT_VALUE_REGEXP=/^(true|false|\d+)$/,ngValueDirective=function(){function updateElementValue(element,attr,value){var propValue=isDefined(value)?value:9===msie?"":null;element.prop("value",propValue),attr.$set("value",value)}return{restrict:"A",priority:100,compile:function(tpl,tplAttr){return CONSTANT_VALUE_REGEXP.test(tplAttr.ngValue)?function(scope,elm,attr){updateElementValue(elm,attr,scope.$eval(attr.ngValue))}:function(scope,elm,attr){scope.$watch(attr.ngValue,function(value){updateElementValue(elm,attr,value)})}}}},ngBindDirective=["$compile",function($compile){return{restrict:"AC",compile:function(templateElement){return $compile.$$addBindingClass(templateElement),function(scope,element,attr){$compile.$$addBindingInfo(element,attr.ngBind),element=element[0],scope.$watch(attr.ngBind,function(value){element.textContent=stringify(value)})}}}}],ngBindTemplateDirective=["$interpolate","$compile",function($interpolate,$compile){return{compile:function(templateElement){return $compile.$$addBindingClass(templateElement),function(scope,element,attr){var interpolateFn=$interpolate(element.attr(attr.$attr.ngBindTemplate));$compile.$$addBindingInfo(element,interpolateFn.expressions),element=element[0],attr.$observe("ngBindTemplate",function(value){element.textContent=isUndefined(value)?"":value})}}}}],ngBindHtmlDirective=["$sce","$parse","$compile",function($sce,$parse,$compile){return{restrict:"A",compile:function(tElement,tAttrs){var ngBindHtmlGetter=$parse(tAttrs.ngBindHtml),ngBindHtmlWatch=$parse(tAttrs.ngBindHtml,function(val){return $sce.valueOf(val)});return $compile.$$addBindingClass(tElement),function(scope,element,attr){$compile.$$addBindingInfo(element,attr.ngBindHtml),scope.$watch(ngBindHtmlWatch,function(){var value=ngBindHtmlGetter(scope);element.html($sce.getTrustedHtml(value)||"")})}}}}],ngChangeDirective=valueFn({restrict:"A",require:"ngModel",link:function(scope,element,attr,ctrl){ctrl.$viewChangeListeners.push(function(){scope.$eval(attr.ngChange)})}});function classDirective(name,selector){var indexWatchExpression;return name="ngClass"+name,["$parse",function($parse){return{restrict:"AC",link:function(scope,element,attr){var oldClassString,classCounts=element.data("$classCounts"),oldModulo=!0;function digestClassCounts(classArray,count){var classesToUpdate=[];return forEach(classArray,function(className){(count>0||classCounts[className])&&(classCounts[className]=(classCounts[className]||0)+count,classCounts[className]===+(count>0)&&classesToUpdate.push(className))}),classesToUpdate.join(" ")}classCounts||(classCounts=createMap(),element.data("$classCounts",classCounts)),"ngClass"!==name&&(indexWatchExpression||(indexWatchExpression=$parse("$index",function($index){return 1&$index})),scope.$watch(indexWatchExpression,function(newModulo){newModulo===selector?(classString=digestClassCounts(split(classString=oldClassString),1),attr.$addClass(classString)):function(classString){classString=digestClassCounts(split(classString),-1),attr.$removeClass(classString)}(oldClassString);var classString;oldModulo=newModulo})),scope.$watch($parse(attr[name],toClassString),function(newClassString){oldModulo===selector&&function(oldClassString,newClassString){var oldClassArray=split(oldClassString),newClassArray=split(newClassString),toRemoveArray=arrayDifference(oldClassArray,newClassArray),toAddArray=arrayDifference(newClassArray,oldClassArray),toRemoveString=digestClassCounts(toRemoveArray,-1),toAddString=digestClassCounts(toAddArray,1);attr.$addClass(toAddString),attr.$removeClass(toRemoveString)}(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;i<tokens1.length;i++){for(var token=tokens1[i],j=0;j<tokens2.length;j++)if(token===tokens2[j])continue outer;values.push(token)}return values}function split(classString){return classString&&classString.split(" ")}function toClassString(classValue){if(!classValue)return classValue;var classString=classValue;return isArray(classValue)?classString=classValue.map(toClassString).join(" "):isObject(classValue)?classString=Object.keys(classValue).filter(function(key){return classValue[key]}).join(" "):isString(classValue)||(classString=classValue+""),classString}}var ngClassDirective=classDirective("",!0),ngClassOddDirective=classDirective("Odd",0),ngClassEvenDirective=classDirective("Even",1),ngCloakDirective=ngDirective({compile:function(element,attr){attr.$set("ngCloak",void 0),element.removeClass("ng-cloak")}}),ngControllerDirective=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],ngEventDirectives={},forceAsyncEvents={blur:!0,focus:!0};function createEventDirective($parse,$rootScope,$exceptionHandler,directiveName,eventName,forceAsync){return{restrict:"A",compile:function($element,attr){var fn=$parse(attr[directiveName]);return function(scope,element){element.on(eventName,function(event){var callback=function(){fn(scope,{$event:event})};if($rootScope.$$phase)if(forceAsync)scope.$evalAsync(callback);else try{callback()}catch(error){$exceptionHandler(error)}else scope.$apply(callback)})}}}}forEach("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(eventName){var directiveName=directiveNormalize("ng-"+eventName);ngEventDirectives[directiveName]=["$parse","$rootScope","$exceptionHandler",function($parse,$rootScope,$exceptionHandler){return createEventDirective($parse,$rootScope,$exceptionHandler,directiveName,eventName,forceAsyncEvents[eventName])}]});var ngIfDirective=["$animate","$compile",function($animate,$compile){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function($scope,$element,$attr,ctrl,$transclude){var block,childScope,previousElements;$scope.$watch($attr.ngIf,function(value){value?childScope||$transclude(function(clone,newScope){childScope=newScope,clone[clone.length++]=$compile.$$createComment("end ngIf",$attr.ngIf),block={clone:clone},$animate.enter(clone,$element.parent(),$element)}):(previousElements&&(previousElements.remove(),previousElements=null),childScope&&(childScope.$destroy(),childScope=null),block&&(previousElements=getBlockNodes(block.clone),$animate.leave(previousElements).done(function(response){!1!==response&&(previousElements=null)}),block=null))})}}}],ngIncludeDirective=["$templateRequest","$anchorScroll","$animate",function($templateRequest,$anchorScroll,$animate){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:angular.noop,compile:function(element,attr){var srcExp=attr.ngInclude||attr.src,onloadExp=attr.onload||"",autoScrollExp=attr.autoscroll;return function(scope,$element,$attr,ctrl,$transclude){var currentScope,previousElement,currentElement,changeCounter=0,cleanupLastIncludeContent=function(){previousElement&&(previousElement.remove(),previousElement=null),currentScope&&(currentScope.$destroy(),currentScope=null),currentElement&&($animate.leave(currentElement).done(function(response){!1!==response&&(previousElement=null)}),previousElement=currentElement,currentElement=null)};scope.$watch(srcExp,function(src){var afterAnimation=function(response){!1===response||!isDefined(autoScrollExp)||autoScrollExp&&!scope.$eval(autoScrollExp)||$anchorScroll()},thisChangeId=++changeCounter;src?($templateRequest(src,!0).then(function(response){if(!scope.$$destroyed&&thisChangeId===changeCounter){var newScope=scope.$new();ctrl.template=response;var clone=$transclude(newScope,function(clone){cleanupLastIncludeContent(),$animate.enter(clone,null,$element).done(afterAnimation)});currentElement=clone,(currentScope=newScope).$emit("$includeContentLoaded",src),scope.$eval(onloadExp)}},function(){scope.$$destroyed||thisChangeId===changeCounter&&(cleanupLastIncludeContent(),scope.$emit("$includeContentError",src))}),scope.$emit("$includeContentRequested",src)):(cleanupLastIncludeContent(),ctrl.template=null)})}}}}],ngIncludeFillContentDirective=["$compile",function($compile){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(scope,$element,$attr,ctrl){if(toString.call($element[0]).match(/SVG/))return $element.empty(),void $compile(jqLiteBuildFragment(ctrl.template,window.document).childNodes)(scope,function(clone){$element.append(clone)},{futureParentElement:$element});$element.html(ctrl.template),$compile($element.contents())(scope)}}}],ngInitDirective=ngDirective({priority:450,compile:function(){return{pre:function(scope,element,attrs){scope.$eval(attrs.ngInit)}}}}),ngListDirective=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(scope,element,attr,ctrl){var ngList=attr.ngList||", ",trimValues="false"!==attr.ngTrim,separator=trimValues?trim(ngList):ngList;ctrl.$parsers.push(function(viewValue){if(!isUndefined(viewValue)){var list=[];return viewValue&&forEach(viewValue.split(separator),function(value){value&&list.push(trimValues?trim(value):value)}),list}}),ctrl.$formatters.push(function(value){if(isArray(value))return value.join(ngList)}),ctrl.$isEmpty=function(value){return!value||!value.length}}}},VALID_CLASS="ng-valid",INVALID_CLASS="ng-invalid",PRISTINE_CLASS="ng-pristine",DIRTY_CLASS="ng-dirty",ngModelMinErr=minErr("ngModel");function NgModelController($scope,$exceptionHandler,$attr,$element,$parse,$animate,$timeout,$q,$interpolate){var ctrl;this.$viewValue=Number.NaN,this.$modelValue=Number.NaN,this.$$rawModelValue=void 0,this.$validators={},this.$asyncValidators={},this.$parsers=[],this.$formatters=[],this.$viewChangeListeners=[],this.$untouched=!0,this.$touched=!1,this.$pristine=!0,this.$dirty=!1,this.$valid=!0,this.$invalid=!1,this.$error={},this.$$success={},this.$pending=void 0,this.$name=$interpolate($attr.name||"",!1)($scope),this.$$parentForm=nullFormCtrl,this.$options=defaultModelOptions,this.$$updateEvents="",this.$$updateEventHandler=this.$$updateEventHandler.bind(this),this.$$parsedNgModel=$parse($attr.ngModel),this.$$parsedNgModelAssign=this.$$parsedNgModel.assign,this.$$ngModelGet=this.$$parsedNgModel,this.$$ngModelSet=this.$$parsedNgModelAssign,this.$$pendingDebounce=null,this.$$parserValid=void 0,this.$$parserName="parse",this.$$currentValidationRunId=0,this.$$scope=$scope,this.$$rootScope=$scope.$root,this.$$attr=$attr,this.$$element=$element,this.$$animate=$animate,this.$$timeout=$timeout,this.$$parse=$parse,this.$$q=$q,this.$$exceptionHandler=$exceptionHandler,setupValidity(this),(ctrl=this).$$scope.$watch(function(scope){var modelValue=ctrl.$$ngModelGet(scope);return modelValue===ctrl.$modelValue||ctrl.$modelValue!=ctrl.$modelValue&&modelValue!=modelValue||ctrl.$$setModelValue(modelValue),modelValue})}NgModelController.$inject=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$q","$interpolate"],NgModelController.prototype={$$initGetterSetters:function(){if(this.$options.getOption("getterSetter")){var invokeModelGetter=this.$$parse(this.$$attr.ngModel+"()"),invokeModelSetter=this.$$parse(this.$$attr.ngModel+"($$$p)");this.$$ngModelGet=function($scope){var modelValue=this.$$parsedNgModel($scope);return isFunction(modelValue)&&(modelValue=invokeModelGetter($scope)),modelValue},this.$$ngModelSet=function($scope,newValue){isFunction(this.$$parsedNgModel($scope))?invokeModelSetter($scope,{$$$p:newValue}):this.$$parsedNgModelAssign($scope,newValue)}}else if(!this.$$parsedNgModel.assign)throw ngModelMinErr("nonassign","Expression '{0}' is non-assignable. Element: {1}",this.$$attr.ngModel,startingTag(this.$$element))},$render:noop,$isEmpty:function(value){return isUndefined(value)||""===value||null===value||value!=value},$$updateEmptyClasses:function(value){this.$isEmpty(value)?(this.$$animate.removeClass(this.$$element,"ng-not-empty"),this.$$animate.addClass(this.$$element,"ng-empty")):(this.$$animate.removeClass(this.$$element,"ng-empty"),this.$$animate.addClass(this.$$element,"ng-not-empty"))},$setPristine:function(){this.$dirty=!1,this.$pristine=!0,this.$$animate.removeClass(this.$$element,DIRTY_CLASS),this.$$animate.addClass(this.$$element,PRISTINE_CLASS)},$setDirty:function(){this.$dirty=!0,this.$pristine=!1,this.$$animate.removeClass(this.$$element,PRISTINE_CLASS),this.$$animate.addClass(this.$$element,DIRTY_CLASS),this.$$parentForm.$setDirty()},$setUntouched:function(){this.$touched=!1,this.$untouched=!0,this.$$animate.setClass(this.$$element,"ng-untouched","ng-touched")},$setTouched:function(){this.$touched=!0,this.$untouched=!1,this.$$animate.setClass(this.$$element,"ng-touched","ng-untouched")},$rollbackViewValue:function(){this.$$timeout.cancel(this.$$pendingDebounce),this.$viewValue=this.$$lastCommittedViewValue,this.$render()},$validate:function(){if(!isNumberNaN(this.$modelValue)){var viewValue=this.$$lastCommittedViewValue,modelValue=this.$$rawModelValue,prevValid=this.$valid,prevModelValue=this.$modelValue,allowInvalid=this.$options.getOption("allowInvalid"),that=this;this.$$runValidators(modelValue,viewValue,function(allValid){allowInvalid||prevValid===allValid||(that.$modelValue=allValid?modelValue:void 0,that.$modelValue!==prevModelValue&&that.$$writeModelToScope())})}},$$runValidators:function(modelValue,viewValue,doneCallback){this.$$currentValidationRunId++;var validatorPromises,allValid,localValidationRunId=this.$$currentValidationRunId,that=this;(function(){var errorKey=that.$$parserName;if(!isUndefined(that.$$parserValid))return that.$$parserValid||(forEach(that.$validators,function(v,name){setValidity(name,null)}),forEach(that.$asyncValidators,function(v,name){setValidity(name,null)})),setValidity(errorKey,that.$$parserValid),that.$$parserValid;setValidity(errorKey,null);return!0})()?!function(){var syncValidatorsValid=!0;if(forEach(that.$validators,function(validator,name){var result=Boolean(validator(modelValue,viewValue));syncValidatorsValid=syncValidatorsValid&&result,setValidity(name,result)}),!syncValidatorsValid)return forEach(that.$asyncValidators,function(v,name){setValidity(name,null)}),!1;return!0}()?validationDone(!1):(validatorPromises=[],allValid=!0,forEach(that.$asyncValidators,function(validator,name){var promise=validator(modelValue,viewValue);if(!isPromiseLike(promise))throw ngModelMinErr("nopromise","Expected asynchronous validator to return a promise but got '{0}' instead.",promise);setValidity(name,void 0),validatorPromises.push(promise.then(function(){setValidity(name,!0)},function(){allValid=!1,setValidity(name,!1)}))}),validatorPromises.length?that.$$q.all(validatorPromises).then(function(){validationDone(allValid)},noop):validationDone(!0)):validationDone(!1);function setValidity(name,isValid){localValidationRunId===that.$$currentValidationRunId&&that.$setValidity(name,isValid)}function validationDone(allValid){localValidationRunId===that.$$currentValidationRunId&&doneCallback(allValid)}},$commitViewValue:function(){var viewValue=this.$viewValue;this.$$timeout.cancel(this.$$pendingDebounce),(this.$$lastCommittedViewValue!==viewValue||""===viewValue&&this.$$hasNativeValidators)&&(this.$$updateEmptyClasses(viewValue),this.$$lastCommittedViewValue=viewValue,this.$pristine&&this.$setDirty(),this.$$parseAndValidate())},$$parseAndValidate:function(){var modelValue=this.$$lastCommittedViewValue,that=this;if(this.$$parserValid=!isUndefined(modelValue)||void 0,this.$setValidity(this.$$parserName,null),this.$$parserName="parse",this.$$parserValid)for(var i=0;i<this.$parsers.length;i++)if(isUndefined(modelValue=this.$parsers[i](modelValue))){this.$$parserValid=!1;break}isNumberNaN(this.$modelValue)&&(this.$modelValue=this.$$ngModelGet(this.$$scope));var prevModelValue=this.$modelValue,allowInvalid=this.$options.getOption("allowInvalid");function writeToModelIfNeeded(){that.$modelValue!==prevModelValue&&that.$$writeModelToScope()}this.$$rawModelValue=modelValue,allowInvalid&&(this.$modelValue=modelValue,writeToModelIfNeeded()),this.$$runValidators(modelValue,this.$$lastCommittedViewValue,function(allValid){allowInvalid||(that.$modelValue=allValid?modelValue:void 0,writeToModelIfNeeded())})},$$writeModelToScope:function(){this.$$ngModelSet(this.$$scope,this.$modelValue),forEach(this.$viewChangeListeners,function(listener){try{listener()}catch(e){this.$$exceptionHandler(e)}},this)},$setViewValue:function(value,trigger){this.$viewValue=value,this.$options.getOption("updateOnDefault")&&this.$$debounceViewValueCommit(trigger)},$$debounceViewValueCommit:function(trigger){var debounceDelay=this.$options.getOption("debounce");isNumber(debounceDelay[trigger])?debounceDelay=debounceDelay[trigger]:isNumber(debounceDelay.default)&&-1===this.$options.getOption("updateOn").indexOf(trigger)?debounceDelay=debounceDelay.default:isNumber(debounceDelay["*"])&&(debounceDelay=debounceDelay["*"]),this.$$timeout.cancel(this.$$pendingDebounce);var that=this;debounceDelay>0?this.$$pendingDebounce=this.$$timeout(function(){that.$commitViewValue()},debounceDelay):this.$$rootScope.$$phase?this.$commitViewValue():this.$$scope.$apply(function(){that.$commitViewValue()})},$overrideModelOptions:function(options){this.$options=this.$options.createChild(options),this.$$setUpdateOnEvents()},$processModelValue:function(){var viewValue=this.$$format();this.$viewValue!==viewValue&&(this.$$updateEmptyClasses(viewValue),this.$viewValue=this.$$lastCommittedViewValue=viewValue,this.$render(),this.$$runValidators(this.$modelValue,this.$viewValue,noop))},$$format:function(){for(var formatters=this.$formatters,idx=formatters.length,viewValue=this.$modelValue;idx--;)viewValue=formatters[idx](viewValue);return viewValue},$$setModelValue:function(modelValue){this.$modelValue=this.$$rawModelValue=modelValue,this.$$parserValid=void 0,this.$processModelValue()},$$setUpdateOnEvents:function(){this.$$updateEvents&&this.$$element.off(this.$$updateEvents,this.$$updateEventHandler),this.$$updateEvents=this.$options.getOption("updateOn"),this.$$updateEvents&&this.$$element.on(this.$$updateEvents,this.$$updateEventHandler)},$$updateEventHandler:function(ev){this.$$debounceViewValueCommit(ev&&ev.type)}},addSetValidityMethod({clazz:NgModelController,set:function(object,property){object[property]=!0},unset:function(object,property){delete object[property]}});var defaultModelOptions,ngModelDirective=["$rootScope",function($rootScope){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:NgModelController,priority:1,compile:function(element){return element.addClass(PRISTINE_CLASS).addClass("ng-untouched").addClass(VALID_CLASS),{pre:function(scope,element,attr,ctrls){var modelCtrl=ctrls[0],formCtrl=ctrls[1]||modelCtrl.$$parentForm,optionsCtrl=ctrls[2];optionsCtrl&&(modelCtrl.$options=optionsCtrl.$options),modelCtrl.$$initGetterSetters(),formCtrl.$addControl(modelCtrl),attr.$observe("name",function(newValue){modelCtrl.$name!==newValue&&modelCtrl.$$parentForm.$$renameControl(modelCtrl,newValue)}),scope.$on("$destroy",function(){modelCtrl.$$parentForm.$removeControl(modelCtrl)})},post:function(scope,element,attr,ctrls){var modelCtrl=ctrls[0];function setTouched(){modelCtrl.$setTouched()}modelCtrl.$$setUpdateOnEvents(),element.on("blur",function(){modelCtrl.$touched||($rootScope.$$phase?scope.$evalAsync(setTouched):scope.$apply(setTouched))})}}}}}],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=!1;return forEach(options=extend({},options),function(option,key){"$inherit"===option?"*"===key?inheritAll=!0:(options[key]=this.$$options[key],"updateOn"===key&&(options.updateOnDefault=this.$$options.updateOnDefault)):"updateOn"===key&&(options.updateOnDefault=!1,options[key]=trim(option.replace(DEFAULT_REGEXP,function(){return options.updateOnDefault=!0," "})))},this),inheritAll&&(delete options["*"],defaults(options,this.$$options)),defaults(options,defaultModelOptions.$$options),new ModelOptions(options)}},defaultModelOptions=new ModelOptions({updateOn:"",updateOnDefault:!0,debounce:0,getterSetter:!1,allowInvalid:!1,timezone:null});var ngModelOptionsDirective=function(){function NgModelOptionsController($attrs,$scope){this.$$attrs=$attrs,this.$$scope=$scope}return NgModelOptionsController.$inject=["$attrs","$scope"],NgModelOptionsController.prototype={$onInit:function(){var parentOptions=this.parentCtrl?this.parentCtrl.$options:defaultModelOptions,modelOptionsDefinition=this.$$scope.$eval(this.$$attrs.ngModelOptions);this.$options=parentOptions.createChild(modelOptionsDefinition)}},{restrict:"A",priority:10,require:{parentCtrl:"?^^ngModelOptions"},bindToController:!0,controller:NgModelOptionsController}};function defaults(dst,src){forEach(src,function(value,key){isDefined(dst[key])||(dst[key]=value)})}var ngNonBindableDirective=ngDirective({terminal:!0,priority:1e3}),ngOptionsMinErr=minErr("ngOptions"),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]+?))?$/,ngOptionsDirective=["$compile","$document","$parse",function($compile,$document,$parse){var optionTemplate=window.document.createElement("option"),optGroupTemplate=window.document.createElement("optgroup");return{restrict:"A",terminal:!0,require:["select","ngModel"],link:{pre:function(scope,selectElement,attr,ctrls){ctrls[0].registerOption=noop},post:function(scope,selectElement,attr,ctrls){for(var selectCtrl=ctrls[0],ngModelCtrl=ctrls[1],multiple=attr.multiple,i=0,children=selectElement.children(),ii=children.length;i<ii;i++)if(""===children[i].value){selectCtrl.hasEmptyOption=!0,selectCtrl.emptyOption=children.eq(i);break}selectElement.empty();var options,providedEmptyOption=!!selectCtrl.emptyOption;jqLite(optionTemplate.cloneNode(!1)).val("?");var ngOptions=function(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],keyName=match[6],selectAs=/ as /.test(match[0])&&match[1],trackBy=match[9],valueFn=$parse(match[2]?match[1]:valueName),viewValueFn=selectAs&&$parse(selectAs)||valueFn,trackByFn=trackBy&&$parse(trackBy),getTrackByValueFn=trackBy?function(value,locals){return trackByFn(scope,locals)}:function(value){return hashKey(value)},getTrackByValue=function(value,key){return getTrackByValueFn(value,getLocals(value,key))},displayFn=$parse(match[2]||match[1]),groupByFn=$parse(match[3]||""),disableWhenFn=$parse(match[4]||""),valuesFn=$parse(match[8]),locals={},getLocals=keyName?function(value,key){return locals[keyName]=key,locals[valueName]=value,locals}:function(value){return locals[valueName]=value,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 for(var itemKey in optionValuesKeys=[],optionValues)optionValues.hasOwnProperty(itemKey)&&"$"!==itemKey.charAt(0)&&optionValuesKeys.push(itemKey);return optionValuesKeys}return{trackBy:trackBy,getTrackByValue:getTrackByValue,getWatchables:$parse(valuesFn,function(optionValues){for(var watchedArray=[],optionValuesKeys=getOptionValuesKeys(optionValues=optionValues||[]),optionValuesLength=optionValuesKeys.length,index=0;index<optionValuesLength;index++){var key=optionValues===optionValuesKeys?index:optionValuesKeys[index],value=optionValues[key],locals=getLocals(value,key),selectValue=getTrackByValueFn(value,locals);if(watchedArray.push(selectValue),match[2]||match[1]){var label=displayFn(scope,locals);watchedArray.push(label)}if(match[4]){var disableWhen=disableWhenFn(scope,locals);watchedArray.push(disableWhen)}}return watchedArray}),getOptions:function(){for(var optionItems=[],selectValueMap={},optionValues=valuesFn(scope)||[],optionValuesKeys=getOptionValuesKeys(optionValues),optionValuesLength=optionValuesKeys.length,index=0;index<optionValuesLength;index++){var key=optionValues===optionValuesKeys?index:optionValuesKeys[index],value=optionValues[key],locals=getLocals(value,key),viewValue=viewValueFn(scope,locals),selectValue=getTrackByValueFn(viewValue,locals),optionItem=new Option(selectValue,viewValue,displayFn(scope,locals),groupByFn(scope,locals),disableWhenFn(scope,locals));optionItems.push(optionItem),selectValueMap[selectValue]=optionItem}return{items:optionItems,selectValueMap:selectValueMap,getOptionFromViewValue:function(value){return selectValueMap[getTrackByValue(value)]},getViewValueFromOption:function(option){return trackBy?copy(option.viewValue):option.viewValue}}}}}(attr.ngOptions,selectElement,scope),listFragment=$document[0].createDocumentFragment();function addOptionElement(option,parent){var optionElement=optionTemplate.cloneNode(!1);parent.appendChild(optionElement),function(option,element){option.element=element,element.disabled=option.disabled,option.label!==element.label&&(element.label=option.label,element.textContent=option.label),element.value=option.selectValue}(option,optionElement)}function getAndUpdateSelectedOption(viewValue){var option=options.getOptionFromViewValue(viewValue),element=option&&option.element;return element&&!element.selected&&(element.selected=!0),option}selectCtrl.generateUnknownOptionValue=function(val){return"?"},multiple?(selectCtrl.writeValue=function(values){if(options){var selectedOptions=values&&values.map(getAndUpdateSelectedOption)||[];options.items.forEach(function(option){option.element.selected&&!includes(selectedOptions,option)&&(option.element.selected=!1)})}},selectCtrl.readValue=function(){var selections=[];return forEach(selectElement.val()||[],function(value){var option=options.selectValueMap[value];option&&!option.disabled&&selections.push(options.getViewValueFromOption(option))}),selections},ngOptions.trackBy&&scope.$watchCollection(function(){if(isArray(ngModelCtrl.$viewValue))return ngModelCtrl.$viewValue.map(function(value){return ngOptions.getTrackByValue(value)})},function(){ngModelCtrl.$render()})):(selectCtrl.writeValue=function(value){if(options){var selectedOption=selectElement[0].options[selectElement[0].selectedIndex],option=options.getOptionFromViewValue(value);selectedOption&&selectedOption.removeAttribute("selected"),option?(selectElement[0].value!==option.selectValue&&(selectCtrl.removeUnknownOption(),selectElement[0].value=option.selectValue,option.element.selected=!0),option.element.setAttribute("selected","selected")):selectCtrl.selectUnknownOrEmptyOption(value)}},selectCtrl.readValue=function(){var selectedOption=options.selectValueMap[selectElement.val()];return selectedOption&&!selectedOption.disabled?(selectCtrl.unselectEmptyOption(),selectCtrl.removeUnknownOption(),options.getViewValueFromOption(selectedOption)):null},ngOptions.trackBy&&scope.$watch(function(){return ngOptions.getTrackByValue(ngModelCtrl.$viewValue)},function(){ngModelCtrl.$render()})),providedEmptyOption&&($compile(selectCtrl.emptyOption)(scope),selectElement.prepend(selectCtrl.emptyOption),selectCtrl.emptyOption[0].nodeType===NODE_TYPE_COMMENT?(selectCtrl.hasEmptyOption=!1,selectCtrl.registerOption=function(optionScope,optionEl){""===optionEl.val()&&(selectCtrl.hasEmptyOption=!0,selectCtrl.emptyOption=optionEl,selectCtrl.emptyOption.removeClass("ng-scope"),ngModelCtrl.$render(),optionEl.on("$destroy",function(){var needsRerender=selectCtrl.$isEmptyOptionSelected();selectCtrl.hasEmptyOption=!1,selectCtrl.emptyOption=void 0,needsRerender&&ngModelCtrl.$render()}))}):selectCtrl.emptyOption.removeClass("ng-scope")),scope.$watchCollection(ngOptions.getWatchables,function(){var previousValue=options&&selectCtrl.readValue();if(options)for(var i=options.items.length-1;i>=0;i--){var option=options.items[i];isDefined(option.group)?jqLiteRemove(option.element.parentNode):jqLiteRemove(option.element)}var groupElementMap={};if((options=ngOptions.getOptions()).items.forEach(function(option){var groupElement;isDefined(option.group)?((groupElement=groupElementMap[option.group])||(groupElement=optGroupTemplate.cloneNode(!1),listFragment.appendChild(groupElement),groupElement.label=null===option.group?"null":option.group,groupElementMap[option.group]=groupElement),addOptionElement(option,groupElement)):addOptionElement(option,listFragment)}),selectElement[0].appendChild(listFragment),ngModelCtrl.$render(),!ngModelCtrl.$isEmpty(previousValue)){var nextValue=selectCtrl.readValue(),isNotPrimitive=ngOptions.trackBy||multiple;(isNotPrimitive?equals(previousValue,nextValue):previousValue===nextValue)||(ngModelCtrl.$setViewValue(nextValue),ngModelCtrl.$render())}})}}}}],ngPluralizeDirective=["$locale","$interpolate","$log",function($locale,$interpolate,$log){var BRACE=/{}/g,IS_WHEN=/^when(Minus)?(.+)$/;return{link:function(scope,element,attr){var lastCount,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;function updateElementText(newText){element.text(newText||"")}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(newVal){var count=parseFloat(newVal),countIsNaN=isNumberNaN(count);if(countIsNaN||count in whens||(count=$locale.pluralCat(count-offset)),!(count===lastCount||countIsNaN&&isNumberNaN(lastCount))){watchRemover();var whenExpFn=whensExpFns[count];isUndefined(whenExpFn)?(null!=newVal&&$log.debug("ngPluralize: no rule defined for '"+count+"' in "+whenExp),watchRemover=noop,updateElementText()):watchRemover=scope.$watch(whenExpFn,updateElementText),lastCount=count}})}}}],ngRefMinErr=minErr("ngRef"),ngRefDirective=["$parse",function($parse){return{priority:-1,restrict:"A",compile:function(tElement,tAttrs){var controllerName=directiveNormalize(nodeName_(tElement)),getter=$parse(tAttrs.ngRef),setter=getter.assign||function(){throw ngRefMinErr("nonassign",'Expression in ngRef="{0}" is non-assignable!',tAttrs.ngRef)};return function(scope,element,attrs){var refValue;if(attrs.hasOwnProperty("ngRefRead")){if("$element"===attrs.ngRefRead)refValue=element;else if(!(refValue=element.data("$"+attrs.ngRefRead+"Controller")))throw ngRefMinErr("noctrl",'The controller for ngRefRead="{0}" could not be found on ngRef="{1}"',attrs.ngRefRead,tAttrs.ngRef)}else refValue=element.data("$"+controllerName+"Controller");setter(scope,refValue=refValue||element),element.on("$destroy",function(){getter(scope)===refValue&&setter(scope,null)})}}}}],ngRepeatDirective=["$parse","$animate","$compile",function($parse,$animate,$compile){var ngRepeatMinErr=minErr("ngRepeat"),updateScope=function(scope,index,valueIdentifier,value,keyIdentifier,key,arrayLength){scope[valueIdentifier]=value,keyIdentifier&&(scope[keyIdentifier]=key),scope.$index=index,scope.$first=0===index,scope.$last=index===arrayLength-1,scope.$middle=!(scope.$first||scope.$last),scope.$odd=!(scope.$even=0==(1&index))},getBlockStart=function(block){return block.clone[0]},getBlockEnd=function(block){return block.clone[block.clone.length-1]},trackByIdArrayFn=function($scope,key,value){return hashKey(value)},trackByIdObjFn=function($scope,key){return key};return{restrict:"A",multiElement:!0,transclude:"element",priority:1e3,terminal:!0,$$tlb:!0,compile:function($element,$attr){var expression=$attr.ngRepeat,ngRepeatEndComment=$compile.$$createComment("end ngRepeat",expression),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],rhs=match[2],aliasAs=match[3],trackByExp=match[4];if(!(match=lhs.match(/^(?:(\s*[$\w]+)|\(\s*([$\w]+)\s*,\s*([$\w]+)\s*\))$/)))throw ngRepeatMinErr("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",lhs);var trackByIdExpFn,valueIdentifier=match[3]||match[1],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);if(trackByExp){var hashFnLocals={$id:hashKey},trackByExpGetter=$parse(trackByExp);trackByIdExpFn=function($scope,key,value,index){return keyIdentifier&&(hashFnLocals[keyIdentifier]=key),hashFnLocals[valueIdentifier]=value,hashFnLocals.$index=index,trackByExpGetter($scope,hashFnLocals)}}return function($scope,$element,$attr,ctrl,$transclude){var lastBlockMap=createMap();$scope.$watchCollection(rhs,function(collection){var index,length,nextNode,collectionLength,key,value,trackById,trackByIdFn,collectionKeys,block,nextBlockOrder,elementsToRemove,previousNode=$element[0],nextBlockMap=createMap();if(aliasAs&&($scope[aliasAs]=collection),isArrayLike(collection))collectionKeys=collection,trackByIdFn=trackByIdExpFn||trackByIdArrayFn;else for(var itemKey in trackByIdFn=trackByIdExpFn||trackByIdObjFn,collectionKeys=[],collection)hasOwnProperty.call(collection,itemKey)&&"$"!==itemKey.charAt(0)&&collectionKeys.push(itemKey);for(collectionLength=collectionKeys.length,nextBlockOrder=new Array(collectionLength),index=0;index<collectionLength;index++)if(key=collection===collectionKeys?index:collectionKeys[index],value=collection[key],trackById=trackByIdFn($scope,key,value,index),lastBlockMap[trackById])block=lastBlockMap[trackById],delete lastBlockMap[trackById],nextBlockMap[trackById]=block,nextBlockOrder[index]=block;else{if(nextBlockMap[trackById])throw forEach(nextBlockOrder,function(block){block&&block.scope&&(lastBlockMap[block.id]=block)}),ngRepeatMinErr("dupes","Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",expression,trackById,value);nextBlockOrder[index]={id:trackById,scope:void 0,clone:void 0},nextBlockMap[trackById]=!0}for(var blockKey in hashFnLocals&&(hashFnLocals[valueIdentifier]=void 0),lastBlockMap){if(elementsToRemove=getBlockNodes((block=lastBlockMap[blockKey]).clone),$animate.leave(elementsToRemove),elementsToRemove[0].parentNode)for(index=0,length=elementsToRemove.length;index<length;index++)elementsToRemove[index].$$NG_REMOVED=!0;block.scope.$destroy()}for(index=0;index<collectionLength;index++)if(key=collection===collectionKeys?index:collectionKeys[index],value=collection[key],(block=nextBlockOrder[index]).scope){nextNode=previousNode;do{nextNode=nextNode.nextSibling}while(nextNode&&nextNode.$$NG_REMOVED);getBlockStart(block)!==nextNode&&$animate.move(getBlockNodes(block.clone),null,previousNode),previousNode=getBlockEnd(block),updateScope(block.scope,index,valueIdentifier,value,keyIdentifier,key,collectionLength)}else $transclude(function(clone,scope){block.scope=scope;var endNode=ngRepeatEndComment.cloneNode(!1);clone[clone.length++]=endNode,$animate.enter(clone,null,previousNode),previousNode=endNode,block.clone=clone,nextBlockMap[block.id]=block,updateScope(block.scope,index,valueIdentifier,value,keyIdentifier,key,collectionLength)});lastBlockMap=nextBlockMap})}}}}],ngShowDirective=["$animate",function($animate){return{restrict:"A",multiElement:!0,link:function(scope,element,attr){scope.$watch(attr.ngShow,function(value){$animate[value?"removeClass":"addClass"](element,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],ngHideDirective=["$animate",function($animate){return{restrict:"A",multiElement:!0,link:function(scope,element,attr){scope.$watch(attr.ngHide,function(value){$animate[value?"addClass":"removeClass"](element,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],ngStyleDirective=ngDirective(function(scope,element,attr){scope.$watchCollection(attr.ngStyle,function(newStyles,oldStyles){oldStyles&&newStyles!==oldStyles&&(newStyles||(newStyles={}),forEach(oldStyles,function(val,style){null==newStyles[style]&&(newStyles[style]="")})),newStyles&&element.css(newStyles)})}),ngSwitchDirective=["$animate","$compile",function($animate,$compile){return{require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(scope,element,attr,ngSwitchController){var watchExpr=attr.ngSwitch||attr.on,selectedTranscludes=[],selectedElements=[],previousLeaveAnimations=[],selectedScopes=[],spliceFactory=function(array,index){return function(response){!1!==response&&array.splice(index,1)}};scope.$watch(watchExpr,function(value){for(var i,ii;previousLeaveAnimations.length;)$animate.cancel(previousLeaveAnimations.pop());for(i=0,ii=selectedScopes.length;i<ii;++i){var selected=getBlockNodes(selectedElements[i].clone);selectedScopes[i].$destroy(),(previousLeaveAnimations[i]=$animate.leave(selected)).done(spliceFactory(previousLeaveAnimations,i))}selectedElements.length=0,selectedScopes.length=0,(selectedTranscludes=ngSwitchController.cases["!"+value]||ngSwitchController.cases["?"])&&forEach(selectedTranscludes,function(selectedTransclude){selectedTransclude.transclude(function(caseElement,selectedScope){selectedScopes.push(selectedScope);var anchor=selectedTransclude.element;caseElement[caseElement.length++]=$compile.$$createComment("end ngSwitchWhen");var block={clone:caseElement};selectedElements.push(block),$animate.enter(caseElement,anchor.parent(),anchor)})})})}}}],ngSwitchWhenDirective=ngDirective({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(scope,element,attrs,ctrl,$transclude){forEach(attrs.ngSwitchWhen.split(attrs.ngSwitchWhenSeparator).sort().filter(function(element,index,array){return array[index-1]!==element}),function(whenCase){ctrl.cases["!"+whenCase]=ctrl.cases["!"+whenCase]||[],ctrl.cases["!"+whenCase].push({transclude:$transclude,element:element})})}}),ngSwitchDefaultDirective=ngDirective({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(scope,element,attr,ctrl,$transclude){ctrl.cases["?"]=ctrl.cases["?"]||[],ctrl.cases["?"].push({transclude:$transclude,element:element})}}),ngTranscludeMinErr=minErr("ngTransclude"),ngTranscludeDirective=["$compile",function($compile){return{restrict:"EAC",compile:function(tElement){var fallbackLinkFn=$compile(tElement.contents());return tElement.empty(),function($scope,$element,$attrs,controller,$transclude){if(!$transclude)throw ngTranscludeMinErr("orphan","Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",startingTag($element));$attrs.ngTransclude===$attrs.$attr.ngTransclude&&($attrs.ngTransclude="");var slotName=$attrs.ngTransclude||$attrs.ngTranscludeSlot;function useFallbackContent(){fallbackLinkFn($scope,function(clone){$element.append(clone)})}$transclude(function(clone,transcludedScope){clone.length&&function(nodes){for(var i=0,ii=nodes.length;i<ii;i++){var node=nodes[i];if(node.nodeType!==NODE_TYPE_TEXT||node.nodeValue.trim())return!0}}(clone)?$element.append(clone):(useFallbackContent(),transcludedScope.$destroy())},null,slotName),slotName&&!$transclude.isSlotFilled(slotName)&&useFallbackContent()}}}}],scriptDirective=["$templateCache",function($templateCache){return{restrict:"E",terminal:!0,compile:function(element,attr){if("text/ng-template"===attr.type){var templateUrl=attr.id,text=element[0].text;$templateCache.put(templateUrl,text)}}}}],noopNgModelController={$setViewValue:noop,$render:noop};function setOptionSelectedStatus(optionEl,value){optionEl.prop("selected",value),optionEl.attr("selected",value)}var SelectController=["$element","$scope",function($element,$scope){var self=this,optionsMap=new NgMap;self.selectValueMap={},self.ngModelCtrl=noopNgModelController,self.multiple=!1,self.unknownOption=jqLite(window.document.createElement("option")),self.hasEmptyOption=!1,self.emptyOption=void 0,self.renderUnknownOption=function(val){var unknownVal=self.generateUnknownOptionValue(val);self.unknownOption.val(unknownVal),$element.prepend(self.unknownOption),setOptionSelectedStatus(self.unknownOption,!0),$element.val(unknownVal)},self.updateUnknownOption=function(val){var unknownVal=self.generateUnknownOptionValue(val);self.unknownOption.val(unknownVal),setOptionSelectedStatus(self.unknownOption,!0),$element.val(unknownVal)},self.generateUnknownOptionValue=function(val){return"? "+hashKey(val)+" ?"},self.removeUnknownOption=function(){self.unknownOption.parent()&&self.unknownOption.remove()},self.selectEmptyOption=function(){self.emptyOption&&($element.val(""),setOptionSelectedStatus(self.emptyOption,!0))},self.unselectEmptyOption=function(){self.hasEmptyOption&&setOptionSelectedStatus(self.emptyOption,!1)},$scope.$on("$destroy",function(){self.renderUnknownOption=noop}),self.readValue=function(){var val=$element.val(),realVal=val in self.selectValueMap?self.selectValueMap[val]:val;return self.hasOption(realVal)?realVal:null},self.writeValue=function(value){var currentlySelectedOption=$element[0].options[$element[0].selectedIndex];if(currentlySelectedOption&&setOptionSelectedStatus(jqLite(currentlySelectedOption),!1),self.hasOption(value)){self.removeUnknownOption();var hashedVal=hashKey(value);$element.val(hashedVal in self.selectValueMap?hashedVal:value);var selectedOption=$element[0].options[$element[0].selectedIndex];setOptionSelectedStatus(jqLite(selectedOption),!0)}else self.selectUnknownOrEmptyOption(value)},self.addOption=function(value,element){if(element[0].nodeType!==NODE_TYPE_COMMENT){assertNotHasOwnProperty(value,'"option value"'),""===value&&(self.hasEmptyOption=!0,self.emptyOption=element);var count=optionsMap.get(value)||0;optionsMap.set(value,count+1),scheduleRender()}},self.removeOption=function(value){var count=optionsMap.get(value);count&&(1===count?(optionsMap.delete(value),""===value&&(self.hasEmptyOption=!1,self.emptyOption=void 0)):optionsMap.set(value,count-1))},self.hasOption=function(value){return!!optionsMap.get(value)},self.$hasEmptyOption=function(){return self.hasEmptyOption},self.$isUnknownOptionSelected=function(){return $element[0].options[0]===self.unknownOption[0]},self.$isEmptyOptionSelected=function(){return self.hasEmptyOption&&$element[0].options[$element[0].selectedIndex]===self.emptyOption[0]},self.selectUnknownOrEmptyOption=function(value){null==value&&self.emptyOption?(self.removeUnknownOption(),self.selectEmptyOption()):self.unknownOption.parent().length?self.updateUnknownOption(value):self.renderUnknownOption(value)};var renderScheduled=!1;function scheduleRender(){renderScheduled||(renderScheduled=!0,$scope.$$postDigest(function(){renderScheduled=!1,self.ngModelCtrl.$render()}))}var updateScheduled=!1;function scheduleViewValueUpdate(renderAfter){updateScheduled||(updateScheduled=!0,$scope.$$postDigest(function(){$scope.$$destroyed||(updateScheduled=!1,self.ngModelCtrl.$setViewValue(self.readValue()),renderAfter&&self.ngModelCtrl.$render())}))}self.registerOption=function(optionScope,optionElement,optionAttrs,interpolateValueFn,interpolateTextFn){var oldVal,hashedVal;optionAttrs.$attr.ngValue?optionAttrs.$observe("value",function(newVal){var removal,previouslySelected=optionElement.prop("selected");isDefined(hashedVal)&&(self.removeOption(oldVal),delete self.selectValueMap[hashedVal],removal=!0),hashedVal=hashKey(newVal),oldVal=newVal,self.selectValueMap[hashedVal]=newVal,self.addOption(newVal,optionElement),optionElement.attr("value",hashedVal),removal&&previouslySelected&&scheduleViewValueUpdate()}):interpolateValueFn?optionAttrs.$observe("value",function(newVal){var removal;self.readValue();var previouslySelected=optionElement.prop("selected");isDefined(oldVal)&&(self.removeOption(oldVal),removal=!0),oldVal=newVal,self.addOption(newVal,optionElement),removal&&previouslySelected&&scheduleViewValueUpdate()}):interpolateTextFn?optionScope.$watch(interpolateTextFn,function(newVal,oldVal){optionAttrs.$set("value",newVal);var previouslySelected=optionElement.prop("selected");oldVal!==newVal&&self.removeOption(oldVal),self.addOption(newVal,optionElement),oldVal&&previouslySelected&&scheduleViewValueUpdate()}):self.addOption(optionAttrs.value,optionElement);optionAttrs.$observe("disabled",function(newVal){("true"===newVal||newVal&&optionElement.prop("selected"))&&(self.multiple?scheduleViewValueUpdate(!0):(self.ngModelCtrl.$setViewValue(null),self.ngModelCtrl.$render()))}),optionElement.on("$destroy",function(){var currentValue=self.readValue(),removeValue=optionAttrs.value;self.removeOption(removeValue),scheduleRender(),(self.multiple&&currentValue&&-1!==currentValue.indexOf(removeValue)||currentValue===removeValue)&&scheduleViewValueUpdate(!0)})}}],selectDirective=function(){return{restrict:"E",require:["select","?ngModel"],controller:SelectController,priority:1,link:{pre:function(scope,element,attr,ctrls){var selectCtrl=ctrls[0],ngModelCtrl=ctrls[1];if(!ngModelCtrl)return void(selectCtrl.registerOption=noop);if(selectCtrl.ngModelCtrl=ngModelCtrl,element.on("change",function(){selectCtrl.removeUnknownOption(),scope.$apply(function(){ngModelCtrl.$setViewValue(selectCtrl.readValue())})}),attr.multiple){selectCtrl.multiple=!0,selectCtrl.readValue=function(){var array=[];return forEach(element.find("option"),function(option){if(option.selected&&!option.disabled){var val=option.value;array.push(val in selectCtrl.selectValueMap?selectCtrl.selectValueMap[val]:val)}}),array},selectCtrl.writeValue=function(value){forEach(element.find("option"),function(option){var shouldBeSelected=!!value&&(includes(value,option.value)||includes(value,selectCtrl.selectValueMap[option.value])),currentlySelected=option.selected;shouldBeSelected!==currentlySelected&&setOptionSelectedStatus(jqLite(option),shouldBeSelected)})};var lastView,lastViewRef=NaN;scope.$watch(function(){lastViewRef!==ngModelCtrl.$viewValue||equals(lastView,ngModelCtrl.$viewValue)||(lastView=shallowCopy(ngModelCtrl.$viewValue),ngModelCtrl.$render()),lastViewRef=ngModelCtrl.$viewValue}),ngModelCtrl.$isEmpty=function(value){return!value||0===value.length}}},post:function(scope,element,attrs,ctrls){var ngModelCtrl=ctrls[1];if(!ngModelCtrl)return;var selectCtrl=ctrls[0];ngModelCtrl.$render=function(){selectCtrl.writeValue(ngModelCtrl.$viewValue)}}}}},optionDirective=["$interpolate",function($interpolate){return{restrict:"E",priority:100,compile:function(element,attr){var interpolateValueFn,interpolateTextFn;return isDefined(attr.ngValue)||(isDefined(attr.value)?interpolateValueFn=$interpolate(attr.value,!0):(interpolateTextFn=$interpolate(element.text(),!0))||attr.$set("value",element.text())),function(scope,element,attr){var parent=element.parent(),selectCtrl=parent.data("$selectController")||parent.parent().data("$selectController");selectCtrl&&selectCtrl.registerOption(scope,element,attr,interpolateValueFn,interpolateTextFn)}}}}],requiredDirective=["$parse",function($parse){return{restrict:"A",require:"?ngModel",link:function(scope,elm,attr,ctrl){if(ctrl){var value=attr.required||$parse(attr.ngRequired)(scope);attr.required=!0,ctrl.$validators.required=function(modelValue,viewValue){return!value||!ctrl.$isEmpty(viewValue)},attr.$observe("required",function(newVal){value!==newVal&&(value=newVal,ctrl.$validate())})}}}}],patternDirective=["$parse",function($parse){return{restrict:"A",require:"?ngModel",compile:function(tElm,tAttr){var patternExp,parseFn;return tAttr.ngPattern&&(patternExp=tAttr.ngPattern,parseFn="/"===tAttr.ngPattern.charAt(0)&&REGEX_STRING_REGEXP.test(tAttr.ngPattern)?function(){return tAttr.ngPattern}:$parse(tAttr.ngPattern)),function(scope,elm,attr,ctrl){if(ctrl){var attrVal=attr.pattern;attr.ngPattern?attrVal=parseFn(scope):patternExp=attr.pattern;var regexp=parsePatternAttr(attrVal,patternExp,elm);attr.$observe("pattern",function(newVal){var oldRegexp=regexp;regexp=parsePatternAttr(newVal,patternExp,elm),(oldRegexp&&oldRegexp.toString())!==(regexp&&regexp.toString())&&ctrl.$validate()}),ctrl.$validators.pattern=function(modelValue,viewValue){return ctrl.$isEmpty(viewValue)||isUndefined(regexp)||regexp.test(viewValue)}}}}}}],maxlengthDirective=["$parse",function($parse){return{restrict:"A",require:"?ngModel",link:function(scope,elm,attr,ctrl){if(ctrl){var maxlength=attr.maxlength||$parse(attr.ngMaxlength)(scope),maxlengthParsed=parseLength(maxlength);attr.$observe("maxlength",function(value){maxlength!==value&&(maxlengthParsed=parseLength(value),maxlength=value,ctrl.$validate())}),ctrl.$validators.maxlength=function(modelValue,viewValue){return maxlengthParsed<0||ctrl.$isEmpty(viewValue)||viewValue.length<=maxlengthParsed}}}}}],minlengthDirective=["$parse",function($parse){return{restrict:"A",require:"?ngModel",link:function(scope,elm,attr,ctrl){if(ctrl){var minlength=attr.minlength||$parse(attr.ngMinlength)(scope),minlengthParsed=parseLength(minlength)||-1;attr.$observe("minlength",function(value){minlength!==value&&(minlengthParsed=parseLength(value)||-1,minlength=value,ctrl.$validate())}),ctrl.$validators.minlength=function(modelValue,viewValue){return ctrl.$isEmpty(viewValue)||viewValue.length>=minlengthParsed}}}}}];function parsePatternAttr(regex,patternExp,elm){if(regex){if(isString(regex)&&(regex=new RegExp("^"+regex+"$")),!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}window.angular.bootstrap?window.console&&console.log("WARNING: Tried to load AngularJS more than once."):(!function(){var originalCleanData;if(!bindJQueryFired){var jqName=jq();(jQuery=isUndefined(jqName)?window.jQuery:jqName?window[jqName]:void 0)&&jQuery.fn.on?(jqLite=jQuery,extend(jQuery.fn,{scope:JQLitePrototype.scope,isolateScope:JQLitePrototype.isolateScope,controller:JQLitePrototype.controller,injector:JQLitePrototype.injector,inheritedData:JQLitePrototype.inheritedData})):jqLite=JQLite,originalCleanData=jqLite.cleanData,jqLite.cleanData=function(elems){for(var events,elem,i=0;null!=(elem=elems[i]);i++)(events=(jqLite._data(elem)||{}).events)&&events.$destroy&&jqLite(elem).triggerHandler("$destroy");originalCleanData(elems)},angular.element=jqLite,bindJQueryFired=!0}}(),function(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,$$minErr:minErr,$$csp:csp,$$encodeUriSegment:encodeUriSegment,$$encodeUriQuery:encodeUriQuery,$$lowercase:lowercase,$$stringify:stringify,$$uppercase:uppercase}),(angularModule=function(window){var $injectorMinErr=minErr("$injector"),ngMinErr=minErr("ng");function ensure(obj,name,factory){return obj[name]||(obj[name]=factory())}var angular=ensure(window,"angular",Object);return angular.$$minErr=angular.$$minErr||minErr,ensure(angular,"module",function(){var modules={};return function(name,requires,configFn){var info={};return function(name,context){if("hasOwnProperty"===name)throw ngMinErr("badname","hasOwnProperty is not a valid {0} name",context)}(name,"module"),requires&&modules.hasOwnProperty(name)&&(modules[name]=null),ensure(modules,name,function(){if(!requires)throw $injectorMinErr("nomod","Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.",name);var invokeQueue=[],configBlocks=[],runBlocks=[],config=invokeLater("$injector","invoke","push",configBlocks),moduleInstance={_invokeQueue:invokeQueue,_configBlocks:configBlocks,_runBlocks:runBlocks,info:function(value){if(isDefined(value)){if(!isObject(value))throw ngMinErr("aobj","Argument '{0}' must be an object","value");return info=value,this}return info},requires:requires,name:name,provider:invokeLaterAndSetModuleName("$provide","provider"),factory:invokeLaterAndSetModuleName("$provide","factory"),service:invokeLaterAndSetModuleName("$provide","service"),value:invokeLater("$provide","value"),constant:invokeLater("$provide","constant","unshift"),decorator:invokeLaterAndSetModuleName("$provide","decorator",configBlocks),animation:invokeLaterAndSetModuleName("$animateProvider","register"),filter:invokeLaterAndSetModuleName("$filterProvider","register"),controller:invokeLaterAndSetModuleName("$controllerProvider","register"),directive:invokeLaterAndSetModuleName("$compileProvider","directive"),component:invokeLaterAndSetModuleName("$compileProvider","component"),config:config,run:function(block){return runBlocks.push(block),this}};return configFn&&config(configFn),moduleInstance;function invokeLater(provider,method,insertMethod,queue){return queue||(queue=invokeQueue),function(){return queue[insertMethod||"push"]([provider,method,arguments]),moduleInstance}}function invokeLaterAndSetModuleName(provider,method,queue){return queue||(queue=invokeQueue),function(recipeName,factoryFunction){return factoryFunction&&isFunction(factoryFunction)&&(factoryFunction.$$moduleName=name),queue.push([provider,method,arguments]),moduleInstance}}})}})}(window))("ng",["ngLocale"],["$provide",function($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.7.7"})}(angular),angular.module("ngLocale",[],["$provide",function($provide){var PLURAL_CATEGORY_ONE="one",PLURAL_CATEGORY_OTHER="other";$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:"-¤",negSuf:"",posPre:"¤",posSuf:""}]},id:"en-us",localeID:"en_US",pluralCat:function(n,opt_precision){var i=0|n,vf=function(n,opt_precision){var v=opt_precision;void 0===v&&(v=Math.min(function(n){var i=(n+="").indexOf(".");return-1==i?0:n.length-i-1}(n),3));var base=Math.pow(10,v);return{v:v,f:(n*base|0)%base}}(n,opt_precision);return 1==i&&0==vf.v?PLURAL_CATEGORY_ONE:PLURAL_CATEGORY_OTHER}})}]),jqLite(function(){angularInit(window.document,bootstrap)}))}(window),!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend('<style type="text/css">@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;}</style>')},{}],2:[function(require,module,exports){require("./angular"),module.exports=angular},{"./angular":1}],3:[function(require,module,exports){var global,factory;global=this,factory=function(exports){"use strict";var freeze=Object.freeze;function extend(dest){var i,j,len,src;for(j=1,len=arguments.length;j<len;j++)for(i in src=arguments[j])dest[i]=src[i];return dest}Object.freeze=function(obj){return obj};var create=Object.create||function(){function F(){}return function(proto){return F.prototype=proto,new F}}();function bind(fn,obj){var slice=Array.prototype.slice;if(fn.bind)return fn.bind.apply(fn,slice.call(arguments,1));var args=slice.call(arguments,2);return function(){return fn.apply(obj,args.length?args.concat(slice.call(arguments)):arguments)}}var lastId=0;function stamp(obj){return obj._leaflet_id=obj._leaflet_id||++lastId,obj._leaflet_id}function throttle(fn,time,context){var lock,args,wrapperFn,later;return later=function(){lock=!1,args&&(wrapperFn.apply(context,args),args=!1)},wrapperFn=function(){lock?args=arguments:(fn.apply(context,arguments),setTimeout(later,time),lock=!0)}}function wrapNum(x,range,includeMax){var max=range[1],min=range[0],d=max-min;return x===max&&includeMax?x:((x-min)%d+d)%d+min}function falseFn(){return!1}function formatNum(num,digits){var pow=Math.pow(10,void 0===digits?6:digits);return Math.round(num*pow)/pow}function trim(str){return str.trim?str.trim():str.replace(/^\s+|\s+$/g,"")}function splitWords(str){return trim(str).split(/\s+/)}function setOptions(obj,options){for(var i in obj.hasOwnProperty("options")||(obj.options=obj.options?create(obj.options):{}),options)obj.options[i]=options[i];return obj.options}function getParamString(obj,existingUrl,uppercase){var params=[];for(var i in obj)params.push(encodeURIComponent(uppercase?i.toUpperCase():i)+"="+encodeURIComponent(obj[i]));return(existingUrl&&-1!==existingUrl.indexOf("?")?"&":"?")+params.join("&")}var templateRe=/\{ *([\w_-]+) *\}/g;function template(str,data){return str.replace(templateRe,function(str,key){var value=data[key];if(void 0===value)throw new Error("No value provided for variable "+str);return"function"==typeof value&&(value=value(data)),value})}var isArray=Array.isArray||function(obj){return"[object Array]"===Object.prototype.toString.call(obj)};function indexOf(array,el){for(var i=0;i<array.length;i++)if(array[i]===el)return i;return-1}var emptyImageUrl="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function getPrefixed(name){return window["webkit"+name]||window["moz"+name]||window["ms"+name]}var lastTime=0;function timeoutDefer(fn){var time=+new Date,timeToCall=Math.max(0,16-(time-lastTime));return lastTime=time+timeToCall,window.setTimeout(fn,timeToCall)}var requestFn=window.requestAnimationFrame||getPrefixed("RequestAnimationFrame")||timeoutDefer,cancelFn=window.cancelAnimationFrame||getPrefixed("CancelAnimationFrame")||getPrefixed("CancelRequestAnimationFrame")||function(id){window.clearTimeout(id)};function requestAnimFrame(fn,context,immediate){if(!immediate||requestFn!==timeoutDefer)return requestFn.call(window,bind(fn,context));fn.call(context)}function cancelAnimFrame(id){id&&cancelFn.call(window,id)}var Util=(Object.freeze||Object)({freeze:freeze,extend:extend,create:create,bind:bind,lastId:lastId,stamp:stamp,throttle:throttle,wrapNum:wrapNum,falseFn:falseFn,formatNum:formatNum,trim:trim,splitWords:splitWords,setOptions:setOptions,getParamString:getParamString,template:template,isArray:isArray,indexOf:indexOf,emptyImageUrl:emptyImageUrl,requestFn:requestFn,cancelFn:cancelFn,requestAnimFrame:requestAnimFrame,cancelAnimFrame:cancelAnimFrame});function Class(){}Class.extend=function(props){var NewClass=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},parentProto=NewClass.__super__=this.prototype,proto=create(parentProto);for(var i in proto.constructor=NewClass,NewClass.prototype=proto,this)this.hasOwnProperty(i)&&"prototype"!==i&&"__super__"!==i&&(NewClass[i]=this[i]);return props.statics&&(extend(NewClass,props.statics),delete props.statics),props.includes&&(!function(includes){if("undefined"==typeof L||!L||!L.Mixin)return;includes=isArray(includes)?includes:[includes];for(var i=0;i<includes.length;i++)includes[i]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}(props.includes),extend.apply(null,[proto].concat(props.includes)),delete props.includes),proto.options&&(props.options=extend(create(proto.options),props.options)),extend(proto,props),proto._initHooks=[],proto.callInitHooks=function(){if(!this._initHooksCalled){parentProto.callInitHooks&&parentProto.callInitHooks.call(this),this._initHooksCalled=!0;for(var i=0,len=proto._initHooks.length;i<len;i++)proto._initHooks[i].call(this)}},NewClass},Class.include=function(props){return extend(this.prototype,props),this},Class.mergeOptions=function(options){return extend(this.prototype.options,options),this},Class.addInitHook=function(fn){var args=Array.prototype.slice.call(arguments,1),init="function"==typeof fn?fn:function(){this[fn].apply(this,args)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(init),this};var Events={on:function(types,fn,context){if("object"==typeof types)for(var type in types)this._on(type,types[type],fn);else for(var i=0,len=(types=splitWords(types)).length;i<len;i++)this._on(types[i],fn,context);return this},off:function(types,fn,context){if(types)if("object"==typeof types)for(var type in types)this._off(type,types[type],fn);else for(var i=0,len=(types=splitWords(types)).length;i<len;i++)this._off(types[i],fn,context);else delete this._events;return this},_on:function(type,fn,context){this._events=this._events||{};var typeListeners=this._events[type];typeListeners||(typeListeners=[],this._events[type]=typeListeners),context===this&&(context=void 0);for(var newListener={fn:fn,ctx:context},listeners=typeListeners,i=0,len=listeners.length;i<len;i++)if(listeners[i].fn===fn&&listeners[i].ctx===context)return;listeners.push(newListener)},_off:function(type,fn,context){var listeners,i,len;if(this._events&&(listeners=this._events[type]))if(fn){if(context===this&&(context=void 0),listeners)for(i=0,len=listeners.length;i<len;i++){var l=listeners[i];if(l.ctx===context&&l.fn===fn)return l.fn=falseFn,this._firingCount&&(this._events[type]=listeners=listeners.slice()),void listeners.splice(i,1)}}else{for(i=0,len=listeners.length;i<len;i++)listeners[i].fn=falseFn;delete this._events[type]}},fire:function(type,data,propagate){if(!this.listens(type,propagate))return this;var event=extend({},data,{type:type,target:this,sourceTarget:data&&data.sourceTarget||this});if(this._events){var listeners=this._events[type];if(listeners){this._firingCount=this._firingCount+1||1;for(var i=0,len=listeners.length;i<len;i++){var l=listeners[i];l.fn.call(l.ctx||this,event)}this._firingCount--}}return propagate&&this._propagateEvent(event),this},listens:function(type,propagate){var listeners=this._events&&this._events[type];if(listeners&&listeners.length)return!0;if(propagate)for(var id in this._eventParents)if(this._eventParents[id].listens(type,propagate))return!0;return!1},once:function(types,fn,context){if("object"==typeof types){for(var type in types)this.once(type,types[type],fn);return this}var handler=bind(function(){this.off(types,fn,context).off(types,handler,context)},this);return this.on(types,fn,context).on(types,handler,context)},addEventParent:function(obj){return this._eventParents=this._eventParents||{},this._eventParents[stamp(obj)]=obj,this},removeEventParent:function(obj){return this._eventParents&&delete this._eventParents[stamp(obj)],this},_propagateEvent:function(e){for(var id in this._eventParents)this._eventParents[id].fire(e.type,extend({layer:e.target,propagatedFrom:e.target},e),!0)}};Events.addEventListener=Events.on,Events.removeEventListener=Events.clearAllEventListeners=Events.off,Events.addOneTimeEventListener=Events.once,Events.fireEvent=Events.fire,Events.hasEventListeners=Events.listens;var Evented=Class.extend(Events);function Point(x,y,round){this.x=round?Math.round(x):x,this.y=round?Math.round(y):y}var trunc=Math.trunc||function(v){return v>0?Math.floor(v):Math.ceil(v)};function toPoint(x,y,round){return x instanceof Point?x:isArray(x)?new Point(x[0],x[1]):void 0===x||null===x?x:"object"==typeof x&&"x"in x&&"y"in x?new Point(x.x,x.y):new Point(x,y,round)}function Bounds(a,b){if(a)for(var points=b?[a,b]:a,i=0,len=points.length;i<len;i++)this.extend(points[i])}function toBounds(a,b){return!a||a instanceof Bounds?a:new Bounds(a,b)}function LatLngBounds(corner1,corner2){if(corner1)for(var latlngs=corner2?[corner1,corner2]:corner1,i=0,len=latlngs.length;i<len;i++)this.extend(latlngs[i])}function toLatLngBounds(a,b){return a instanceof LatLngBounds?a:new LatLngBounds(a,b)}function LatLng(lat,lng,alt){if(isNaN(lat)||isNaN(lng))throw new Error("Invalid LatLng object: ("+lat+", "+lng+")");this.lat=+lat,this.lng=+lng,void 0!==alt&&(this.alt=+alt)}function toLatLng(a,b,c){return a instanceof LatLng?a:isArray(a)&&"object"!=typeof a[0]?3===a.length?new LatLng(a[0],a[1],a[2]):2===a.length?new LatLng(a[0],a[1]):null:void 0===a||null===a?a:"object"==typeof a&&"lat"in a?new LatLng(a.lat,"lng"in a?a.lng:a.lon,a.alt):void 0===b?null:new LatLng(a,b,c)}Point.prototype={clone:function(){return new Point(this.x,this.y)},add:function(point){return this.clone()._add(toPoint(point))},_add:function(point){return this.x+=point.x,this.y+=point.y,this},subtract:function(point){return this.clone()._subtract(toPoint(point))},_subtract:function(point){return this.x-=point.x,this.y-=point.y,this},divideBy:function(num){return this.clone()._divideBy(num)},_divideBy:function(num){return this.x/=num,this.y/=num,this},multiplyBy:function(num){return this.clone()._multiplyBy(num)},_multiplyBy:function(num){return this.x*=num,this.y*=num,this},scaleBy:function(point){return new Point(this.x*point.x,this.y*point.y)},unscaleBy:function(point){return new Point(this.x/point.x,this.y/point.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=trunc(this.x),this.y=trunc(this.y),this},distanceTo:function(point){var x=(point=toPoint(point)).x-this.x,y=point.y-this.y;return Math.sqrt(x*x+y*y)},equals:function(point){return(point=toPoint(point)).x===this.x&&point.y===this.y},contains:function(point){return point=toPoint(point),Math.abs(point.x)<=Math.abs(this.x)&&Math.abs(point.y)<=Math.abs(this.y)},toString:function(){return"Point("+formatNum(this.x)+", "+formatNum(this.y)+")"}},Bounds.prototype={extend:function(point){return point=toPoint(point),this.min||this.max?(this.min.x=Math.min(point.x,this.min.x),this.max.x=Math.max(point.x,this.max.x),this.min.y=Math.min(point.y,this.min.y),this.max.y=Math.max(point.y,this.max.y)):(this.min=point.clone(),this.max=point.clone()),this},getCenter:function(round){return new Point((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,round)},getBottomLeft:function(){return new Point(this.min.x,this.max.y)},getTopRight:function(){return new Point(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(obj){var min,max;return(obj="number"==typeof obj[0]||obj instanceof Point?toPoint(obj):toBounds(obj))instanceof Bounds?(min=obj.min,max=obj.max):min=max=obj,min.x>=this.min.x&&max.x<=this.max.x&&min.y>=this.min.y&&max.y<=this.max.y},intersects:function(bounds){bounds=toBounds(bounds);var min=this.min,max=this.max,min2=bounds.min,max2=bounds.max,xIntersects=max2.x>=min.x&&min2.x<=max.x,yIntersects=max2.y>=min.y&&min2.y<=max.y;return xIntersects&&yIntersects},overlaps:function(bounds){bounds=toBounds(bounds);var min=this.min,max=this.max,min2=bounds.min,max2=bounds.max,xOverlaps=max2.x>min.x&&min2.x<max.x,yOverlaps=max2.y>min.y&&min2.y<max.y;return xOverlaps&&yOverlaps},isValid:function(){return!(!this.min||!this.max)}},LatLngBounds.prototype={extend:function(obj){var sw2,ne2,sw=this._southWest,ne=this._northEast;if(obj instanceof LatLng)sw2=obj,ne2=obj;else{if(!(obj instanceof LatLngBounds))return obj?this.extend(toLatLng(obj)||toLatLngBounds(obj)):this;if(sw2=obj._southWest,ne2=obj._northEast,!sw2||!ne2)return this}return sw||ne?(sw.lat=Math.min(sw2.lat,sw.lat),sw.lng=Math.min(sw2.lng,sw.lng),ne.lat=Math.max(ne2.lat,ne.lat),ne.lng=Math.max(ne2.lng,ne.lng)):(this._southWest=new LatLng(sw2.lat,sw2.lng),this._northEast=new LatLng(ne2.lat,ne2.lng)),this},pad:function(bufferRatio){var sw=this._southWest,ne=this._northEast,heightBuffer=Math.abs(sw.lat-ne.lat)*bufferRatio,widthBuffer=Math.abs(sw.lng-ne.lng)*bufferRatio;return new LatLngBounds(new LatLng(sw.lat-heightBuffer,sw.lng-widthBuffer),new LatLng(ne.lat+heightBuffer,ne.lng+widthBuffer))},getCenter:function(){return new LatLng((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new LatLng(this.getNorth(),this.getWest())},getSouthEast:function(){return new LatLng(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(obj){obj="number"==typeof obj[0]||obj instanceof LatLng||"lat"in obj?toLatLng(obj):toLatLngBounds(obj);var sw2,ne2,sw=this._southWest,ne=this._northEast;return obj instanceof LatLngBounds?(sw2=obj.getSouthWest(),ne2=obj.getNorthEast()):sw2=ne2=obj,sw2.lat>=sw.lat&&ne2.lat<=ne.lat&&sw2.lng>=sw.lng&&ne2.lng<=ne.lng},intersects:function(bounds){bounds=toLatLngBounds(bounds);var sw=this._southWest,ne=this._northEast,sw2=bounds.getSouthWest(),ne2=bounds.getNorthEast(),latIntersects=ne2.lat>=sw.lat&&sw2.lat<=ne.lat,lngIntersects=ne2.lng>=sw.lng&&sw2.lng<=ne.lng;return latIntersects&&lngIntersects},overlaps:function(bounds){bounds=toLatLngBounds(bounds);var sw=this._southWest,ne=this._northEast,sw2=bounds.getSouthWest(),ne2=bounds.getNorthEast(),latOverlaps=ne2.lat>sw.lat&&sw2.lat<ne.lat,lngOverlaps=ne2.lng>sw.lng&&sw2.lng<ne.lng;return latOverlaps&&lngOverlaps},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(bounds,maxMargin){return!!bounds&&(bounds=toLatLngBounds(bounds),this._southWest.equals(bounds.getSouthWest(),maxMargin)&&this._northEast.equals(bounds.getNorthEast(),maxMargin))},isValid:function(){return!(!this._southWest||!this._northEast)}},LatLng.prototype={equals:function(obj,maxMargin){return!!obj&&(obj=toLatLng(obj),Math.max(Math.abs(this.lat-obj.lat),Math.abs(this.lng-obj.lng))<=(void 0===maxMargin?1e-9:maxMargin))},toString:function(precision){return"LatLng("+formatNum(this.lat,precision)+", "+formatNum(this.lng,precision)+")"},distanceTo:function(other){return Earth.distance(this,toLatLng(other))},wrap:function(){return Earth.wrapLatLng(this)},toBounds:function(sizeInMeters){var latAccuracy=180*sizeInMeters/40075017,lngAccuracy=latAccuracy/Math.cos(Math.PI/180*this.lat);return toLatLngBounds([this.lat-latAccuracy,this.lng-lngAccuracy],[this.lat+latAccuracy,this.lng+lngAccuracy])},clone:function(){return new LatLng(this.lat,this.lng,this.alt)}};var d,CRS={latLngToPoint:function(latlng,zoom){var projectedPoint=this.projection.project(latlng),scale=this.scale(zoom);return this.transformation._transform(projectedPoint,scale)},pointToLatLng:function(point,zoom){var scale=this.scale(zoom),untransformedPoint=this.transformation.untransform(point,scale);return this.projection.unproject(untransformedPoint)},project:function(latlng){return this.projection.project(latlng)},unproject:function(point){return this.projection.unproject(point)},scale:function(zoom){return 256*Math.pow(2,zoom)},zoom:function(scale){return Math.log(scale/256)/Math.LN2},getProjectedBounds:function(zoom){if(this.infinite)return null;var b=this.projection.bounds,s=this.scale(zoom);return new Bounds(this.transformation.transform(b.min,s),this.transformation.transform(b.max,s))},infinite:!1,wrapLatLng:function(latlng){var lng=this.wrapLng?wrapNum(latlng.lng,this.wrapLng,!0):latlng.lng;return new LatLng(this.wrapLat?wrapNum(latlng.lat,this.wrapLat,!0):latlng.lat,lng,latlng.alt)},wrapLatLngBounds:function(bounds){var center=bounds.getCenter(),newCenter=this.wrapLatLng(center),latShift=center.lat-newCenter.lat,lngShift=center.lng-newCenter.lng;if(0===latShift&&0===lngShift)return bounds;var sw=bounds.getSouthWest(),ne=bounds.getNorthEast();return new LatLngBounds(new LatLng(sw.lat-latShift,sw.lng-lngShift),new LatLng(ne.lat-latShift,ne.lng-lngShift))}},Earth=extend({},CRS,{wrapLng:[-180,180],R:6371e3,distance:function(latlng1,latlng2){var rad=Math.PI/180,lat1=latlng1.lat*rad,lat2=latlng2.lat*rad,sinDLat=Math.sin((latlng2.lat-latlng1.lat)*rad/2),sinDLon=Math.sin((latlng2.lng-latlng1.lng)*rad/2),a=sinDLat*sinDLat+Math.cos(lat1)*Math.cos(lat2)*sinDLon*sinDLon,c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*c}}),SphericalMercator={R:6378137,MAX_LATITUDE:85.0511287798,project:function(latlng){var d=Math.PI/180,max=this.MAX_LATITUDE,lat=Math.max(Math.min(max,latlng.lat),-max),sin=Math.sin(lat*d);return new Point(this.R*latlng.lng*d,this.R*Math.log((1+sin)/(1-sin))/2)},unproject:function(point){var d=180/Math.PI;return new LatLng((2*Math.atan(Math.exp(point.y/this.R))-Math.PI/2)*d,point.x*d/this.R)},bounds:(d=6378137*Math.PI,new Bounds([-d,-d],[d,d]))};function Transformation(a,b,c,d){if(isArray(a))return this._a=a[0],this._b=a[1],this._c=a[2],void(this._d=a[3]);this._a=a,this._b=b,this._c=c,this._d=d}function toTransformation(a,b,c,d){return new Transformation(a,b,c,d)}Transformation.prototype={transform:function(point,scale){return this._transform(point.clone(),scale)},_transform:function(point,scale){return scale=scale||1,point.x=scale*(this._a*point.x+this._b),point.y=scale*(this._c*point.y+this._d),point},untransform:function(point,scale){return scale=scale||1,new Point((point.x/scale-this._b)/this._a,(point.y/scale-this._d)/this._c)}};var EPSG3857=extend({},Earth,{code:"EPSG:3857",projection:SphericalMercator,transformation:function(){var scale=.5/(Math.PI*SphericalMercator.R);return toTransformation(scale,.5,-scale,.5)}()}),EPSG900913=extend({},EPSG3857,{code:"EPSG:900913"});function svgCreate(name){return document.createElementNS("http://www.w3.org/2000/svg",name)}function pointsToPath(rings,closed){var i,j,len,len2,points,p,str="";for(i=0,len=rings.length;i<len;i++){for(j=0,len2=(points=rings[i]).length;j<len2;j++)p=points[j],str+=(j?"L":"M")+p.x+" "+p.y;str+=closed?svg?"z":"x":""}return str||"M0 0"}var style$1=document.documentElement.style,ie="ActiveXObject"in window,ielt9=ie&&!document.addEventListener,edge="msLaunchUri"in navigator&&!("documentMode"in document),webkit=userAgentContains("webkit"),android=userAgentContains("android"),android23=userAgentContains("android 2")||userAgentContains("android 3"),webkitVer=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),androidStock=android&&userAgentContains("Google")&&webkitVer<537&&!("AudioNode"in window),opera=!!window.opera,chrome=userAgentContains("chrome"),gecko=userAgentContains("gecko")&&!webkit&&!opera&&!ie,safari=!chrome&&userAgentContains("safari"),phantom=userAgentContains("phantom"),opera12="OTransition"in style$1,win=0===navigator.platform.indexOf("Win"),ie3d=ie&&"transition"in style$1,webkit3d="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!android23,gecko3d="MozPerspective"in style$1,any3d=!window.L_DISABLE_3D&&(ie3d||webkit3d||gecko3d)&&!opera12&&!phantom,mobile="undefined"!=typeof orientation||userAgentContains("mobile"),mobileWebkit=mobile&&webkit,mobileWebkit3d=mobile&&webkit3d,msPointer=!window.PointerEvent&&window.MSPointerEvent,pointer=!(!window.PointerEvent&&!msPointer),touch=!window.L_NO_TOUCH&&(pointer||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),mobileOpera=mobile&&opera,mobileGecko=mobile&&gecko,retina=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,canvas=!!document.createElement("canvas").getContext,svg=!(!document.createElementNS||!svgCreate("svg").createSVGRect),vml=!svg&&function(){try{var div=document.createElement("div");div.innerHTML='<v:shape adj="1"/>';var shape=div.firstChild;return shape.style.behavior="url(#default#VML)",shape&&"object"==typeof shape.adj}catch(e){return!1}}();function userAgentContains(str){return navigator.userAgent.toLowerCase().indexOf(str)>=0}var Browser=(Object.freeze||Object)({ie:ie,ielt9:ielt9,edge:edge,webkit:webkit,android:android,android23:android23,androidStock:androidStock,opera:opera,chrome:chrome,gecko:gecko,safari:safari,phantom:phantom,opera12:opera12,win:win,ie3d:ie3d,webkit3d:webkit3d,gecko3d:gecko3d,any3d:any3d,mobile:mobile,mobileWebkit:mobileWebkit,mobileWebkit3d:mobileWebkit3d,msPointer:msPointer,pointer:pointer,touch:touch,mobileOpera:mobileOpera,mobileGecko:mobileGecko,retina:retina,canvas:canvas,svg:svg,vml:vml}),POINTER_DOWN=msPointer?"MSPointerDown":"pointerdown",POINTER_MOVE=msPointer?"MSPointerMove":"pointermove",POINTER_UP=msPointer?"MSPointerUp":"pointerup",POINTER_CANCEL=msPointer?"MSPointerCancel":"pointercancel",TAG_WHITE_LIST=["INPUT","SELECT","OPTION"],_pointers={},_pointerDocListener=!1,_pointersCount=0;function addPointerListener(obj,type,handler,id){return"touchstart"===type?function(obj,handler,id){var onDown=bind(function(e){if("mouse"!==e.pointerType&&e.MSPOINTER_TYPE_MOUSE&&e.pointerType!==e.MSPOINTER_TYPE_MOUSE){if(!(TAG_WHITE_LIST.indexOf(e.target.tagName)<0))return;preventDefault(e)}_handlePointer(e,handler)});obj["_leaflet_touchstart"+id]=onDown,obj.addEventListener(POINTER_DOWN,onDown,!1),_pointerDocListener||(document.documentElement.addEventListener(POINTER_DOWN,_globalPointerDown,!0),document.documentElement.addEventListener(POINTER_MOVE,_globalPointerMove,!0),document.documentElement.addEventListener(POINTER_UP,_globalPointerUp,!0),document.documentElement.addEventListener(POINTER_CANCEL,_globalPointerUp,!0),_pointerDocListener=!0)}(obj,handler,id):"touchmove"===type?function(obj,handler,id){var onMove=function(e){(e.pointerType!==e.MSPOINTER_TYPE_MOUSE&&"mouse"!==e.pointerType||0!==e.buttons)&&_handlePointer(e,handler)};obj["_leaflet_touchmove"+id]=onMove,obj.addEventListener(POINTER_MOVE,onMove,!1)}(obj,handler,id):"touchend"===type&&function(obj,handler,id){var onUp=function(e){_handlePointer(e,handler)};obj["_leaflet_touchend"+id]=onUp,obj.addEventListener(POINTER_UP,onUp,!1),obj.addEventListener(POINTER_CANCEL,onUp,!1)}(obj,handler,id),this}function _globalPointerDown(e){_pointers[e.pointerId]=e,_pointersCount++}function _globalPointerMove(e){_pointers[e.pointerId]&&(_pointers[e.pointerId]=e)}function _globalPointerUp(e){delete _pointers[e.pointerId],_pointersCount--}function _handlePointer(e,handler){for(var i in e.touches=[],_pointers)e.touches.push(_pointers[i]);e.changedTouches=[e],handler(e)}var _touchstart=msPointer?"MSPointerDown":pointer?"pointerdown":"touchstart",_touchend=msPointer?"MSPointerUp":pointer?"pointerup":"touchend",_pre="_leaflet_";function addDoubleTapListener(obj,handler,id){var last,touch$$1,doubleTap=!1,delay=250;function onTouchStart(e){var count;if(pointer){if(!edge||"mouse"===e.pointerType)return;count=_pointersCount}else count=e.touches.length;if(!(count>1)){var now=Date.now(),delta=now-(last||now);touch$$1=e.touches?e.touches[0]:e,doubleTap=delta>0&&delta<=delay,last=now}}function onTouchEnd(e){if(doubleTap&&!touch$$1.cancelBubble){if(pointer){if(!edge||"mouse"===e.pointerType)return;var prop,i,newTouch={};for(i in touch$$1)prop=touch$$1[i],newTouch[i]=prop&&prop.bind?prop.bind(touch$$1):prop;touch$$1=newTouch}touch$$1.type="dblclick",handler(touch$$1),last=null}}return obj[_pre+_touchstart+id]=onTouchStart,obj[_pre+_touchend+id]=onTouchEnd,obj[_pre+"dblclick"+id]=handler,obj.addEventListener(_touchstart,onTouchStart,!1),obj.addEventListener(_touchend,onTouchEnd,!1),obj.addEventListener("dblclick",handler,!1),this}function removeDoubleTapListener(obj,id){var touchstart=obj[_pre+_touchstart+id],touchend=obj[_pre+_touchend+id],dblclick=obj[_pre+"dblclick"+id];return obj.removeEventListener(_touchstart,touchstart,!1),obj.removeEventListener(_touchend,touchend,!1),edge||obj.removeEventListener("dblclick",dblclick,!1),this}var disableTextSelection,enableTextSelection,_userSelect,_outlineElement,_outlineStyle,TRANSFORM=testProp(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),TRANSITION=testProp(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),TRANSITION_END="webkitTransition"===TRANSITION||"OTransition"===TRANSITION?TRANSITION+"End":"transitionend";function get(id){return"string"==typeof id?document.getElementById(id):id}function getStyle(el,style){var value=el.style[style]||el.currentStyle&&el.currentStyle[style];if((!value||"auto"===value)&&document.defaultView){var css=document.defaultView.getComputedStyle(el,null);value=css?css[style]:null}return"auto"===value?null:value}function create$1(tagName,className,container){var el=document.createElement(tagName);return el.className=className||"",container&&container.appendChild(el),el}function remove(el){var parent=el.parentNode;parent&&parent.removeChild(el)}function empty(el){for(;el.firstChild;)el.removeChild(el.firstChild)}function toFront(el){var parent=el.parentNode;parent&&parent.lastChild!==el&&parent.appendChild(el)}function toBack(el){var parent=el.parentNode;parent&&parent.firstChild!==el&&parent.insertBefore(el,parent.firstChild)}function hasClass(el,name){if(void 0!==el.classList)return el.classList.contains(name);var className=getClass(el);return className.length>0&&new RegExp("(^|\\s)"+name+"(\\s|$)").test(className)}function addClass(el,name){if(void 0!==el.classList)for(var classes=splitWords(name),i=0,len=classes.length;i<len;i++)el.classList.add(classes[i]);else if(!hasClass(el,name)){var className=getClass(el);setClass(el,(className?className+" ":"")+name)}}function removeClass(el,name){void 0!==el.classList?el.classList.remove(name):setClass(el,trim((" "+getClass(el)+" ").replace(" "+name+" "," ")))}function setClass(el,name){void 0===el.className.baseVal?el.className=name:el.className.baseVal=name}function getClass(el){return el.correspondingElement&&(el=el.correspondingElement),void 0===el.className.baseVal?el.className:el.className.baseVal}function setOpacity(el,value){"opacity"in el.style?el.style.opacity=value:"filter"in el.style&&function(el,value){var filter=!1,filterName="DXImageTransform.Microsoft.Alpha";try{filter=el.filters.item(filterName)}catch(e){if(1===value)return}value=Math.round(100*value),filter?(filter.Enabled=100!==value,filter.Opacity=value):el.style.filter+=" progid:"+filterName+"(opacity="+value+")"}(el,value)}function testProp(props){for(var style=document.documentElement.style,i=0;i<props.length;i++)if(props[i]in style)return props[i];return!1}function setTransform(el,offset,scale){var pos=offset||new Point(0,0);el.style[TRANSFORM]=(ie3d?"translate("+pos.x+"px,"+pos.y+"px)":"translate3d("+pos.x+"px,"+pos.y+"px,0)")+(scale?" scale("+scale+")":"")}function setPosition(el,point){el._leaflet_pos=point,any3d?setTransform(el,point):(el.style.left=point.x+"px",el.style.top=point.y+"px")}function getPosition(el){return el._leaflet_pos||new Point(0,0)}if("onselectstart"in document)disableTextSelection=function(){on(window,"selectstart",preventDefault)},enableTextSelection=function(){off(window,"selectstart",preventDefault)};else{var userSelectProperty=testProp(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);disableTextSelection=function(){if(userSelectProperty){var style=document.documentElement.style;_userSelect=style[userSelectProperty],style[userSelectProperty]="none"}},enableTextSelection=function(){userSelectProperty&&(document.documentElement.style[userSelectProperty]=_userSelect,_userSelect=void 0)}}function disableImageDrag(){on(window,"dragstart",preventDefault)}function enableImageDrag(){off(window,"dragstart",preventDefault)}function preventOutline(element){for(;-1===element.tabIndex;)element=element.parentNode;element.style&&(restoreOutline(),_outlineElement=element,_outlineStyle=element.style.outline,element.style.outline="none",on(window,"keydown",restoreOutline))}function restoreOutline(){_outlineElement&&(_outlineElement.style.outline=_outlineStyle,_outlineElement=void 0,_outlineStyle=void 0,off(window,"keydown",restoreOutline))}function getSizedParentNode(element){do{element=element.parentNode}while(!(element.offsetWidth&&element.offsetHeight||element===document.body));return element}function getScale(element){var rect=element.getBoundingClientRect();return{x:rect.width/element.offsetWidth||1,y:rect.height/element.offsetHeight||1,boundingClientRect:rect}}var DomUtil=(Object.freeze||Object)({TRANSFORM:TRANSFORM,TRANSITION:TRANSITION,TRANSITION_END:TRANSITION_END,get:get,getStyle:getStyle,create:create$1,remove:remove,empty:empty,toFront:toFront,toBack:toBack,hasClass:hasClass,addClass:addClass,removeClass:removeClass,setClass:setClass,getClass:getClass,setOpacity:setOpacity,testProp:testProp,setTransform:setTransform,setPosition:setPosition,getPosition:getPosition,disableTextSelection:disableTextSelection,enableTextSelection:enableTextSelection,disableImageDrag:disableImageDrag,enableImageDrag:enableImageDrag,preventOutline:preventOutline,restoreOutline:restoreOutline,getSizedParentNode:getSizedParentNode,getScale:getScale});function on(obj,types,fn,context){if("object"==typeof types)for(var type in types)addOne(obj,type,types[type],fn);else for(var i=0,len=(types=splitWords(types)).length;i<len;i++)addOne(obj,types[i],fn,context);return this}var eventsKey="_leaflet_events";function off(obj,types,fn,context){if("object"==typeof types)for(var type in types)removeOne(obj,type,types[type],fn);else if(types)for(var i=0,len=(types=splitWords(types)).length;i<len;i++)removeOne(obj,types[i],fn,context);else{for(var j in obj[eventsKey])removeOne(obj,j,obj[eventsKey][j]);delete obj[eventsKey]}return this}function addOne(obj,type,fn,context){var id=type+stamp(fn)+(context?"_"+stamp(context):"");if(obj[eventsKey]&&obj[eventsKey][id])return this;var handler=function(e){return fn.call(context||obj,e||window.event)},originalHandler=handler;pointer&&0===type.indexOf("touch")?addPointerListener(obj,type,handler,id):!touch||"dblclick"!==type||!addDoubleTapListener||pointer&&chrome?"addEventListener"in obj?"mousewheel"===type?obj.addEventListener("onwheel"in obj?"wheel":"mousewheel",handler,!1):"mouseenter"===type||"mouseleave"===type?(handler=function(e){e=e||window.event,isExternalTarget(obj,e)&&originalHandler(e)},obj.addEventListener("mouseenter"===type?"mouseover":"mouseout",handler,!1)):("click"===type&&android&&(handler=function(e){!function(e,handler){var timeStamp=e.timeStamp||e.originalEvent&&e.originalEvent.timeStamp,elapsed=lastClick&&timeStamp-lastClick;if(elapsed&&elapsed>100&&elapsed<500||e.target._simulatedClick&&!e._simulated)return void stop(e);lastClick=timeStamp,handler(e)}(e,originalHandler)}),obj.addEventListener(type,handler,!1)):"attachEvent"in obj&&obj.attachEvent("on"+type,handler):addDoubleTapListener(obj,handler,id),obj[eventsKey]=obj[eventsKey]||{},obj[eventsKey][id]=handler}function removeOne(obj,type,fn,context){var id=type+stamp(fn)+(context?"_"+stamp(context):""),handler=obj[eventsKey]&&obj[eventsKey][id];if(!handler)return this;pointer&&0===type.indexOf("touch")?function(obj,type,id){var handler=obj["_leaflet_"+type+id];"touchstart"===type?obj.removeEventListener(POINTER_DOWN,handler,!1):"touchmove"===type?obj.removeEventListener(POINTER_MOVE,handler,!1):"touchend"===type&&(obj.removeEventListener(POINTER_UP,handler,!1),obj.removeEventListener(POINTER_CANCEL,handler,!1))}(obj,type,id):!touch||"dblclick"!==type||!removeDoubleTapListener||pointer&&chrome?"removeEventListener"in obj?"mousewheel"===type?obj.removeEventListener("onwheel"in obj?"wheel":"mousewheel",handler,!1):obj.removeEventListener("mouseenter"===type?"mouseover":"mouseleave"===type?"mouseout":type,handler,!1):"detachEvent"in obj&&obj.detachEvent("on"+type,handler):removeDoubleTapListener(obj,id),obj[eventsKey][id]=null}function stopPropagation(e){return e.stopPropagation?e.stopPropagation():e.originalEvent?e.originalEvent._stopped=!0:e.cancelBubble=!0,skipped(e),this}function disableScrollPropagation(el){return addOne(el,"mousewheel",stopPropagation),this}function disableClickPropagation(el){return on(el,"mousedown touchstart dblclick",stopPropagation),addOne(el,"click",fakeStop),this}function preventDefault(e){return e.preventDefault?e.preventDefault():e.returnValue=!1,this}function stop(e){return preventDefault(e),stopPropagation(e),this}function getMousePosition(e,container){if(!container)return new Point(e.clientX,e.clientY);var scale=getScale(container),offset=scale.boundingClientRect;return new Point((e.clientX-offset.left)/scale.x-container.clientLeft,(e.clientY-offset.top)/scale.y-container.clientTop)}var wheelPxFactor=win&&chrome?2*window.devicePixelRatio:gecko?window.devicePixelRatio:1;function getWheelDelta(e){return edge?e.wheelDeltaY/2:e.deltaY&&0===e.deltaMode?-e.deltaY/wheelPxFactor:e.deltaY&&1===e.deltaMode?20*-e.deltaY:e.deltaY&&2===e.deltaMode?60*-e.deltaY:e.deltaX||e.deltaZ?0:e.wheelDelta?(e.wheelDeltaY||e.wheelDelta)/2:e.detail&&Math.abs(e.detail)<32765?20*-e.detail:e.detail?e.detail/-32765*60:0}var lastClick,skipEvents={};function fakeStop(e){skipEvents[e.type]=!0}function skipped(e){var events=skipEvents[e.type];return skipEvents[e.type]=!1,events}function isExternalTarget(el,e){var related=e.relatedTarget;if(!related)return!0;try{for(;related&&related!==el;)related=related.parentNode}catch(err){return!1}return related!==el}var DomEvent=(Object.freeze||Object)({on:on,off:off,stopPropagation:stopPropagation,disableScrollPropagation:disableScrollPropagation,disableClickPropagation:disableClickPropagation,preventDefault:preventDefault,stop:stop,getMousePosition:getMousePosition,getWheelDelta:getWheelDelta,fakeStop:fakeStop,skipped:skipped,isExternalTarget:isExternalTarget,addListener:on,removeListener:off}),PosAnimation=Evented.extend({run:function(el,newPos,duration,easeLinearity){this.stop(),this._el=el,this._inProgress=!0,this._duration=duration||.25,this._easeOutPower=1/Math.max(easeLinearity||.5,.2),this._startPos=getPosition(el),this._offset=newPos.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=requestAnimFrame(this._animate,this),this._step()},_step:function(round){var elapsed=+new Date-this._startTime,duration=1e3*this._duration;elapsed<duration?this._runFrame(this._easeOut(elapsed/duration),round):(this._runFrame(1),this._complete())},_runFrame:function(progress,round){var pos=this._startPos.add(this._offset.multiplyBy(progress));round&&pos._round(),setPosition(this._el,pos),this.fire("step")},_complete:function(){cancelAnimFrame(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),Map=Evented.extend({options:{crs:EPSG3857,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(id,options){options=setOptions(this,options),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this._initContainer(id),this._initLayout(),this._onResize=bind(this._onResize,this),this._initEvents(),options.maxBounds&&this.setMaxBounds(options.maxBounds),void 0!==options.zoom&&(this._zoom=this._limitZoom(options.zoom)),options.center&&void 0!==options.zoom&&this.setView(toLatLng(options.center),options.zoom,{reset:!0}),this.callInitHooks(),this._zoomAnimated=TRANSITION&&any3d&&!mobileOpera&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),on(this._proxy,TRANSITION_END,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(center,zoom,options){if((zoom=void 0===zoom?this._zoom:this._limitZoom(zoom),center=this._limitCenter(toLatLng(center),zoom,this.options.maxBounds),options=options||{},this._stop(),this._loaded&&!options.reset&&!0!==options)&&(void 0!==options.animate&&(options.zoom=extend({animate:options.animate},options.zoom),options.pan=extend({animate:options.animate,duration:options.duration},options.pan)),this._zoom!==zoom?this._tryAnimatedZoom&&this._tryAnimatedZoom(center,zoom,options.zoom):this._tryAnimatedPan(center,options.pan)))return clearTimeout(this._sizeTimer),this;return this._resetView(center,zoom),this},setZoom:function(zoom,options){return this._loaded?this.setView(this.getCenter(),zoom,{zoom:options}):(this._zoom=zoom,this)},zoomIn:function(delta,options){return delta=delta||(any3d?this.options.zoomDelta:1),this.setZoom(this._zoom+delta,options)},zoomOut:function(delta,options){return delta=delta||(any3d?this.options.zoomDelta:1),this.setZoom(this._zoom-delta,options)},setZoomAround:function(latlng,zoom,options){var scale=this.getZoomScale(zoom),viewHalf=this.getSize().divideBy(2),centerOffset=(latlng instanceof Point?latlng:this.latLngToContainerPoint(latlng)).subtract(viewHalf).multiplyBy(1-1/scale),newCenter=this.containerPointToLatLng(viewHalf.add(centerOffset));return this.setView(newCenter,zoom,{zoom:options})},_getBoundsCenterZoom:function(bounds,options){options=options||{},bounds=bounds.getBounds?bounds.getBounds():toLatLngBounds(bounds);var paddingTL=toPoint(options.paddingTopLeft||options.padding||[0,0]),paddingBR=toPoint(options.paddingBottomRight||options.padding||[0,0]),zoom=this.getBoundsZoom(bounds,!1,paddingTL.add(paddingBR));if((zoom="number"==typeof options.maxZoom?Math.min(options.maxZoom,zoom):zoom)===1/0)return{center:bounds.getCenter(),zoom:zoom};var paddingOffset=paddingBR.subtract(paddingTL).divideBy(2),swPoint=this.project(bounds.getSouthWest(),zoom),nePoint=this.project(bounds.getNorthEast(),zoom);return{center:this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset),zoom),zoom:zoom}},fitBounds:function(bounds,options){if(!(bounds=toLatLngBounds(bounds)).isValid())throw new Error("Bounds are not valid.");var target=this._getBoundsCenterZoom(bounds,options);return this.setView(target.center,target.zoom,options)},fitWorld:function(options){return this.fitBounds([[-90,-180],[90,180]],options)},panTo:function(center,options){return this.setView(center,this._zoom,{pan:options})},panBy:function(offset,options){if(offset=toPoint(offset).round(),options=options||{},!offset.x&&!offset.y)return this.fire("moveend");if(!0!==options.animate&&!this.getSize().contains(offset))return this._resetView(this.unproject(this.project(this.getCenter()).add(offset)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new PosAnimation,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),options.noMoveStart||this.fire("movestart"),!1!==options.animate){addClass(this._mapPane,"leaflet-pan-anim");var newPos=this._getMapPanePos().subtract(offset).round();this._panAnim.run(this._mapPane,newPos,options.duration||.25,options.easeLinearity)}else this._rawPanBy(offset),this.fire("move").fire("moveend");return this},flyTo:function(targetCenter,targetZoom,options){if(!1===(options=options||{}).animate||!any3d)return this.setView(targetCenter,targetZoom,options);this._stop();var from=this.project(this.getCenter()),to=this.project(targetCenter),size=this.getSize(),startZoom=this._zoom;targetCenter=toLatLng(targetCenter),targetZoom=void 0===targetZoom?startZoom:targetZoom;var w0=Math.max(size.x,size.y),w1=w0*this.getZoomScale(startZoom,targetZoom),u1=to.distanceTo(from)||1,rho=1.42,rho2=rho*rho;function r(i){var b=(w1*w1-w0*w0+(i?-1:1)*rho2*rho2*u1*u1)/(2*(i?w1:w0)*rho2*u1),sq=Math.sqrt(b*b+1)-b;return sq<1e-9?-18:Math.log(sq)}function sinh(n){return(Math.exp(n)-Math.exp(-n))/2}function cosh(n){return(Math.exp(n)+Math.exp(-n))/2}var r0=r(0);function u(s){return w0*(cosh(r0)*(sinh(n=r0+rho*s)/cosh(n))-sinh(r0))/rho2;var n}var start=Date.now(),S=(r(1)-r0)/rho,duration=options.duration?1e3*options.duration:1e3*S*.8;return this._moveStart(!0,options.noMoveStart),function frame(){var t=(Date.now()-start)/duration,s=function(t){return 1-Math.pow(1-t,1.5)}(t)*S;t<=1?(this._flyToFrame=requestAnimFrame(frame,this),this._move(this.unproject(from.add(to.subtract(from).multiplyBy(u(s)/u1)),startZoom),this.getScaleZoom(w0/function(s){return w0*(cosh(r0)/cosh(r0+rho*s))}(s),startZoom),{flyTo:!0})):this._move(targetCenter,targetZoom)._moveEnd(!0)}.call(this),this},flyToBounds:function(bounds,options){var target=this._getBoundsCenterZoom(bounds,options);return this.flyTo(target.center,target.zoom,options)},setMaxBounds:function(bounds){return(bounds=toLatLngBounds(bounds)).isValid()?(this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this.options.maxBounds=bounds,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off("moveend",this._panInsideMaxBounds))},setMinZoom:function(zoom){var oldZoom=this.options.minZoom;return this.options.minZoom=zoom,this._loaded&&oldZoom!==zoom&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(zoom):this},setMaxZoom:function(zoom){var oldZoom=this.options.maxZoom;return this.options.maxZoom=zoom,this._loaded&&oldZoom!==zoom&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(zoom):this},panInsideBounds:function(bounds,options){this._enforcingBounds=!0;var center=this.getCenter(),newCenter=this._limitCenter(center,this._zoom,toLatLngBounds(bounds));return center.equals(newCenter)||this.panTo(newCenter,options),this._enforcingBounds=!1,this},panInside:function(latlng,options){var paddingTL=toPoint((options=options||{}).paddingTopLeft||options.padding||[0,0]),paddingBR=toPoint(options.paddingBottomRight||options.padding||[0,0]),center=this.getCenter(),pixelCenter=this.project(center),pixelPoint=this.project(latlng),pixelBounds=this.getPixelBounds(),halfPixelBounds=pixelBounds.getSize().divideBy(2),paddedBounds=toBounds([pixelBounds.min.add(paddingTL),pixelBounds.max.subtract(paddingBR)]);if(!paddedBounds.contains(pixelPoint)){this._enforcingBounds=!0;var diff=pixelCenter.subtract(pixelPoint),newCenter=toPoint(pixelPoint.x+diff.x,pixelPoint.y+diff.y);(pixelPoint.x<paddedBounds.min.x||pixelPoint.x>paddedBounds.max.x)&&(newCenter.x=pixelCenter.x-diff.x,diff.x>0?newCenter.x+=halfPixelBounds.x-paddingTL.x:newCenter.x-=halfPixelBounds.x-paddingBR.x),(pixelPoint.y<paddedBounds.min.y||pixelPoint.y>paddedBounds.max.y)&&(newCenter.y=pixelCenter.y-diff.y,diff.y>0?newCenter.y+=halfPixelBounds.y-paddingTL.y:newCenter.y-=halfPixelBounds.y-paddingBR.y),this.panTo(this.unproject(newCenter),options),this._enforcingBounds=!1}return this},invalidateSize:function(options){if(!this._loaded)return this;options=extend({animate:!1,pan:!0},!0===options?{animate:!0}:options);var oldSize=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var newSize=this.getSize(),oldCenter=oldSize.divideBy(2).round(),newCenter=newSize.divideBy(2).round(),offset=oldCenter.subtract(newCenter);return offset.x||offset.y?(options.animate&&options.pan?this.panBy(offset):(options.pan&&this._rawPanBy(offset),this.fire("move"),options.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(bind(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:oldSize,newSize:newSize})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(options){if(options=this._locateOptions=extend({timeout:1e4,watch:!1},options),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var onResponse=bind(this._handleGeolocationResponse,this),onError=bind(this._handleGeolocationError,this);return options.watch?this._locationWatchId=navigator.geolocation.watchPosition(onResponse,onError,options):navigator.geolocation.getCurrentPosition(onResponse,onError,options),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(error){var c=error.code,message=error.message||(1===c?"permission denied":2===c?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:c,message:"Geolocation error: "+message+"."})},_handleGeolocationResponse:function(pos){var latlng=new LatLng(pos.coords.latitude,pos.coords.longitude),bounds=latlng.toBounds(2*pos.coords.accuracy),options=this._locateOptions;if(options.setView){var zoom=this.getBoundsZoom(bounds);this.setView(latlng,options.maxZoom?Math.min(zoom,options.maxZoom):zoom)}var data={latlng:latlng,bounds:bounds,timestamp:pos.timestamp};for(var i in pos.coords)"number"==typeof pos.coords[i]&&(data[i]=pos.coords[i]);this.fire("locationfound",data)},addHandler:function(name,HandlerClass){if(!HandlerClass)return this;var handler=this[name]=new HandlerClass(this);return this._handlers.push(handler),this.options[name]&&handler.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(e){this._container._leaflet_id=void 0,this._containerId=void 0}var i;for(i in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),remove(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(cancelAnimFrame(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[i].remove();for(i in this._panes)remove(this._panes[i]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(name,container){var pane=create$1("div","leaflet-pane"+(name?" leaflet-"+name.replace("Pane","")+"-pane":""),container||this._mapPane);return name&&(this._panes[name]=pane),pane},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var bounds=this.getPixelBounds();return new LatLngBounds(this.unproject(bounds.getBottomLeft()),this.unproject(bounds.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(bounds,inside,padding){bounds=toLatLngBounds(bounds),padding=toPoint(padding||[0,0]);var zoom=this.getZoom()||0,min=this.getMinZoom(),max=this.getMaxZoom(),nw=bounds.getNorthWest(),se=bounds.getSouthEast(),size=this.getSize().subtract(padding),boundsSize=toBounds(this.project(se,zoom),this.project(nw,zoom)).getSize(),snap=any3d?this.options.zoomSnap:1,scalex=size.x/boundsSize.x,scaley=size.y/boundsSize.y,scale=inside?Math.max(scalex,scaley):Math.min(scalex,scaley);return zoom=this.getScaleZoom(scale,zoom),snap&&(zoom=Math.round(zoom/(snap/100))*(snap/100),zoom=inside?Math.ceil(zoom/snap)*snap:Math.floor(zoom/snap)*snap),Math.max(min,Math.min(max,zoom))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new Point(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(center,zoom){var topLeftPoint=this._getTopLeftPoint(center,zoom);return new Bounds(topLeftPoint,topLeftPoint.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(zoom){return this.options.crs.getProjectedBounds(void 0===zoom?this.getZoom():zoom)},getPane:function(pane){return"string"==typeof pane?this._panes[pane]:pane},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(toZoom,fromZoom){var crs=this.options.crs;return fromZoom=void 0===fromZoom?this._zoom:fromZoom,crs.scale(toZoom)/crs.scale(fromZoom)},getScaleZoom:function(scale,fromZoom){var crs=this.options.crs;fromZoom=void 0===fromZoom?this._zoom:fromZoom;var zoom=crs.zoom(scale*crs.scale(fromZoom));return isNaN(zoom)?1/0:zoom},project:function(latlng,zoom){return zoom=void 0===zoom?this._zoom:zoom,this.options.crs.latLngToPoint(toLatLng(latlng),zoom)},unproject:function(point,zoom){return zoom=void 0===zoom?this._zoom:zoom,this.options.crs.pointToLatLng(toPoint(point),zoom)},layerPointToLatLng:function(point){var projectedPoint=toPoint(point).add(this.getPixelOrigin());return this.unproject(projectedPoint)},latLngToLayerPoint:function(latlng){return this.project(toLatLng(latlng))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(latlng){return this.options.crs.wrapLatLng(toLatLng(latlng))},wrapLatLngBounds:function(latlng){return this.options.crs.wrapLatLngBounds(toLatLngBounds(latlng))},distance:function(latlng1,latlng2){return this.options.crs.distance(toLatLng(latlng1),toLatLng(latlng2))},containerPointToLayerPoint:function(point){return toPoint(point).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(point){return toPoint(point).add(this._getMapPanePos())},containerPointToLatLng:function(point){var layerPoint=this.containerPointToLayerPoint(toPoint(point));return this.layerPointToLatLng(layerPoint)},latLngToContainerPoint:function(latlng){return this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng)))},mouseEventToContainerPoint:function(e){return getMousePosition(e,this._container)},mouseEventToLayerPoint:function(e){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e))},mouseEventToLatLng:function(e){return this.layerPointToLatLng(this.mouseEventToLayerPoint(e))},_initContainer:function(id){var container=this._container=get(id);if(!container)throw new Error("Map container not found.");if(container._leaflet_id)throw new Error("Map container is already initialized.");on(container,"scroll",this._onScroll,this),this._containerId=stamp(container)},_initLayout:function(){var container=this._container;this._fadeAnimated=this.options.fadeAnimation&&any3d,addClass(container,"leaflet-container"+(touch?" leaflet-touch":"")+(retina?" leaflet-retina":"")+(ielt9?" leaflet-oldie":"")+(safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var position=getStyle(container,"position");"absolute"!==position&&"relative"!==position&&"fixed"!==position&&(container.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var panes=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),setPosition(this._mapPane,new Point(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(addClass(panes.markerPane,"leaflet-zoom-hide"),addClass(panes.shadowPane,"leaflet-zoom-hide"))},_resetView:function(center,zoom){setPosition(this._mapPane,new Point(0,0));var loading=!this._loaded;this._loaded=!0,zoom=this._limitZoom(zoom),this.fire("viewprereset");var zoomChanged=this._zoom!==zoom;this._moveStart(zoomChanged,!1)._move(center,zoom)._moveEnd(zoomChanged),this.fire("viewreset"),loading&&this.fire("load")},_moveStart:function(zoomChanged,noMoveStart){return zoomChanged&&this.fire("zoomstart"),noMoveStart||this.fire("movestart"),this},_move:function(center,zoom,data){void 0===zoom&&(zoom=this._zoom);var zoomChanged=this._zoom!==zoom;return this._zoom=zoom,this._lastCenter=center,this._pixelOrigin=this._getNewPixelOrigin(center),(zoomChanged||data&&data.pinch)&&this.fire("zoom",data),this.fire("move",data)},_moveEnd:function(zoomChanged){return zoomChanged&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return cancelAnimFrame(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(offset){setPosition(this._mapPane,this._getMapPanePos().subtract(offset))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(remove$$1){this._targets={},this._targets[stamp(this._container)]=this;var onOff=remove$$1?off:on;onOff(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress",this._handleDOMEvent,this),this.options.trackResize&&onOff(window,"resize",this._onResize,this),any3d&&this.options.transform3DLimit&&(remove$$1?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){cancelAnimFrame(this._resizeRequest),this._resizeRequest=requestAnimFrame(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var pos=this._getMapPanePos();Math.max(Math.abs(pos.x),Math.abs(pos.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(e,type){for(var target,targets=[],isHover="mouseout"===type||"mouseover"===type,src=e.target||e.srcElement,dragging=!1;src;){if((target=this._targets[stamp(src)])&&("click"===type||"preclick"===type)&&!e._simulated&&this._draggableMoved(target)){dragging=!0;break}if(target&&target.listens(type,!0)){if(isHover&&!isExternalTarget(src,e))break;if(targets.push(target),isHover)break}if(src===this._container)break;src=src.parentNode}return targets.length||dragging||isHover||!isExternalTarget(src,e)||(targets=[this]),targets},_handleDOMEvent:function(e){if(this._loaded&&!skipped(e)){var type=e.type;"mousedown"!==type&&"keypress"!==type||preventOutline(e.target||e.srcElement),this._fireDOMEvent(e,type)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(e,type,targets){if("click"===e.type){var synth=extend({},e);synth.type="preclick",this._fireDOMEvent(synth,synth.type,targets)}if(!e._stopped&&(targets=(targets||[]).concat(this._findEventTargets(e,type))).length){var target=targets[0];"contextmenu"===type&&target.listens(type,!0)&&preventDefault(e);var data={originalEvent:e};if("keypress"!==e.type){var isMarker=target.getLatLng&&(!target._radius||target._radius<=10);data.containerPoint=isMarker?this.latLngToContainerPoint(target.getLatLng()):this.mouseEventToContainerPoint(e),data.layerPoint=this.containerPointToLayerPoint(data.containerPoint),data.latlng=isMarker?target.getLatLng():this.layerPointToLatLng(data.layerPoint)}for(var i=0;i<targets.length;i++)if(targets[i].fire(type,data,!0),data.originalEvent._stopped||!1===targets[i].options.bubblingMouseEvents&&-1!==indexOf(this._mouseEvents,type))return}},_draggableMoved:function(obj){return(obj=obj.dragging&&obj.dragging.enabled()?obj:this).dragging&&obj.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var i=0,len=this._handlers.length;i<len;i++)this._handlers[i].disable()},whenReady:function(callback,context){return this._loaded?callback.call(context||this,{target:this}):this.on("load",callback,context),this},_getMapPanePos:function(){return getPosition(this._mapPane)||new Point(0,0)},_moved:function(){var pos=this._getMapPanePos();return pos&&!pos.equals([0,0])},_getTopLeftPoint:function(center,zoom){return(center&&void 0!==zoom?this._getNewPixelOrigin(center,zoom):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(center,zoom){var viewHalf=this.getSize()._divideBy(2);return this.project(center,zoom)._subtract(viewHalf)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(latlng,zoom,center){var topLeft=this._getNewPixelOrigin(center,zoom);return this.project(latlng,zoom)._subtract(topLeft)},_latLngBoundsToNewLayerBounds:function(latLngBounds,zoom,center){var topLeft=this._getNewPixelOrigin(center,zoom);return toBounds([this.project(latLngBounds.getSouthWest(),zoom)._subtract(topLeft),this.project(latLngBounds.getNorthWest(),zoom)._subtract(topLeft),this.project(latLngBounds.getSouthEast(),zoom)._subtract(topLeft),this.project(latLngBounds.getNorthEast(),zoom)._subtract(topLeft)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(latlng){return this.latLngToLayerPoint(latlng).subtract(this._getCenterLayerPoint())},_limitCenter:function(center,zoom,bounds){if(!bounds)return center;var centerPoint=this.project(center,zoom),viewHalf=this.getSize().divideBy(2),viewBounds=new Bounds(centerPoint.subtract(viewHalf),centerPoint.add(viewHalf)),offset=this._getBoundsOffset(viewBounds,bounds,zoom);return offset.round().equals([0,0])?center:this.unproject(centerPoint.add(offset),zoom)},_limitOffset:function(offset,bounds){if(!bounds)return offset;var viewBounds=this.getPixelBounds(),newBounds=new Bounds(viewBounds.min.add(offset),viewBounds.max.add(offset));return offset.add(this._getBoundsOffset(newBounds,bounds))},_getBoundsOffset:function(pxBounds,maxBounds,zoom){var projectedMaxBounds=toBounds(this.project(maxBounds.getNorthEast(),zoom),this.project(maxBounds.getSouthWest(),zoom)),minOffset=projectedMaxBounds.min.subtract(pxBounds.min),maxOffset=projectedMaxBounds.max.subtract(pxBounds.max);return new Point(this._rebound(minOffset.x,-maxOffset.x),this._rebound(minOffset.y,-maxOffset.y))},_rebound:function(left,right){return left+right>0?Math.round(left-right)/2:Math.max(0,Math.ceil(left))-Math.max(0,Math.floor(right))},_limitZoom:function(zoom){var min=this.getMinZoom(),max=this.getMaxZoom(),snap=any3d?this.options.zoomSnap:1;return snap&&(zoom=Math.round(zoom/snap)*snap),Math.max(min,Math.min(max,zoom))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){removeClass(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(center,options){var offset=this._getCenterOffset(center)._trunc();return!(!0!==(options&&options.animate)&&!this.getSize().contains(offset))&&(this.panBy(offset,options),!0)},_createAnimProxy:function(){var proxy=this._proxy=create$1("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(proxy),this.on("zoomanim",function(e){var prop=TRANSFORM,transform=this._proxy.style[prop];setTransform(this._proxy,this.project(e.center,e.zoom),this.getZoomScale(e.zoom,1)),transform===this._proxy.style[prop]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",function(){var c=this.getCenter(),z=this.getZoom();setTransform(this._proxy,this.project(c,z),this.getZoomScale(z,1))},this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){remove(this._proxy),delete this._proxy},_catchTransitionEnd:function(e){this._animatingZoom&&e.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(center,zoom,options){if(this._animatingZoom)return!0;if(options=options||{},!this._zoomAnimated||!1===options.animate||this._nothingToAnimate()||Math.abs(zoom-this._zoom)>this.options.zoomAnimationThreshold)return!1;var scale=this.getZoomScale(zoom),offset=this._getCenterOffset(center)._divideBy(1-1/scale);return!(!0!==options.animate&&!this.getSize().contains(offset))&&(requestAnimFrame(function(){this._moveStart(!0,!1)._animateZoom(center,zoom,!0)},this),!0)},_animateZoom:function(center,zoom,startAnim,noUpdate){this._mapPane&&(startAnim&&(this._animatingZoom=!0,this._animateToCenter=center,this._animateToZoom=zoom,addClass(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:center,zoom:zoom,noUpdate:noUpdate}),setTimeout(bind(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&removeClass(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),requestAnimFrame(function(){this._moveEnd(!0)},this))}});var Control=Class.extend({options:{position:"topright"},initialize:function(options){setOptions(this,options)},getPosition:function(){return this.options.position},setPosition:function(position){var map=this._map;return map&&map.removeControl(this),this.options.position=position,map&&map.addControl(this),this},getContainer:function(){return this._container},addTo:function(map){this.remove(),this._map=map;var container=this._container=this.onAdd(map),pos=this.getPosition(),corner=map._controlCorners[pos];return addClass(container,"leaflet-control"),-1!==pos.indexOf("bottom")?corner.insertBefore(container,corner.firstChild):corner.appendChild(container),this},remove:function(){return this._map?(remove(this._container),this.onRemove&&this.onRemove(this._map),this._map=null,this):this},_refocusOnMap:function(e){this._map&&e&&e.screenX>0&&e.screenY>0&&this._map.getContainer().focus()}}),control=function(options){return new Control(options)};Map.include({addControl:function(control){return control.addTo(this),this},removeControl:function(control){return control.remove(),this},_initControlPos:function(){var corners=this._controlCorners={},l="leaflet-",container=this._controlContainer=create$1("div",l+"control-container",this._container);function createCorner(vSide,hSide){var className=l+vSide+" "+l+hSide;corners[vSide+hSide]=create$1("div",className,container)}createCorner("top","left"),createCorner("top","right"),createCorner("bottom","left"),createCorner("bottom","right")},_clearControlPos:function(){for(var i in this._controlCorners)remove(this._controlCorners[i]);remove(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Layers=Control.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(layerA,layerB,nameA,nameB){return nameA<nameB?-1:nameB<nameA?1:0}},initialize:function(baseLayers,overlays,options){for(var i in setOptions(this,options),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1,baseLayers)this._addLayer(baseLayers[i],i);for(i in overlays)this._addLayer(overlays[i],i,!0)},onAdd:function(map){this._initLayout(),this._update(),this._map=map,map.on("zoomend",this._checkDisabledLayers,this);for(var i=0;i<this._layers.length;i++)this._layers[i].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(map){return Control.prototype.addTo.call(this,map),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var i=0;i<this._layers.length;i++)this._layers[i].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(layer,name){return this._addLayer(layer,name),this._map?this._update():this},addOverlay:function(layer,name){return this._addLayer(layer,name,!0),this._map?this._update():this},removeLayer:function(layer){layer.off("add remove",this._onLayerChange,this);var obj=this._getLayer(stamp(layer));return obj&&this._layers.splice(this._layers.indexOf(obj),1),this._map?this._update():this},expand:function(){addClass(this._container,"leaflet-control-layers-expanded"),this._section.style.height=null;var acceptableHeight=this._map.getSize().y-(this._container.offsetTop+50);return acceptableHeight<this._section.clientHeight?(addClass(this._section,"leaflet-control-layers-scrollbar"),this._section.style.height=acceptableHeight+"px"):removeClass(this._section,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return removeClass(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var className="leaflet-control-layers",container=this._container=create$1("div",className),collapsed=this.options.collapsed;container.setAttribute("aria-haspopup",!0),disableClickPropagation(container),disableScrollPropagation(container);var section=this._section=create$1("section",className+"-list");collapsed&&(this._map.on("click",this.collapse,this),android||on(container,{mouseenter:this.expand,mouseleave:this.collapse},this));var link=this._layersLink=create$1("a",className+"-toggle",container);link.href="#",link.title="Layers",touch?(on(link,"click",stop),on(link,"click",this.expand,this)):on(link,"focus",this.expand,this),collapsed||this.expand(),this._baseLayersList=create$1("div",className+"-base",section),this._separator=create$1("div",className+"-separator",section),this._overlaysList=create$1("div",className+"-overlays",section),container.appendChild(section)},_getLayer:function(id){for(var i=0;i<this._layers.length;i++)if(this._layers[i]&&stamp(this._layers[i].layer)===id)return this._layers[i]},_addLayer:function(layer,name,overlay){this._map&&layer.on("add remove",this._onLayerChange,this),this._layers.push({layer:layer,name:name,overlay:overlay}),this.options.sortLayers&&this._layers.sort(bind(function(a,b){return this.options.sortFunction(a.layer,b.layer,a.name,b.name)},this)),this.options.autoZIndex&&layer.setZIndex&&(this._lastZIndex++,layer.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;empty(this._baseLayersList),empty(this._overlaysList),this._layerControlInputs=[];var baseLayersPresent,overlaysPresent,i,obj,baseLayersCount=0;for(i=0;i<this._layers.length;i++)obj=this._layers[i],this._addItem(obj),overlaysPresent=overlaysPresent||obj.overlay,baseLayersPresent=baseLayersPresent||!obj.overlay,baseLayersCount+=obj.overlay?0:1;return this.options.hideSingleBase&&(baseLayersPresent=baseLayersPresent&&baseLayersCount>1,this._baseLayersList.style.display=baseLayersPresent?"":"none"),this._separator.style.display=overlaysPresent&&baseLayersPresent?"":"none",this},_onLayerChange:function(e){this._handlingClick||this._update();var obj=this._getLayer(stamp(e.target)),type=obj.overlay?"add"===e.type?"overlayadd":"overlayremove":"add"===e.type?"baselayerchange":null;type&&this._map.fire(type,obj)},_createRadioElement:function(name,checked){var radioHtml='<input type="radio" class="leaflet-control-layers-selector" name="'+name+'"'+(checked?' checked="checked"':"")+"/>",radioFragment=document.createElement("div");return radioFragment.innerHTML=radioHtml,radioFragment.firstChild},_addItem:function(obj){var input,label=document.createElement("label"),checked=this._map.hasLayer(obj.layer);obj.overlay?((input=document.createElement("input")).type="checkbox",input.className="leaflet-control-layers-selector",input.defaultChecked=checked):input=this._createRadioElement("leaflet-base-layers",checked),this._layerControlInputs.push(input),input.layerId=stamp(obj.layer),on(input,"click",this._onInputClick,this);var name=document.createElement("span");name.innerHTML=" "+obj.name;var holder=document.createElement("div");return label.appendChild(holder),holder.appendChild(input),holder.appendChild(name),(obj.overlay?this._overlaysList:this._baseLayersList).appendChild(label),this._checkDisabledLayers(),label},_onInputClick:function(){var input,layer,inputs=this._layerControlInputs,addedLayers=[],removedLayers=[];this._handlingClick=!0;for(var i=inputs.length-1;i>=0;i--)input=inputs[i],layer=this._getLayer(input.layerId).layer,input.checked?addedLayers.push(layer):input.checked||removedLayers.push(layer);for(i=0;i<removedLayers.length;i++)this._map.hasLayer(removedLayers[i])&&this._map.removeLayer(removedLayers[i]);for(i=0;i<addedLayers.length;i++)this._map.hasLayer(addedLayers[i])||this._map.addLayer(addedLayers[i]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var input,layer,inputs=this._layerControlInputs,zoom=this._map.getZoom(),i=inputs.length-1;i>=0;i--)input=inputs[i],layer=this._getLayer(input.layerId).layer,input.disabled=void 0!==layer.options.minZoom&&zoom<layer.options.minZoom||void 0!==layer.options.maxZoom&&zoom>layer.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),Zoom=Control.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"&#x2212;",zoomOutTitle:"Zoom out"},onAdd:function(map){var zoomName="leaflet-control-zoom",container=create$1("div",zoomName+" leaflet-bar"),options=this.options;return this._zoomInButton=this._createButton(options.zoomInText,options.zoomInTitle,zoomName+"-in",container,this._zoomIn),this._zoomOutButton=this._createButton(options.zoomOutText,options.zoomOutTitle,zoomName+"-out",container,this._zoomOut),this._updateDisabled(),map.on("zoomend zoomlevelschange",this._updateDisabled,this),container},onRemove:function(map){map.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(e){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(e.shiftKey?3:1))},_zoomOut:function(e){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(e.shiftKey?3:1))},_createButton:function(html,title,className,container,fn){var link=create$1("a",className,container);return link.innerHTML=html,link.href="#",link.title=title,link.setAttribute("role","button"),link.setAttribute("aria-label",title),disableClickPropagation(link),on(link,"click",stop),on(link,"click",fn,this),on(link,"click",this._refocusOnMap,this),link},_updateDisabled:function(){var map=this._map,className="leaflet-disabled";removeClass(this._zoomInButton,className),removeClass(this._zoomOutButton,className),(this._disabled||map._zoom===map.getMinZoom())&&addClass(this._zoomOutButton,className),(this._disabled||map._zoom===map.getMaxZoom())&&addClass(this._zoomInButton,className)}});Map.mergeOptions({zoomControl:!0}),Map.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Zoom,this.addControl(this.zoomControl))});var Scale=Control.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(map){var container=create$1("div","leaflet-control-scale"),options=this.options;return this._addScales(options,"leaflet-control-scale-line",container),map.on(options.updateWhenIdle?"moveend":"move",this._update,this),map.whenReady(this._update,this),container},onRemove:function(map){map.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(options,className,container){options.metric&&(this._mScale=create$1("div",className,container)),options.imperial&&(this._iScale=create$1("div",className,container))},_update:function(){var map=this._map,y=map.getSize().y/2,maxMeters=map.distance(map.containerPointToLatLng([0,y]),map.containerPointToLatLng([this.options.maxWidth,y]));this._updateScales(maxMeters)},_updateScales:function(maxMeters){this.options.metric&&maxMeters&&this._updateMetric(maxMeters),this.options.imperial&&maxMeters&&this._updateImperial(maxMeters)},_updateMetric:function(maxMeters){var meters=this._getRoundNum(maxMeters),label=meters<1e3?meters+" m":meters/1e3+" km";this._updateScale(this._mScale,label,meters/maxMeters)},_updateImperial:function(maxMeters){var maxMiles,miles,feet,maxFeet=3.2808399*maxMeters;maxFeet>5280?(maxMiles=maxFeet/5280,miles=this._getRoundNum(maxMiles),this._updateScale(this._iScale,miles+" mi",miles/maxMiles)):(feet=this._getRoundNum(maxFeet),this._updateScale(this._iScale,feet+" ft",feet/maxFeet))},_updateScale:function(scale,text,ratio){scale.style.width=Math.round(this.options.maxWidth*ratio)+"px",scale.innerHTML=text},_getRoundNum:function(num){var pow10=Math.pow(10,(Math.floor(num)+"").length-1),d=num/pow10;return pow10*(d=d>=10?10:d>=5?5:d>=3?3:d>=2?2:1)}}),Attribution=Control.extend({options:{position:"bottomright",prefix:'<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(options){setOptions(this,options),this._attributions={}},onAdd:function(map){for(var i in map.attributionControl=this,this._container=create$1("div","leaflet-control-attribution"),disableClickPropagation(this._container),map._layers)map._layers[i].getAttribution&&this.addAttribution(map._layers[i].getAttribution());return this._update(),this._container},setPrefix:function(prefix){return this.options.prefix=prefix,this._update(),this},addAttribution:function(text){return text?(this._attributions[text]||(this._attributions[text]=0),this._attributions[text]++,this._update(),this):this},removeAttribution:function(text){return text?(this._attributions[text]&&(this._attributions[text]--,this._update()),this):this},_update:function(){if(this._map){var attribs=[];for(var i in this._attributions)this._attributions[i]&&attribs.push(i);var prefixAndAttribs=[];this.options.prefix&&prefixAndAttribs.push(this.options.prefix),attribs.length&&prefixAndAttribs.push(attribs.join(", ")),this._container.innerHTML=prefixAndAttribs.join(" | ")}}});Map.mergeOptions({attributionControl:!0}),Map.addInitHook(function(){this.options.attributionControl&&(new Attribution).addTo(this)});Control.Layers=Layers,Control.Zoom=Zoom,Control.Scale=Scale,Control.Attribution=Attribution,control.layers=function(baseLayers,overlays,options){return new Layers(baseLayers,overlays,options)},control.zoom=function(options){return new Zoom(options)},control.scale=function(options){return new Scale(options)},control.attribution=function(options){return new Attribution(options)};var Handler=Class.extend({initialize:function(map){this._map=map},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Handler.addTo=function(map,name){return map.addHandler(name,this),this};var _lastCode,Mixin={Events:Events},START=touch?"touchstart mousedown":"mousedown",END={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},MOVE={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},Draggable=Evented.extend({options:{clickTolerance:3},initialize:function(element,dragStartTarget,preventOutline$$1,options){setOptions(this,options),this._element=element,this._dragStartTarget=dragStartTarget||element,this._preventOutline=preventOutline$$1},enable:function(){this._enabled||(on(this._dragStartTarget,START,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Draggable._dragging===this&&this.finishDrag(),off(this._dragStartTarget,START,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(e){if(!e._simulated&&this._enabled&&(this._moved=!1,!hasClass(this._element,"leaflet-zoom-anim")&&!(Draggable._dragging||e.shiftKey||1!==e.which&&1!==e.button&&!e.touches||(Draggable._dragging=this,this._preventOutline&&preventOutline(this._element),disableImageDrag(),disableTextSelection(),this._moving)))){this.fire("down");var first=e.touches?e.touches[0]:e,sizedParent=getSizedParentNode(this._element);this._startPoint=new Point(first.clientX,first.clientY),this._parentScale=getScale(sizedParent),on(document,MOVE[e.type],this._onMove,this),on(document,END[e.type],this._onUp,this)}},_onMove:function(e){if(!e._simulated&&this._enabled)if(e.touches&&e.touches.length>1)this._moved=!0;else{var first=e.touches&&1===e.touches.length?e.touches[0]:e,offset=new Point(first.clientX,first.clientY)._subtract(this._startPoint);(offset.x||offset.y)&&(Math.abs(offset.x)+Math.abs(offset.y)<this.options.clickTolerance||(offset.x/=this._parentScale.x,offset.y/=this._parentScale.y,preventDefault(e),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=getPosition(this._element).subtract(offset),addClass(document.body,"leaflet-dragging"),this._lastTarget=e.target||e.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),addClass(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(offset),this._moving=!0,cancelAnimFrame(this._animRequest),this._lastEvent=e,this._animRequest=requestAnimFrame(this._updatePosition,this,!0)))}},_updatePosition:function(){var e={originalEvent:this._lastEvent};this.fire("predrag",e),setPosition(this._element,this._newPos),this.fire("drag",e)},_onUp:function(e){!e._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){for(var i in removeClass(document.body,"leaflet-dragging"),this._lastTarget&&(removeClass(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null),MOVE)off(document,MOVE[i],this._onMove,this),off(document,END[i],this._onUp,this);enableImageDrag(),enableTextSelection(),this._moved&&this._moving&&(cancelAnimFrame(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,Draggable._dragging=!1}});function simplify(points,tolerance){if(!tolerance||!points.length)return points.slice();var sqTolerance=tolerance*tolerance;return points=function(points,sqTolerance){var len=points.length,markers=new(typeof Uint8Array!=void 0+""?Uint8Array:Array)(len);markers[0]=markers[len-1]=1,function _simplifyDPStep(points,markers,sqTolerance,first,last){var index,i,sqDist,maxSqDist=0;for(i=first+1;i<=last-1;i++)(sqDist=_sqClosestPointOnSegment(points[i],points[first],points[last],!0))>maxSqDist&&(index=i,maxSqDist=sqDist);maxSqDist>sqTolerance&&(markers[index]=1,_simplifyDPStep(points,markers,sqTolerance,first,index),_simplifyDPStep(points,markers,sqTolerance,index,last))}(points,markers,sqTolerance,0,len-1);var i,newPoints=[];for(i=0;i<len;i++)markers[i]&&newPoints.push(points[i]);return newPoints}(points=function(points,sqTolerance){for(var reducedPoints=[points[0]],i=1,prev=0,len=points.length;i<len;i++)p1=points[i],p2=points[prev],void 0,void 0,dx=p2.x-p1.x,dy=p2.y-p1.y,dx*dx+dy*dy>sqTolerance&&(reducedPoints.push(points[i]),prev=i);var p1,p2,dx,dy;prev<len-1&&reducedPoints.push(points[len-1]);return reducedPoints}(points,sqTolerance),sqTolerance)}function pointToSegmentDistance(p,p1,p2){return Math.sqrt(_sqClosestPointOnSegment(p,p1,p2,!0))}function clipSegment(a,b,bounds,useLastCode,round){var codeOut,p,newCode,codeA=useLastCode?_lastCode:_getBitCode(a,bounds),codeB=_getBitCode(b,bounds);for(_lastCode=codeB;;){if(!(codeA|codeB))return[a,b];if(codeA&codeB)return!1;newCode=_getBitCode(p=_getEdgeIntersection(a,b,codeOut=codeA||codeB,bounds,round),bounds),codeOut===codeA?(a=p,codeA=newCode):(b=p,codeB=newCode)}}function _getEdgeIntersection(a,b,code,bounds,round){var x,y,dx=b.x-a.x,dy=b.y-a.y,min=bounds.min,max=bounds.max;return 8&code?(x=a.x+dx*(max.y-a.y)/dy,y=max.y):4&code?(x=a.x+dx*(min.y-a.y)/dy,y=min.y):2&code?(x=max.x,y=a.y+dy*(max.x-a.x)/dx):1&code&&(x=min.x,y=a.y+dy*(min.x-a.x)/dx),new Point(x,y,round)}function _getBitCode(p,bounds){var code=0;return p.x<bounds.min.x?code|=1:p.x>bounds.max.x&&(code|=2),p.y<bounds.min.y?code|=4:p.y>bounds.max.y&&(code|=8),code}function _sqClosestPointOnSegment(p,p1,p2,sqDist){var t,x=p1.x,y=p1.y,dx=p2.x-x,dy=p2.y-y,dot=dx*dx+dy*dy;return dot>0&&((t=((p.x-x)*dx+(p.y-y)*dy)/dot)>1?(x=p2.x,y=p2.y):t>0&&(x+=dx*t,y+=dy*t)),dx=p.x-x,dy=p.y-y,sqDist?dx*dx+dy*dy:new Point(x,y)}function isFlat(latlngs){return!isArray(latlngs[0])||"object"!=typeof latlngs[0][0]&&void 0!==latlngs[0][0]}function _flat(latlngs){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),isFlat(latlngs)}var LineUtil=(Object.freeze||Object)({simplify:simplify,pointToSegmentDistance:pointToSegmentDistance,closestPointOnSegment:function(p,p1,p2){return _sqClosestPointOnSegment(p,p1,p2)},clipSegment:clipSegment,_getEdgeIntersection:_getEdgeIntersection,_getBitCode:_getBitCode,_sqClosestPointOnSegment:_sqClosestPointOnSegment,isFlat:isFlat,_flat:_flat});function clipPolygon(points,bounds,round){var clippedPoints,i,j,k,a,b,len,edge,p,edges=[1,4,2,8];for(i=0,len=points.length;i<len;i++)points[i]._code=_getBitCode(points[i],bounds);for(k=0;k<4;k++){for(edge=edges[k],clippedPoints=[],i=0,j=(len=points.length)-1;i<len;j=i++)a=points[i],b=points[j],a._code&edge?b._code&edge||((p=_getEdgeIntersection(b,a,edge,bounds,round))._code=_getBitCode(p,bounds),clippedPoints.push(p)):(b._code&edge&&((p=_getEdgeIntersection(b,a,edge,bounds,round))._code=_getBitCode(p,bounds),clippedPoints.push(p)),clippedPoints.push(a));points=clippedPoints}return points}var PolyUtil=(Object.freeze||Object)({clipPolygon:clipPolygon}),LonLat={project:function(latlng){return new Point(latlng.lng,latlng.lat)},unproject:function(point){return new LatLng(point.y,point.x)},bounds:new Bounds([-180,-90],[180,90])},Mercator={R:6378137,R_MINOR:6356752.314245179,bounds:new Bounds([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(latlng){var d=Math.PI/180,r=this.R,y=latlng.lat*d,tmp=this.R_MINOR/r,e=Math.sqrt(1-tmp*tmp),con=e*Math.sin(y),ts=Math.tan(Math.PI/4-y/2)/Math.pow((1-con)/(1+con),e/2);return y=-r*Math.log(Math.max(ts,1e-10)),new Point(latlng.lng*d*r,y)},unproject:function(point){for(var con,d=180/Math.PI,r=this.R,tmp=this.R_MINOR/r,e=Math.sqrt(1-tmp*tmp),ts=Math.exp(-point.y/r),phi=Math.PI/2-2*Math.atan(ts),i=0,dphi=.1;i<15&&Math.abs(dphi)>1e-7;i++)con=e*Math.sin(phi),con=Math.pow((1-con)/(1+con),e/2),phi+=dphi=Math.PI/2-2*Math.atan(ts*con)-phi;return new LatLng(phi*d,point.x*d/r)}},index=(Object.freeze||Object)({LonLat:LonLat,Mercator:Mercator,SphericalMercator:SphericalMercator}),EPSG3395=extend({},Earth,{code:"EPSG:3395",projection:Mercator,transformation:function(){var scale=.5/(Math.PI*Mercator.R);return toTransformation(scale,.5,-scale,.5)}()}),EPSG4326=extend({},Earth,{code:"EPSG:4326",projection:LonLat,transformation:toTransformation(1/180,1,-1/180,.5)}),Simple=extend({},CRS,{projection:LonLat,transformation:toTransformation(1,0,-1,0),scale:function(zoom){return Math.pow(2,zoom)},zoom:function(scale){return Math.log(scale)/Math.LN2},distance:function(latlng1,latlng2){var dx=latlng2.lng-latlng1.lng,dy=latlng2.lat-latlng1.lat;return Math.sqrt(dx*dx+dy*dy)},infinite:!0});CRS.Earth=Earth,CRS.EPSG3395=EPSG3395,CRS.EPSG3857=EPSG3857,CRS.EPSG900913=EPSG900913,CRS.EPSG4326=EPSG4326,CRS.Simple=Simple;var Layer=Evented.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(map){return map.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(obj){return obj&&obj.removeLayer(this),this},getPane:function(name){return this._map.getPane(name?this.options[name]||name:this.options.pane)},addInteractiveTarget:function(targetEl){return this._map._targets[stamp(targetEl)]=this,this},removeInteractiveTarget:function(targetEl){return delete this._map._targets[stamp(targetEl)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(e){var map=e.target;if(map.hasLayer(this)){if(this._map=map,this._zoomAnimated=map._zoomAnimated,this.getEvents){var events=this.getEvents();map.on(events,this),this.once("remove",function(){map.off(events,this)},this)}this.onAdd(map),this.getAttribution&&map.attributionControl&&map.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),map.fire("layeradd",{layer:this})}}});Map.include({addLayer:function(layer){if(!layer._layerAdd)throw new Error("The provided object is not a Layer.");var id=stamp(layer);return this._layers[id]?this:(this._layers[id]=layer,layer._mapToAdd=this,layer.beforeAdd&&layer.beforeAdd(this),this.whenReady(layer._layerAdd,layer),this)},removeLayer:function(layer){var id=stamp(layer);return this._layers[id]?(this._loaded&&layer.onRemove(this),layer.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(layer.getAttribution()),delete this._layers[id],this._loaded&&(this.fire("layerremove",{layer:layer}),layer.fire("remove")),layer._map=layer._mapToAdd=null,this):this},hasLayer:function(layer){return!!layer&&stamp(layer)in this._layers},eachLayer:function(method,context){for(var i in this._layers)method.call(context,this._layers[i]);return this},_addLayers:function(layers){for(var i=0,len=(layers=layers?isArray(layers)?layers:[layers]:[]).length;i<len;i++)this.addLayer(layers[i])},_addZoomLimit:function(layer){!isNaN(layer.options.maxZoom)&&isNaN(layer.options.minZoom)||(this._zoomBoundLayers[stamp(layer)]=layer,this._updateZoomLevels())},_removeZoomLimit:function(layer){var id=stamp(layer);this._zoomBoundLayers[id]&&(delete this._zoomBoundLayers[id],this._updateZoomLevels())},_updateZoomLevels:function(){var minZoom=1/0,maxZoom=-1/0,oldZoomSpan=this._getZoomSpan();for(var i in this._zoomBoundLayers){var options=this._zoomBoundLayers[i].options;minZoom=void 0===options.minZoom?minZoom:Math.min(minZoom,options.minZoom),maxZoom=void 0===options.maxZoom?maxZoom:Math.max(maxZoom,options.maxZoom)}this._layersMaxZoom=maxZoom===-1/0?void 0:maxZoom,this._layersMinZoom=minZoom===1/0?void 0:minZoom,oldZoomSpan!==this._getZoomSpan()&&this.fire("zoomlevelschange"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var LayerGroup=Layer.extend({initialize:function(layers,options){var i,len;if(setOptions(this,options),this._layers={},layers)for(i=0,len=layers.length;i<len;i++)this.addLayer(layers[i])},addLayer:function(layer){var id=this.getLayerId(layer);return this._layers[id]=layer,this._map&&this._map.addLayer(layer),this},removeLayer:function(layer){var id=layer in this._layers?layer:this.getLayerId(layer);return this._map&&this._layers[id]&&this._map.removeLayer(this._layers[id]),delete this._layers[id],this},hasLayer:function(layer){return!!layer&&(layer in this._layers||this.getLayerId(layer)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(methodName){var i,layer,args=Array.prototype.slice.call(arguments,1);for(i in this._layers)(layer=this._layers[i])[methodName]&&layer[methodName].apply(layer,args);return this},onAdd:function(map){this.eachLayer(map.addLayer,map)},onRemove:function(map){this.eachLayer(map.removeLayer,map)},eachLayer:function(method,context){for(var i in this._layers)method.call(context,this._layers[i]);return this},getLayer:function(id){return this._layers[id]},getLayers:function(){var layers=[];return this.eachLayer(layers.push,layers),layers},setZIndex:function(zIndex){return this.invoke("setZIndex",zIndex)},getLayerId:function(layer){return stamp(layer)}}),FeatureGroup=LayerGroup.extend({addLayer:function(layer){return this.hasLayer(layer)?this:(layer.addEventParent(this),LayerGroup.prototype.addLayer.call(this,layer),this.fire("layeradd",{layer:layer}))},removeLayer:function(layer){return this.hasLayer(layer)?(layer in this._layers&&(layer=this._layers[layer]),layer.removeEventParent(this),LayerGroup.prototype.removeLayer.call(this,layer),this.fire("layerremove",{layer:layer})):this},setStyle:function(style){return this.invoke("setStyle",style)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var bounds=new LatLngBounds;for(var id in this._layers){var layer=this._layers[id];bounds.extend(layer.getBounds?layer.getBounds():layer.getLatLng())}return bounds}}),Icon=Class.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(options){setOptions(this,options)},createIcon:function(oldIcon){return this._createIcon("icon",oldIcon)},createShadow:function(oldIcon){return this._createIcon("shadow",oldIcon)},_createIcon:function(name,oldIcon){var src=this._getIconUrl(name);if(!src){if("icon"===name)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var img=this._createImg(src,oldIcon&&"IMG"===oldIcon.tagName?oldIcon:null);return this._setIconStyles(img,name),img},_setIconStyles:function(img,name){var options=this.options,sizeOption=options[name+"Size"];"number"==typeof sizeOption&&(sizeOption=[sizeOption,sizeOption]);var size=toPoint(sizeOption),anchor=toPoint("shadow"===name&&options.shadowAnchor||options.iconAnchor||size&&size.divideBy(2,!0));img.className="leaflet-marker-"+name+" "+(options.className||""),anchor&&(img.style.marginLeft=-anchor.x+"px",img.style.marginTop=-anchor.y+"px"),size&&(img.style.width=size.x+"px",img.style.height=size.y+"px")},_createImg:function(src,el){return(el=el||document.createElement("img")).src=src,el},_getIconUrl:function(name){return retina&&this.options[name+"RetinaUrl"]||this.options[name+"Url"]}});var IconDefault=Icon.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(name){return IconDefault.imagePath||(IconDefault.imagePath=this._detectIconPath()),(this.options.imagePath||IconDefault.imagePath)+Icon.prototype._getIconUrl.call(this,name)},_detectIconPath:function(){var el=create$1("div","leaflet-default-icon-path",document.body),path=getStyle(el,"background-image")||getStyle(el,"backgroundImage");return document.body.removeChild(el),path=null===path||0!==path.indexOf("url")?"":path.replace(/^url\(["']?/,"").replace(/marker-icon\.png["']?\)$/,"")}}),MarkerDrag=Handler.extend({initialize:function(marker){this._marker=marker},addHooks:function(){var icon=this._marker._icon;this._draggable||(this._draggable=new Draggable(icon,icon,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),addClass(icon,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&removeClass(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(e){var marker=this._marker,map=marker._map,speed=this._marker.options.autoPanSpeed,padding=this._marker.options.autoPanPadding,iconPos=getPosition(marker._icon),bounds=map.getPixelBounds(),origin=map.getPixelOrigin(),panBounds=toBounds(bounds.min._subtract(origin).add(padding),bounds.max._subtract(origin).subtract(padding));if(!panBounds.contains(iconPos)){var movement=toPoint((Math.max(panBounds.max.x,iconPos.x)-panBounds.max.x)/(bounds.max.x-panBounds.max.x)-(Math.min(panBounds.min.x,iconPos.x)-panBounds.min.x)/(bounds.min.x-panBounds.min.x),(Math.max(panBounds.max.y,iconPos.y)-panBounds.max.y)/(bounds.max.y-panBounds.max.y)-(Math.min(panBounds.min.y,iconPos.y)-panBounds.min.y)/(bounds.min.y-panBounds.min.y)).multiplyBy(speed);map.panBy(movement,{animate:!1}),this._draggable._newPos._add(movement),this._draggable._startPos._add(movement),setPosition(marker._icon,this._draggable._newPos),this._onDrag(e),this._panRequest=requestAnimFrame(this._adjustPan.bind(this,e))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire("movestart").fire("dragstart")},_onPreDrag:function(e){this._marker.options.autoPan&&(cancelAnimFrame(this._panRequest),this._panRequest=requestAnimFrame(this._adjustPan.bind(this,e)))},_onDrag:function(e){var marker=this._marker,shadow=marker._shadow,iconPos=getPosition(marker._icon),latlng=marker._map.layerPointToLatLng(iconPos);shadow&&setPosition(shadow,iconPos),marker._latlng=latlng,e.latlng=latlng,e.oldLatLng=this._oldLatLng,marker.fire("move",e).fire("drag",e)},_onDragEnd:function(e){cancelAnimFrame(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",e)}}),Marker=Layer.extend({options:{icon:new IconDefault,interactive:!0,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",bubblingMouseEvents:!1,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10},initialize:function(latlng,options){setOptions(this,options),this._latlng=toLatLng(latlng)},onAdd:function(map){this._zoomAnimated=this._zoomAnimated&&map.options.markerZoomAnimation,this._zoomAnimated&&map.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(map){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&map.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(latlng){var oldLatLng=this._latlng;return this._latlng=toLatLng(latlng),this.update(),this.fire("move",{oldLatLng:oldLatLng,latlng:this._latlng})},setZIndexOffset:function(offset){return this.options.zIndexOffset=offset,this.update()},setIcon:function(icon){return this.options.icon=icon,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var pos=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(pos)}return this},_initIcon:function(){var options=this.options,classToAdd="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),icon=options.icon.createIcon(this._icon),addIcon=!1;icon!==this._icon&&(this._icon&&this._removeIcon(),addIcon=!0,options.title&&(icon.title=options.title),"IMG"===icon.tagName&&(icon.alt=options.alt||"")),addClass(icon,classToAdd),options.keyboard&&(icon.tabIndex="0"),this._icon=icon,options.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var newShadow=options.icon.createShadow(this._shadow),addShadow=!1;newShadow!==this._shadow&&(this._removeShadow(),addShadow=!0),newShadow&&(addClass(newShadow,classToAdd),newShadow.alt=""),this._shadow=newShadow,options.opacity<1&&this._updateOpacity(),addIcon&&this.getPane().appendChild(this._icon),this._initInteraction(),newShadow&&addShadow&&this.getPane("shadowPane").appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),remove(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&remove(this._shadow),this._shadow=null},_setPos:function(pos){setPosition(this._icon,pos),this._shadow&&setPosition(this._shadow,pos),this._zIndex=pos.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(offset){this._icon.style.zIndex=this._zIndex+offset},_animateZoom:function(opt){var pos=this._map._latLngToNewLayerPoint(this._latlng,opt.zoom,opt.center).round();this._setPos(pos)},_initInteraction:function(){if(this.options.interactive&&(addClass(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),MarkerDrag)){var draggable=this.options.draggable;this.dragging&&(draggable=this.dragging.enabled(),this.dragging.disable()),this.dragging=new MarkerDrag(this),draggable&&this.dragging.enable()}},setOpacity:function(opacity){return this.options.opacity=opacity,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var opacity=this.options.opacity;setOpacity(this._icon,opacity),this._shadow&&setOpacity(this._shadow,opacity)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}});var Path=Layer.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(map){this._renderer=map.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(style){return setOptions(this,style),this._renderer&&this._renderer._updateStyle(this),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),CircleMarker=Path.extend({options:{fill:!0,radius:10},initialize:function(latlng,options){setOptions(this,options),this._latlng=toLatLng(latlng),this._radius=this.options.radius},setLatLng:function(latlng){return this._latlng=toLatLng(latlng),this.redraw(),this.fire("move",{latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(radius){return this.options.radius=this._radius=radius,this.redraw()},getRadius:function(){return this._radius},setStyle:function(options){var radius=options&&options.radius||this._radius;return Path.prototype.setStyle.call(this,options),this.setRadius(radius),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var r=this._radius,r2=this._radiusY||r,w=this._clickTolerance(),p=[r+w,r2+w];this._pxBounds=new Bounds(this._point.subtract(p),this._point.add(p))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(p){return p.distanceTo(this._point)<=this._radius+this._clickTolerance()}});var Circle=CircleMarker.extend({initialize:function(latlng,options,legacyOptions){if("number"==typeof options&&(options=extend({},legacyOptions,{radius:options})),setOptions(this,options),this._latlng=toLatLng(latlng),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(radius){return this._mRadius=radius,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var half=[this._radius,this._radiusY||this._radius];return new LatLngBounds(this._map.layerPointToLatLng(this._point.subtract(half)),this._map.layerPointToLatLng(this._point.add(half)))},setStyle:Path.prototype.setStyle,_project:function(){var lng=this._latlng.lng,lat=this._latlng.lat,map=this._map,crs=map.options.crs;if(crs.distance===Earth.distance){var d=Math.PI/180,latR=this._mRadius/Earth.R/d,top=map.project([lat+latR,lng]),bottom=map.project([lat-latR,lng]),p=top.add(bottom).divideBy(2),lat2=map.unproject(p).lat,lngR=Math.acos((Math.cos(latR*d)-Math.sin(lat*d)*Math.sin(lat2*d))/(Math.cos(lat*d)*Math.cos(lat2*d)))/d;(isNaN(lngR)||0===lngR)&&(lngR=latR/Math.cos(Math.PI/180*lat)),this._point=p.subtract(map.getPixelOrigin()),this._radius=isNaN(lngR)?0:p.x-map.project([lat2,lng-lngR]).x,this._radiusY=p.y-top.y}else{var latlng2=crs.unproject(crs.project(this._latlng).subtract([this._mRadius,0]));this._point=map.latLngToLayerPoint(this._latlng),this._radius=this._point.x-map.latLngToLayerPoint(latlng2).x}this._updateBounds()}});var Polyline=Path.extend({options:{smoothFactor:1,noClip:!1},initialize:function(latlngs,options){setOptions(this,options),this._setLatLngs(latlngs)},getLatLngs:function(){return this._latlngs},setLatLngs:function(latlngs){return this._setLatLngs(latlngs),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(p){for(var p1,p2,minDistance=1/0,minPoint=null,closest=_sqClosestPointOnSegment,j=0,jLen=this._parts.length;j<jLen;j++)for(var points=this._parts[j],i=1,len=points.length;i<len;i++){var sqDist=closest(p,p1=points[i-1],p2=points[i],!0);sqDist<minDistance&&(minDistance=sqDist,minPoint=closest(p,p1,p2))}return minPoint&&(minPoint.distance=Math.sqrt(minDistance)),minPoint},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var i,halfDist,segDist,dist,p1,p2,ratio,points=this._rings[0],len=points.length;if(!len)return null;for(i=0,halfDist=0;i<len-1;i++)halfDist+=points[i].distanceTo(points[i+1])/2;if(0===halfDist)return this._map.layerPointToLatLng(points[0]);for(i=0,dist=0;i<len-1;i++)if(p1=points[i],p2=points[i+1],(dist+=segDist=p1.distanceTo(p2))>halfDist)return ratio=(dist-halfDist)/segDist,this._map.layerPointToLatLng([p2.x-ratio*(p2.x-p1.x),p2.y-ratio*(p2.y-p1.y)])},getBounds:function(){return this._bounds},addLatLng:function(latlng,latlngs){return latlngs=latlngs||this._defaultShape(),latlng=toLatLng(latlng),latlngs.push(latlng),this._bounds.extend(latlng),this.redraw()},_setLatLngs:function(latlngs){this._bounds=new LatLngBounds,this._latlngs=this._convertLatLngs(latlngs)},_defaultShape:function(){return isFlat(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(latlngs){for(var result=[],flat=isFlat(latlngs),i=0,len=latlngs.length;i<len;i++)flat?(result[i]=toLatLng(latlngs[i]),this._bounds.extend(result[i])):result[i]=this._convertLatLngs(latlngs[i]);return result},_project:function(){var pxBounds=new Bounds;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,pxBounds);var w=this._clickTolerance(),p=new Point(w,w);this._bounds.isValid()&&pxBounds.isValid()&&(pxBounds.min._subtract(p),pxBounds.max._add(p),this._pxBounds=pxBounds)},_projectLatlngs:function(latlngs,result,projectedBounds){var i,ring,flat=latlngs[0]instanceof LatLng,len=latlngs.length;if(flat){for(ring=[],i=0;i<len;i++)ring[i]=this._map.latLngToLayerPoint(latlngs[i]),projectedBounds.extend(ring[i]);result.push(ring)}else for(i=0;i<len;i++)this._projectLatlngs(latlngs[i],result,projectedBounds)},_clipPoints:function(){var bounds=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(bounds))if(this.options.noClip)this._parts=this._rings;else{var i,j,k,len,len2,segment,points,parts=this._parts;for(i=0,k=0,len=this._rings.length;i<len;i++)for(j=0,len2=(points=this._rings[i]).length;j<len2-1;j++)(segment=clipSegment(points[j],points[j+1],bounds,j,!0))&&(parts[k]=parts[k]||[],parts[k].push(segment[0]),segment[1]===points[j+1]&&j!==len2-2||(parts[k].push(segment[1]),k++))}},_simplifyPoints:function(){for(var parts=this._parts,tolerance=this.options.smoothFactor,i=0,len=parts.length;i<len;i++)parts[i]=simplify(parts[i],tolerance)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(p,closed){var i,j,k,len,len2,part,w=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(p))return!1;for(i=0,len=this._parts.length;i<len;i++)for(j=0,k=(len2=(part=this._parts[i]).length)-1;j<len2;k=j++)if((closed||0!==j)&&pointToSegmentDistance(p,part[k],part[j])<=w)return!0;return!1}});Polyline._flat=_flat;var Polygon=Polyline.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var i,j,p1,p2,f,area,x,y,center,points=this._rings[0],len=points.length;if(!len)return null;for(area=x=y=0,i=0,j=len-1;i<len;j=i++)p1=points[i],p2=points[j],f=p1.y*p2.x-p2.y*p1.x,x+=(p1.x+p2.x)*f,y+=(p1.y+p2.y)*f,area+=3*f;return center=0===area?points[0]:[x/area,y/area],this._map.layerPointToLatLng(center)},_convertLatLngs:function(latlngs){var result=Polyline.prototype._convertLatLngs.call(this,latlngs),len=result.length;return len>=2&&result[0]instanceof LatLng&&result[0].equals(result[len-1])&&result.pop(),result},_setLatLngs:function(latlngs){Polyline.prototype._setLatLngs.call(this,latlngs),isFlat(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return isFlat(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var bounds=this._renderer._bounds,w=this.options.weight,p=new Point(w,w);if(bounds=new Bounds(bounds.min.subtract(p),bounds.max.add(p)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(bounds))if(this.options.noClip)this._parts=this._rings;else for(var clipped,i=0,len=this._rings.length;i<len;i++)(clipped=clipPolygon(this._rings[i],bounds,!0)).length&&this._parts.push(clipped)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(p){var part,p1,p2,i,j,k,len,len2,inside=!1;if(!this._pxBounds||!this._pxBounds.contains(p))return!1;for(i=0,len=this._parts.length;i<len;i++)for(j=0,k=(len2=(part=this._parts[i]).length)-1;j<len2;k=j++)p1=part[j],p2=part[k],p1.y>p.y!=p2.y>p.y&&p.x<(p2.x-p1.x)*(p.y-p1.y)/(p2.y-p1.y)+p1.x&&(inside=!inside);return inside||Polyline.prototype._containsPoint.call(this,p,!0)}});var GeoJSON=FeatureGroup.extend({initialize:function(geojson,options){setOptions(this,options),this._layers={},geojson&&this.addData(geojson)},addData:function(geojson){var i,len,feature,features=isArray(geojson)?geojson:geojson.features;if(features){for(i=0,len=features.length;i<len;i++)((feature=features[i]).geometries||feature.geometry||feature.features||feature.coordinates)&&this.addData(feature);return this}var options=this.options;if(options.filter&&!options.filter(geojson))return this;var layer=geometryToLayer(geojson,options);return layer?(layer.feature=asFeature(geojson),layer.defaultOptions=layer.options,this.resetStyle(layer),options.onEachFeature&&options.onEachFeature(geojson,layer),this.addLayer(layer)):this},resetStyle:function(layer){return layer.options=extend({},layer.defaultOptions),this._setLayerStyle(layer,this.options.style),this},setStyle:function(style){return this.eachLayer(function(layer){this._setLayerStyle(layer,style)},this)},_setLayerStyle:function(layer,style){"function"==typeof style&&(style=style(layer.feature)),layer.setStyle&&layer.setStyle(style)}});function geometryToLayer(geojson,options){var latlng,latlngs,i,len,geometry="Feature"===geojson.type?geojson.geometry:geojson,coords=geometry?geometry.coordinates:null,layers=[],pointToLayer=options&&options.pointToLayer,_coordsToLatLng=options&&options.coordsToLatLng||coordsToLatLng;if(!coords&&!geometry)return null;switch(geometry.type){case"Point":return latlng=_coordsToLatLng(coords),pointToLayer?pointToLayer(geojson,latlng):new Marker(latlng);case"MultiPoint":for(i=0,len=coords.length;i<len;i++)latlng=_coordsToLatLng(coords[i]),layers.push(pointToLayer?pointToLayer(geojson,latlng):new Marker(latlng));return new FeatureGroup(layers);case"LineString":case"MultiLineString":return latlngs=coordsToLatLngs(coords,"LineString"===geometry.type?0:1,_coordsToLatLng),new Polyline(latlngs,options);case"Polygon":case"MultiPolygon":return latlngs=coordsToLatLngs(coords,"Polygon"===geometry.type?1:2,_coordsToLatLng),new Polygon(latlngs,options);case"GeometryCollection":for(i=0,len=geometry.geometries.length;i<len;i++){var layer=geometryToLayer({geometry:geometry.geometries[i],type:"Feature",properties:geojson.properties},options);layer&&layers.push(layer)}return new FeatureGroup(layers);default:throw new Error("Invalid GeoJSON object.")}}function coordsToLatLng(coords){return new LatLng(coords[1],coords[0],coords[2])}function coordsToLatLngs(coords,levelsDeep,_coordsToLatLng){for(var latlng,latlngs=[],i=0,len=coords.length;i<len;i++)latlng=levelsDeep?coordsToLatLngs(coords[i],levelsDeep-1,_coordsToLatLng):(_coordsToLatLng||coordsToLatLng)(coords[i]),latlngs.push(latlng);return latlngs}function latLngToCoords(latlng,precision){return precision="number"==typeof precision?precision:6,void 0!==latlng.alt?[formatNum(latlng.lng,precision),formatNum(latlng.lat,precision),formatNum(latlng.alt,precision)]:[formatNum(latlng.lng,precision),formatNum(latlng.lat,precision)]}function latLngsToCoords(latlngs,levelsDeep,closed,precision){for(var coords=[],i=0,len=latlngs.length;i<len;i++)coords.push(levelsDeep?latLngsToCoords(latlngs[i],levelsDeep-1,closed,precision):latLngToCoords(latlngs[i],precision));return!levelsDeep&&closed&&coords.push(coords[0]),coords}function getFeature(layer,newGeometry){return layer.feature?extend({},layer.feature,{geometry:newGeometry}):asFeature(newGeometry)}function asFeature(geojson){return"Feature"===geojson.type||"FeatureCollection"===geojson.type?geojson:{type:"Feature",properties:{},geometry:geojson}}var PointToGeoJSON={toGeoJSON:function(precision){return getFeature(this,{type:"Point",coordinates:latLngToCoords(this.getLatLng(),precision)})}};function geoJSON(geojson,options){return new GeoJSON(geojson,options)}Marker.include(PointToGeoJSON),Circle.include(PointToGeoJSON),CircleMarker.include(PointToGeoJSON),Polyline.include({toGeoJSON:function(precision){var multi=!isFlat(this._latlngs),coords=latLngsToCoords(this._latlngs,multi?1:0,!1,precision);return getFeature(this,{type:(multi?"Multi":"")+"LineString",coordinates:coords})}}),Polygon.include({toGeoJSON:function(precision){var holes=!isFlat(this._latlngs),multi=holes&&!isFlat(this._latlngs[0]),coords=latLngsToCoords(this._latlngs,multi?2:holes?1:0,!0,precision);return holes||(coords=[coords]),getFeature(this,{type:(multi?"Multi":"")+"Polygon",coordinates:coords})}}),LayerGroup.include({toMultiPoint:function(precision){var coords=[];return this.eachLayer(function(layer){coords.push(layer.toGeoJSON(precision).geometry.coordinates)}),getFeature(this,{type:"MultiPoint",coordinates:coords})},toGeoJSON:function(precision){var type=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===type)return this.toMultiPoint(precision);var isGeometryCollection="GeometryCollection"===type,jsons=[];return this.eachLayer(function(layer){if(layer.toGeoJSON){var json=layer.toGeoJSON(precision);if(isGeometryCollection)jsons.push(json.geometry);else{var feature=asFeature(json);"FeatureCollection"===feature.type?jsons.push.apply(jsons,feature.features):jsons.push(feature)}}}),isGeometryCollection?getFeature(this,{geometries:jsons,type:"GeometryCollection"}):{type:"FeatureCollection",features:jsons}}});var geoJson=geoJSON,ImageOverlay=Layer.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(url,bounds,options){this._url=url,this._bounds=toLatLngBounds(bounds),setOptions(this,options)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(addClass(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){remove(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(opacity){return this.options.opacity=opacity,this._image&&this._updateOpacity(),this},setStyle:function(styleOpts){return styleOpts.opacity&&this.setOpacity(styleOpts.opacity),this},bringToFront:function(){return this._map&&toFront(this._image),this},bringToBack:function(){return this._map&&toBack(this._image),this},setUrl:function(url){return this._url=url,this._image&&(this._image.src=url),this},setBounds:function(bounds){return this._bounds=toLatLngBounds(bounds),this._map&&this._reset(),this},getEvents:function(){var events={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(events.zoomanim=this._animateZoom),events},setZIndex:function(value){return this.options.zIndex=value,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var wasElementSupplied="IMG"===this._url.tagName,img=this._image=wasElementSupplied?this._url:create$1("img");addClass(img,"leaflet-image-layer"),this._zoomAnimated&&addClass(img,"leaflet-zoom-animated"),this.options.className&&addClass(img,this.options.className),img.onselectstart=falseFn,img.onmousemove=falseFn,img.onload=bind(this.fire,this,"load"),img.onerror=bind(this._overlayOnError,this,"error"),(this.options.crossOrigin||""===this.options.crossOrigin)&&(img.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),wasElementSupplied?this._url=img.src:(img.src=this._url,img.alt=this.options.alt)},_animateZoom:function(e){var scale=this._map.getZoomScale(e.zoom),offset=this._map._latLngBoundsToNewLayerBounds(this._bounds,e.zoom,e.center).min;setTransform(this._image,offset,scale)},_reset:function(){var image=this._image,bounds=new Bounds(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),size=bounds.getSize();setPosition(image,bounds.min),image.style.width=size.x+"px",image.style.height=size.y+"px"},_updateOpacity:function(){setOpacity(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var errorUrl=this.options.errorOverlayUrl;errorUrl&&this._url!==errorUrl&&(this._url=errorUrl,this._image.src=errorUrl)}}),VideoOverlay=ImageOverlay.extend({options:{autoplay:!0,loop:!0},_initImage:function(){var wasElementSupplied="VIDEO"===this._url.tagName,vid=this._image=wasElementSupplied?this._url:create$1("video");if(addClass(vid,"leaflet-image-layer"),this._zoomAnimated&&addClass(vid,"leaflet-zoom-animated"),vid.onselectstart=falseFn,vid.onmousemove=falseFn,vid.onloadeddata=bind(this.fire,this,"load"),wasElementSupplied){for(var sourceElements=vid.getElementsByTagName("source"),sources=[],j=0;j<sourceElements.length;j++)sources.push(sourceElements[j].src);this._url=sourceElements.length>0?sources:[vid.src]}else{isArray(this._url)||(this._url=[this._url]),vid.autoplay=!!this.options.autoplay,vid.loop=!!this.options.loop;for(var i=0;i<this._url.length;i++){var source=create$1("source");source.src=this._url[i],vid.appendChild(source)}}}});var DivOverlay=Layer.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(options,source){setOptions(this,options),this._source=source},onAdd:function(map){this._zoomAnimated=map._zoomAnimated,this._container||this._initLayout(),map._fadeAnimated&&setOpacity(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),map._fadeAnimated&&setOpacity(this._container,1),this.bringToFront()},onRemove:function(map){map._fadeAnimated?(setOpacity(this._container,0),this._removeTimeout=setTimeout(bind(remove,void 0,this._container),200)):remove(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(latlng){return this._latlng=toLatLng(latlng),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(content){return this._content=content,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var events={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(events.zoomanim=this._animateZoom),events},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&toFront(this._container),this},bringToBack:function(){return this._map&&toBack(this._container),this},_updateContent:function(){if(this._content){var node=this._contentNode,content="function"==typeof this._content?this._content(this._source||this):this._content;if("string"==typeof content)node.innerHTML=content;else{for(;node.hasChildNodes();)node.removeChild(node.firstChild);node.appendChild(content)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var pos=this._map.latLngToLayerPoint(this._latlng),offset=toPoint(this.options.offset),anchor=this._getAnchor();this._zoomAnimated?setPosition(this._container,pos.add(anchor)):offset=offset.add(pos).add(anchor);var bottom=this._containerBottom=-offset.y,left=this._containerLeft=-Math.round(this._containerWidth/2)+offset.x;this._container.style.bottom=bottom+"px",this._container.style.left=left+"px"}},_getAnchor:function(){return[0,0]}}),Popup=DivOverlay.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(map){return map.openPopup(this),this},onAdd:function(map){DivOverlay.prototype.onAdd.call(this,map),map.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof Path||this._source.on("preclick",stopPropagation))},onRemove:function(map){DivOverlay.prototype.onRemove.call(this,map),map.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof Path||this._source.off("preclick",stopPropagation))},getEvents:function(){var events=DivOverlay.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(events.preclick=this._close),this.options.keepInView&&(events.moveend=this._adjustPan),events},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var prefix="leaflet-popup",container=this._container=create$1("div",prefix+" "+(this.options.className||"")+" leaflet-zoom-animated"),wrapper=this._wrapper=create$1("div",prefix+"-content-wrapper",container);if(this._contentNode=create$1("div",prefix+"-content",wrapper),disableClickPropagation(wrapper),disableScrollPropagation(this._contentNode),on(wrapper,"contextmenu",stopPropagation),this._tipContainer=create$1("div",prefix+"-tip-container",container),this._tip=create$1("div",prefix+"-tip",this._tipContainer),this.options.closeButton){var closeButton=this._closeButton=create$1("a",prefix+"-close-button",container);closeButton.href="#close",closeButton.innerHTML="&#215;",on(closeButton,"click",this._onCloseButtonClick,this)}},_updateLayout:function(){var container=this._contentNode,style=container.style;style.width="",style.whiteSpace="nowrap";var width=container.offsetWidth;width=Math.min(width,this.options.maxWidth),width=Math.max(width,this.options.minWidth),style.width=width+1+"px",style.whiteSpace="",style.height="";var height=container.offsetHeight,maxHeight=this.options.maxHeight;maxHeight&&height>maxHeight?(style.height=maxHeight+"px",addClass(container,"leaflet-popup-scrolled")):removeClass(container,"leaflet-popup-scrolled"),this._containerWidth=this._container.offsetWidth},_animateZoom:function(e){var pos=this._map._latLngToNewLayerPoint(this._latlng,e.zoom,e.center),anchor=this._getAnchor();setPosition(this._container,pos.add(anchor))},_adjustPan:function(){if(this.options.autoPan){this._map._panAnim&&this._map._panAnim.stop();var map=this._map,marginBottom=parseInt(getStyle(this._container,"marginBottom"),10)||0,containerHeight=this._container.offsetHeight+marginBottom,containerWidth=this._containerWidth,layerPos=new Point(this._containerLeft,-containerHeight-this._containerBottom);layerPos._add(getPosition(this._container));var containerPos=map.layerPointToContainerPoint(layerPos),padding=toPoint(this.options.autoPanPadding),paddingTL=toPoint(this.options.autoPanPaddingTopLeft||padding),paddingBR=toPoint(this.options.autoPanPaddingBottomRight||padding),size=map.getSize(),dx=0,dy=0;containerPos.x+containerWidth+paddingBR.x>size.x&&(dx=containerPos.x+containerWidth-size.x+paddingBR.x),containerPos.x-dx-paddingTL.x<0&&(dx=containerPos.x-paddingTL.x),containerPos.y+containerHeight+paddingBR.y>size.y&&(dy=containerPos.y+containerHeight-size.y+paddingBR.y),containerPos.y-dy-paddingTL.y<0&&(dy=containerPos.y-paddingTL.y),(dx||dy)&&map.fire("autopanstart").panBy([dx,dy])}},_onCloseButtonClick:function(e){this._close(),stop(e)},_getAnchor:function(){return toPoint(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Map.mergeOptions({closePopupOnClick:!0}),Map.include({openPopup:function(popup,latlng,options){return popup instanceof Popup||(popup=new Popup(options).setContent(popup)),latlng&&popup.setLatLng(latlng),this.hasLayer(popup)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=popup,this.addLayer(popup))},closePopup:function(popup){return popup&&popup!==this._popup||(popup=this._popup,this._popup=null),popup&&this.removeLayer(popup),this}}),Layer.include({bindPopup:function(content,options){return content instanceof Popup?(setOptions(content,options),this._popup=content,content._source=this):(this._popup&&!options||(this._popup=new Popup(options,this)),this._popup.setContent(content)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(layer,latlng){if(layer instanceof Layer||(latlng=layer,layer=this),layer instanceof FeatureGroup)for(var id in this._layers){layer=this._layers[id];break}return latlng||(latlng=layer.getCenter?layer.getCenter():layer.getLatLng()),this._popup&&this._map&&(this._popup._source=layer,this._popup.update(),this._map.openPopup(this._popup,latlng)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(target){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(target)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(content){return this._popup&&this._popup.setContent(content),this},getPopup:function(){return this._popup},_openPopup:function(e){var layer=e.layer||e.target;this._popup&&this._map&&(stop(e),layer instanceof Path?this.openPopup(e.layer||e.target,e.latlng):this._map.hasLayer(this._popup)&&this._popup._source===layer?this.closePopup():this.openPopup(layer,e.latlng))},_movePopup:function(e){this._popup.setLatLng(e.latlng)},_onKeyPress:function(e){13===e.originalEvent.keyCode&&this._openPopup(e)}});var Tooltip=DivOverlay.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(map){DivOverlay.prototype.onAdd.call(this,map),this.setOpacity(this.options.opacity),map.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(map){DivOverlay.prototype.onRemove.call(this,map),map.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var events=DivOverlay.prototype.getEvents.call(this);return touch&&!this.options.permanent&&(events.preclick=this._close),events},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var className="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=create$1("div",className)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(pos){var map=this._map,container=this._container,centerPoint=map.latLngToContainerPoint(map.getCenter()),tooltipPoint=map.layerPointToContainerPoint(pos),direction=this.options.direction,tooltipWidth=container.offsetWidth,tooltipHeight=container.offsetHeight,offset=toPoint(this.options.offset),anchor=this._getAnchor();"top"===direction?pos=pos.add(toPoint(-tooltipWidth/2+offset.x,-tooltipHeight+offset.y+anchor.y,!0)):"bottom"===direction?pos=pos.subtract(toPoint(tooltipWidth/2-offset.x,-offset.y,!0)):"center"===direction?pos=pos.subtract(toPoint(tooltipWidth/2+offset.x,tooltipHeight/2-anchor.y+offset.y,!0)):"right"===direction||"auto"===direction&&tooltipPoint.x<centerPoint.x?(direction="right",pos=pos.add(toPoint(offset.x+anchor.x,anchor.y-tooltipHeight/2+offset.y,!0))):(direction="left",pos=pos.subtract(toPoint(tooltipWidth+anchor.x-offset.x,tooltipHeight/2-anchor.y-offset.y,!0))),removeClass(container,"leaflet-tooltip-right"),removeClass(container,"leaflet-tooltip-left"),removeClass(container,"leaflet-tooltip-top"),removeClass(container,"leaflet-tooltip-bottom"),addClass(container,"leaflet-tooltip-"+direction),setPosition(container,pos)},_updatePosition:function(){var pos=this._map.latLngToLayerPoint(this._latlng);this._setPosition(pos)},setOpacity:function(opacity){this.options.opacity=opacity,this._container&&setOpacity(this._container,opacity)},_animateZoom:function(e){var pos=this._map._latLngToNewLayerPoint(this._latlng,e.zoom,e.center);this._setPosition(pos)},_getAnchor:function(){return toPoint(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}});Map.include({openTooltip:function(tooltip,latlng,options){return tooltip instanceof Tooltip||(tooltip=new Tooltip(options).setContent(tooltip)),latlng&&tooltip.setLatLng(latlng),this.hasLayer(tooltip)?this:this.addLayer(tooltip)},closeTooltip:function(tooltip){return tooltip&&this.removeLayer(tooltip),this}}),Layer.include({bindTooltip:function(content,options){return content instanceof Tooltip?(setOptions(content,options),this._tooltip=content,content._source=this):(this._tooltip&&!options||(this._tooltip=new Tooltip(options,this)),this._tooltip.setContent(content)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(remove$$1){if(remove$$1||!this._tooltipHandlersAdded){var onOff=remove$$1?"off":"on",events={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?events.add=this._openTooltip:(events.mouseover=this._openTooltip,events.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(events.mousemove=this._moveTooltip),touch&&(events.click=this._openTooltip)),this[onOff](events),this._tooltipHandlersAdded=!remove$$1}},openTooltip:function(layer,latlng){if(layer instanceof Layer||(latlng=layer,layer=this),layer instanceof FeatureGroup)for(var id in this._layers){layer=this._layers[id];break}return latlng||(latlng=layer.getCenter?layer.getCenter():layer.getLatLng()),this._tooltip&&this._map&&(this._tooltip._source=layer,this._tooltip.update(),this._map.openTooltip(this._tooltip,latlng),this._tooltip.options.interactive&&this._tooltip._container&&(addClass(this._tooltip._container,"leaflet-clickable"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(removeClass(this._tooltip._container,"leaflet-clickable"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(target){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(target)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(content){return this._tooltip&&this._tooltip.setContent(content),this},getTooltip:function(){return this._tooltip},_openTooltip:function(e){var layer=e.layer||e.target;this._tooltip&&this._map&&this.openTooltip(layer,this._tooltip.options.sticky?e.latlng:void 0)},_moveTooltip:function(e){var containerPoint,layerPoint,latlng=e.latlng;this._tooltip.options.sticky&&e.originalEvent&&(containerPoint=this._map.mouseEventToContainerPoint(e.originalEvent),layerPoint=this._map.containerPointToLayerPoint(containerPoint),latlng=this._map.layerPointToLatLng(layerPoint)),this._tooltip.setLatLng(latlng)}});var DivIcon=Icon.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(oldIcon){var div=oldIcon&&"DIV"===oldIcon.tagName?oldIcon:document.createElement("div"),options=this.options;if(div.innerHTML=!1!==options.html?options.html:"",options.bgPos){var bgPos=toPoint(options.bgPos);div.style.backgroundPosition=-bgPos.x+"px "+-bgPos.y+"px"}return this._setIconStyles(div,"icon"),div},createShadow:function(){return null}});Icon.Default=IconDefault;var GridLayer=Layer.extend({options:{tileSize:256,opacity:1,updateWhenIdle:mobile,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(options){setOptions(this,options)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(map){map._addZoomLimit(this)},onRemove:function(map){this._removeAllTiles(),remove(this._container),map._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(toFront(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(toBack(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(opacity){return this.options.opacity=opacity,this._updateOpacity(),this},setZIndex:function(zIndex){return this.options.zIndex=zIndex,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var events={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=throttle(this._onMoveEnd,this.options.updateInterval,this)),events.move=this._onMove),this._zoomAnimated&&(events.zoomanim=this._animateZoom),events},createTile:function(){return document.createElement("div")},getTileSize:function(){var s=this.options.tileSize;return s instanceof Point?s:new Point(s,s)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(compare){for(var zIndex,layers=this.getPane().children,edgeZIndex=-compare(-1/0,1/0),i=0,len=layers.length;i<len;i++)zIndex=layers[i].style.zIndex,layers[i]!==this._container&&zIndex&&(edgeZIndex=compare(edgeZIndex,+zIndex));isFinite(edgeZIndex)&&(this.options.zIndex=edgeZIndex+compare(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!ielt9){setOpacity(this._container,this.options.opacity);var now=+new Date,nextFrame=!1,willPrune=!1;for(var key in this._tiles){var tile=this._tiles[key];if(tile.current&&tile.loaded){var fade=Math.min(1,(now-tile.loaded)/200);setOpacity(tile.el,fade),fade<1?nextFrame=!0:(tile.active?willPrune=!0:this._onOpaqueTile(tile),tile.active=!0)}}willPrune&&!this._noPrune&&this._pruneTiles(),nextFrame&&(cancelAnimFrame(this._fadeFrame),this._fadeFrame=requestAnimFrame(this._updateOpacity,this))}},_onOpaqueTile:falseFn,_initContainer:function(){this._container||(this._container=create$1("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var zoom=this._tileZoom,maxZoom=this.options.maxZoom;if(void 0!==zoom){for(var z in this._levels)this._levels[z].el.children.length||z===zoom?(this._levels[z].el.style.zIndex=maxZoom-Math.abs(zoom-z),this._onUpdateLevel(z)):(remove(this._levels[z].el),this._removeTilesAtZoom(z),this._onRemoveLevel(z),delete this._levels[z]);var level=this._levels[zoom],map=this._map;return level||((level=this._levels[zoom]={}).el=create$1("div","leaflet-tile-container leaflet-zoom-animated",this._container),level.el.style.zIndex=maxZoom,level.origin=map.project(map.unproject(map.getPixelOrigin()),zoom).round(),level.zoom=zoom,this._setZoomTransform(level,map.getCenter(),map.getZoom()),level.el.offsetWidth,this._onCreateLevel(level)),this._level=level,level}},_onUpdateLevel:falseFn,_onRemoveLevel:falseFn,_onCreateLevel:falseFn,_pruneTiles:function(){if(this._map){var key,tile,zoom=this._map.getZoom();if(zoom>this.options.maxZoom||zoom<this.options.minZoom)this._removeAllTiles();else{for(key in this._tiles)(tile=this._tiles[key]).retain=tile.current;for(key in this._tiles)if((tile=this._tiles[key]).current&&!tile.active){var coords=tile.coords;this._retainParent(coords.x,coords.y,coords.z,coords.z-5)||this._retainChildren(coords.x,coords.y,coords.z,coords.z+2)}for(key in this._tiles)this._tiles[key].retain||this._removeTile(key)}}},_removeTilesAtZoom:function(zoom){for(var key in this._tiles)this._tiles[key].coords.z===zoom&&this._removeTile(key)},_removeAllTiles:function(){for(var key in this._tiles)this._removeTile(key)},_invalidateAll:function(){for(var z in this._levels)remove(this._levels[z].el),this._onRemoveLevel(z),delete this._levels[z];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(x,y,z,minZoom){var x2=Math.floor(x/2),y2=Math.floor(y/2),z2=z-1,coords2=new Point(+x2,+y2);coords2.z=+z2;var key=this._tileCoordsToKey(coords2),tile=this._tiles[key];return tile&&tile.active?(tile.retain=!0,!0):(tile&&tile.loaded&&(tile.retain=!0),z2>minZoom&&this._retainParent(x2,y2,z2,minZoom))},_retainChildren:function(x,y,z,maxZoom){for(var i=2*x;i<2*x+2;i++)for(var j=2*y;j<2*y+2;j++){var coords=new Point(i,j);coords.z=z+1;var key=this._tileCoordsToKey(coords),tile=this._tiles[key];tile&&tile.active?tile.retain=!0:(tile&&tile.loaded&&(tile.retain=!0),z+1<maxZoom&&this._retainChildren(i,j,z+1,maxZoom))}},_resetView:function(e){var animating=e&&(e.pinch||e.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),animating,animating)},_animateZoom:function(e){this._setView(e.center,e.zoom,!0,e.noUpdate)},_clampZoom:function(zoom){var options=this.options;return void 0!==options.minNativeZoom&&zoom<options.minNativeZoom?options.minNativeZoom:void 0!==options.maxNativeZoom&&options.maxNativeZoom<zoom?options.maxNativeZoom:zoom},_setView:function(center,zoom,noPrune,noUpdate){var tileZoom=this._clampZoom(Math.round(zoom));(void 0!==this.options.maxZoom&&tileZoom>this.options.maxZoom||void 0!==this.options.minZoom&&tileZoom<this.options.minZoom)&&(tileZoom=void 0);var tileZoomChanged=this.options.updateWhenZooming&&tileZoom!==this._tileZoom;noUpdate&&!tileZoomChanged||(this._tileZoom=tileZoom,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==tileZoom&&this._update(center),noPrune||this._pruneTiles(),this._noPrune=!!noPrune),this._setZoomTransforms(center,zoom)},_setZoomTransforms:function(center,zoom){for(var i in this._levels)this._setZoomTransform(this._levels[i],center,zoom)},_setZoomTransform:function(level,center,zoom){var scale=this._map.getZoomScale(zoom,level.zoom),translate=level.origin.multiplyBy(scale).subtract(this._map._getNewPixelOrigin(center,zoom)).round();any3d?setTransform(level.el,translate,scale):setPosition(level.el,translate)},_resetGrid:function(){var map=this._map,crs=map.options.crs,tileSize=this._tileSize=this.getTileSize(),tileZoom=this._tileZoom,bounds=this._map.getPixelWorldBounds(this._tileZoom);bounds&&(this._globalTileRange=this._pxBoundsToTileRange(bounds)),this._wrapX=crs.wrapLng&&!this.options.noWrap&&[Math.floor(map.project([0,crs.wrapLng[0]],tileZoom).x/tileSize.x),Math.ceil(map.project([0,crs.wrapLng[1]],tileZoom).x/tileSize.y)],this._wrapY=crs.wrapLat&&!this.options.noWrap&&[Math.floor(map.project([crs.wrapLat[0],0],tileZoom).y/tileSize.x),Math.ceil(map.project([crs.wrapLat[1],0],tileZoom).y/tileSize.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(center){var map=this._map,mapZoom=map._animatingZoom?Math.max(map._animateToZoom,map.getZoom()):map.getZoom(),scale=map.getZoomScale(mapZoom,this._tileZoom),pixelCenter=map.project(center,this._tileZoom).floor(),halfSize=map.getSize().divideBy(2*scale);return new Bounds(pixelCenter.subtract(halfSize),pixelCenter.add(halfSize))},_update:function(center){var map=this._map;if(map){var zoom=this._clampZoom(map.getZoom());if(void 0===center&&(center=map.getCenter()),void 0!==this._tileZoom){var pixelBounds=this._getTiledPixelBounds(center),tileRange=this._pxBoundsToTileRange(pixelBounds),tileCenter=tileRange.getCenter(),queue=[],margin=this.options.keepBuffer,noPruneRange=new Bounds(tileRange.getBottomLeft().subtract([margin,-margin]),tileRange.getTopRight().add([margin,-margin]));if(!(isFinite(tileRange.min.x)&&isFinite(tileRange.min.y)&&isFinite(tileRange.max.x)&&isFinite(tileRange.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var key in this._tiles){var c=this._tiles[key].coords;c.z===this._tileZoom&&noPruneRange.contains(new Point(c.x,c.y))||(this._tiles[key].current=!1)}if(Math.abs(zoom-this._tileZoom)>1)this._setView(center,zoom);else{for(var j=tileRange.min.y;j<=tileRange.max.y;j++)for(var i=tileRange.min.x;i<=tileRange.max.x;i++){var coords=new Point(i,j);if(coords.z=this._tileZoom,this._isValidTile(coords)){var tile=this._tiles[this._tileCoordsToKey(coords)];tile?tile.current=!0:queue.push(coords)}}if(queue.sort(function(a,b){return a.distanceTo(tileCenter)-b.distanceTo(tileCenter)}),0!==queue.length){this._loading||(this._loading=!0,this.fire("loading"));var fragment=document.createDocumentFragment();for(i=0;i<queue.length;i++)this._addTile(queue[i],fragment);this._level.el.appendChild(fragment)}}}}},_isValidTile:function(coords){var crs=this._map.options.crs;if(!crs.infinite){var bounds=this._globalTileRange;if(!crs.wrapLng&&(coords.x<bounds.min.x||coords.x>bounds.max.x)||!crs.wrapLat&&(coords.y<bounds.min.y||coords.y>bounds.max.y))return!1}if(!this.options.bounds)return!0;var tileBounds=this._tileCoordsToBounds(coords);return toLatLngBounds(this.options.bounds).overlaps(tileBounds)},_keyToBounds:function(key){return this._tileCoordsToBounds(this._keyToTileCoords(key))},_tileCoordsToNwSe:function(coords){var map=this._map,tileSize=this.getTileSize(),nwPoint=coords.scaleBy(tileSize),sePoint=nwPoint.add(tileSize);return[map.unproject(nwPoint,coords.z),map.unproject(sePoint,coords.z)]},_tileCoordsToBounds:function(coords){var bp=this._tileCoordsToNwSe(coords),bounds=new LatLngBounds(bp[0],bp[1]);return this.options.noWrap||(bounds=this._map.wrapLatLngBounds(bounds)),bounds},_tileCoordsToKey:function(coords){return coords.x+":"+coords.y+":"+coords.z},_keyToTileCoords:function(key){var k=key.split(":"),coords=new Point(+k[0],+k[1]);return coords.z=+k[2],coords},_removeTile:function(key){var tile=this._tiles[key];tile&&(remove(tile.el),delete this._tiles[key],this.fire("tileunload",{tile:tile.el,coords:this._keyToTileCoords(key)}))},_initTile:function(tile){addClass(tile,"leaflet-tile");var tileSize=this.getTileSize();tile.style.width=tileSize.x+"px",tile.style.height=tileSize.y+"px",tile.onselectstart=falseFn,tile.onmousemove=falseFn,ielt9&&this.options.opacity<1&&setOpacity(tile,this.options.opacity),android&&!android23&&(tile.style.WebkitBackfaceVisibility="hidden")},_addTile:function(coords,container){var tilePos=this._getTilePos(coords),key=this._tileCoordsToKey(coords),tile=this.createTile(this._wrapCoords(coords),bind(this._tileReady,this,coords));this._initTile(tile),this.createTile.length<2&&requestAnimFrame(bind(this._tileReady,this,coords,null,tile)),setPosition(tile,tilePos),this._tiles[key]={el:tile,coords:coords,current:!0},container.appendChild(tile),this.fire("tileloadstart",{tile:tile,coords:coords})},_tileReady:function(coords,err,tile){err&&this.fire("tileerror",{error:err,tile:tile,coords:coords});var key=this._tileCoordsToKey(coords);(tile=this._tiles[key])&&(tile.loaded=+new Date,this._map._fadeAnimated?(setOpacity(tile.el,0),cancelAnimFrame(this._fadeFrame),this._fadeFrame=requestAnimFrame(this._updateOpacity,this)):(tile.active=!0,this._pruneTiles()),err||(addClass(tile.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:tile.el,coords:coords})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),ielt9||!this._map._fadeAnimated?requestAnimFrame(this._pruneTiles,this):setTimeout(bind(this._pruneTiles,this),250)))},_getTilePos:function(coords){return coords.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(coords){var newCoords=new Point(this._wrapX?wrapNum(coords.x,this._wrapX):coords.x,this._wrapY?wrapNum(coords.y,this._wrapY):coords.y);return newCoords.z=coords.z,newCoords},_pxBoundsToTileRange:function(bounds){var tileSize=this.getTileSize();return new Bounds(bounds.min.unscaleBy(tileSize).floor(),bounds.max.unscaleBy(tileSize).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var key in this._tiles)if(!this._tiles[key].loaded)return!1;return!0}});var TileLayer=GridLayer.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(url,options){this._url=url,(options=setOptions(this,options)).detectRetina&&retina&&options.maxZoom>0&&(options.tileSize=Math.floor(options.tileSize/2),options.zoomReverse?(options.zoomOffset--,options.minZoom++):(options.zoomOffset++,options.maxZoom--),options.minZoom=Math.max(0,options.minZoom)),"string"==typeof options.subdomains&&(options.subdomains=options.subdomains.split("")),android||this.on("tileunload",this._onTileRemove)},setUrl:function(url,noRedraw){return this._url===url&&void 0===noRedraw&&(noRedraw=!0),this._url=url,noRedraw||this.redraw(),this},createTile:function(coords,done){var tile=document.createElement("img");return on(tile,"load",bind(this._tileOnLoad,this,done,tile)),on(tile,"error",bind(this._tileOnError,this,done,tile)),(this.options.crossOrigin||""===this.options.crossOrigin)&&(tile.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),tile.alt="",tile.setAttribute("role","presentation"),tile.src=this.getTileUrl(coords),tile},getTileUrl:function(coords){var data={r:retina?"@2x":"",s:this._getSubdomain(coords),x:coords.x,y:coords.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var invertedY=this._globalTileRange.max.y-coords.y;this.options.tms&&(data.y=invertedY),data["-y"]=invertedY}return template(this._url,extend(data,this.options))},_tileOnLoad:function(done,tile){ielt9?setTimeout(bind(done,this,null,tile),0):done(null,tile)},_tileOnError:function(done,tile,e){var errorUrl=this.options.errorTileUrl;errorUrl&&tile.getAttribute("src")!==errorUrl&&(tile.src=errorUrl),done(e,tile)},_onTileRemove:function(e){e.tile.onload=null},_getZoomForUrl:function(){var zoom=this._tileZoom,maxZoom=this.options.maxZoom,zoomReverse=this.options.zoomReverse,zoomOffset=this.options.zoomOffset;return zoomReverse&&(zoom=maxZoom-zoom),zoom+zoomOffset},_getSubdomain:function(tilePoint){var index=Math.abs(tilePoint.x+tilePoint.y)%this.options.subdomains.length;return this.options.subdomains[index]},_abortLoading:function(){var i,tile;for(i in this._tiles)this._tiles[i].coords.z!==this._tileZoom&&((tile=this._tiles[i].el).onload=falseFn,tile.onerror=falseFn,tile.complete||(tile.src=emptyImageUrl,remove(tile),delete this._tiles[i]))},_removeTile:function(key){var tile=this._tiles[key];if(tile)return androidStock||tile.el.setAttribute("src",emptyImageUrl),GridLayer.prototype._removeTile.call(this,key)},_tileReady:function(coords,err,tile){if(this._map&&(!tile||tile.getAttribute("src")!==emptyImageUrl))return GridLayer.prototype._tileReady.call(this,coords,err,tile)}});function tileLayer(url,options){return new TileLayer(url,options)}var TileLayerWMS=TileLayer.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(url,options){this._url=url;var wmsParams=extend({},this.defaultWmsParams);for(var i in options)i in this.options||(wmsParams[i]=options[i]);var realRetina=(options=setOptions(this,options)).detectRetina&&retina?2:1,tileSize=this.getTileSize();wmsParams.width=tileSize.x*realRetina,wmsParams.height=tileSize.y*realRetina,this.wmsParams=wmsParams},onAdd:function(map){this._crs=this.options.crs||map.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var projectionKey=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[projectionKey]=this._crs.code,TileLayer.prototype.onAdd.call(this,map)},getTileUrl:function(coords){var tileBounds=this._tileCoordsToNwSe(coords),crs=this._crs,bounds=toBounds(crs.project(tileBounds[0]),crs.project(tileBounds[1])),min=bounds.min,max=bounds.max,bbox=(this._wmsVersion>=1.3&&this._crs===EPSG4326?[min.y,min.x,max.y,max.x]:[min.x,min.y,max.x,max.y]).join(","),url=TileLayer.prototype.getTileUrl.call(this,coords);return url+getParamString(this.wmsParams,url,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+bbox},setParams:function(params,noRedraw){return extend(this.wmsParams,params),noRedraw||this.redraw(),this}});TileLayer.WMS=TileLayerWMS,tileLayer.wms=function(url,options){return new TileLayerWMS(url,options)};var Renderer=Layer.extend({options:{padding:.1,tolerance:0},initialize:function(options){setOptions(this,options),stamp(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&addClass(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var events={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(events.zoomanim=this._onAnimZoom),events},_onAnimZoom:function(ev){this._updateTransform(ev.center,ev.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(center,zoom){var scale=this._map.getZoomScale(zoom,this._zoom),position=getPosition(this._container),viewHalf=this._map.getSize().multiplyBy(.5+this.options.padding),currentCenterPoint=this._map.project(this._center,zoom),centerOffset=this._map.project(center,zoom).subtract(currentCenterPoint),topLeftOffset=viewHalf.multiplyBy(-scale).add(position).add(viewHalf).subtract(centerOffset);any3d?setTransform(this._container,topLeftOffset,scale):setPosition(this._container,topLeftOffset)},_reset:function(){for(var id in this._update(),this._updateTransform(this._center,this._zoom),this._layers)this._layers[id]._reset()},_onZoomEnd:function(){for(var id in this._layers)this._layers[id]._project()},_updatePaths:function(){for(var id in this._layers)this._layers[id]._update()},_update:function(){var p=this.options.padding,size=this._map.getSize(),min=this._map.containerPointToLayerPoint(size.multiplyBy(-p)).round();this._bounds=new Bounds(min,min.add(size.multiplyBy(1+2*p)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),Canvas=Renderer.extend({getEvents:function(){var events=Renderer.prototype.getEvents.call(this);return events.viewprereset=this._onViewPreReset,events},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){Renderer.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var container=this._container=document.createElement("canvas");on(container,"mousemove",throttle(this._onMouseMove,32,this),this),on(container,"click dblclick mousedown mouseup contextmenu",this._onClick,this),on(container,"mouseout",this._handleMouseOut,this),this._ctx=container.getContext("2d")},_destroyContainer:function(){cancelAnimFrame(this._redrawRequest),delete this._ctx,remove(this._container),off(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){for(var id in this._redrawBounds=null,this._layers)this._layers[id]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){Renderer.prototype._update.call(this);var b=this._bounds,container=this._container,size=b.getSize(),m=retina?2:1;setPosition(container,b.min),container.width=m*size.x,container.height=m*size.y,container.style.width=size.x+"px",container.style.height=size.y+"px",retina&&this._ctx.scale(2,2),this._ctx.translate(-b.min.x,-b.min.y),this.fire("update")}},_reset:function(){Renderer.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(layer){this._updateDashArray(layer),this._layers[stamp(layer)]=layer;var order=layer._order={layer:layer,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=order),this._drawLast=order,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(layer){this._requestRedraw(layer)},_removePath:function(layer){var order=layer._order,next=order.next,prev=order.prev;next?next.prev=prev:this._drawLast=prev,prev?prev.next=next:this._drawFirst=next,delete layer._order,delete this._layers[stamp(layer)],this._requestRedraw(layer)},_updatePath:function(layer){this._extendRedrawBounds(layer),layer._project(),layer._update(),this._requestRedraw(layer)},_updateStyle:function(layer){this._updateDashArray(layer),this._requestRedraw(layer)},_updateDashArray:function(layer){if("string"==typeof layer.options.dashArray){var dashValue,i,parts=layer.options.dashArray.split(/[, ]+/),dashArray=[];for(i=0;i<parts.length;i++){if(dashValue=Number(parts[i]),isNaN(dashValue))return;dashArray.push(dashValue)}layer.options._dashArray=dashArray}else layer.options._dashArray=layer.options.dashArray},_requestRedraw:function(layer){this._map&&(this._extendRedrawBounds(layer),this._redrawRequest=this._redrawRequest||requestAnimFrame(this._redraw,this))},_extendRedrawBounds:function(layer){if(layer._pxBounds){var padding=(layer.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new Bounds,this._redrawBounds.extend(layer._pxBounds.min.subtract([padding,padding])),this._redrawBounds.extend(layer._pxBounds.max.add([padding,padding]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var bounds=this._redrawBounds;if(bounds){var size=bounds.getSize();this._ctx.clearRect(bounds.min.x,bounds.min.y,size.x,size.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var layer,bounds=this._redrawBounds;if(this._ctx.save(),bounds){var size=bounds.getSize();this._ctx.beginPath(),this._ctx.rect(bounds.min.x,bounds.min.y,size.x,size.y),this._ctx.clip()}this._drawing=!0;for(var order=this._drawFirst;order;order=order.next)layer=order.layer,(!bounds||layer._pxBounds&&layer._pxBounds.intersects(bounds))&&layer._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(layer,closed){if(this._drawing){var i,j,len2,p,parts=layer._parts,len=parts.length,ctx=this._ctx;if(len){for(ctx.beginPath(),i=0;i<len;i++){for(j=0,len2=parts[i].length;j<len2;j++)p=parts[i][j],ctx[j?"lineTo":"moveTo"](p.x,p.y);closed&&ctx.closePath()}this._fillStroke(ctx,layer)}}},_updateCircle:function(layer){if(this._drawing&&!layer._empty()){var p=layer._point,ctx=this._ctx,r=Math.max(Math.round(layer._radius),1),s=(Math.max(Math.round(layer._radiusY),1)||r)/r;1!==s&&(ctx.save(),ctx.scale(1,s)),ctx.beginPath(),ctx.arc(p.x,p.y/s,r,0,2*Math.PI,!1),1!==s&&ctx.restore(),this._fillStroke(ctx,layer)}},_fillStroke:function(ctx,layer){var options=layer.options;options.fill&&(ctx.globalAlpha=options.fillOpacity,ctx.fillStyle=options.fillColor||options.color,ctx.fill(options.fillRule||"evenodd")),options.stroke&&0!==options.weight&&(ctx.setLineDash&&ctx.setLineDash(layer.options&&layer.options._dashArray||[]),ctx.globalAlpha=options.opacity,ctx.lineWidth=options.weight,ctx.strokeStyle=options.color,ctx.lineCap=options.lineCap,ctx.lineJoin=options.lineJoin,ctx.stroke())},_onClick:function(e){for(var layer,clickedLayer,point=this._map.mouseEventToLayerPoint(e),order=this._drawFirst;order;order=order.next)(layer=order.layer).options.interactive&&layer._containsPoint(point)&&!this._map._draggableMoved(layer)&&(clickedLayer=layer);clickedLayer&&(fakeStop(e),this._fireEvent([clickedLayer],e))},_onMouseMove:function(e){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var point=this._map.mouseEventToLayerPoint(e);this._handleMouseHover(e,point)}},_handleMouseOut:function(e){var layer=this._hoveredLayer;layer&&(removeClass(this._container,"leaflet-interactive"),this._fireEvent([layer],e,"mouseout"),this._hoveredLayer=null)},_handleMouseHover:function(e,point){for(var layer,candidateHoveredLayer,order=this._drawFirst;order;order=order.next)(layer=order.layer).options.interactive&&layer._containsPoint(point)&&(candidateHoveredLayer=layer);candidateHoveredLayer!==this._hoveredLayer&&(this._handleMouseOut(e),candidateHoveredLayer&&(addClass(this._container,"leaflet-interactive"),this._fireEvent([candidateHoveredLayer],e,"mouseover"),this._hoveredLayer=candidateHoveredLayer)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],e)},_fireEvent:function(layers,e,type){this._map._fireDOMEvent(e,type||e.type,layers)},_bringToFront:function(layer){var order=layer._order;if(order){var next=order.next,prev=order.prev;next&&(next.prev=prev,prev?prev.next=next:next&&(this._drawFirst=next),order.prev=this._drawLast,this._drawLast.next=order,order.next=null,this._drawLast=order,this._requestRedraw(layer))}},_bringToBack:function(layer){var order=layer._order;if(order){var next=order.next,prev=order.prev;prev&&(prev.next=next,next?next.prev=prev:prev&&(this._drawLast=prev),order.prev=null,order.next=this._drawFirst,this._drawFirst.prev=order,this._drawFirst=order,this._requestRedraw(layer))}}});function canvas$1(options){return canvas?new Canvas(options):null}var vmlCreate=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(name){return document.createElement("<lvml:"+name+' class="lvml">')}}catch(e){return function(name){return document.createElement("<"+name+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),vmlMixin={_initContainer:function(){this._container=create$1("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Renderer.prototype._update.call(this),this.fire("update"))},_initPath:function(layer){var container=layer._container=vmlCreate("shape");addClass(container,"leaflet-vml-shape "+(this.options.className||"")),container.coordsize="1 1",layer._path=vmlCreate("path"),container.appendChild(layer._path),this._updateStyle(layer),this._layers[stamp(layer)]=layer},_addPath:function(layer){var container=layer._container;this._container.appendChild(container),layer.options.interactive&&layer.addInteractiveTarget(container)},_removePath:function(layer){var container=layer._container;remove(container),layer.removeInteractiveTarget(container),delete this._layers[stamp(layer)]},_updateStyle:function(layer){var stroke=layer._stroke,fill=layer._fill,options=layer.options,container=layer._container;container.stroked=!!options.stroke,container.filled=!!options.fill,options.stroke?(stroke||(stroke=layer._stroke=vmlCreate("stroke")),container.appendChild(stroke),stroke.weight=options.weight+"px",stroke.color=options.color,stroke.opacity=options.opacity,options.dashArray?stroke.dashStyle=isArray(options.dashArray)?options.dashArray.join(" "):options.dashArray.replace(/( *, *)/g," "):stroke.dashStyle="",stroke.endcap=options.lineCap.replace("butt","flat"),stroke.joinstyle=options.lineJoin):stroke&&(container.removeChild(stroke),layer._stroke=null),options.fill?(fill||(fill=layer._fill=vmlCreate("fill")),container.appendChild(fill),fill.color=options.fillColor||options.color,fill.opacity=options.fillOpacity):fill&&(container.removeChild(fill),layer._fill=null)},_updateCircle:function(layer){var p=layer._point.round(),r=Math.round(layer._radius),r2=Math.round(layer._radiusY||r);this._setPath(layer,layer._empty()?"M0 0":"AL "+p.x+","+p.y+" "+r+","+r2+" 0,23592600")},_setPath:function(layer,path){layer._path.v=path},_bringToFront:function(layer){toFront(layer._container)},_bringToBack:function(layer){toBack(layer._container)}},create$2=vml?vmlCreate:svgCreate,SVG=Renderer.extend({getEvents:function(){var events=Renderer.prototype.getEvents.call(this);return events.zoomstart=this._onZoomStart,events},_initContainer:function(){this._container=create$2("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=create$2("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){remove(this._container),off(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){Renderer.prototype._update.call(this);var b=this._bounds,size=b.getSize(),container=this._container;this._svgSize&&this._svgSize.equals(size)||(this._svgSize=size,container.setAttribute("width",size.x),container.setAttribute("height",size.y)),setPosition(container,b.min),container.setAttribute("viewBox",[b.min.x,b.min.y,size.x,size.y].join(" ")),this.fire("update")}},_initPath:function(layer){var path=layer._path=create$2("path");layer.options.className&&addClass(path,layer.options.className),layer.options.interactive&&addClass(path,"leaflet-interactive"),this._updateStyle(layer),this._layers[stamp(layer)]=layer},_addPath:function(layer){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(layer._path),layer.addInteractiveTarget(layer._path)},_removePath:function(layer){remove(layer._path),layer.removeInteractiveTarget(layer._path),delete this._layers[stamp(layer)]},_updatePath:function(layer){layer._project(),layer._update()},_updateStyle:function(layer){var path=layer._path,options=layer.options;path&&(options.stroke?(path.setAttribute("stroke",options.color),path.setAttribute("stroke-opacity",options.opacity),path.setAttribute("stroke-width",options.weight),path.setAttribute("stroke-linecap",options.lineCap),path.setAttribute("stroke-linejoin",options.lineJoin),options.dashArray?path.setAttribute("stroke-dasharray",options.dashArray):path.removeAttribute("stroke-dasharray"),options.dashOffset?path.setAttribute("stroke-dashoffset",options.dashOffset):path.removeAttribute("stroke-dashoffset")):path.setAttribute("stroke","none"),options.fill?(path.setAttribute("fill",options.fillColor||options.color),path.setAttribute("fill-opacity",options.fillOpacity),path.setAttribute("fill-rule",options.fillRule||"evenodd")):path.setAttribute("fill","none"))},_updatePoly:function(layer,closed){this._setPath(layer,pointsToPath(layer._parts,closed))},_updateCircle:function(layer){var p=layer._point,r=Math.max(Math.round(layer._radius),1),arc="a"+r+","+(Math.max(Math.round(layer._radiusY),1)||r)+" 0 1,0 ",d=layer._empty()?"M0 0":"M"+(p.x-r)+","+p.y+arc+2*r+",0 "+arc+2*-r+",0 ";this._setPath(layer,d)},_setPath:function(layer,path){layer._path.setAttribute("d",path)},_bringToFront:function(layer){toFront(layer._path)},_bringToBack:function(layer){toBack(layer._path)}});function svg$1(options){return svg||vml?new SVG(options):null}vml&&SVG.include(vmlMixin),Map.include({getRenderer:function(layer){var renderer=layer.options.renderer||this._getPaneRenderer(layer.options.pane)||this.options.renderer||this._renderer;return renderer||(renderer=this._renderer=this._createRenderer()),this.hasLayer(renderer)||this.addLayer(renderer),renderer},_getPaneRenderer:function(name){if("overlayPane"===name||void 0===name)return!1;var renderer=this._paneRenderers[name];return void 0===renderer&&(renderer=this._createRenderer({pane:name}),this._paneRenderers[name]=renderer),renderer},_createRenderer:function(options){return this.options.preferCanvas&&canvas$1(options)||svg$1(options)}});var Rectangle=Polygon.extend({initialize:function(latLngBounds,options){Polygon.prototype.initialize.call(this,this._boundsToLatLngs(latLngBounds),options)},setBounds:function(latLngBounds){return this.setLatLngs(this._boundsToLatLngs(latLngBounds))},_boundsToLatLngs:function(latLngBounds){return[(latLngBounds=toLatLngBounds(latLngBounds)).getSouthWest(),latLngBounds.getNorthWest(),latLngBounds.getNorthEast(),latLngBounds.getSouthEast()]}});SVG.create=create$2,SVG.pointsToPath=pointsToPath,GeoJSON.geometryToLayer=geometryToLayer,GeoJSON.coordsToLatLng=coordsToLatLng,GeoJSON.coordsToLatLngs=coordsToLatLngs,GeoJSON.latLngToCoords=latLngToCoords,GeoJSON.latLngsToCoords=latLngsToCoords,GeoJSON.getFeature=getFeature,GeoJSON.asFeature=asFeature,Map.mergeOptions({boxZoom:!0});var BoxZoom=Handler.extend({initialize:function(map){this._map=map,this._container=map._container,this._pane=map._panes.overlayPane,this._resetStateTimeout=0,map.on("unload",this._destroy,this)},addHooks:function(){on(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){off(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){remove(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(e){if(!e.shiftKey||1!==e.which&&1!==e.button)return!1;this._clearDeferredResetState(),this._resetState(),disableTextSelection(),disableImageDrag(),this._startPoint=this._map.mouseEventToContainerPoint(e),on(document,{contextmenu:stop,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(e){this._moved||(this._moved=!0,this._box=create$1("div","leaflet-zoom-box",this._container),addClass(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(e);var bounds=new Bounds(this._point,this._startPoint),size=bounds.getSize();setPosition(this._box,bounds.min),this._box.style.width=size.x+"px",this._box.style.height=size.y+"px"},_finish:function(){this._moved&&(remove(this._box),removeClass(this._container,"leaflet-crosshair")),enableTextSelection(),enableImageDrag(),off(document,{contextmenu:stop,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(e){if((1===e.which||1===e.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(bind(this._resetState,this),0);var bounds=new LatLngBounds(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(bounds).fire("boxzoomend",{boxZoomBounds:bounds})}},_onKeyDown:function(e){27===e.keyCode&&this._finish()}});Map.addInitHook("addHandler","boxZoom",BoxZoom),Map.mergeOptions({doubleClickZoom:!0});var DoubleClickZoom=Handler.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(e){var map=this._map,oldZoom=map.getZoom(),delta=map.options.zoomDelta,zoom=e.originalEvent.shiftKey?oldZoom-delta:oldZoom+delta;"center"===map.options.doubleClickZoom?map.setZoom(zoom):map.setZoomAround(e.containerPoint,zoom)}});Map.addInitHook("addHandler","doubleClickZoom",DoubleClickZoom),Map.mergeOptions({dragging:!0,inertia:!android23,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var Drag=Handler.extend({addHooks:function(){if(!this._draggable){var map=this._map;this._draggable=new Draggable(map._mapPane,map._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),map.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),map.on("zoomend",this._onZoomEnd,this),map.whenReady(this._onZoomEnd,this))}addClass(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){removeClass(this._map._container,"leaflet-grab"),removeClass(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var map=this._map;if(map._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var bounds=toLatLngBounds(this._map.options.maxBounds);this._offsetLimit=toBounds(this._map.latLngToContainerPoint(bounds.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(bounds.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;map.fire("movestart").fire("dragstart"),map.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(e){if(this._map.options.inertia){var time=this._lastTime=+new Date,pos=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(pos),this._times.push(time),this._prunePositions(time)}this._map.fire("move",e).fire("drag",e)},_prunePositions:function(time){for(;this._positions.length>1&&time-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var pxCenter=this._map.getSize().divideBy(2),pxWorldCenter=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=pxWorldCenter.subtract(pxCenter).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(value,threshold){return value-(value-threshold)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var offset=this._draggable._newPos.subtract(this._draggable._startPos),limit=this._offsetLimit;offset.x<limit.min.x&&(offset.x=this._viscousLimit(offset.x,limit.min.x)),offset.y<limit.min.y&&(offset.y=this._viscousLimit(offset.y,limit.min.y)),offset.x>limit.max.x&&(offset.x=this._viscousLimit(offset.x,limit.max.x)),offset.y>limit.max.y&&(offset.y=this._viscousLimit(offset.y,limit.max.y)),this._draggable._newPos=this._draggable._startPos.add(offset)}},_onPreDragWrap:function(){var worldWidth=this._worldWidth,halfWidth=Math.round(worldWidth/2),dx=this._initialWorldOffset,x=this._draggable._newPos.x,newX1=(x-halfWidth+dx)%worldWidth+halfWidth-dx,newX2=(x+halfWidth+dx)%worldWidth-halfWidth-dx,newX=Math.abs(newX1+dx)<Math.abs(newX2+dx)?newX1:newX2;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=newX},_onDragEnd:function(e){var map=this._map,options=map.options,noInertia=!options.inertia||this._times.length<2;if(map.fire("dragend",e),noInertia)map.fire("moveend");else{this._prunePositions(+new Date);var direction=this._lastPos.subtract(this._positions[0]),duration=(this._lastTime-this._times[0])/1e3,ease=options.easeLinearity,speedVector=direction.multiplyBy(ease/duration),speed=speedVector.distanceTo([0,0]),limitedSpeed=Math.min(options.inertiaMaxSpeed,speed),limitedSpeedVector=speedVector.multiplyBy(limitedSpeed/speed),decelerationDuration=limitedSpeed/(options.inertiaDeceleration*ease),offset=limitedSpeedVector.multiplyBy(-decelerationDuration/2).round();offset.x||offset.y?(offset=map._limitOffset(offset,map.options.maxBounds),requestAnimFrame(function(){map.panBy(offset,{duration:decelerationDuration,easeLinearity:ease,noMoveStart:!0,animate:!0})})):map.fire("moveend")}}});Map.addInitHook("addHandler","dragging",Drag),Map.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Keyboard=Handler.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(map){this._map=map,this._setPanDelta(map.options.keyboardPanDelta),this._setZoomDelta(map.options.zoomDelta)},addHooks:function(){var container=this._map._container;container.tabIndex<=0&&(container.tabIndex="0"),on(container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),off(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var body=document.body,docEl=document.documentElement,top=body.scrollTop||docEl.scrollTop,left=body.scrollLeft||docEl.scrollLeft;this._map._container.focus(),window.scrollTo(left,top)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(panDelta){var i,len,keys=this._panKeys={},codes=this.keyCodes;for(i=0,len=codes.left.length;i<len;i++)keys[codes.left[i]]=[-1*panDelta,0];for(i=0,len=codes.right.length;i<len;i++)keys[codes.right[i]]=[panDelta,0];for(i=0,len=codes.down.length;i<len;i++)keys[codes.down[i]]=[0,panDelta];for(i=0,len=codes.up.length;i<len;i++)keys[codes.up[i]]=[0,-1*panDelta]},_setZoomDelta:function(zoomDelta){var i,len,keys=this._zoomKeys={},codes=this.keyCodes;for(i=0,len=codes.zoomIn.length;i<len;i++)keys[codes.zoomIn[i]]=zoomDelta;for(i=0,len=codes.zoomOut.length;i<len;i++)keys[codes.zoomOut[i]]=-zoomDelta},_addHooks:function(){on(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){off(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(e){if(!(e.altKey||e.ctrlKey||e.metaKey)){var offset,key=e.keyCode,map=this._map;if(key in this._panKeys)map._panAnim&&map._panAnim._inProgress||(offset=this._panKeys[key],e.shiftKey&&(offset=toPoint(offset).multiplyBy(3)),map.panBy(offset),map.options.maxBounds&&map.panInsideBounds(map.options.maxBounds));else if(key in this._zoomKeys)map.setZoom(map.getZoom()+(e.shiftKey?3:1)*this._zoomKeys[key]);else{if(27!==key||!map._popup||!map._popup.options.closeOnEscapeKey)return;map.closePopup()}stop(e)}}});Map.addInitHook("addHandler","keyboard",Keyboard),Map.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var ScrollWheelZoom=Handler.extend({addHooks:function(){on(this._map._container,"mousewheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){off(this._map._container,"mousewheel",this._onWheelScroll,this)},_onWheelScroll:function(e){var delta=getWheelDelta(e),debounce=this._map.options.wheelDebounceTime;this._delta+=delta,this._lastMousePos=this._map.mouseEventToContainerPoint(e),this._startTime||(this._startTime=+new Date);var left=Math.max(debounce-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(bind(this._performZoom,this),left),stop(e)},_performZoom:function(){var map=this._map,zoom=map.getZoom(),snap=this._map.options.zoomSnap||0;map._stop();var d2=this._delta/(4*this._map.options.wheelPxPerZoomLevel),d3=4*Math.log(2/(1+Math.exp(-Math.abs(d2))))/Math.LN2,d4=snap?Math.ceil(d3/snap)*snap:d3,delta=map._limitZoom(zoom+(this._delta>0?d4:-d4))-zoom;this._delta=0,this._startTime=null,delta&&("center"===map.options.scrollWheelZoom?map.setZoom(zoom+delta):map.setZoomAround(this._lastMousePos,zoom+delta))}});Map.addInitHook("addHandler","scrollWheelZoom",ScrollWheelZoom),Map.mergeOptions({tap:!0,tapTolerance:15});var Tap=Handler.extend({addHooks:function(){on(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){off(this._map._container,"touchstart",this._onDown,this)},_onDown:function(e){if(e.touches){if(preventDefault(e),this._fireClick=!0,e.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var first=e.touches[0],el=first.target;this._startPos=this._newPos=new Point(first.clientX,first.clientY),el.tagName&&"a"===el.tagName.toLowerCase()&&addClass(el,"leaflet-active"),this._holdTimeout=setTimeout(bind(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",first))},this),1e3),this._simulateEvent("mousedown",first),on(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(e){if(clearTimeout(this._holdTimeout),off(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&e&&e.changedTouches){var first=e.changedTouches[0],el=first.target;el&&el.tagName&&"a"===el.tagName.toLowerCase()&&removeClass(el,"leaflet-active"),this._simulateEvent("mouseup",first),this._isTapValid()&&this._simulateEvent("click",first)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(e){var first=e.touches[0];this._newPos=new Point(first.clientX,first.clientY),this._simulateEvent("mousemove",first)},_simulateEvent:function(type,e){var simulatedEvent=document.createEvent("MouseEvents");simulatedEvent._simulated=!0,e.target._simulatedClick=!0,simulatedEvent.initMouseEvent(type,!0,!0,window,1,e.screenX,e.screenY,e.clientX,e.clientY,!1,!1,!1,!1,0,null),e.target.dispatchEvent(simulatedEvent)}});touch&&!pointer&&Map.addInitHook("addHandler","tap",Tap),Map.mergeOptions({touchZoom:touch&&!android23,bounceAtZoomLimits:!0});var TouchZoom=Handler.extend({addHooks:function(){addClass(this._map._container,"leaflet-touch-zoom"),on(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){removeClass(this._map._container,"leaflet-touch-zoom"),off(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(e){var map=this._map;if(e.touches&&2===e.touches.length&&!map._animatingZoom&&!this._zooming){var p1=map.mouseEventToContainerPoint(e.touches[0]),p2=map.mouseEventToContainerPoint(e.touches[1]);this._centerPoint=map.getSize()._divideBy(2),this._startLatLng=map.containerPointToLatLng(this._centerPoint),"center"!==map.options.touchZoom&&(this._pinchStartLatLng=map.containerPointToLatLng(p1.add(p2)._divideBy(2))),this._startDist=p1.distanceTo(p2),this._startZoom=map.getZoom(),this._moved=!1,this._zooming=!0,map._stop(),on(document,"touchmove",this._onTouchMove,this),on(document,"touchend",this._onTouchEnd,this),preventDefault(e)}},_onTouchMove:function(e){if(e.touches&&2===e.touches.length&&this._zooming){var map=this._map,p1=map.mouseEventToContainerPoint(e.touches[0]),p2=map.mouseEventToContainerPoint(e.touches[1]),scale=p1.distanceTo(p2)/this._startDist;if(this._zoom=map.getScaleZoom(scale,this._startZoom),!map.options.bounceAtZoomLimits&&(this._zoom<map.getMinZoom()&&scale<1||this._zoom>map.getMaxZoom()&&scale>1)&&(this._zoom=map._limitZoom(this._zoom)),"center"===map.options.touchZoom){if(this._center=this._startLatLng,1===scale)return}else{var delta=p1._add(p2)._divideBy(2)._subtract(this._centerPoint);if(1===scale&&0===delta.x&&0===delta.y)return;this._center=map.unproject(map.project(this._pinchStartLatLng,this._zoom).subtract(delta),this._zoom)}this._moved||(map._moveStart(!0,!1),this._moved=!0),cancelAnimFrame(this._animRequest);var moveFn=bind(map._move,map,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=requestAnimFrame(moveFn,this,!0),preventDefault(e)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,cancelAnimFrame(this._animRequest),off(document,"touchmove",this._onTouchMove),off(document,"touchend",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});Map.addInitHook("addHandler","touchZoom",TouchZoom),Map.BoxZoom=BoxZoom,Map.DoubleClickZoom=DoubleClickZoom,Map.Drag=Drag,Map.Keyboard=Keyboard,Map.ScrollWheelZoom=ScrollWheelZoom,Map.Tap=Tap,Map.TouchZoom=TouchZoom,Object.freeze=freeze,exports.version="1.4.0",exports.Control=Control,exports.control=control,exports.Browser=Browser,exports.Evented=Evented,exports.Mixin=Mixin,exports.Util=Util,exports.Class=Class,exports.Handler=Handler,exports.extend=extend,exports.bind=bind,exports.stamp=stamp,exports.setOptions=setOptions,exports.DomEvent=DomEvent,exports.DomUtil=DomUtil,exports.PosAnimation=PosAnimation,exports.Draggable=Draggable,exports.LineUtil=LineUtil,exports.PolyUtil=PolyUtil,exports.Point=Point,exports.point=toPoint,exports.Bounds=Bounds,exports.bounds=toBounds,exports.Transformation=Transformation,exports.transformation=toTransformation,exports.Projection=index,exports.LatLng=LatLng,exports.latLng=toLatLng,exports.LatLngBounds=LatLngBounds,exports.latLngBounds=toLatLngBounds,exports.CRS=CRS,exports.GeoJSON=GeoJSON,exports.geoJSON=geoJSON,exports.geoJson=geoJson,exports.Layer=Layer,exports.LayerGroup=LayerGroup,exports.layerGroup=function(layers,options){return new LayerGroup(layers,options)},exports.FeatureGroup=FeatureGroup,exports.featureGroup=function(layers){return new FeatureGroup(layers)},exports.ImageOverlay=ImageOverlay,exports.imageOverlay=function(url,bounds,options){return new ImageOverlay(url,bounds,options)},exports.VideoOverlay=VideoOverlay,exports.videoOverlay=function(video,bounds,options){return new VideoOverlay(video,bounds,options)},exports.DivOverlay=DivOverlay,exports.Popup=Popup,exports.popup=function(options,source){return new Popup(options,source)},exports.Tooltip=Tooltip,exports.tooltip=function(options,source){return new Tooltip(options,source)},exports.Icon=Icon,exports.icon=function(options){return new Icon(options)},exports.DivIcon=DivIcon,exports.divIcon=function(options){return new DivIcon(options)},exports.Marker=Marker,exports.marker=function(latlng,options){return new Marker(latlng,options)},exports.TileLayer=TileLayer,exports.tileLayer=tileLayer,exports.GridLayer=GridLayer,exports.gridLayer=function(options){return new GridLayer(options)},exports.SVG=SVG,exports.svg=svg$1,exports.Renderer=Renderer,exports.Canvas=Canvas,exports.canvas=canvas$1,exports.Path=Path,exports.CircleMarker=CircleMarker,exports.circleMarker=function(latlng,options){return new CircleMarker(latlng,options)},exports.Circle=Circle,exports.circle=function(latlng,options,legacyOptions){return new Circle(latlng,options,legacyOptions)},exports.Polyline=Polyline,exports.polyline=function(latlngs,options){return new Polyline(latlngs,options)},exports.Polygon=Polygon,exports.polygon=function(latlngs,options){return new Polygon(latlngs,options)},exports.Rectangle=Rectangle,exports.rectangle=function(latLngBounds,options){return new Rectangle(latLngBounds,options)},exports.Map=Map,exports.map=function(id,options){return new Map(id,options)};var oldL=window.L;exports.noConflict=function(){return window.L=oldL,this},window.L=exports},"object"==typeof exports&&void 0!==module?factory(exports):"function"==typeof define&&define.amd?define(["exports"],factory):factory(global.L={})},{}],4:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var K0=.9996,E=.00669438,E2=Math.pow(E,2),E3=Math.pow(E,3),E_P2=E/(1-E),SQRT_E=Math.sqrt(1-E),_E=(1-SQRT_E)/(1+SQRT_E),_E2=Math.pow(_E,2),_E3=Math.pow(_E,3),_E4=Math.pow(_E,4),_E5=Math.pow(_E,5),M1=1-E/4-3*E2/64-5*E3/256,M2=3*E/8+3*E2/32+45*E3/1024,M3=15*E2/256+45*E3/1024,M4=35*E3/3072,P2=1.5*_E-27/32*_E3+269/512*_E5,P3=21/16*_E2-55/32*_E4,P4=151/96*_E3-417/128*_E5,P5=1097/512*_E4,R=6378137,ZONE_LETTERS="CDEFGHJKLMNPQRSTUVWXX";function zoneNumberToCentralLongitude(zoneNum){return 6*(zoneNum-1)-180+3}function toDegrees(rad){return rad/Math.PI*180}function toRadians(deg){return deg*Math.PI/180}exports.toLatLon=function(easting,northing,zoneNum,zoneLetter,northern,strict){if(strict=void 0===strict||strict,!zoneLetter&&void 0===northern)throw new Error("either zoneLetter or northern needs to be set");if(zoneLetter&&void 0!==northern)throw new Error("set either zoneLetter or northern, but not both");if(strict){if(easting<1e5||1e6<=easting)throw new RangeError("easting out of range (must be between 100 000 m and 999 999 m)");if(northing<0||northing>1e7)throw new RangeError("northing out of range (must be between 0 m and 10 000 000 m)")}if(zoneNum<1||zoneNum>60)throw new RangeError("zone number out of range (must be between 1 and 60)");if(zoneLetter){if(1!==(zoneLetter=zoneLetter.toUpperCase()).length||-1===ZONE_LETTERS.indexOf(zoneLetter))throw new RangeError("zone letter out of range (must be between C and X)");northern=zoneLetter>="N"}var x=easting-5e5,y=northing;northern||(y-=1e7);var mu=y/K0/(R*M1),pRad=mu+P2*Math.sin(2*mu)+P3*Math.sin(4*mu)+P4*Math.sin(6*mu)+P5*Math.sin(8*mu),pSin=Math.sin(pRad),pSin2=Math.pow(pSin,2),pCos=Math.cos(pRad),pTan=Math.tan(pRad),pTan2=Math.pow(pTan,2),pTan4=Math.pow(pTan,4),epSin=1-E*pSin2,epSinSqrt=Math.sqrt(epSin),r=(1-E)/epSin,c=_E*pCos*pCos,c2=c*c,d=x/(R/epSinSqrt*K0),d2=Math.pow(d,2),d3=Math.pow(d,3),d4=Math.pow(d,4),d5=Math.pow(d,5),d6=Math.pow(d,6),longitude=(d-d3/6*(1+2*pTan2+c)+d5/120*(5-2*c+28*pTan2-3*c2+8*E_P2+24*pTan4))/pCos;return{latitude:toDegrees(pRad-pTan/r*(d2/2-d4/24*(5+3*pTan2+10*c-4*c2-9*E_P2))+d6/720*(61+90*pTan2+298*c+45*pTan4-252*E_P2-3*c2)),longitude:toDegrees(longitude)+zoneNumberToCentralLongitude(zoneNum)}},exports.fromLatLon=function(latitude,longitude,forceZoneNum){if(latitude>84||latitude<-80)throw new RangeError("latitude out of range (must be between 80 deg S and 84 deg N)");if(longitude>180||longitude<-180)throw new RangeError("longitude out of range (must be between 180 deg W and 180 deg E)");var zoneNum,latRad=toRadians(latitude),latSin=Math.sin(latRad),latCos=Math.cos(latRad),latTan=Math.tan(latRad),latTan2=Math.pow(latTan,2),latTan4=Math.pow(latTan,4);zoneNum=void 0===forceZoneNum?function(latitude,longitude){if(56<=latitude&&latitude<64&&3<=longitude&&longitude<12)return 32;if(72<=latitude&&latitude<=84&&longitude>=0){if(longitude<9)return 31;if(longitude<21)return 33;if(longitude<33)return 35;if(longitude<42)return 37}return Math.floor((longitude+180)/6)+1}(latitude,longitude):forceZoneNum;var zoneLetter=function(latitude){return-80<=latitude&&latitude<=84?ZONE_LETTERS[Math.floor((latitude+80)/8)]:null}(latitude),lonRad=toRadians(longitude),centralLonRad=toRadians(zoneNumberToCentralLongitude(zoneNum)),n=R/Math.sqrt(1-E*latSin*latSin),c=E_P2*latCos*latCos,a=latCos*(lonRad-centralLonRad),a2=Math.pow(a,2),a3=Math.pow(a,3),a4=Math.pow(a,4),a5=Math.pow(a,5),a6=Math.pow(a,6),m=R*(M1*latRad-M2*Math.sin(2*latRad)+M3*Math.sin(4*latRad)-M4*Math.sin(6*latRad)),northing=K0*(m+n*latTan*(a2/2+a4/24*(5-latTan2+9*c+4*c*c)+a6/720*(61-58*latTan2+latTan4+600*c-330*E_P2)));return latitude<0&&(northing+=1e7),{easting:K0*n*(a+a3/6*(1-latTan2+c)+a5/120*(5-18*latTan2+latTan4+72*c-58*E_P2))+5e5,northing:northing,zoneNum:zoneNum,zoneLetter:zoneLetter}}},{}],5:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const main_1=require("./main");exports.default=class{constructor(Raw){this.Name=Raw.designation,this.Id=Raw.id,main_1.DEBUG&&console.log(`new Asset() with Id = ${this.Id}`)}}},{"./main":13}],6:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const Helpers_1=require("./Helpers"),main_1=require("./main");exports.default=class{constructor(Raw){try{let footprintCoords=[Raw.path.map(p=>[Helpers_1.Helpers.Calculations.RadToDeg(p.lon),Helpers_1.Helpers.Calculations.RadToDeg(p.lat)])];footprintCoords[0].push([Helpers_1.Helpers.Calculations.RadToDeg(Raw.path[0].lon),Helpers_1.Helpers.Calculations.RadToDeg(Raw.path[0].lat)]),this.Footprint={type:"Feature",properties:{name:Raw.designation},geometry:{type:"Polygon",coordinates:footprintCoords}}}catch(_a){this.Footprint=null}this.RefPoint=new Helpers_1.Helpers.Coordinates.LatLon(Helpers_1.Helpers.Calculations.RadToDeg(Raw.refPoint.lat),Helpers_1.Helpers.Calculations.RadToDeg(Raw.refPoint.lon)).ToUtm(),this.Name=Raw.designation,this.Id=Raw.id,this.RotationDegree=Raw.rotationDegree,main_1.DEBUG&&console.log(`new Building() with Id = ${this.Id}`)}}},{"./Helpers":8,"./main":13}],7:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const Helpers_1=require("./Helpers");!function(Functions){async function checkForPort(ip){return new Promise(async(resolve,reject)=>{new Helpers_1.Helpers.WebSocketRequest(ip,JSON.stringify({type:"servicePortsInformationRequest",uuid:Helpers_1.Helpers.GenUuid()})).GetResponseAsync().then(response=>{for(let p of JSON.parse(response).data[0].services)if("ism"===p.nameAbbrevation)return resolve(p.ports[0].number);return reject()}).catch(()=>reject())})}async function loadData(ip){return new Promise((resolve,reject)=>{new Helpers_1.Helpers.WebSocketRequest(ip,JSON.stringify({type:"getEssentials",uuid:Helpers_1.Helpers.GenUuid()})).GetResponseAsync().then(data=>resolve(JSON.parse(data).data)).catch(()=>reject())})}Functions.GetData=async function(){return new Promise(async(resolve,reject)=>{var data;try{let serverIp=await async function(tryLocalhostFirst){return new Promise((resolve,reject)=>{const localhost="ws://localhost",defaultIp="ws://192.168.133.140";tryLocalhostFirst?checkForPort(`${localhost}:7300`).then(port=>resolve(`${localhost}:${port}`)).catch(()=>checkForPort(`${defaultIp}:7300`).then(port=>resolve(`${defaultIp}:${port}`)).catch(()=>reject())):checkForPort(`${defaultIp}:7300`).then(port=>resolve(`${defaultIp}:${port}`)).catch(()=>checkForPort(`${localhost}:7300`).then(port=>resolve(`${localhost}:${port}`)).catch(()=>reject()))})}(!Helpers_1.MOBILE);data=await loadData(serverIp),webSocketIp=serverIp}catch(_a){try{data=function(key){let value=window.localStorage.getItem(key);if(Helpers_1._(value))throw new Error;return JSON.parse(unescape(value))}("data")}catch(_b){data=await async function(){return new Promise(async(resolve,reject)=>{let data,serverIp="ws://192.168.133.140:2080";do{serverIp=prompt("Unable to load data automatically. Please enter ip:",serverIp);try{data=await loadData(serverIp)}catch(_a){continue}}while(Helpers_1._(data));return webSocketIp=serverIp,resolve(data)})}()}}finally{return key="data",value=data,window.localStorage.setItem(key,escape(JSON.stringify(value))),resolve(data)}});var key,value};var webSocketIp=null;Functions.GetMountedAssetIp=async function(Id){return new Promise(async(resolve,reject)=>{if(Helpers_1._(webSocketIp))return reject();try{let ip=JSON.parse(await new Helpers_1.Helpers.WebSocketRequest(webSocketIp,JSON.stringify({type:"getAssetState",uuid:Helpers_1.Helpers.GenUuid(),data:{assetId:Id}})).GetResponseAsync()).data.ipAddr;return Helpers_1._(ip)?reject():resolve(`http://${ip}/`)}catch(_a){return reject()}})}}(exports.Functions||(exports.Functions={}))},{"./Helpers":8}],8:[function(require,module,exports){"use strict";var __importStar=this&&this.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(null!=mod)for(var k in mod)Object.hasOwnProperty.call(mod,k)&&(result[k]=mod[k]);return result.default=mod,result},__importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const UTM=__importStar(require("utm")),angular_1=__importDefault(require("angular"));function $(query){return document.querySelector(query)}exports._=function(obj){return void 0==obj||null==obj||""==obj||obj==[]},exports.$=$,exports.MOBILE=/Android/i.test(navigator.userAgent),Array.prototype.includes=function(obj){return void 0!=this.find(element=>element==obj)},function(Helpers){let Calculations,Coordinates;!function(Calculations){Calculations.RadToDeg=function(rad){return rad*(180/Math.PI)},Calculations.DegToRad=function(deg){return deg*Math.PI/180},Calculations.RotatePoint=function(point,angleRad){return{x:point.x*Math.cos(angleRad)-point.y*Math.sin(angleRad),y:point.x*Math.sin(angleRad)+point.y*Math.cos(angleRad)}}}(Calculations=Helpers.Calculations||(Helpers.Calculations={})),Helpers.GetScope=function(){return angular_1.default.element($("body")).scope()},Helpers.GenUuid=function(){return`ArAssets-${(new Date).toISOString()}`};Helpers.WebSocketRequest=class{constructor(Ip,Request){this.Ip=Ip,this.Request=Request}async GetResponseAsync(){return new Promise((resolve,reject)=>{try{let ws=new WebSocket(this.Ip);ws.onopen=(()=>{ws.send(this.Request)}),ws.onmessage=(response=>(ws.close(),resolve(response.data))),ws.onclose=(event=>{if(event.code>1e3)return reject(event.reason)}),ws.onerror=(error=>reject(error))}catch(_a){return reject()}})}},Helpers.GetPositionAsync=async function(){return new Promise((resolve,reject)=>{navigator.geolocation.getCurrentPosition(pos=>{resolve(new Coordinates.LatLon(pos.coords.latitude,pos.coords.longitude))}),reject()})},function(Coordinates){class LatLon{constructor(Lat,Lon){this.Lat=Lat,this.Lon=Lon}ToUtm(){let temp=UTM.fromLatLon(this.Lat,this.Lon);return new Utm(temp.easting,temp.northing,temp.zoneNum,temp.zoneLetter)}}Coordinates.LatLon=LatLon;class Utm{constructor(Easting,Northing,ZoneNumber,ZoneLetter){this.Easting=Easting,this.Northing=Northing,this.ZoneNumber=ZoneNumber,this.ZoneLetter=ZoneLetter}ToLatLon(){let temp=UTM.toLatLon(this.Easting,this.Northing,this.ZoneNumber,this.ZoneLetter);return new LatLon(temp.latitude,temp.longitude)}}Coordinates.Utm=Utm}(Coordinates=Helpers.Coordinates||(Helpers.Coordinates={}))}(exports.Helpers||(exports.Helpers={}))},{angular:2,utm:4}],9:[function(require,module,exports){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const leaflet_1=__importDefault(require("leaflet")),main_1=require("./main");exports.default=class{constructor(Name){this.Name=Name,this.LeafletLayer=new leaflet_1.default.LayerGroup,this.Visible=!0,this.LayerIds=[],main_1.DEBUG&&console.log(`new Layer() with Name = ${this.Name}`)}}},{"./main":13,leaflet:3}],10:[function(require,module,exports){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const leaflet_1=__importDefault(require("leaflet")),main_1=require("./main");exports.default=class extends leaflet_1.default.ImageOverlay{constructor(Raw){super(`map/${Raw.img}`,new leaflet_1.default.LatLngBounds([[Raw.bounds.min.lat,Raw.bounds.min.lon],[Raw.bounds.max.lat,Raw.bounds.max.lon]])),this.Name=Raw.name,main_1.DEBUG&&console.log(`new Location() with Name = ${this.Name}`)}}},{"./main":13,leaflet:3}],11:[function(require,module,exports){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const leaflet_1=__importDefault(require("leaflet")),Helpers_1=require("./Helpers"),Functions_1=require("./Functions"),main_1=require("./main");exports.default=class extends leaflet_1.default.Marker{constructor(){throw super(new leaflet_1.default.LatLng(0,0)),this.Name="",this.Id=-1,this.SupportedAssets=[],this.Level=-1,this.MountedAsset=-1,new Error("Use static method MountingPoint.Create() instead.")}static async Create(Raw,Building){return new Promise(async resolve=>{if(Building.Id!=Raw.objectId)throw new Error("Wrong building");let rotatedRelativePosition=Helpers_1.Helpers.Calculations.RotatePoint({x:Raw.position3d.x,y:Raw.position3d.y},Helpers_1.Helpers.Calculations.DegToRad(Building.RotationDegree)),temp=Object.create(Building.RefPoint);temp.Easting+=rotatedRelativePosition.x,temp.Northing+=rotatedRelativePosition.y;let position=temp.ToLatLon(),mounted=-1!=Raw.assetId,mp=new leaflet_1.default.Marker(new leaflet_1.default.LatLng(position.Lat,position.Lon),{icon:new leaflet_1.default.Icon({iconUrl:mounted?"img/marker_mounted.png":"img/marker_default.png",iconSize:[30,30]})});mp.Name=Helpers_1._(Raw.tag)?Raw.designation:Raw.tag,mp.SupportedAssets=Raw.supportedAssetTypeIds||[],mp.Id=Raw.id,mp.Level=Raw.levelId,mp.MountedAsset=Raw.assetId;let popup=document.createElement("div"),header=document.createElement("h2");header.innerText=mp.Name;let table=document.createElement("table");table.insertRow().insertCell().innerText="ID",table.rows[0].insertCell().innerText=mp.Id.toString(),table.insertRow().insertCell().innerText="Object ID",table.rows[1].insertCell().innerText=Raw.objectId.toString(),table.insertRow().insertCell().innerText="Supported asset IDs",table.rows[2].insertCell().innerText=mp.SupportedAssets.toString();let asset=document.createElement("tr");try{let link=document.createElement("a");link.innerText="Mounted asset ID",link.setAttribute("href",await Functions_1.Functions.GetMountedAssetIp(mp.MountedAsset)),link.setAttribute("target",Helpers_1.MOBILE?"_parent":"_blank"),asset.insertCell().appendChild(link)}catch(_a){asset.insertCell().innerText="Mounted asset ID"}asset.insertCell().innerText=mp.MountedAsset.toString(),mounted&&table.appendChild(asset);let button=document.createElement("button");return button.innerText=Helpers_1.MOBILE?"Show in AR":"Raw info",button.onclick=Helpers_1.MOBILE?()=>window.AR.StartAr(mp.Id):()=>window.MP.MoreInfo(escape(JSON.stringify(Raw,null,"\t"))),popup.appendChild(header),popup.appendChild(table),popup.appendChild(document.createElement("hr")),popup.appendChild(button),mp.bindPopup(popup),main_1.DEBUG&&console.log(`new MountingPoint() with ID = ${mp.Id}`),resolve(mp)})}},window.MP=window.MP||{MoreInfo:function(info){let popup=open("",Helpers_1.Helpers.GenUuid()),display=popup.document.createElement("pre");display.innerHTML=unescape(info),display.style.fontSize="15";let finish=popup.document.createElement("button");finish.innerHTML="Done",finish.setAttribute("onclick","window.close()"),popup.document.body.appendChild(popup.document.createElement("hr")),popup.document.body.appendChild(display),popup.document.body.appendChild(popup.document.createElement("hr")),popup.document.body.appendChild(finish)}}},{"./Functions":7,"./Helpers":8,"./main":13,leaflet:3}],12:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const Helpers_1=require("./Helpers"),main_1=require("./main");var currentPoi=void 0;window.AR=window.AR||{StartAr:function(mpId){let $scope=Helpers_1.Helpers.GetScope(),mountingPoint=void 0;for(let mp of $scope.objects.mountingPoints)if(mp.Id==mpId){mountingPoint=mp;break}mountingPoint=mountingPoint,currentPoi=new AR.GeoObject([new AR.GeoLocation(mountingPoint.getLatLng().lat,mountingPoint.getLatLng().lng)],{drawables:{cam:[new AR.ImageDrawable(new AR.ImageResource("img/armarker.png"),2.5,{zOrder:0,opacity:1}),new AR.Label(mountingPoint.Name,1,{zOrder:1,style:{textColor:"#ffffff"}})],indicator:new AR.ImageDrawable(new AR.ImageResource("img/arindicator.png"),.1,{enabled:!0,verticalAnchor:AR.CONST.VERTICAL_ANCHOR.TOP})}}),$scope.ar.current=mountingPoint.Name,$scope.ar.enabled=!0,$scope.$apply(),Helpers_1.$("body").style.backgroundColor="transparent"},EndAr:function(){let $scope=Helpers_1.Helpers.GetScope();$scope.ar.current="",$scope.ar.enabled=!1,currentPoi.destroy(),currentPoi=void 0,$scope.$apply(),Helpers_1.$("body").style.backgroundColor="white"}},main_1.DEBUG&&AR.logger.activateDebugMode()},{"./Helpers":8,"./main":13}],13:[function(require,module,exports){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});const angular_1=__importDefault(require("angular")),leaflet_1=__importDefault(require("leaflet")),Helpers_1=require("./Helpers"),Functions_1=require("./Functions"),Building_1=__importDefault(require("./Building")),Layer_1=__importDefault(require("./Layer")),Asset_1=__importDefault(require("./Asset")),MountingPoint_1=__importDefault(require("./MountingPoint")),Location_1=__importDefault(require("./Location"));exports.DEBUG=!1,angular_1.default.module("main",[]).controller("ctrl",async($scope,$http)=>{const dataRequest=Functions_1.Functions.GetData();$scope.html={disableInput:!0,mpQuery:""},$scope.objects={layers:null,assets:{available:null,selected:null},mountingPoints:null,locations:null},$scope.functions={search:null,updateView:null,openPopup:null},$scope.ar={enabled:!1,current:""};const defaultView=new leaflet_1.default.LatLngBounds([[53.0528064472226,8.89412999153137],[53.056520842139,8.90030980110168]]),map=new leaflet_1.default.Map("map",{attributionControl:!1}).fitBounds(defaultView);try{var locations=(await $http.get("map/overlays.json")).data.map(raw=>new Location_1.default(raw));$scope.objects.locations=locations;for(let location of locations)location.addTo(map);map.fitBounds(locations[0].getBounds())}catch(e){exports.DEBUG&&console.error(`Could not load map overlays:\n${JSON.stringify(e)}`)}const data=await dataRequest;var t0=performance.now();let buildings=data.objects.map(raw=>new Building_1.default(raw)),leafletFootprints=new leaflet_1.default.GeoJSON({type:"FeatureCollection",features:buildings.map(building=>building.Footprint).filter(footprint=>null!=footprint)},{onEachFeature:(feature,layer)=>{layer.bindPopup(`<h2>${feature.properties.name}</h2>`)}}).addTo(map),layers=[];for(let level of data.levels){let add=!0;for(let layer of layers)if(layer.Name===level.designation){add=!1,layer.LayerIds.push(level.id);break}if(add){let temp=new Layer_1.default(level.designation);temp.LayerIds.push(level.id),layers.push(temp)}}for(let layer of layers)layer.LeafletLayer.addTo(map);let outdoorLayer=new Layer_1.default("outdoor");outdoorLayer.LayerIds=[-1],outdoorLayer.LeafletLayer.addTo(map);let footprintLayer=new Layer_1.default("buildings");footprintLayer.LeafletLayer=leafletFootprints,footprintLayer.LeafletLayer.addTo(map),layers.push(outdoorLayer,footprintLayer),$scope.objects.layers=layers;let assets=data.assetTypes.map(raw=>new Asset_1.default(raw));$scope.objects.assets.available=assets,$scope.objects.assets.selected=assets[0];let mountingPoints=[];for(let mountingPoint of data.mountingPoints)for(let building of buildings)if(building.Id==mountingPoint.objectId){let temp=await MountingPoint_1.default.Create(mountingPoint,building);mountingPoints.push(temp);for(let layer of layers)layer.LayerIds.includes(temp.Level)&&layer.LeafletLayer.addLayer(temp)}for(let layer of layers)layer.LeafletLayer.addTo(map);$scope.objects.mountingPoints=mountingPoints,$scope.functions.search=(()=>mountingPoint=>{let correctAssetType=!1;for(let id of mountingPoint.SupportedAssets)if(id==$scope.objects.assets.selected.Id){correctAssetType=!0;break}let correctLayer=!1;for(let layer of layers)if(layer.LayerIds.includes(mountingPoint.Level)){correctLayer=!0;break}let query=$scope.html.mpQuery,foundBySearch=!!Helpers_1._(query)||(mountingPoint.Name.includes(query)||mountingPoint.Id.toString().includes(query));return correctAssetType&&correctLayer&&foundBySearch}),$scope.functions.updateView=(()=>{for(let layer of layers)if("buildings"!==layer.Name)for(let mountingPoint of layer.LeafletLayer.getLayers())layer.Visible&&mountingPoint.SupportedAssets.includes($scope.objects.assets.selected.Id)?mountingPoint.addTo(map):mountingPoint.removeFrom(map);else layer.Visible?leafletFootprints.addTo(map):leafletFootprints.removeFrom(map)}),$scope.functions.openPopup=(mountingPoint=>{mountingPoint.openPopup(),map.panTo(mountingPoint.getLatLng())}),$scope.functions.goToLocation=(bounds=>{map.fitBounds(bounds)}),$scope.functions.updateView(),$scope.html.disableInput=!1,$scope.$apply(),console.log(`Finished loading in ${performance.now()-t0}ms.`)})},{"./Asset":5,"./Building":6,"./Functions":7,"./Helpers":8,"./Layer":9,"./Location":10,"./MountingPoint":11,angular:2,leaflet:3}]},{},[5,6,7,8,9,10,13,11,12]);