diff --git a/package-lock.json b/package-lock.json index 2b91e9fae..1a7722031 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@dashevo/insight-ui", - "version": "4.0.3", + "version": "4.0.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@dashevo/insight-ui", - "version": "4.0.3", + "version": "4.0.4", "license": "MIT", "devDependencies": { "@dashevo/dp-services-ctl": "dashpay/js-dp-services-ctl#v0.15.1", diff --git a/package.json b/package.json index 3010e4e8a..79d41c7ad 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/insight-ui", "description": "An open-source frontend for the Insight API. The Insight API provides you with a convenient, powerful and simple way to query and broadcast data on the Dash network and build your own services with it.", - "version": "4.0.3", + "version": "4.0.4", "repository": "git://github.com/dashevo/insight-ui.git", "contributors": [ { diff --git a/public/js/angularjs-all.min.js b/public/js/angularjs-all.min.js index ec5cc40e3..18d10d65f 100644 --- a/public/js/angularjs-all.min.js +++ b/public/js/angularjs-all.min.js @@ -1,2 +1,2 @@ -/*! @dashevo/insight-ui 4.0.2 */ +/*! @dashevo/insight-ui 4.0.4 */ !function(C){"use strict";function re(a){if(!D(a))return Wb;w(a.objectMaxDepth)&&(Wb.objectMaxDepth=Xb(a.objectMaxDepth)?a.objectMaxDepth:NaN),w(a.urlErrorParamsEnabled)&&Ga(a.urlErrorParamsEnabled)&&(Wb.urlErrorParamsEnabled=a.urlErrorParamsEnabled)}function Xb(a){return W(a)&&0").append(a).html();try{return a[0].nodeType===Pa?K(b):b.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/,function(a,b){return"<"+K(b)})}catch(d){return K(b)}}function Tc(a){try{return decodeURIComponent(a)}catch(b){}}function gc(a){var b={};return r((a||"").split("&"),function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"),-1!==(c=a.indexOf("="))&&(e=a.substring(0,c),f=a.substring(c+1)),w(e=Tc(e))&&(f=!w(f)||Tc(f),ta.call(b,e)?H(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))}),b}function hc(a){return ba(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ba(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function Ae(a,b){var d,c,e={};r(Qa,function(b){b+="app",!d&&a.hasAttribute&&a.hasAttribute(b)&&(c=(d=a).getAttribute(b))}),r(Qa,function(b){var e;b+="app",!d&&(e=a.querySelector("["+b.replace(":","\\:")+"]"))&&(c=(d=e).getAttribute(b))}),d&&(Be?(e.strictDi=null!==function(a,b){for(var d,e=Qa.length,c=0;c protocol indicates an extension, document.location.href does not match."))}function Uc(a,b,d){d=S({strictDi:!1},d=D(d)?d:{});function c(){var c;if((a=x(a)).injector())throw c=a[0]===C.document?"document":za(a),pa("btstrpd",c.replace(//,">"));return(b=b||[]).unshift(["$provide",function(b){b.value("$rootElement",a)}]),d.debugInfoEnabled&&b.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]),b.unshift("ng"),(c=fb(b,d.strictDi)).invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d),c(b)(a)})}]),c}var e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;if(C&&e.test(C.name)&&(d.debugInfoEnabled=!0,C.name=C.name.replace(e,"")),C&&!f.test(C.name))return c();C.name=C.name.replace(f,""),ca.resumeBootstrap=function(a){return r(a,function(a){b.push(a)}),c()},B(ca.resumeDeferredBootstrap)&&ca.resumeDeferredBootstrap()}function Ce(){C.name="NG_ENABLE_DEBUG_INFO!"+C.name,C.location.reload()}function De(a){if(a=ca.element(a).injector())return a.get("$$testability");throw pa("test")}function Vc(a,b){return b=b||"_",a.replace(Ee,function(a,c){return(c?b:"")+a.toLowerCase()})}function gb(a,b,d){if(!a)throw pa("areq",b||"?",d||"required")}function sb(a,b,d){gb(B(a=d&&H(a)?a[a.length-1]:a),b,"not a function, got "+(a&&"object"==typeof a?a.constructor.name||"Object":typeof a))}function Ja(a,b){if("hasOwnProperty"===a)throw pa("badname",b)}function tb(a){for(var c,b=a[0],d=a[a.length-1],e=1;b!==d&&(b=b.nextSibling);e++)!c&&a[e]===b||(c=c||x(Ha.call(a,0,e))).push(b);return c||a}function T(){return Object.create(null)}function ic(a){if(null==a)return"";switch(typeof a){case"string":break;case"number":a=""+a;break;default:a=!bc(a)||H(a)||ha(a)?eb(a):a.toString()}return a}function ja(a,b){if(H(a)){b=b||[];for(var d=0,c=a.length;d")+c[2],c=c[0];c--;)d=d.lastChild;f=db(f,d.childNodes),(d=e.firstChild).textContent=""}else f.push(b.createTextNode(a));return e.textContent="",e.innerHTML="",r(f,function(a){e.appendChild(a)}),e}function Y(a){if(a instanceof Y)return a;var d,b;if(A(a)&&(a=U(a),b=!0),!(this instanceof Y)){if(b&&"<"!==a.charAt(0))throw nc("nosel");return new Y(a)}b?(b=C.document,oc(this,a=(d=og.exec(a))?[b.createElement(d[1])]:(d=ed(a,b))?d.childNodes:[])):B(a)?fd(a):oc(this,a)}function pc(a){return a.cloneNode(!0)}function yb(a,b){!b&&lc(a)&&x.cleanData([a]),a.querySelectorAll&&x.cleanData(a.querySelectorAll("*"))}function gd(a){for(var b in a)return;return 1}function hd(a){var b=a.ng339,d=b&&Ka[b],c=d&&d.events;(d=d&&d.data)&&!gd(d)||c&&!gd(c)||(delete Ka[b],a.ng339=void 0)}function id(a,b,d,c){if(w(c))throw nc("offargs");var e=(c=zb(a))&&c.events,f=c&&c.handle;if(f){if(b){var g=function(b){var c=e[b];w(d)&&cb(c||[],d),w(d)&&c&&0").append(a).html())):c?Wa.clone.call(a):a,k)for(var l in k)d.data("$"+l+"Controller",k[l].instance);return da.$$addScopeInfo(d,b),c&&c(d,b),f&&f(b,d,d,h),c||(a=f=null),d}}function Xa(a,b,c,d,e,f){for(var l,m,I,n,h=[],k=H(a)||a instanceof x,t=0;tu.priority)break;if((O=u.scope)&&(u.templateUrl||(D(O)?(ba("new/isolated scope",s||t,u,y),s=u):ba("new/isolated scope",s,u,y)),t=t||u),Q=u.name,!ma&&(u.replace&&(u.templateUrl||u.template)||u.transclude&&!u.$$tlb)){for(O=sa+1;ma=a[O++];)if(ma.transclude&&!ma.$$tlb||ma.replace&&(ma.templateUrl||ma.template)){Ib=!0;break}ma=!0}if(!u.templateUrl&&u.controller&&(J=J||T(),ba("'"+Q+"' controller",J[Q],u,y),J[Q]=u),O=u.transclude)if(G=!0,u.$$tlb||(ba("transclusion",L,u,y),L=u),"element"===O)N=!0,n=u.priority,M=y,y=d.$$element=x(da.$$createComment(Q,d[Q])),b=y[0],pa(f,Ha.call(M,0),b),R=Z(Ib,M,e,n,g&&g.name,{nonTlbTranscludeDirective:L});else{var ka=T();if(D(O)){var K,M=C.document.createDocumentFragment(),Xa=T(),F=T();for(K in r(O,function(a,b){var c="?"===a.charAt(0);a=c?a.substring(1):a,Xa[a]=b,ka[b]=null,F[b]=c}),r(y.contents(),function(a){var b=Xa[wa(ua(a))];(b?(F[b]=!0,ka[b]=ka[b]||C.document.createDocumentFragment(),ka[b]):M).appendChild(a)}),r(F,function(a,b){if(!a)throw $("reqslot",b)}),ka)ka[K]&&(R=x(ka[K].childNodes),ka[K]=Z(Ib,R,e));M=x(M.childNodes)}else M=x(pc(b)).contents();y.empty(),(R=Z(Ib,M,e,void 0,void 0,{needsNewScope:u.$$isolateScope||u.$$newScope})).$$slots=ka}if(u.template)if(P=!0,ba("template",v,u,y),O=B((v=u).template)?u.template(y,d):u.template,O=Na(O),u.replace){if(g=u,M=mc.test(O)?rd(ja(u.templateNamespace,U(O))):[],b=M[0],1!==M.length||1!==b.nodeType)throw $("tplrt",Q,"");pa(f,y,b);var O=sc(b,[],A={$attr:{}}),Dg=a.splice(sa+1,a.length-(sa+1));(s||t)&&fa(O,s,t),a=a.concat(O).concat(Dg),ga(d,A),A=a.length}else y.html(O);if(u.templateUrl)P=!0,ba("template",v,u,y),(v=u).replace&&(g=u),p=ha(a.splice(sa,a.length-sa),y,d,f,G&&R,h,k,{controllerDirectives:J,newScopeDirective:t!==u&&t,newIsolateScopeDirective:s,templateDirective:v,nonTlbTranscludeDirective:L}),A=a.length;else if(u.compile)try{var q=u.compile(y,d,R),X=u.$$originalDirective||u;B(q)?m(null,Va(X,q),E,ib):q&&m(Va(X,q.pre),Va(X,q.post),E,ib)}catch(ca){c(ca,za(y))}u.terminal&&(p.terminal=!0,n=Math.max(n,u.priority))}return p.scope=t&&!0===t.scope,p.transcludeOnThisElement=G,p.templateOnThisElement=P,p.transclude=R,l.hasElementTranscludeDirective=N,p}function W(a,b,c,d){if(A(b)){var h,e,f=b.match(l),g=(b=b.substring(f[0].length),f[1]||f[3]),f="?"===f[2];if("^^"===g?c=c.parent():e=(e=d&&d[b])&&e.instance,e||(h="$"+b+"Controller",e="^^"===g&&c[0]&&9===c[0].nodeType?null:g?c.inheritedData(h):c.data(h)),!e&&!f)throw $("ctreq",b,a)}else if(H(b))for(e=[],g=0,f=b.length;gc.priority)&&-1!==c.restrict.indexOf(e)){if(!(c=k?ac(c,{$$start:k,$$end:l}):c).$$bindings){var I=m=c,t=c.name,u={isolateScope:null,bindToController:null};if(D(I.scope)&&(!0===I.bindToController?(u.bindToController=d(I.scope,t,!0),u.isolateScope={}):u.isolateScope=d(I.scope,t,!1)),D(I.bindToController)&&(u.bindToController=d(I.bindToController,t,!0)),u.bindToController&&!I.controller)throw $("noctrl",t);D((m=m.$$bindings=u).isolateScope)&&(c.$$isolateBindings=m.isolateScope)}b.push(c),m=c}return m}}function ca(b){if(f.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,e=c.length;d"+b+"",c.childNodes[0].childNodes;default:return b}}function ya(a){return ma(u.valueOf(a),"ng-prop-srcset")}function Ea(a,b,c,d){if(m.test(d))throw $("nodomevents");var e=function(a,b){return b=b.toLowerCase(),v[a+"|"+b]||v["*|"+b]}(a=ua(a),d),f=Ta;"srcset"!==d||"img"!==a&&"source"!==a?e&&(f=u.getTrusted.bind(u,e)):f=ya,b.push({priority:100,compile:function(a,b){var e=p(b[c]),g=p(b[c],function(a){return u.valueOf(a)});return{pre:function(a,b){function c(){var g=e(a);b[0][d]=f(g)}c(),a.$watch(g,c)}}}})}function Ia(a,c,d,e,f){var g=ua(a),k=function(a,b){return"srcdoc"===b?u.HTML:"src"===b||"ngSrc"===b?-1===["img","video","audio","source","track"].indexOf(a)?u.RESOURCE_URL:u.MEDIA_URL:"xlinkHref"===b?"image"===a?u.MEDIA_URL:"a"===a?u.URL:u.RESOURCE_URL:"form"===a&&"action"===b||"base"===a&&"href"===b||"link"===a&&"href"===b?u.RESOURCE_URL:"a"!==a||"href"!==b&&"ngHref"!==b?void 0:u.URL}(g,e),l=h[e]||f,p=b(d,!f,k,l);if(p){if("multiple"===e&&"select"===g)throw $("selmulti",za(a));if(m.test(e))throw $("nodomevents");c.push({priority:100,compile:function(){return{pre:function(a,c,f){c=f.$$observers||(f.$$observers=T());var g=f[e];g!==d&&(p=g&&b(g,!0,k,l),d=g),p&&(f[e]=p(a),(c[e]||(c[e]=[])).$$inter=!0,(f.$$observers&&f.$$observers[e].$$scope||a).$watch(p,function(a,b){"class"===e&&a!==b?f.$updateClass(a,b):f.$set(e,a)}))}}}})}}function pa(a,b,c){var g,d=b[0],e=b.length,f=d.parentNode;if(a)for(g=0,h=a.length;g";var d=(b=Fa.firstChild.attributes)[0];b.removeNamedItem(d.name),d.value=c,a.attributes.setNamedItem(d)}(this.$$element[0],e,b)),(a=this.$$observers)&&r(a[h],function(a){try{a(b)}catch(d){c(d)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers=T()),e=d[a]||(d[a]=[]);return e.push(b),L.$evalAsync(function(){e.$$inter||!c.hasOwnProperty(a)||z(c[a])||b(c[a])}),function(){cb(e,b)}}},b.startSymbol()),La=b.endSymbol(),Na="{{"===Ka&&"}}"===La?Ta:function(a){return a.replace(/\{\{/g,Ka).replace(/}}/g,La)},Ra=/^ng(Attr|Prop|On)([A-Z].*)$/,Sa=/^(.+)Start$/;return da.$$addBindingInfo=n?function(a,b){var c=a.data("$binding")||[];H(b)?c=c.concat(b):c.push(b),a.data("$binding",c)}:E,da.$$addBindingClass=n?function(a){sa(a,"ng-binding")}:E,da.$$addScopeInfo=n?function(a,b,c,d){a.data(c?d?"$isolateScopeNoTemplate":"$isolateScope":"$scope",b)}:E,da.$$addScopeClass=n?function(a,b){sa(a,b?"ng-isolate-scope":"ng-scope")}:E,da.$$createComment=function(a,b){var c="";return n&&(c=" "+(a||"")+": ",b&&(c+=b+" ")),C.document.createComment(c)},da}]}function Jb(a,b){this.previousValue=a,this.currentValue=b}function wa(a){return a.replace(pd,"").replace(Eg,function(a,d,c){return c?d.toUpperCase():d})}function sd(a,b){var d="",c=a.split(/\s+/),e=b.split(/\s+/),f=0;a:for(;f=b.lgSize&&k.unshift(h.splice(-b.lgSize,h.length).join(""));h.length>b.gSize;)k.unshift(h.splice(-b.gSize,h.length).join(""));h.length&&k.unshift(h.join("")),h=k.join(d),f.length&&(h+=c+f.join("")),e&&(h+="e+"+e)}return a<0&&!g?b.negPre+h+b.negSuf:b.posPre+h+b.posSuf}function Ob(a,b,d,c){var e="";for((a<0||c&&a<=0)&&(c?a=1-a:(a=-a,e="-")),a=""+a;a.length=B},g.$observe("min",function(a){a!==x&&(B=s(a),x=a,k.$validate())})),(w(g.max)||g.ngMax)&&(y=g.max||p(g.ngMax)(e),J=s(y),k.$validators.max=function(a){return!n(a)||z(J)||d(a)<=J},g.$observe("max",function(a){a!==y&&(J=s(a),y=a,k.$validate())}))}}function Ic(a,b,d,c,e){(c.$$hasNativeValidators=D(b[0].validity))&&c.$parsers.push(function(a){var d=b.prop("validity")||{};if(!d.badInput&&!d.typeMismatch)return a;c.$$parserName=e})}function de(a){a.$parsers.push(function(b){return a.$isEmpty(b)?null:ih.test(b)?parseFloat(b):void(a.$$parserName="number")}),a.$formatters.push(function(b){if(!a.$isEmpty(b)){if(!W(b))throw ob("numfmt",b);b=b.toString()}return b})}function na(a){return w(a)&&!W(a)&&(a=parseFloat(a)),X(a)?void 0:a}function Jc(a){var b=a.toString(),d=b.indexOf(".");return-1===d?-1(?:<\/\1>|)$/,mc=/<|&#?\w+;/,mg=/<([\w:-]+)/,ng=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,oa={option:[1,'"],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]},ug=(oa.optgroup=oa.option,oa.tbody=oa.tfoot=oa.colgroup=oa.caption=oa.thead,oa.th=oa.td,C.Node.prototype.contains||function(a){return!!(16&this.compareDocumentPosition(a))}),Wa=Y.prototype={ready:fd,toString:function(){var a=[];return r(this,function(b){a.push(""+b)}),"["+a.join(", ")+"]"},eq:function(a){return x(0<=a?this[a]:this[this.length+a])},length:0,push:kh,sort:[].sort,splice:[].splice},Gb={},md=(r("multiple selected checked disabled readOnly required open".split(" "),function(a){Gb[K(a)]=a}),{}),td=(r("input select option textarea button form details".split(" "),function(a){md[a]=!0}),{ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern",ngStep:"step"}),mh=(r({data:rc,removeData:qc,hasData:function(a){for(var b in Ka[a.ng339])return!0;return!1},cleanData:function(a){for(var b=0,d=a.length;b/,xg=/^[^(]*\(\s*([^)]*)\)/m,nh=/,/,oh=/^\s*(_?)(\S+?)\1\s*$/,vg=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,Ba=F("$injector"),je=(fb.$$annotate=function(a,b,d){var c;if("function"==typeof a){if(!(c=a.$inject)){if(c=[],a.length){if(b)throw A(d)&&d||(d=a.name||function(a){return(a=od(a))?"function("+(a[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}(a)),Ba("strictdi",d);r((b=od(a))[1].split(nh),function(a){a.replace(oh,function(a,b,d){c.push(d)})})}a.$inject=c}}else H(a)?(sb(a[b=a.length-1],"fn"),c=a.slice(0,b)):sb(a,"fn",!0);return c},F("$animate")),xf=["$provide",function(a){var b=this,d=null,c=null;this.$$registeredAnimations=Object.create(null),this.register=function(c,d){if(c&&"."!==c.charAt(0))throw je("notcsel",c);var g=c+"-animation";b.$$registeredAnimations[c.substr(1)]=g,a.factory(g,d)},this.customFilter=function(a){return c=1===arguments.length?B(a)?a:null:c},this.classNameFilter=function(a){if(1===arguments.length&&(d=a instanceof RegExp?a:null)&&/[(\s|\/)]ng-animate[(\s|\/)]/.test(d.toString()))throw d=null,je("nongcls","ng-animate");return d},this.$get=["$$animateQueue",function(a){function b(a,c,d){if(d){var e;a:{for(e=0;e <= >= && || ! = |".split(" "),function(a){Ub[a]=!0}),{n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'}),Nb=function(a){this.options=a},q=(Nb.prototype={constructor:Nb,lex:function(a){for(this.text=a,this.index=0,this.tokens=[];this.index","<=",">=");)a={type:q.BinaryExpression,operator:b.text,left:a,right:this.additive()};return a},additive:function(){for(var b,a=this.multiplicative();b=this.expect("+","-");)a={type:q.BinaryExpression,operator:b.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var b,a=this.unary();b=this.expect("*","/","%");)a={type:q.BinaryExpression,operator:b.text,left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:q.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var a,b;for(this.expect("(")?(a=this.filterChain(),this.consume(")")):this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.selfReferential.hasOwnProperty(this.peek().text)?a=Ia(this.selfReferential[this.consume().text]):this.options.literals.hasOwnProperty(this.peek().text)?a={type:q.Literal,value:this.options.literals[this.consume().text]}:this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression",this.peek());b=this.expect("(","[",".");)"("===b.text?(a={type:q.CallExpression,callee:a,arguments:this.parseArguments()},this.consume(")")):"["===b.text?(a={type:q.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume("]")):"."===b.text?a={type:q.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var b={type:q.CallExpression,callee:this.identifier(),arguments:a,filter:!0};this.expect(":");)a.push(this.expression());return b},parseArguments:function(){var a=[];if(")"!==this.peekToken().text)for(;a.push(this.filterChain()),this.expect(","););return a},identifier:function(){var a=this.consume();return a.identifier||this.throwError("is not a valid identifier",a),{type:q.Identifier,name:a.text}},constant:function(){return{type:q.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text)for(;!this.peek("]")&&(a.push(this.expression()),this.expect(",")););return this.consume("]"),{type:q.ArrayExpression,elements:a}},object:function(){var b,a=[];if("}"!==this.peekToken().text)for(;!this.peek("}")&&(b={type:q.Property,kind:"init"},this.peek().constant?(b.key=this.constant(),b.computed=!1,this.consume(":"),b.value=this.expression()):this.peek().identifier?(b.key=this.identifier(),b.computed=!1,this.peek(":")?(this.consume(":"),b.value=this.expression()):b.value=b.key):this.peek("[")?(this.consume("["),b.key=this.expression(),this.consume("]"),b.computed=!0,this.consume(":"),b.value=this.expression()):this.throwError("invalid key",this.peek()),a.push(b),this.expect(",")););return this.consume("}"),{type:q.ObjectExpression,properties:a}},throwError:function(a,b){throw Ya("syntax",b.text,a,b.index+1,this.text,this.text.substring(b.index))},consume:function(a){if(0===this.tokens.length)throw Ya("ueoe",this.text);var b=this.expect(a);return b||this.throwError("is unexpected, expecting ["+a+"]",this.peek()),b},peekToken:function(){if(0===this.tokens.length)throw Ya("ueoe",this.text);return this.tokens[0]},peek:function(a,b,d,c){return this.peekAhead(0,a,b,d,c)},peekAhead:function(a,b,d,c,e){if(this.tokens.length>a){var f=(a=this.tokens[a]).text;if(f===b||f===d||f===c||f===e||!(b||d||c||e))return a}return!1},expect:function(a,b,d,c){return!!(a=this.peek(a,b,d,c))&&(this.tokens.shift(),a)},selfReferential:{this:{type:q.ThisExpression},$locals:{type:q.LocalsExpression}}},2),Ea=(Jd.prototype={compile:function(a){var c,b=this,d=(this.state={nextId:0,filters:{},fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]},Z(a,b.$filter),"");return this.stage="assign",(c=Id(a))&&(this.state.computing="assign",d=this.nextId(),this.recurse(c,d),this.return_(d),d="fn.assign="+this.generateFunction("assign","s,v,l")),c=Gd(a.body),b.stage="inputs",r(c,function(a,c){var d="fn"+c,k=(b.state[d]={vars:[],body:[],own:{}},b.state.computing=d,b.nextId());b.recurse(a,k),b.return_(k),b.state.inputs.push({name:d,isPure:a.isPure}),a.watchId=c}),this.state.computing="fn",this.stage="main",this.recurse(a),a='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+d+this.watchFns()+"return fn;",a=new Function("$filter","getStringValue","ifDefined","plus",a)(this.$filter,Og,Pg,Ed),this.state=this.stage=void 0,a},USE:"use",STRICT:"strict",watchFns:function(){var a=[],b=this.state.inputs,d=this;return r(b,function(b){a.push("var "+b.name+"="+d.generateFunction(b.name,"s")),b.isPure&&a.push(b.name,".isPure="+JSON.stringify(b.isPure)+";")}),b.length&&a.push("fn.inputs=["+b.map(function(a){return a.name}).join(",")+"];"),a.join("")},generateFunction:function(a,b){return"function("+b+"){"+this.varsPrefix(a)+this.body(a)+"};"},filterPrefix:function(){var a=[],b=this;return r(this.state.filters,function(d,c){a.push(d+"=$filter("+b.escape(c)+")")}),a.length?"var "+a.join(",")+";":""},varsPrefix:function(a){return this.state[a].vars.length?"var "+this.state[a].vars.join(",")+";":""},body:function(a){return this.state[a].body.join("")},recurse:function(a,b,d,c,e,f){var g,k,l,m,p,h=this;if(c=c||E,!f&&w(a.watchId))b=b||this.nextId(),this.if_("i",this.lazyAssign(b,this.computedMember("i",a.watchId)),this.lazyRecurse(a,b,d,c,e,!0));else switch(a.type){case q.Program:r(a.body,function(b,c){h.recurse(b.expression,void 0,void 0,function(a){k=a}),c!==a.body.length-1?h.current().body.push(k,";"):h.return_(k)});break;case q.Literal:m=this.escape(a.value),this.assign(b,m),c(b||m);break;case q.UnaryExpression:this.recurse(a.argument,void 0,void 0,function(a){k=a}),m=a.operator+"("+this.ifDefined(k,0)+")",this.assign(b,m),c(m);break;case q.BinaryExpression:this.recurse(a.left,void 0,void 0,function(a){g=a}),this.recurse(a.right,void 0,void 0,function(a){k=a}),m="+"===a.operator?this.plus(g,k):"-"===a.operator?this.ifDefined(g,0)+a.operator+this.ifDefined(k,0):"("+g+")"+a.operator+"("+k+")",this.assign(b,m),c(m);break;case q.LogicalExpression:b=b||this.nextId(),h.recurse(a.left,b),h.if_("&&"===a.operator?b:h.not(b),h.lazyRecurse(a.right,b)),c(b);break;case q.ConditionalExpression:b=b||this.nextId(),h.recurse(a.test,b),h.if_(b,h.lazyRecurse(a.alternate,b),h.lazyRecurse(a.consequent,b)),c(b);break;case q.Identifier:b=b||this.nextId(),d&&(d.context="inputs"===h.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",a.name)+"?l:s"),d.computed=!1,d.name=a.name),h.if_("inputs"===h.stage||h.not(h.getHasOwnProperty("l",a.name)),function(){h.if_("inputs"===h.stage||"s",function(){e&&1!==e&&h.if_(h.isNull(h.nonComputedMember("s",a.name)),h.lazyAssign(h.nonComputedMember("s",a.name),"{}")),h.assign(b,h.nonComputedMember("s",a.name))})},b&&h.lazyAssign(b,h.nonComputedMember("l",a.name))),c(b);break;case q.MemberExpression:g=d&&(d.context=this.nextId())||this.nextId(),b=b||this.nextId(),h.recurse(a.object,g,void 0,function(){h.if_(h.notNull(g),function(){a.computed?(k=h.nextId(),h.recurse(a.property,k),h.getStringValue(k),e&&1!==e&&h.if_(h.not(h.computedMember(g,k)),h.lazyAssign(h.computedMember(g,k),"{}")),m=h.computedMember(g,k),h.assign(b,m),d&&(d.computed=!0,d.name=k)):(e&&1!==e&&h.if_(h.isNull(h.nonComputedMember(g,a.property.name)),h.lazyAssign(h.nonComputedMember(g,a.property.name),"{}")),m=h.nonComputedMember(g,a.property.name),h.assign(b,m),d&&(d.computed=!1,d.name=a.property.name))},function(){h.assign(b,"undefined")}),c(b)},!!e);break;case q.CallExpression:b=b||this.nextId(),a.filter?(k=h.filter(a.callee.name),l=[],r(a.arguments,function(a){var b=h.nextId();h.recurse(a,b),l.push(b)}),m=k+"("+l.join(",")+")",h.assign(b,m),c(b)):(k=h.nextId(),g={},l=[],h.recurse(a.callee,k,g,function(){h.if_(h.notNull(k),function(){r(a.arguments,function(b){h.recurse(b,a.constant?void 0:h.nextId(),void 0,function(a){l.push(a)})}),m=g.name?h.member(g.context,g.name,g.computed)+"("+l.join(",")+")":k+"("+l.join(",")+")",h.assign(b,m)},function(){h.assign(b,"undefined")}),c(b)}));break;case q.AssignmentExpression:k=this.nextId(),g={},this.recurse(a.left,void 0,g,function(){h.if_(h.notNull(g.context),function(){h.recurse(a.right,k),m=h.member(g.context,g.name,g.computed)+a.operator+k,h.assign(b,m),c(b||m)})},1);break;case q.ArrayExpression:l=[],r(a.elements,function(b){h.recurse(b,a.constant?void 0:h.nextId(),void 0,function(a){l.push(a)})}),m="["+l.join(",")+"]",this.assign(b,m),c(b||m);break;case q.ObjectExpression:p=!(l=[]),r(a.properties,function(a){a.computed&&(p=!0)}),p?(b=b||this.nextId(),this.assign(b,"{}"),r(a.properties,function(a){a.computed?(g=h.nextId(),h.recurse(a.key,g)):g=a.key.type===q.Identifier?a.key.name:""+a.key.value,k=h.nextId(),h.recurse(a.value,k),h.assign(h.member(b,g,a.computed),k)})):(r(a.properties,function(b){h.recurse(b.value,a.constant?void 0:h.nextId(),void 0,function(a){l.push(h.escape(b.key.type===q.Identifier?b.key.name:""+b.key.value)+":"+a)})}),m="{"+l.join(",")+"}",this.assign(b,m)),c(b||m);break;case q.ThisExpression:this.assign(b,"s"),c(b||"s");break;case q.LocalsExpression:this.assign(b,"l"),c(b||"l");break;case q.NGValueParameter:this.assign(b,"v"),c(b||"v")}},getHasOwnProperty:function(a,b){var d=a+"."+b,c=this.current().own;return c.hasOwnProperty(d)||(c[d]=this.nextId(!1,a+"&&("+this.escape(b)+" in "+a+")")),c[d]},assign:function(a,b){if(a)return this.current().body.push(a,"=",b,";"),a},filter:function(a){return this.state.filters.hasOwnProperty(a)||(this.state.filters[a]=this.nextId(!0)),this.state.filters[a]},ifDefined:function(a,b){return"ifDefined("+a+","+this.escape(b)+")"},plus:function(a,b){return"plus("+a+","+b+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a,b,d){var c;!0===a?b():((c=this.current().body).push("if(",a,"){"),b(),c.push("}"),d&&(c.push("else{"),d(),c.push("}")))},not:function(a){return"!("+a+")"},isNull:function(a){return a+"==null"},notNull:function(a){return a+"!=null"},nonComputedMember:function(a,b){return/^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(b)?a+"."+b:a+'["'+b.replace(/[^$_a-zA-Z0-9]/g,this.stringEscapeFn)+'"]'},computedMember:function(a,b){return a+"["+b+"]"},member:function(a,b,d){return d?this.computedMember(a,b):this.nonComputedMember(a,b)},getStringValue:function(a){this.assign(a,"getStringValue("+a+")")},lazyRecurse:function(a,b,d,c,e,f){var g=this;return function(){g.recurse(a,b,d,c,e,f)}},lazyAssign:function(a,b){var d=this;return function(){d.assign(a,b)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(A(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(W(a))return a.toString();if(!0===a)return"true";if(!1===a)return"false";if(null===a)return"null";if(void 0===a)return"undefined";throw Ya("esc")},nextId:function(a,b){var d="v"+this.state.nextId++;return a||this.current().vars.push(d+(b?"="+b:"")),d},current:function(){return this.state[this.state.computing]}},Kd.prototype={compile:function(a){var d,c,e,b=this,f=(Z(a,b.$filter),(d=Id(a))&&(c=this.recurse(d)),(d=Gd(a.body))&&(e=[],r(d,function(a,c){var d=b.recurse(a);d.isPure=a.isPure,a.input=d,e.push(d),a.watchId=c})),[]);return r(a.body,function(a){f.push(b.recurse(a.expression))}),a=0===a.body.length?E:1===a.body.length?f[0]:function(a,b){var c;return r(f,function(d){c=d(a,b)}),c},c&&(a.assign=function(a,b,d){return c(a,d,b)}),e&&(a.inputs=e),a},recurse:function(a,b,d){var c,e,g,f=this;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case q.Literal:return this.value(a.value,b);case q.UnaryExpression:return e=this.recurse(a.argument),this["unary"+a.operator](e,b);case q.BinaryExpression:case q.LogicalExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case q.ConditionalExpression:return this["ternary?:"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),b);case q.Identifier:return f.identifier(a.name,b,d);case q.MemberExpression:return c=this.recurse(a.object,!1,!!d),a.computed||(e=a.property.name),a.computed&&(e=this.recurse(a.property)),a.computed?this.computedMember(c,e,b,d):this.nonComputedMember(c,e,b,d);case q.CallExpression:return g=[],r(a.arguments,function(a){g.push(f.recurse(a))}),a.filter&&(e=this.$filter(a.callee.name)),a.filter||(e=this.recurse(a.callee,!0)),a.filter?function(a,c,d,f){for(var p=[],n=0;n":function(a,b,d){return function(c,e,f,g){return c=a(c,e,f,g)>b(c,e,f,g),d?{value:c}:c}},"binary<=":function(a,b,d){return function(c,e,f,g){return c=a(c,e,f,g)<=b(c,e,f,g),d?{value:c}:c}},"binary>=":function(a,b,d){return function(c,e,f,g){return c=a(c,e,f,g)>=b(c,e,f,g),d?{value:c}:c}},"binary&&":function(a,b,d){return function(c,e,f,g){return c=a(c,e,f,g)&&b(c,e,f,g),d?{value:c}:c}},"binary||":function(a,b,d){return function(c,e,f,g){return c=a(c,e,f,g)||b(c,e,f,g),d?{value:c}:c}},"ternary?:":function(a,b,d,c){return function(e,f,g,k){return e=(a(e,f,g,k)?b:d)(e,f,g,k),c?{value:e}:e}},value:function(a,b){return function(){return b?{context:void 0,name:void 0,value:a}:a}},identifier:function(a,b,d){return function(c,e,f,g){return c=e&&a in e?e:c,d&&1!==d&&c&&null==c[a]&&(c[a]={}),e=c?c[a]:void 0,b?{context:c,name:a,value:e}:e}},computedMember:function(a,b,d,c){return function(e,f,g,k){var l,m,h=a(e,f,g,k);return null!=h&&(l=b(e,f,g,k),l+="",c&&1!==c&&h&&!h[l]&&(h[l]={}),m=h[l]),d?{context:h,name:l,value:m}:m}},nonComputedMember:function(a,b,d,c){return function(e,f,g,k){return e=a(e,f,g,k),c&&1!==c&&e&&null==e[b]&&(e[b]={}),f=null!=e?e[b]:void 0,d?{context:e,name:b,value:f}:f}},inputs:function(a,b){return function(d,c,e,f){return f?f[b]:a(d,c,e)}}},Mb.prototype={constructor:Mb,parse:function(a){a=this.getAst(a);var b=this.astCompiler.compile(a.ast),d=a.ast;return b.literal=0===d.body.length||1===d.body.length&&(d.body[0].expression.type===q.Literal||d.body[0].expression.type===q.ArrayExpression||d.body[0].expression.type===q.ObjectExpression),b.constant=a.ast.constant,b.oneTime=a.oneTime,b},getAst:function(a){var b=!1;return":"===(a=a.trim()).charAt(0)&&":"===a.charAt(1)&&(b=!0,a=a.substring(2)),{ast:this.ast.ast(a),oneTime:b}}},F("$sce")),V={HTML:"html",CSS:"css",MEDIA_URL:"mediaUrl",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},Cc=/_([a-z])/g,Ug=F("$templateRequest"),Vg=F("$timeout"),aa=C.document.createElement("a"),Od=ga(C.location.href),Wg=(aa.href="http://[::1]","[::1]"===aa.hostname),Ec=(Pd.$inject=["$document"],dd.$inject=["$provide"],"0"),gh=(Qd.$inject=["$locale"],{yyyy:ea("FullYear",4,0,!(Sd.$inject=["$locale"]),!0),yy:ea("FullYear",2,0,!0,!0),y:ea("FullYear",1,0,!1,!0),MMMM:kb("Month"),MMM:kb("Month",!0),MM:ea("Month",2,1),M:ea("Month",1,1),LLLL:kb("Month",!1,!0),dd:ea("Date",2),d:ea("Date",1),HH:ea("Hours",2),H:ea("Hours",1),hh:ea("Hours",2,-12),h:ea("Hours",1,-12),mm:ea("Minutes",2),m:ea("Minutes",1),ss:ea("Seconds",2),s:ea("Seconds",1),sss:ea("Milliseconds",3),EEEE:kb("Day"),EEE:kb("Day",!0),a:function(a,b){return a.getHours()<12?b.AMPMS[0]:b.AMPMS[1]},Z:function(a,b,d){return(0<=(a=-1*d)?"+":"")+(Ob(Math[0=g})}}}];C.angular.bootstrap?C.console&&console.log("WARNING: Tried to load AngularJS more than once."):(function(){var a,b;Wc||(b=qb(),(rb=z(b)?C.jQuery:b?C[b]:void 0)&&rb.fn.on?S((x=rb).fn,{scope:Wa.scope,isolateScope:Wa.isolateScope,controller:Wa.controller,injector:Wa.injector,inheritedData:Wa.inheritedData}):x=Y,a=x.cleanData,x.cleanData=function(b){for(var c,f,e=0;null!=(f=b[e]);e++)(c=(x._data(f)||{}).events)&&c.$destroy&&x(f).triggerHandler("$destroy");a(b)},ca.element=x,Wc=!0)}(),function(a){S(a,{errorHandlingConfig:re,bootstrap:Uc,copy:Ia,extend:S,merge:te,equals:va,element:x,forEach:r,injector:fb,noop:E,bind:Va,toJson:eb,fromJson:Rc,identity:Ta,isUndefined:z,isDefined:w,isString:A,isFunction:B,isObject:D,isNumber:W,isElement:$b,isArray:H,version:Ke,isDate:ha,callbacks:{$$counter:0},getTestability:De,reloadWithDebugInfo:Ce,$$minErr:F,$$csp:Aa,$$encodeUriSegment:hc,$$encodeUriQuery:ba,$$lowercase:K,$$stringify:ic,$$uppercase:ub}),(kc=function(a){function b(a,b,c){return a[b]||(a[b]=c())}var d=F("$injector"),c=F("ng");return(a=b(a,"angular",Object)).$$minErr=a.$$minErr||F,b(a,"module",function(){var a={};return function(f,g,k){var h={};if("hasOwnProperty"===f)throw c("badname","module");return g&&a.hasOwnProperty(f)&&(a[f]=null),b(a,f,function(){function a(b,c,d,f){return f=f||e,function(){return f[d||"push"]([b,c,arguments]),t}}function b(a,c,d){return d=d||e,function(b,e){return e&&B(e)&&(e.$$moduleName=f),d.push([a,c,arguments]),t}}var e,n,s,G,t;if(g)return e=[],G=a("$injector","invoke","push",n=[]),t={_invokeQueue:e,_configBlocks:n,_runBlocks:s=[],info:function(a){if(w(a)){if(D(a))return h=a,this;throw c("aobj","value")}return h},requires:g,name:f,provider:b("$provide","provider"),factory:b("$provide","factory"),service:b("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),decorator:b("$provide","decorator",n),animation:b("$animateProvider","register"),filter:b("$filterProvider","register"),controller:b("$controllerProvider","register"),directive:b("$compileProvider","directive"),component:b("$compileProvider","component"),config:G,run:function(a){return s.push(a),this}},k&&G(k),t;throw d("nomod",f)})}})}(C))("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:Le}),a.provider("$compile",Xc).directive({a:Me,input:Yc,textarea:Yc,form:Ne,script:Oe,select:Pe,option:Qe,ngBind:Re,ngBindHtml:Se,ngBindTemplate:Te,ngClass:Ue,ngClassEven:Ve,ngClassOdd:We,ngCloak:Xe,ngController:Ye,ngForm:Ze,ngHide:$e,ngIf:af,ngInclude:bf,ngInit:cf,ngNonBindable:df,ngPluralize:ef,ngRef:ff,ngRepeat:gf,ngShow:hf,ngStyle:jf,ngSwitch:kf,ngSwitchWhen:lf,ngSwitchDefault:mf,ngOptions:nf,ngTransclude:of,ngModel:pf,ngList:qf,ngChange:rf,pattern:Zc,ngPattern:Zc,required:$c,ngRequired:$c,minlength:ad,ngMinlength:ad,maxlength:bd,ngMaxlength:bd,ngValue:sf,ngModelOptions:tf}).directive({ngInclude:uf,input:vf}).directive(vb).directive(cd),a.provider({$anchorScroll:wf,$animate:xf,$animateCss:yf,$$animateJs:zf,$$animateQueue:Af,$$AnimateRunner:Bf,$$animateAsyncRun:Cf,$browser:Df,$cacheFactory:Ef,$controller:Ff,$document:Gf,$$isDocumentHidden:Hf,$exceptionHandler:If,$filter:dd,$$forceReflow:Jf,$interpolate:Kf,$interval:Lf,$$intervalFactory:Mf,$http:Nf,$httpParamSerializer:Of,$httpParamSerializerJQLike:Pf,$httpBackend:Qf,$xhrFactory:Rf,$jsonpCallbacks:Sf,$location:Tf,$log:Uf,$parse:Vf,$rootScope:Wf,$q:Xf,$$q:Yf,$sce:Zf,$sceDelegate:$f,$sniffer:ag,$$taskTrackerFactory:bg,$templateCache:cg,$templateRequest:dg,$$testability:eg,$timeout:fg,$window:gg,$$rAF:hg,$$jqLite:ig,$$Map:jg,$$cookieReader:kg})}]).info({angularVersion:"1.7.6"})}(ca),ca.module("ngLocale",[],["$provide",function(a){a.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONEMONTH:"January February March April May June July August September October November December".split(" "),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(a,c){var e=0|a;return void 0===c&&(c=Math.min(function(a){var b=(a+="").indexOf(".");return-1==b?0:a.length-b-1}(a),3)),Math.pow(10,c),1==e&&0==c?"one":"other"}})}]),x(function(){Ae(C.document,Uc)}))}(window),window.angular.$$csp().noInlineStyle||window.angular.element(document.head).prepend(''),function(a){"use strict";function M(m,f){for(var d in f=f||{},a.forEach(f,function(a,d){delete f[d]}),m)!m.hasOwnProperty(d)||"$"===d.charAt(0)&&"$"===d.charAt(1)||(f[d]=m[d])}var B=a.$$minErr("$resource"),H=/^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;a.module("ngResource",["ng"]).info({angularVersion:"1.7.6"}).provider("$resource",function(){var m=/^https?:\/\/\[[^\]]*][^/]*/,f=this;this.defaults={stripTrailingSlashes:!0,cancellable:!1,actions:{get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},delete:{method:"DELETE"}}},this.$get=["$http","$log","$q","$timeout",function(d,F,G,N){function C(a,d){this.template=a,this.defaults=n({},f.defaults,d),this.urlParams={}}var O=a.noop,r=a.forEach,n=a.extend,R=a.copy,P=a.isArray,D=a.isDefined,x=a.isFunction,I=a.isNumber,y=a.$$encodeUriQuery,S=a.$$encodeUriSegment;return C.prototype={setUrlParams:function(a,d,f){var s,h,g=this,c=f||g.template,n="",b=g.urlParams=Object.create(null);r(c.split(/\W/),function(a){if("hasOwnProperty"===a)throw B("badname");!/^\d+$/.test(a)&&a&&new RegExp("(^|[^\\\\]):"+a+"(\\W|$)").test(c)&&(b[a]={isQueryParamValue:new RegExp("\\?.*=:"+a+"(?:\\W|$)").test(c)})}),c=(c=c.replace(/\\:/g,":")).replace(m,function(b){return n=b,""}),d=d||{},r(g.urlParams,function(b,a){s=(d.hasOwnProperty(a)?d:g.defaults)[a],c=D(s)&&null!==s?(h=b.isQueryParamValue?y(s,!0):S(s),c.replace(new RegExp(":"+a+"(\\W|$)","g"),function(b,a){return h+a})):c.replace(new RegExp("(/?):"+a+"(\\W|$)","g"),function(b,a,e){return"/"===e.charAt(0)?e:a+e})}),c=(c=g.defaults.stripTrailingSlashes?c.replace(/\/+$/,"")||"/":c).replace(/\/\.(?=\w+($|\?))/,"."),a.url=n+c.replace(/\/(\\|%5C)\./,"/."),r(d,function(b,c){g.urlParams[c]||(a.params=a.params||{},a.params[c]=b)})}},function(m,y,z,g){function c(b,c){var d={};return c=n({},y,c),r(c,function(c,f){if((c=x(c)?c(b):c)&&c.charAt&&"@"===c.charAt(0)){e=b;var k=c.substr(1);if(null==k||""===k||"hasOwnProperty"===k||!H.test("."+k))throw B("badmember",k);for(var h=0,n=(k=k.split(".")).length;h",link:function(scope,element,attrs){function setVersion(value){version=Math.max(1,Math.min(parseInt(value,10),10))||4}function setErrorCorrectionLevel(value){errorCorrectionLevel=value in levels?value:"M"}function setData(value){if(value){data=value.replace(trim,""),(qr=qrcode(version,errorCorrectionLevel)).addData(data);try{qr.make()}catch(e){return error=e.message}error=!1,modules=qr.getModuleCount()}}function setSize(value){size=parseInt(value,10)||2*modules,tile=size/modules,canvas.width=canvas.height=size}function render(){qr&&(error?(canvas2D||(domElement.innerHTML=''),scope.$emit("qrcode:error",error)):canvas2D?function(context,qr,modules,tile){for(var row=0;row=G&&D<=b&&(la=!0,v()))}function F(){function b(){if(!P){if(u(!1),s(y,function(a){l.style[a[0]]=a[1]}),H(a,g),c.addClass(a,ba),p.recalculateTimingStyles){if(T=l.getAttribute("class")+" "+V,ka=k.cacheKey(l,ja,g.addClass,g.removeClass),r=z(l,T,ka,!1),ga=r.maxDelay,W=Math.max(ga,0),0===(D=r.maxDuration))return void v();p.hasTransitions=0(n=h[0]).expectedEndTime)?f.cancel(n.timer):h.push(v)),F&&(m=f(d,m,!1),h[0]={timer:m,expectedEndTime:e},h.push(v),a.data("$$animateCss",h)),w.length&&a.on(w.join(" "),q),g.to&&(g.cleanupStyles&&Ma(E,l,Object.keys(g.to)),Ja(a,g))}}function d(){var b=a.data("$$animateCss");if(b){for(var c=1;c=slides.length?(currentIndex=slides.length-1,setActive($scope.active=currentIndex),self.select(slides[slides.length-1])):(currentIndex=slide,setActive($scope.active=currentIndex),self.select(slides[slide])):slideself.getCurrentIndex()?"next":"prev"),nextSlide.slide.index===currentIndex||$scope.$currentTransition||function(slide,index,direction){destroyed||(angular.extend(slide,{direction:direction}),angular.extend(slides[currentIndex].slide||{},{direction:direction}),$animate.enabled($element)&&!$scope.$currentTransition&&slides[index].element&&1=format.length||"'"!==format.charAt(i+1))&&(formatters.push(function(format,literalIdx,endIdx){return function(){return format.substr(literalIdx+1,endIdx-literalIdx-1)}}(format,literalIdx,i)),literalIdx=null);else if(i===format.length)for(;literalIdxself.modes.indexOf(self[key]))&&($scope.datepickerMode=self[key],$scope.datepickerOptions.datepickerMode=self[key])}):self[key]=$scope[key]=datepickerConfig[key]||null}}),$scope.uniqueId="datepicker-"+$scope.$id+"-"+Math.floor(1e4*Math.random()),$scope.disabled=angular.isDefined($attrs.disabled)||!1,angular.isDefined($attrs.ngDisabled)&&watchListeners.push($scope.$parent.$watch($attrs.ngDisabled,function(disabled){$scope.disabled=disabled,self.refreshView()})),$scope.isActive=function(dateObject){return 0===self.compare(dateObject.date,self.activeDate)&&($scope.activeDateId=dateObject.uid,!0)},this.init=function(ngModelCtrl_){ngModelOptions=function(ngModelCtrl){var ngModelOptions;{var timezone;angular.version.minor<6?(ngModelOptions=ngModelCtrl.$options||$scope.datepickerOptions.ngModelOptions||datepickerConfig.ngModelOptions||{}).getOption=function(key){return ngModelOptions[key]}:(timezone=ngModelCtrl.$options.getOption("timezone")||($scope.datepickerOptions.ngModelOptions?$scope.datepickerOptions.ngModelOptions.timezone:null)||(datepickerConfig.ngModelOptions?datepickerConfig.ngModelOptions.timezone:null),ngModelOptions=ngModelCtrl.$options.createChild(datepickerConfig.ngModelOptions).createChild($scope.datepickerOptions.ngModelOptions).createChild(ngModelCtrl.$options).createChild({timezone:timezone}))}return ngModelOptions}(ngModelCtrl=ngModelCtrl_),$scope.datepickerOptions.initDate?(self.activeDate=dateParser.fromTimezone($scope.datepickerOptions.initDate,ngModelOptions.getOption("timezone"))||new Date,$scope.$watch("datepickerOptions.initDate",function(initDate){initDate&&(ngModelCtrl.$isEmpty(ngModelCtrl.$modelValue)||ngModelCtrl.$invalid)&&(self.activeDate=dateParser.fromTimezone(initDate,ngModelOptions.getOption("timezone")),self.refreshView())})):self.activeDate=new Date;ngModelCtrl_=ngModelCtrl.$modelValue?new Date(ngModelCtrl.$modelValue):new Date;this.activeDate=isNaN(ngModelCtrl_)?dateParser.fromTimezone(new Date,ngModelOptions.getOption("timezone")):dateParser.fromTimezone(ngModelCtrl_,ngModelOptions.getOption("timezone")),ngModelCtrl.$render=function(){self.render()}},this.render=function(){var date;ngModelCtrl.$viewValue&&(date=new Date(ngModelCtrl.$viewValue),!isNaN(date)?this.activeDate=dateParser.fromTimezone(date,ngModelOptions.getOption("timezone")):$datepickerSuppressError||$log.error('Datepicker directive: "ng-model" value must be a Date object')),this.refreshView()},this.refreshView=function(){var date;this.element&&($scope.selectedDt=null,this._refreshView(),$scope.activeDt&&($scope.activeDateId=$scope.activeDt.uid),date=ngModelCtrl.$viewValue?new Date(ngModelCtrl.$viewValue):null,date=dateParser.fromTimezone(date,ngModelOptions.getOption("timezone")),ngModelCtrl.$setValidity("dateDisabled",!date||this.element&&!this.isDisabled(date)))},this.createDateObject=function(date,format){var model=ngModelCtrl.$viewValue?new Date(ngModelCtrl.$viewValue):null,model=dateParser.fromTimezone(model,ngModelOptions.getOption("timezone")),today=new Date,today=dateParser.fromTimezone(today,ngModelOptions.getOption("timezone")),today=this.compare(date,today),format={date:date,label:dateParser.filter(date,format),selected:model&&0===this.compare(date,model),disabled:this.isDisabled(date),past:today<0,current:0===today,future:0'),$document.find("body").append(isBody),SCROLLBAR_WIDTH=isBody[0].offsetWidth-isBody[0].clientWidth,SCROLLBAR_WIDTH=isFinite(SCROLLBAR_WIDTH)?SCROLLBAR_WIDTH:0,isBody.remove()),SCROLLBAR_WIDTH)},scrollbarPadding:function(elem){elem=this.getRawNode(elem);var elemStyle=$window.getComputedStyle(elem),paddingRight=this.parseStyle(elemStyle.paddingRight),elemStyle=this.parseStyle(elemStyle.paddingBottom),elem=this.scrollParent(elem,!1,!0),scrollbarWidth=this.scrollbarWidth(BODY_REGEX.test(elem.tagName));return{scrollbarWidth:scrollbarWidth,widthOverflow:elem.scrollWidth>elem.clientWidth,right:paddingRight+scrollbarWidth,originalRight:paddingRight,heightOverflow:elem.scrollHeight>elem.clientHeight,bottom:elemStyle+scrollbarWidth,originalBottom:elemStyle}},isScrollable:function(elem,includeHidden){elem=this.getRawNode(elem);includeHidden=includeHidden?OVERFLOW_REGEX.hidden:OVERFLOW_REGEX.normal,elem=$window.getComputedStyle(elem);return includeHidden.test(elem.overflow+elem.overflowY+elem.overflowX)},scrollParent:function(elem,includeHidden,includeSelf){elem=this.getRawNode(elem);var overflowRegex=includeHidden?OVERFLOW_REGEX.hidden:OVERFLOW_REGEX.normal,documentEl=$document[0].documentElement,includeHidden=$window.getComputedStyle(elem);if(includeSelf&&overflowRegex.test(includeHidden.overflow+includeHidden.overflowY+includeHidden.overflowX))return elem;var excludeStatic="absolute"===includeHidden.position,scrollParent=elem.parentElement||documentEl;if(scrollParent===documentEl||"fixed"===includeHidden.position)return documentEl;for(;scrollParent.parentElement&&scrollParent!==documentEl;){var spStyle=$window.getComputedStyle(scrollParent);if(!(excludeStatic=excludeStatic&&"static"!==spStyle.position?!1:excludeStatic)&&overflowRegex.test(spStyle.overflow+spStyle.overflowY+spStyle.overflowX))break;scrollParent=scrollParent.parentElement}return scrollParent},position:function(elem,includeMagins){elem=this.getRawNode(elem);var elemOffset=this.offset(elem),includeMagins=(includeMagins&&(includeMagins=$window.getComputedStyle(elem),elemOffset.top-=this.parseStyle(includeMagins.marginTop),elemOffset.left-=this.parseStyle(includeMagins.marginLeft)),this.offsetParent(elem)),parentOffset={top:0,left:0};return includeMagins!==$document[0].documentElement&&((parentOffset=this.offset(includeMagins)).top+=includeMagins.clientTop-includeMagins.scrollTop,parentOffset.left+=includeMagins.clientLeft-includeMagins.scrollLeft),{width:Math.round(angular.isNumber(elemOffset.width)?elemOffset.width:elem.offsetWidth),height:Math.round(angular.isNumber(elemOffset.height)?elemOffset.height:elem.offsetHeight),top:Math.round(elemOffset.top-parentOffset.top),left:Math.round(elemOffset.left-parentOffset.left)}},offset:function(elem){var elemBCR=(elem=this.getRawNode(elem)).getBoundingClientRect();return{width:Math.round(angular.isNumber(elemBCR.width)?elemBCR.width:elem.offsetWidth),height:Math.round(angular.isNumber(elemBCR.height)?elemBCR.height:elem.offsetHeight),top:Math.round(elemBCR.top+($window.pageYOffset||$document[0].documentElement.scrollTop)),left:Math.round(elemBCR.left+($window.pageXOffset||$document[0].documentElement.scrollLeft))}},viewportOffset:function(elem,useDocument,includePadding){includePadding=!1!==includePadding;var elemBCR=(elem=this.getRawNode(elem)).getBoundingClientRect(),offsetBCR={top:0,left:0,bottom:0,right:0},useDocument=useDocument?$document[0].documentElement:this.scrollParent(elem),elem=useDocument.getBoundingClientRect();return offsetBCR.top=elem.top+useDocument.clientTop,offsetBCR.left=elem.left+useDocument.clientLeft,useDocument===$document[0].documentElement&&(offsetBCR.top+=$window.pageYOffset,offsetBCR.left+=$window.pageXOffset),offsetBCR.bottom=offsetBCR.top+useDocument.clientHeight,offsetBCR.right=offsetBCR.left+useDocument.clientWidth,includePadding&&(elem=$window.getComputedStyle(useDocument),offsetBCR.top+=this.parseStyle(elem.paddingTop),offsetBCR.bottom-=this.parseStyle(elem.paddingBottom),offsetBCR.left+=this.parseStyle(elem.paddingLeft),offsetBCR.right-=this.parseStyle(elem.paddingRight)),{top:Math.round(elemBCR.top-offsetBCR.top),bottom:Math.round(offsetBCR.bottom-elemBCR.bottom),left:Math.round(elemBCR.left-offsetBCR.left),right:Math.round(offsetBCR.right-elemBCR.right)}},parsePlacement:function(placement){var autoPlace=PLACEMENT_REGEX.auto.test(placement);return(placement=(placement=autoPlace?placement.replace(PLACEMENT_REGEX.auto,""):placement).split("-"))[0]=placement[0]||"top",PLACEMENT_REGEX.primary.test(placement[0])||(placement[0]="top"),placement[1]=placement[1]||"center",PLACEMENT_REGEX.secondary.test(placement[1])||(placement[1]="center"),placement[2]=!!autoPlace,placement},positionElements:function(hostElem,targetElem,placement,appendToBody){hostElem=this.getRawNode(hostElem),targetElem=this.getRawNode(targetElem);var xOverflow,targetWidth=angular.isDefined(targetElem.offsetWidth)?targetElem.offsetWidth:targetElem.prop("offsetWidth"),targetHeight=angular.isDefined(targetElem.offsetHeight)?targetElem.offsetHeight:targetElem.prop("offsetHeight"),hostElemPos=(placement=this.parsePlacement(placement),appendToBody?this.offset(hostElem):this.position(hostElem)),targetElemPos={top:0,left:0,placement:""};switch(placement[2]&&(hostElem=this.viewportOffset(hostElem,appendToBody),appendToBody=$window.getComputedStyle(targetElem),targetElem=targetWidth+Math.round(Math.abs(this.parseStyle(appendToBody.marginLeft)+this.parseStyle(appendToBody.marginRight))),appendToBody=targetHeight+Math.round(Math.abs(this.parseStyle(appendToBody.marginTop)+this.parseStyle(appendToBody.marginBottom))),placement[0]="top"===placement[0]&&appendToBody>hostElem.top&&appendToBody<=hostElem.bottom?"bottom":"bottom"===placement[0]&&appendToBody>hostElem.bottom&&appendToBody<=hostElem.top?"top":"left"===placement[0]&&targetElem>hostElem.left&&targetElem<=hostElem.right?"right":"right"===placement[0]&&targetElem>hostElem.right&&targetElem<=hostElem.left?"left":placement[0],placement[1]="top"===placement[1]&&appendToBody-hostElemPos.height>hostElem.bottom&&appendToBody-hostElemPos.height<=hostElem.top?"bottom":"bottom"===placement[1]&&appendToBody-hostElemPos.height>hostElem.top&&appendToBody-hostElemPos.height<=hostElem.bottom?"top":"left"===placement[1]&&targetElem-hostElemPos.width>hostElem.right&&targetElem-hostElemPos.width<=hostElem.left?"right":"right"===placement[1]&&targetElem-hostElemPos.width>hostElem.left&&targetElem-hostElemPos.width<=hostElem.right?"left":placement[1],"center"===placement[1]&&(PLACEMENT_REGEX.vertical.test(placement[0])?(xOverflow=hostElemPos.width/2-targetWidth/2,hostElem.left+xOverflow<0&&targetElem-hostElemPos.width<=hostElem.right?placement[1]="left":hostElem.right+xOverflow<0&&targetElem-hostElemPos.width<=hostElem.left&&(placement[1]="right")):(xOverflow=hostElemPos.height/2-appendToBody/2,hostElem.top+xOverflow<0&&appendToBody-hostElemPos.height<=hostElem.bottom?placement[1]="top":hostElem.bottom+xOverflow<0&&appendToBody-hostElemPos.height<=hostElem.top&&(placement[1]="bottom")))),placement[0]){case"top":targetElemPos.top=hostElemPos.top-targetHeight;break;case"bottom":targetElemPos.top=hostElemPos.top+hostElemPos.height;break;case"left":targetElemPos.left=hostElemPos.left-targetWidth;break;case"right":targetElemPos.left=hostElemPos.left+hostElemPos.width}switch(placement[1]){case"top":targetElemPos.top=hostElemPos.top;break;case"bottom":targetElemPos.top=hostElemPos.top+hostElemPos.height-targetHeight;break;case"left":targetElemPos.left=hostElemPos.left;break;case"right":targetElemPos.left=hostElemPos.left+hostElemPos.width-targetWidth;break;case"center":PLACEMENT_REGEX.vertical.test(placement[0])?targetElemPos.left=hostElemPos.left+hostElemPos.width/2-targetWidth/2:targetElemPos.top=hostElemPos.top+hostElemPos.height/2-targetHeight/2}return targetElemPos.top=Math.round(targetElemPos.top),targetElemPos.left=Math.round(targetElemPos.left),targetElemPos.placement="center"===placement[1]?placement[0]:placement[0]+"-"+placement[1],targetElemPos},adjustTop:function(placementClasses,containerPosition,initialHeight,currentHeight){if(-1!==placementClasses.indexOf("top")&&initialHeight!==currentHeight)return{top:containerPosition.top-currentHeight+"px"}},positionArrow:function(elem,placement){var innerElem=(elem=this.getRawNode(elem)).querySelector(".tooltip-inner, .popover-inner");if(innerElem){var isTooltip=angular.element(innerElem).hasClass("tooltip-inner"),arrowElem=isTooltip?elem.querySelector(".tooltip-arrow"):elem.querySelector(".arrow");if(arrowElem){var arrowCss={top:"",bottom:"",left:"",right:""};if("center"!==(placement=this.parsePlacement(placement))[1]){var borderProp="border-"+placement[0]+"-width",borderWidth=$window.getComputedStyle(arrowElem)[borderProp],borderProp="border-",innerElem=(PLACEMENT_REGEX.vertical.test(placement[0])?borderProp+=placement[0]+"-"+placement[1]:borderProp+=placement[1]+"-"+placement[0],borderProp+="-radius",$window.getComputedStyle(isTooltip?innerElem:elem)[borderProp]);switch(placement[0]){case"top":arrowCss.bottom=isTooltip?"0":"-"+borderWidth;break;case"bottom":arrowCss.top=isTooltip?"0":"-"+borderWidth;break;case"left":arrowCss.right=isTooltip?"0":"-"+borderWidth;break;case"right":arrowCss.left=isTooltip?"0":"-"+borderWidth}arrowCss[placement[1]]=innerElem}angular.element(arrowElem).css(arrowCss)}}}}}]),angular.module("ui.bootstrap.datepickerPopup",["ui.bootstrap.datepicker","ui.bootstrap.position"]).value("$datepickerPopupLiteralWarning",!0).constant("uibDatepickerPopupConfig",{altInputFormats:[],appendToBody:!1,clearText:"Clear",closeOnDateSelection:!0,closeText:"Done",currentText:"Today",datepickerPopup:"yyyy-MM-dd",datepickerPopupTemplateUrl:"uib/template/datepickerPopup/popup.html",datepickerTemplateUrl:"uib/template/datepicker/datepicker.html",html5Types:{date:"yyyy-MM-dd","datetime-local":"yyyy-MM-ddTHH:mm:ss.sss",month:"yyyy-MM"},onOpenFocus:!0,showButtonBar:!0,placement:"auto bottom-left"}).controller("UibDatepickerPopupController",["$scope","$element","$attrs","$compile","$log","$parse","$window","$document","$rootScope","$uibPosition","dateFilter","uibDateParser","uibDatepickerPopupConfig","$timeout","uibDatepickerConfig","$datepickerPopupLiteralWarning",function($scope,$element,$attrs,$compile,$log,$parse,$window,$document,$rootScope,$position,dateFilter,dateParser,datepickerPopupConfig,$timeout,datepickerConfig,$datepickerPopupLiteralWarning){var dateFormat,closeOnDateSelection,appendToBody,onOpenFocus,datepickerTemplateUrl,popupEl,datepickerPopupTemplateUrl,scrollParentEl,ngModel,ngModelOptions,$popup,altInputFormats,isHtml5DateInput=!1,watchListeners=[];function parseDateString(viewValue){var date=dateParser.parse(viewValue,dateFormat,$scope.date);if(isNaN(date))for(var i=0;i
")).attr({"ng-model":"date","ng-change":"dateSelection(date)","template-url":datepickerPopupTemplateUrl}),(datepickerPopupTemplateUrl=angular.element(popupEl.children()[0])).attr("template-url",datepickerTemplateUrl),$scope.datepickerOptions||($scope.datepickerOptions={}),isHtml5DateInput&&"month"===$attrs.type&&($scope.datepickerOptions.datepickerMode="month",$scope.datepickerOptions.minMode="month"),datepickerPopupTemplateUrl.attr("datepicker-options","datepickerOptions"),isHtml5DateInput?ngModel.$formatters.push(function(value){return $scope.date=dateParser.fromTimezone(value,ngModelOptions.getOption("timezone")),value}):(ngModel.$$parserName="date",ngModel.$validators.date=validator,ngModel.$parsers.unshift(parseDate),ngModel.$formatters.push(function(value){return ngModel.$isEmpty(value)?$scope.date=value:(angular.isNumber(value)&&(value=new Date(value)),$scope.date=dateParser.fromTimezone(value,ngModelOptions.getOption("timezone")),dateParser.filter($scope.date,dateFormat))})),ngModel.$viewChangeListeners.push(function(){$scope.date=parseDateString(ngModel.$viewValue)}),$element.on("keydown",inputKeydownBind),$popup=$compile(popupEl)($scope),popupEl.remove(),appendToBody?$document.find("body").append($popup):$element.after($popup),$scope.$on("$destroy",function(){for(!0!==$scope.isOpen||$rootScope.$$phase||$scope.$apply(function(){$scope.isOpen=!1}),$popup.remove(),$element.off("keydown",inputKeydownBind),$document.off("click",documentClickBind),scrollParentEl&&scrollParentEl.off("scroll",positionPopup),angular.element($window).off("resize",positionPopup);watchListeners.length;)watchListeners.shift()()})},$scope.getText=function(key){return $scope[key+"Text"]||datepickerPopupConfig[key+"Text"]},$scope.isDisabled=function(date){"today"===date&&(date=dateParser.fromTimezone(new Date,ngModelOptions.getOption("timezone")));var dates={};return angular.forEach(["minDate","maxDate"],function(key){$scope.datepickerOptions[key]?angular.isDate($scope.datepickerOptions[key])?dates[key]=new Date($scope.datepickerOptions[key]):($datepickerPopupLiteralWarning&&$log.warn("Literal date support has been deprecated, please switch to date object usage"),dates[key]=new Date(dateFilter($scope.datepickerOptions[key],"medium"))):dates[key]=null}),$scope.datepickerOptions&&dates.minDate&&$scope.compare(date,dates.minDate)<0||dates.maxDate&&0<$scope.compare(date,dates.maxDate)},$scope.compare=function(date1,date2){return new Date(date1.getFullYear(),date1.getMonth(),date1.getDate())-new Date(date2.getFullYear(),date2.getMonth(),date2.getDate())},$scope.dateSelection=function(dt){$scope.date=dt;dt=$scope.date?dateParser.filter($scope.date,dateFormat):null;$element.val(dt),ngModel.$setViewValue(dt),closeOnDateSelection&&($scope.isOpen=!1,$element[0].focus())},$scope.keydown=function(evt){27===evt.which&&(evt.stopPropagation(),$scope.isOpen=!1,$element[0].focus())},$scope.select=function(date,evt){evt.stopPropagation(),"today"===date&&(evt=new Date,angular.isDate($scope.date)?(date=new Date($scope.date)).setFullYear(evt.getFullYear(),evt.getMonth(),evt.getDate()):(date=dateParser.fromTimezone(evt,ngModelOptions.getOption("timezone"))).setHours(0,0,0,0)),$scope.dateSelection(date)},$scope.close=function(evt){evt.stopPropagation(),$scope.isOpen=!1,$element[0].focus()},$scope.disabled=angular.isDefined($attrs.disabled)||!1,$attrs.ngDisabled&&watchListeners.push($scope.$parent.$watch($parse($attrs.ngDisabled),function(disabled){$scope.disabled=disabled})),$scope.$watch("isOpen",function(value){value?$scope.disabled?$scope.isOpen=!1:$timeout(function(){positionPopup(),onOpenFocus&&$scope.$broadcast("uib:datepicker.focus"),$document.on("click",documentClickBind);var placement=$attrs.popupPlacement||datepickerPopupConfig.placement;appendToBody||$position.parsePlacement(placement)[2]?(scrollParentEl=scrollParentEl||angular.element($position.scrollParent($element)))&&scrollParentEl.on("scroll",positionPopup):scrollParentEl=null,angular.element($window).on("resize",positionPopup)},0,!1):($document.off("click",documentClickBind),scrollParentEl&&scrollParentEl.off("scroll",positionPopup),angular.element($window).off("resize",positionPopup))}),$scope.$on("uib:datepicker.mode",function(){$timeout(positionPopup,0,!1)})}]).directive("uibDatepickerPopup",function(){return{require:["ngModel","uibDatepickerPopup"],controller:"UibDatepickerPopupController",scope:{datepickerOptions:"=?",isOpen:"=?",currentText:"@",clearText:"@",closeText:"@"},link:function(scope,element,attrs,ctrls){var ngModel=ctrls[0];ctrls[1].init(ngModel)}}}).directive("uibDatepickerPopupWrap",function(){return{restrict:"A",transclude:!0,templateUrl:function(element,attrs){return attrs.templateUrl||"uib/template/datepickerPopup/popup.html"}}}),angular.module("ui.bootstrap.debounce",[]).factory("$$debounce",["$timeout",function($timeout){return function(callback,debounceTime){var timeoutPromise;return function(){var self=this,args=Array.prototype.slice.call(arguments);timeoutPromise&&$timeout.cancel(timeoutPromise),timeoutPromise=$timeout(function(){callback.apply(self,args)},debounceTime)}}}]),angular.module("ui.bootstrap.multiMap",[]).factory("$$multiMap",function(){return{createNew:function(){var map={};return{entries:function(){return Object.keys(map).map(function(key){return{key:key,value:map[key]}})},get:function(key){return map[key]},hasKey:function(key){return!!map[key]},keys:function(){return Object.keys(map)},put:function(key,value){map[key]||(map[key]=[]),map[key].push(value)},remove:function(key,value){var values=map[key];values&&(-1!==(value=values.indexOf(value))&&values.splice(value,1),values.length||delete map[key])}}}}}),angular.module("ui.bootstrap.dropdown",["ui.bootstrap.multiMap","ui.bootstrap.position"]).constant("uibDropdownConfig",{appendToOpenClass:"uib-dropdown-open",openClass:"open"}).service("uibDropdownService",["$document","$rootScope","$$multiMap",function($document,$rootScope,$$multiMap){var openScope=null,openedContainers=$$multiMap.createNew(),closeDropdown=(this.isOnlyOpen=function(dropdownScope,appendTo){appendTo=openedContainers.get(appendTo);if(appendTo&&appendTo.reduce(function(toClose,dropdown){return dropdown.scope===dropdownScope?dropdown:toClose},{}))return 1===appendTo.length;return!1},this.open=function(dropdownScope,element,appendTo){var openedDropdowns;openScope||$document.on("click",closeDropdown),openScope&&openScope!==dropdownScope&&(openScope.isOpen=!1),openScope=dropdownScope,!appendTo||(openedDropdowns=openedContainers.get(appendTo))&&-1!==openedDropdowns.map(function(dropdown){return dropdown.scope}).indexOf(dropdownScope)||openedContainers.put(appendTo,{scope:dropdownScope})},this.close=function(dropdownScope,element,appendTo){var openedDropdowns;openScope===dropdownScope&&($document.off("click",closeDropdown),$document.off("keydown",this.keybindFilter),openScope=null),appendTo&&(openedDropdowns=openedContainers.get(appendTo))&&(openedDropdowns=openedDropdowns.reduce(function(toClose,dropdown){return dropdown.scope===dropdownScope?dropdown:toClose},{}))&&openedContainers.remove(appendTo,openedDropdowns)},function(evt){var toggleElement;openScope&&openScope.isOpen&&(evt&&"disabled"===openScope.getAutoClose()||evt&&3===evt.which||(toggleElement=openScope.getToggleElement(),evt&&toggleElement&&toggleElement[0].contains(evt.target)||(toggleElement=openScope.getDropdownElement(),evt&&"outsideClick"===openScope.getAutoClose()&&toggleElement&&toggleElement[0].contains(evt.target)||(openScope.focusToggleElement(),openScope.isOpen=!1,$rootScope.$$phase||openScope.$apply()))))});this.keybindFilter=function(evt){var dropdownElement,toggleElement;openScope&&(dropdownElement=openScope.getDropdownElement(),toggleElement=openScope.getToggleElement(),dropdownElement=dropdownElement&&dropdownElement[0].contains(evt.target),toggleElement=toggleElement&&toggleElement[0].contains(evt.target),27===evt.which?(evt.stopPropagation(),openScope.focusToggleElement(),closeDropdown()):openScope.isKeynavEnabled()&&-1!==[38,40].indexOf(evt.which)&&openScope.isOpen&&(dropdownElement||toggleElement)&&(evt.preventDefault(),evt.stopPropagation(),openScope.focusDropdownEntry(evt.which)))}}]).controller("UibDropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest",function($scope,$element,$attrs,$parse,dropdownConfig,uibDropdownService,$animate,$position,$document,$compile,$templateRequest){var templateScope,getIsOpen,self=this,scope=$scope.$new(),appendToOpenClass=dropdownConfig.appendToOpenClass,openClass=dropdownConfig.openClass,setIsOpen=angular.noop,toggleInvoker=$attrs.onToggle?$parse($attrs.onToggle):angular.noop,keynavEnabled=!1,body=$document.find("body");function removeDropdownMenu(){$element.append(self.dropdownMenu)}$element.addClass("dropdown"),this.init=function(){$attrs.isOpen&&(getIsOpen=$parse($attrs.isOpen),setIsOpen=getIsOpen.assign,$scope.$watch(getIsOpen,function(value){scope.isOpen=!!value})),keynavEnabled=angular.isDefined($attrs.keyboardNav)},this.toggle=function(open){return scope.isOpen=arguments.length?!!open:!scope.isOpen,angular.isFunction(setIsOpen)&&setIsOpen(scope,scope.isOpen),scope.isOpen},this.isOpen=function(){return scope.isOpen},scope.getToggleElement=function(){return self.toggleElement},scope.getAutoClose=function(){return $attrs.autoClose||"always"},scope.getElement=function(){return $element},scope.isKeynavEnabled=function(){return keynavEnabled},scope.focusDropdownEntry=function(keyCode){var elems=(self.dropdownMenu?angular.element(self.dropdownMenu):$element.find("ul").eq(0)).find("a");switch(keyCode){case 40:angular.isNumber(self.selectedOption)?self.selectedOption=self.selectedOption===elems.length-1?self.selectedOption:self.selectedOption+1:self.selectedOption=0;break;case 38:angular.isNumber(self.selectedOption)?self.selectedOption=0===self.selectedOption?0:self.selectedOption-1:self.selectedOption=elems.length-1}elems[self.selectedOption].focus()},scope.getDropdownElement=function(){return self.dropdownMenu},scope.focusToggleElement=function(){self.toggleElement&&self.toggleElement[0].focus()},scope.$watch("isOpen",function(isOpen,wasOpen){var css,scrollbarPadding,appendTo=null,appendToBody=!1,appendToEl=(!angular.isDefined($attrs.dropdownAppendTo)||(appendToEl=$parse($attrs.dropdownAppendTo)(scope))&&(appendTo=angular.element(appendToEl)),(appendTo=(appendToBody=angular.isDefined($attrs.dropdownAppendToBody)&&!1!==$parse($attrs.dropdownAppendToBody)(scope)?!0:appendToBody)&&!appendTo?body:appendTo)&&self.dropdownMenu&&(isOpen?(appendTo.append(self.dropdownMenu),$element.on("$destroy",removeDropdownMenu)):($element.off("$destroy",removeDropdownMenu),removeDropdownMenu())),appendTo&&self.dropdownMenu&&(css={top:(pos=$position.positionElements($element,self.dropdownMenu,"bottom-left",!(appendToEl=0))).top+"px",display:isOpen?"block":"none"},(rightalign=self.dropdownMenu.hasClass("dropdown-menu-right"))?(css.left="auto",(scrollbarPadding=$position.scrollbarPadding(appendTo)).heightOverflow&&scrollbarPadding.scrollbarWidth&&(appendToEl=scrollbarPadding.scrollbarWidth),css.right=window.innerWidth-appendToEl-(pos.left+$element.prop("offsetWidth"))+"px"):(css.left=pos.left+"px",css.right="auto"),appendToBody||(scrollbarPadding=$position.offset(appendTo),css.top=pos.top-scrollbarPadding.top+"px",rightalign?css.right=window.innerWidth-(pos.left-scrollbarPadding.left+$element.prop("offsetWidth"))+"px":css.left=pos.left-scrollbarPadding.left+"px"),self.dropdownMenu.css(css)),appendTo||$element),appendToBody=appendTo?appendToOpenClass:openClass,rightalign=appendToEl.hasClass(appendToBody),pos=uibDropdownService.isOnlyOpen($scope,appendTo);rightalign===!isOpen&&$animate[appendTo?pos?"removeClass":"addClass":isOpen?"addClass":"removeClass"](appendToEl,appendToBody).then(function(){angular.isDefined(isOpen)&&isOpen!==wasOpen&&toggleInvoker($scope,{open:!!isOpen})}),isOpen?(self.dropdownMenuTemplateUrl?$templateRequest(self.dropdownMenuTemplateUrl).then(function(tplContent){templateScope=scope.$new(),$compile(tplContent.trim())(templateScope,function(dropdownElement){self.dropdownMenu.replaceWith(dropdownElement),self.dropdownMenu=dropdownElement,$document.on("keydown",uibDropdownService.keybindFilter)})}):$document.on("keydown",uibDropdownService.keybindFilter),scope.focusToggleElement(),uibDropdownService.open(scope,$element,appendTo)):(uibDropdownService.close(scope,$element,appendTo),self.dropdownMenuTemplateUrl&&(templateScope&&templateScope.$destroy(),scrollbarPadding=angular.element(''),self.dropdownMenu.replaceWith(scrollbarPadding),self.dropdownMenu=scrollbarPadding),self.selectedOption=null),angular.isFunction(setIsOpen)&&setIsOpen($scope,isOpen)})}]).directive("uibDropdown",function(){return{controller:"UibDropdownController",link:function(scope,element,attrs,dropdownCtrl){dropdownCtrl.init()}}}).directive("uibDropdownMenu",function(){return{restrict:"A",require:"?^uibDropdown",link:function(scope,element,attrs,dropdownCtrl){dropdownCtrl&&!angular.isDefined(attrs.dropdownNested)&&(element.addClass("dropdown-menu"),(attrs=attrs.templateUrl)&&(dropdownCtrl.dropdownMenuTemplateUrl=attrs),dropdownCtrl.dropdownMenu||(dropdownCtrl.dropdownMenu=element))}}}).directive("uibDropdownToggle",function(){return{require:"?^uibDropdown",link:function(scope,element,attrs,dropdownCtrl){var toggleDropdown;dropdownCtrl&&(element.addClass("dropdown-toggle"),(dropdownCtrl.toggleElement=element).on("click",toggleDropdown=function(event){event.preventDefault(),element.hasClass("disabled")||attrs.disabled||scope.$apply(function(){dropdownCtrl.toggle()})}),element.attr({"aria-haspopup":!0,"aria-expanded":!1}),scope.$watch(dropdownCtrl.isOpen,function(isOpen){element.attr("aria-expanded",!!isOpen)}),scope.$on("$destroy",function(){element.off("click",toggleDropdown)}))}}}),angular.module("ui.bootstrap.stackedMap",[]).factory("$$stackedMap",function(){return{createNew:function(){var stack=[];return{add:function(key,value){stack.push({key:key,value:value})},get:function(key){for(var i=0;i')).attr({class:"modal-backdrop","ng-style":"{'z-index': 1040 + (index && 1 || 0) + index*10}","uib-modal-animation-class":"fade","modal-in-class":"in"}),modal.backdropClass&&backdropDomEl.addClass(modal.backdropClass),modal.animation&&backdropDomEl.attr("modal-animation","true"),$compile(backdropDomEl)(backdropScope),$animate.enter(backdropDomEl,modalInstance),$uibPosition.isScrollable(modalInstance)&&(scrollbarPadding=$uibPosition.scrollbarPadding(modalInstance)).heightOverflow&&scrollbarPadding.scrollbarWidth&&modalInstance.css({paddingRight:scrollbarPadding.right+"px"})),modal.component?(content=document.createElement(modal.component.name.replace(SNAKE_CASE_REGEXP,function(letter,pos){return(pos?"-":"")+letter.toLowerCase()})),(content=angular.element(content)).attr({resolve:"$resolve","modal-instance":"$uibModalInstance",close:"$close($value)",dismiss:"$dismiss($value)"})):content=modal.content,topModalIndex=previousTopOpenedModal?parseInt(previousTopOpenedModal.value.modalDomEl.attr("index"),10)+1:0,angular.element('
'));currBackdropIndex.attr({class:"modal","template-url":modal.windowTemplateUrl,"window-top-class":modal.windowTopClass,role:"dialog","aria-labelledby":modal.ariaLabelledBy,"aria-describedby":modal.ariaDescribedBy,size:modal.size,index:topModalIndex,animate:"animate","ng-style":"{'z-index': 1050 + $$topModalIndex*10, display: 'block'}",tabindex:-1,"uib-modal-animation-class":"fade","modal-in-class":"in"}).append(content),modal.windowClass&&currBackdropIndex.addClass(modal.windowClass),modal.animation&&currBackdropIndex.attr("modal-animation","true"),modalInstance.addClass(modalBodyClass),modal.scope&&(modal.scope.$$topModalIndex=topModalIndex),$animate.enter($compile(currBackdropIndex)(modal.scope),modalInstance),openedWindows.top().value.modalDomEl=currBackdropIndex,openedWindows.top().value.modalOpener=modalOpener,function applyAriaHidden(el){if(!el||"BODY"===el[0].tagName)return;getSiblings(el).forEach(function(sibling){var elemIsAlreadyHidden="true"===sibling.getAttribute("aria-hidden"),ariaHiddenCount=parseInt(sibling.getAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME),10);ariaHiddenCount=ariaHiddenCount||(elemIsAlreadyHidden?1:0),sibling.setAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME,ariaHiddenCount+1),sibling.setAttribute("aria-hidden","true")});return applyAriaHidden(el.parent());function getSiblings(el){var children=el.parent()?el.parent().children():[];return Array.prototype.filter.call(children,function(child){return child!==el[0]})}}(currBackdropIndex)},$modalStack.close=function(modalInstance,result){var modalWindow=openedWindows.get(modalInstance);return unhideBackgroundElements(),modalWindow&&broadcastClosing(modalWindow,result,!0)?(modalWindow.value.modalScope.$$uibDestructionScheduled=!0,modalWindow.value.deferred.resolve(result),removeModalWindow(modalInstance,modalWindow.value.modalOpener),!0):!modalWindow},$modalStack.dismiss=function(modalInstance,reason){var modalWindow=openedWindows.get(modalInstance);return unhideBackgroundElements(),modalWindow&&broadcastClosing(modalWindow,reason,!1)?(modalWindow.value.modalScope.$$uibDestructionScheduled=!0,modalWindow.value.deferred.reject(reason),removeModalWindow(modalInstance,modalWindow.value.modalOpener),!0):!modalWindow},$modalStack.dismissAll=function(reason){for(var topModal=this.getTop();topModal&&this.dismiss(topModal.key,reason);)topModal=this.getTop()},$modalStack.getTop=function(){return openedWindows.top()},$modalStack.modalRendered=function(modalInstance){modalInstance=openedWindows.get(modalInstance);modalInstance&&modalInstance.value.renderDeferred.resolve()},$modalStack.focusFirstFocusableElement=function(list){return 0$scope.totalPages?$scope.selectPage($scope.totalPages):ctrl.ngModelCtrl.$render()},$scope.$on("$destroy",function(){for(;ctrl._watchers.length;)ctrl._watchers.shift()()})}}}]),angular.module("ui.bootstrap.pager",["ui.bootstrap.paging","ui.bootstrap.tabindex"]).controller("UibPagerController",["$scope","$attrs","uibPaging","uibPagerConfig",function($scope,$attrs,uibPaging,uibPagerConfig){$scope.align=angular.isDefined($attrs.align)?$scope.$parent.$eval($attrs.align):uibPagerConfig.align,uibPaging.create(this,$scope,$attrs)}]).constant("uibPagerConfig",{itemsPerPage:10,previousText:"« Previous",nextText:"Next »",align:!0}).directive("uibPager",["uibPagerConfig",function(uibPagerConfig){return{scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["uibPager","?ngModel"],restrict:"A",controller:"UibPagerController",controllerAs:"pager",templateUrl:function(element,attrs){return attrs.templateUrl||"uib/template/pager/pager.html"},link:function(scope,element,attrs,ctrls){element.addClass("pager");element=ctrls[0],ctrls=ctrls[1];ctrls&&element.init(ctrls,uibPagerConfig)}}}]),angular.module("ui.bootstrap.pagination",["ui.bootstrap.paging","ui.bootstrap.tabindex"]).controller("UibPaginationController",["$scope","$attrs","$parse","uibPaging","uibPaginationConfig",function($scope,$attrs,$parse,uibPaging,uibPaginationConfig){var ctrl=this,maxSize=angular.isDefined($attrs.maxSize)?$scope.$parent.$eval($attrs.maxSize):uibPaginationConfig.maxSize,rotate=angular.isDefined($attrs.rotate)?$scope.$parent.$eval($attrs.rotate):uibPaginationConfig.rotate,forceEllipses=angular.isDefined($attrs.forceEllipses)?$scope.$parent.$eval($attrs.forceEllipses):uibPaginationConfig.forceEllipses,boundaryLinkNumbers=angular.isDefined($attrs.boundaryLinkNumbers)?$scope.$parent.$eval($attrs.boundaryLinkNumbers):uibPaginationConfig.boundaryLinkNumbers,pageLabel=angular.isDefined($attrs.pageLabel)?function(idx){return $scope.$parent.$eval($attrs.pageLabel,{$page:idx})}:angular.identity;function makePage(number,text,isActive){return{number:number,text:text,active:isActive}}$scope.boundaryLinks=angular.isDefined($attrs.boundaryLinks)?$scope.$parent.$eval($attrs.boundaryLinks):uibPaginationConfig.boundaryLinks,$scope.directionLinks=angular.isDefined($attrs.directionLinks)?$scope.$parent.$eval($attrs.directionLinks):uibPaginationConfig.directionLinks,$attrs.$set("role","menu"),uibPaging.create(this,$scope,$attrs),$attrs.maxSize&&ctrl._watchers.push($scope.$parent.$watch($parse($attrs.maxSize),function(value){maxSize=parseInt(value,10),ctrl.render()}));var originalRender=this.render;this.render=function(){originalRender(),0<$scope.page&&$scope.page<=$scope.totalPages&&($scope.pages=function(currentPage,totalPages){var pages=[],startPage=1,endPage=totalPages,isMaxSized=angular.isDefined(maxSize)&&maxSize';return{compile:function(tElem,tAttrs){var tooltipLinker=$compile(template);return function(scope,element,attrs,tooltipCtrl){function positionTooltip(){tooltip&&tooltip.html()&&(positionTimeout=positionTimeout||$timeout(function(){var ttPosition=$position.positionElements(element,tooltip,ttScope.placement,appendToBody),initialHeight=angular.isDefined(tooltip.offsetHeight)?tooltip.offsetHeight:tooltip.prop("offsetHeight"),elementPos=appendToBody?$position.offset(element):$position.position(element),placementClasses=(tooltip.css({top:ttPosition.top+"px",left:ttPosition.left+"px"}),ttPosition.placement.split("-"));tooltip.hasClass(placementClasses[0])||(tooltip.removeClass(lastPlacement.split("-")[0]),tooltip.addClass(placementClasses[0])),tooltip.hasClass(options.placementClassPrefix+ttPosition.placement)||(tooltip.removeClass(options.placementClassPrefix+lastPlacement),tooltip.addClass(options.placementClassPrefix+ttPosition.placement)),adjustmentTimeout=$timeout(function(){var currentHeight=angular.isDefined(tooltip.offsetHeight)?tooltip.offsetHeight:tooltip.prop("offsetHeight"),currentHeight=$position.adjustTop(placementClasses,elementPos,initialHeight,currentHeight);currentHeight&&tooltip.css(currentHeight),adjustmentTimeout=null},0,!1),tooltip.hasClass("uib-position-measure")?($position.positionArrow(tooltip,ttPosition.placement),tooltip.removeClass("uib-position-measure")):lastPlacement!==ttPosition.placement&&$position.positionArrow(tooltip,ttPosition.placement),lastPlacement=ttPosition.placement,positionTimeout=null},0,!1))}var tooltip,tooltipLinkedScope,transitionTimeout,showTimeout,hideTimeout,positionTimeout,adjustmentTimeout,lastPlacement,appendToBody=!!angular.isDefined(options.appendToBody)&&options.appendToBody,triggers=getTriggers(void 0),hasEnableExp=angular.isDefined(attrs[prefix+"Enable"]),ttScope=scope.$new(!0),repositionScheduled=!1,isOpenParse=!!angular.isDefined(attrs[prefix+"IsOpen"])&&$parse(attrs[prefix+"IsOpen"]),contentParse=!!options.useContentExp&&$parse(attrs[ttType]),observers=[];function toggleTooltipBind(){(ttScope.isOpen?hideTooltipBind:showTooltipBind)()}function showTooltipBind(){var placement,closeDelay;hasEnableExp&&!scope.$eval(attrs[prefix+"Enable"])||(cancelHide(),ttScope.title=attrs[prefix+"Title"],ttScope.content=contentParse?contentParse(scope):attrs[ttType],ttScope.popupClass=attrs[prefix+"Class"],ttScope.placement=angular.isDefined(attrs[prefix+"Placement"])?attrs[prefix+"Placement"]:options.placement,placement=$position.parsePlacement(ttScope.placement),lastPlacement=placement[1]?placement[0]+"-"+placement[1]:placement[0],placement=parseInt(attrs[prefix+"PopupDelay"],10),closeDelay=parseInt(attrs[prefix+"PopupCloseDelay"],10),ttScope.popupDelay=isNaN(placement)?options.popupDelay:placement,ttScope.popupCloseDelay=isNaN(closeDelay)?options.popupCloseDelay:closeDelay,ttScope.popupDelay?showTimeout=showTimeout||$timeout(show,ttScope.popupDelay,!1):show())}function hideTooltipBind(){cancelShow(),ttScope.popupCloseDelay?hideTimeout=hideTimeout||$timeout(hide,ttScope.popupCloseDelay,!1):hide()}function show(){if(cancelShow(),cancelHide(),!ttScope.content)return angular.noop;tooltip||(tooltipLinkedScope=ttScope.$new(),tooltip=tooltipLinker(tooltipLinkedScope,function(tooltip){appendToBody?$document.find("body").append(tooltip):element.after(tooltip)}),openedTooltips.add(ttScope,{close:hide}),observers.length=0,contentParse?(observers.push(scope.$watch(contentParse,function(val){!(ttScope.content=val)&&ttScope.isOpen&&hide()})),observers.push(tooltipLinkedScope.$watch(function(){repositionScheduled||(repositionScheduled=!0,tooltipLinkedScope.$$postDigest(function(){repositionScheduled=!1,ttScope&&ttScope.isOpen&&positionTooltip()}))}))):observers.push(attrs.$observe(ttType,function(val){(!(ttScope.content=val)&&ttScope.isOpen?hide:positionTooltip)()})),observers.push(attrs.$observe(prefix+"Title",function(val){ttScope.title=val,ttScope.isOpen&&positionTooltip()})),observers.push(attrs.$observe(prefix+"Placement",function(val){ttScope.placement=val||options.placement,ttScope.isOpen&&positionTooltip()}))),ttScope.$evalAsync(function(){assignIsOpen(ttScope.isOpen=!0),positionTooltip()})}function cancelShow(){showTimeout&&($timeout.cancel(showTimeout),showTimeout=null),positionTimeout&&($timeout.cancel(positionTimeout),positionTimeout=null)}function hide(){ttScope&&ttScope.$evalAsync(function(){ttScope&&(assignIsOpen(ttScope.isOpen=!1),ttScope.animation?transitionTimeout=transitionTimeout||$timeout(removeTooltip,150,!1):removeTooltip())})}function cancelHide(){hideTimeout&&($timeout.cancel(hideTimeout),hideTimeout=null),transitionTimeout&&($timeout.cancel(transitionTimeout),transitionTimeout=null)}function removeTooltip(){cancelShow(),cancelHide(),observers.length&&(angular.forEach(observers,function(observer){observer()}),observers.length=0),tooltip&&(tooltip.remove(),tooltip=null,adjustmentTimeout&&$timeout.cancel(adjustmentTimeout)),openedTooltips.remove(ttScope),tooltipLinkedScope&&(tooltipLinkedScope.$destroy(),tooltipLinkedScope=null)}function assignIsOpen(isOpen){isOpenParse&&angular.isFunction(isOpenParse.assign)&&isOpenParse.assign(scope,isOpen)}function bodyHideTooltipBind(e){ttScope&&ttScope.isOpen&&tooltip&&(element[0].contains(e.target)||tooltip[0].contains(e.target)||hideTooltipBind())}function hideOnEscapeKey(e){27===e.which&&hideTooltipBind()}ttScope.origScope=scope,ttScope.isOpen=!1,ttScope.contentExp=function(){return ttScope.content},attrs.$observe("disabled",function(val){val&&cancelShow(),val&&ttScope.isOpen&&hide()}),isOpenParse&&scope.$watch(isOpenParse,function(val){ttScope&&!val===ttScope.isOpen&&toggleTooltipBind()});function unregisterTriggers(){triggers.show.forEach(function(trigger){"outsideClick"===trigger?element.off("click",toggleTooltipBind):(element.off(trigger,showTooltipBind),element.off(trigger,toggleTooltipBind)),element.off("keypress",hideOnEscapeKey)}),triggers.hide.forEach(function(trigger){"outsideClick"===trigger?$document.off("click",bodyHideTooltipBind):element.off(trigger,hideTooltipBind)})}var showTriggers,hideTriggers,val;showTriggers=[],hideTriggers=[],val=scope.$eval(attrs[prefix+"Trigger"]),unregisterTriggers(),"none"!==(triggers=angular.isObject(val)?(Object.keys(val).forEach(function(key){showTriggers.push(key),hideTriggers.push(val[key])}),{show:showTriggers,hide:hideTriggers}):getTriggers(val)).show&&triggers.show.forEach(function(trigger,idx){"outsideClick"===trigger?(element.on("click",toggleTooltipBind),$document.on("click",bodyHideTooltipBind)):trigger===triggers.hide[idx]?element.on(trigger,toggleTooltipBind):trigger&&(element.on(trigger,showTooltipBind),element.on(triggers.hide[idx],hideTooltipBind)),element.on("keypress",hideOnEscapeKey)});var animation=scope.$eval(attrs[prefix+"Animation"]),animation=(ttScope.animation=angular.isDefined(animation)?!!animation:options.animation,prefix+"AppendToBody"),animation=animation in attrs&&void 0===attrs[animation]||scope.$eval(attrs[animation]),appendToBody=angular.isDefined(animation)?animation:appendToBody;scope.$on("$destroy",function(){unregisterTriggers(),removeTooltip(),ttScope=null})}}}}}]}).directive("uibTooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest",function($animate,$sce,$compile,$templateRequest){return{link:function(scope,elem,attrs){function cleanupLastIncludeContent(){previousElement&&(previousElement.remove(),previousElement=null),currentScope&&(currentScope.$destroy(),currentScope=null),currentElement&&($animate.leave(currentElement).then(function(){previousElement=null}),previousElement=currentElement,currentElement=null)}var currentScope,previousElement,currentElement,origScope=scope.$eval(attrs.tooltipTemplateTranscludeScope),changeCounter=0;scope.$watch($sce.parseAsResourceUrl(attrs.uibTooltipTemplateTransclude),function(src){var thisChangeId=++changeCounter;src?($templateRequest(src,!0).then(function(response){var newScope;thisChangeId===changeCounter&&(newScope=origScope.$new(),response=$compile(response)(newScope,function(clone){cleanupLastIncludeContent(),$animate.enter(clone,elem)}),currentElement=response,(currentScope=newScope).$emit("$includeContentLoaded",src))},function(){thisChangeId===changeCounter&&(cleanupLastIncludeContent(),scope.$emit("$includeContentError",src))}),scope.$emit("$includeContentRequested",src)):cleanupLastIncludeContent()}),scope.$on("$destroy",cleanupLastIncludeContent)}}}]).directive("uibTooltipClasses",["$uibPosition",function($uibPosition){return{restrict:"A",link:function(scope,element,attrs){var position;scope.placement&&(position=$uibPosition.parsePlacement(scope.placement),element.addClass(position[0])),scope.popupClass&&element.addClass(scope.popupClass),scope.animation&&element.addClass(attrs.tooltipAnimationClass)}}}]).directive("uibTooltipPopup",function(){return{restrict:"A",scope:{content:"@"},templateUrl:"uib/template/tooltip/tooltip-popup.html"}}).directive("uibTooltip",["$uibTooltip",function($uibTooltip){return $uibTooltip("uibTooltip","tooltip","mouseenter")}]).directive("uibTooltipTemplatePopup",function(){return{restrict:"A",scope:{contentExp:"&",originScope:"&"},templateUrl:"uib/template/tooltip/tooltip-template-popup.html"}}).directive("uibTooltipTemplate",["$uibTooltip",function($uibTooltip){return $uibTooltip("uibTooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("uibTooltipHtmlPopup",function(){return{restrict:"A",scope:{contentExp:"&"},templateUrl:"uib/template/tooltip/tooltip-html-popup.html"}}).directive("uibTooltipHtml",["$uibTooltip",function($uibTooltip){return $uibTooltip("uibTooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.popover",["ui.bootstrap.tooltip"]).directive("uibPopoverTemplatePopup",function(){return{restrict:"A",scope:{uibTitle:"@",contentExp:"&",originScope:"&"},templateUrl:"uib/template/popover/popover-template.html"}}).directive("uibPopoverTemplate",["$uibTooltip",function($uibTooltip){return $uibTooltip("uibPopoverTemplate","popover","click",{useContentExp:!0})}]).directive("uibPopoverHtmlPopup",function(){return{restrict:"A",scope:{contentExp:"&",uibTitle:"@"},templateUrl:"uib/template/popover/popover-html.html"}}).directive("uibPopoverHtml",["$uibTooltip",function($uibTooltip){return $uibTooltip("uibPopoverHtml","popover","click",{useContentExp:!0})}]).directive("uibPopoverPopup",function(){return{restrict:"A",scope:{uibTitle:"@",content:"@"},templateUrl:"uib/template/popover/popover.html"}}).directive("uibPopover",["$uibTooltip",function($uibTooltip){return $uibTooltip("uibPopover","popover","click")}]),angular.module("ui.bootstrap.progressbar",[]).constant("uibProgressConfig",{animate:!0,max:100}).controller("UibProgressController",["$scope","$attrs","uibProgressConfig",function($scope,$attrs,progressConfig){var self=this,animate=angular.isDefined($attrs.animate)?$scope.$parent.$eval($attrs.animate):progressConfig.animate;function getMaxOrDefault(){return angular.isDefined($scope.maxParam)?$scope.maxParam:progressConfig.max}this.bars=[],$scope.max=getMaxOrDefault(),this.addBar=function(bar,element,attrs){animate||element.css({transition:"none"}),this.bars.push(bar),bar.max=getMaxOrDefault(),bar.title=attrs&&angular.isDefined(attrs.title)?attrs.title:"progressbar",bar.$watch("value",function(value){bar.recalculatePercentage()}),bar.recalculatePercentage=function(){var totalPercentage=self.bars.reduce(function(total,bar){return bar.percent=+(100*bar.value/bar.max).toFixed(2),total+bar.percent},0);100=this.titles.length?index+1:this.titles[index]},$scope.rate=function(value){!$scope.readonly&&0<=value&&value<=$scope.range.length&&(value=self.enableReset&&ngModelCtrl.$viewValue===value?0:value,ngModelCtrl.$setViewValue(value),ngModelCtrl.$render())},$scope.enter=function(value){$scope.readonly||($scope.value=value),$scope.onHover({value:value})},$scope.reset=function(){$scope.value=ngModelCtrl.$viewValue,$scope.onLeave()},$scope.onKeydown=function(evt){/(37|38|39|40)/.test(evt.which)&&(evt.preventDefault(),evt.stopPropagation(),$scope.rate($scope.value+(38===evt.which||39===evt.which?1:-1)))},this.render=function(){$scope.value=ngModelCtrl.$viewValue,$scope.title=self.getTitle($scope.value-1)}}]).directive("uibRating",function(){return{require:["uibRating","ngModel"],restrict:"A",scope:{readonly:"=?readOnly",onHover:"&",onLeave:"&"},controller:"UibRatingController",templateUrl:"uib/template/rating/rating.html",link:function(scope,element,attrs,ctrls){var ratingCtrl=ctrls[0],ctrls=ctrls[1];ratingCtrl.init(ctrls)}}}),angular.module("ui.bootstrap.tabs",[]).controller("UibTabsetController",["$scope",function($scope){var oldIndex,destroyed,ctrl=this;function findTabIndex(index){for(var i=0;it2.index?1:t1.indexmax:disabled||addMinutes(selected,-720)")).css("position","relative"),element.after(inputsContainer),(hintInputElem=element.clone()).attr("placeholder",""),hintInputElem.attr("tabindex","-1"),hintInputElem.val(""),hintInputElem.css({position:"absolute",top:"0px",left:"0px","border-color":"transparent","box-shadow":"none",opacity:1,background:"none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)",color:"#999"}),element.css({position:"relative","vertical-align":"top","background-color":"transparent"}),hintInputElem.attr("id")&&hintInputElem.removeAttr("id"),inputsContainer.append(hintInputElem),hintInputElem.after(element)),angular.element("
")),resetHint=(popUpEl.attr({id:popupId,matches:"matches",active:"activeIdx",select:"select(activeIdx, evt)","move-in-progress":"moveInProgress",query:"query",position:"position","assign-is-open":"assignIsOpen(isOpen)",debounce:"debounceUpdate"}),angular.isDefined(attrs.typeaheadTemplateUrl)&&popUpEl.attr("template-url",attrs.typeaheadTemplateUrl),angular.isDefined(attrs.typeaheadPopupTemplateUrl)&&popUpEl.attr("popup-template-url",attrs.typeaheadPopupTemplateUrl),function(){showHint&&hintInputElem.val("")}),resetMatches=function(){scope.matches=[],scope.activeIdx=-1,element.attr("aria-expanded",!1),resetHint()},getMatchId=function(index){return popupId+"-option-"+index},inputIsExactMatch=(scope.$watch("activeIdx",function(index){index<0?element.removeAttr("aria-activedescendant"):element.attr("aria-activedescendant",getMatchId(index))}),function(inputValue,index){return!!(scope.matches.length>index&&inputValue)&&inputValue.toUpperCase()===scope.matches[index].label.toUpperCase()}),getMatchesAsync=function(inputValue,evt){var locals={$viewValue:inputValue};isLoadingSetter(originalScope,!0),isNoResultsSetter(originalScope,!1),$q.when(parserResult.source(originalScope,locals)).then(function(matches){var onCurrentRequest=inputValue===modelCtrl.$viewValue;if(onCurrentRequest&&hasFocus)if(matches&&0=minLength?(0/g.test(matchItem)&&$log.warn("Unsafe use of typeahead please use ngSanitize"),matchItem=query?(""+matchItem).replace(new RegExp(query.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1"),"gi"),"$&"):matchItem,matchItem=isSanitizePresent?matchItem:$sce.trustAsHtml(matchItem)}}]),angular.module("ui.bootstrap.carousel").run(function(){angular.$$csp().noInlineStyle||angular.$$uibCarouselCss||angular.element(document).find("head").prepend(''),angular.$$uibCarouselCss=!0}),angular.module("ui.bootstrap.datepicker").run(function(){angular.$$csp().noInlineStyle||angular.$$uibDatepickerCss||angular.element(document).find("head").prepend(''),angular.$$uibDatepickerCss=!0}),angular.module("ui.bootstrap.position").run(function(){angular.$$csp().noInlineStyle||angular.$$uibPositionCss||angular.element(document).find("head").prepend(''),angular.$$uibPositionCss=!0}),angular.module("ui.bootstrap.datepickerPopup").run(function(){angular.$$csp().noInlineStyle||angular.$$uibDatepickerpopupCss||angular.element(document).find("head").prepend(''),angular.$$uibDatepickerpopupCss=!0}),angular.module("ui.bootstrap.tooltip").run(function(){angular.$$csp().noInlineStyle||angular.$$uibTooltipCss||angular.element(document).find("head").prepend(''),angular.$$uibTooltipCss=!0}),angular.module("ui.bootstrap.timepicker").run(function(){angular.$$csp().noInlineStyle||angular.$$uibTimepickerCss||angular.element(document).find("head").prepend(''),angular.$$uibTimepickerCss=!0}),angular.module("ui.bootstrap.typeahead").run(function(){angular.$$csp().noInlineStyle||angular.$$uibTypeaheadCss||angular.element(document).find("head").prepend(''),angular.$$uibTypeaheadCss=!0}),angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.collapse","ui.bootstrap.tabindex","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.isClass","ui.bootstrap.datepicker","ui.bootstrap.position","ui.bootstrap.datepickerPopup","ui.bootstrap.debounce","ui.bootstrap.multiMap","ui.bootstrap.dropdown","ui.bootstrap.stackedMap","ui.bootstrap.modal","ui.bootstrap.paging","ui.bootstrap.pager","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]),angular.module("ui.bootstrap.tpls",["uib/template/accordion/accordion-group.html","uib/template/accordion/accordion.html","uib/template/alert/alert.html","uib/template/carousel/carousel.html","uib/template/carousel/slide.html","uib/template/datepicker/datepicker.html","uib/template/datepicker/day.html","uib/template/datepicker/month.html","uib/template/datepicker/year.html","uib/template/datepickerPopup/popup.html","uib/template/modal/window.html","uib/template/pager/pager.html","uib/template/pagination/pagination.html","uib/template/tooltip/tooltip-html-popup.html","uib/template/tooltip/tooltip-popup.html","uib/template/tooltip/tooltip-template-popup.html","uib/template/popover/popover-html.html","uib/template/popover/popover-template.html","uib/template/popover/popover.html","uib/template/progressbar/bar.html","uib/template/progressbar/progress.html","uib/template/progressbar/progressbar.html","uib/template/rating/rating.html","uib/template/tabs/tab.html","uib/template/tabs/tabset.html","uib/template/timepicker/timepicker.html","uib/template/typeahead/typeahead-match.html","uib/template/typeahead/typeahead-popup.html"]),angular.module("ui.bootstrap.collapse",[]).directive("uibCollapse",["$animate","$q","$parse","$injector",function($animate,$q,$parse,$injector){var $animateCss=$injector.has("$animateCss")?$injector.get("$animateCss"):null;return{link:function(scope,element,attrs){var expandingExpr=$parse(attrs.expanding),expandedExpr=$parse(attrs.expanded),collapsingExpr=$parse(attrs.collapsing),collapsedExpr=$parse(attrs.collapsed),horizontal=!1,css={},cssTo={};function getScrollFromElement(element){return horizontal?{width:element.scrollWidth+"px"}:{height:element.scrollHeight+"px"}}function expandDone(){element.removeClass("collapsing").addClass("collapse").css(css),expandedExpr(scope)}function collapseDone(){element.css(cssTo),element.removeClass("collapsing").addClass("collapse"),collapsedExpr(scope)}cssTo=(horizontal=!!("horizontal"in attrs))?(css={width:""},{width:"0"}):(css={height:""},{height:"0"}),scope.$eval(attrs.uibCollapse)||element.addClass("in").addClass("collapse").attr("aria-expanded",!0).attr("aria-hidden",!1).css(css),scope.$watch(attrs.uibCollapse,function(shouldCollapse){shouldCollapse?element.hasClass("collapse")||element.hasClass("in")?$q.resolve(collapsingExpr(scope)).then(function(){element.css(getScrollFromElement(element[0])).removeClass("collapse").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),$animateCss?$animateCss(element,{removeClass:"in",to:cssTo}).start().finally(collapseDone):$animate.removeClass(element,"in",{to:cssTo}).then(collapseDone)},angular.noop):collapseDone():element.hasClass("collapse")&&element.hasClass("in")||$q.resolve(expandingExpr(scope)).then(function(){element.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),$animateCss?$animateCss(element,{addClass:"in",easing:"ease",css:{overflow:"hidden"},to:getScrollFromElement(element[0])}).start().finally(expandDone):$animate.addClass(element,"in",{css:{overflow:"hidden"},to:getScrollFromElement(element[0])}).then(expandDone)},angular.noop)})}}}]),angular.module("ui.bootstrap.tabindex",[]).directive("uibTabindexToggle",function(){return{restrict:"A",link:function(scope,elem,attrs){attrs.$observe("disabled",function(disabled){attrs.$set("tabindex",disabled?-1:null)})}}}),angular.module("ui.bootstrap.accordion",["ui.bootstrap.collapse","ui.bootstrap.tabindex"]).constant("uibAccordionConfig",{closeOthers:!0}).controller("UibAccordionController",["$scope","$attrs","uibAccordionConfig",function($scope,$attrs,accordionConfig){this.groups=[],this.closeOthers=function(openGroup){(angular.isDefined($attrs.closeOthers)?$scope.$eval($attrs.closeOthers):accordionConfig.closeOthers)&&angular.forEach(this.groups,function(group){group!==openGroup&&(group.isOpen=!1)})},this.addGroup=function(groupScope){var that=this;this.groups.push(groupScope),groupScope.$on("$destroy",function(event){that.removeGroup(groupScope)})},this.removeGroup=function(group){group=this.groups.indexOf(group);-1!==group&&this.groups.splice(group,1)}}]).directive("uibAccordion",function(){return{controller:"UibAccordionController",controllerAs:"accordion",transclude:!0,templateUrl:function(element,attrs){return attrs.templateUrl||"uib/template/accordion/accordion.html"}}}).directive("uibAccordionGroup",function(){return{require:"^uibAccordion",transclude:!0,restrict:"A",templateUrl:function(element,attrs){return attrs.templateUrl||"uib/template/accordion/accordion-group.html"},scope:{heading:"@",panelClass:"@?",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(element){this.heading=element}},link:function(scope,element,attrs,accordionCtrl){element.addClass("panel"),accordionCtrl.addGroup(scope),scope.openClass=attrs.openClass||"panel-open",scope.panelClass=attrs.panelClass||"panel-default",scope.$watch("isOpen",function(value){element.toggleClass(scope.openClass,!!value),value&&accordionCtrl.closeOthers(scope)}),scope.toggleOpen=function($event){scope.isDisabled||$event&&32!==$event.which||(scope.isOpen=!scope.isOpen)};attrs="accordiongroup-"+scope.$id+"-"+Math.floor(1e4*Math.random());scope.headingId=attrs+"-tab",scope.panelId=attrs+"-panel"}}}).directive("uibAccordionHeading",function(){return{transclude:!0,template:"",replace:!0,require:"^uibAccordionGroup",link:function(scope,element,attrs,accordionGroupCtrl,transclude){accordionGroupCtrl.setHeading(transclude(scope,angular.noop))}}}).directive("uibAccordionTransclude",function(){return{require:"^uibAccordionGroup",link:function(scope,element,attrs,controller){scope.$watch(function(){return controller[attrs.uibAccordionTransclude]},function(heading){var elem;heading&&((elem=angular.element(element[0].querySelector("uib-accordion-header,data-uib-accordion-header,x-uib-accordion-header,uib\\:accordion-header,[uib-accordion-header],[data-uib-accordion-header],[x-uib-accordion-header]"))).html(""),elem.append(heading))})}}}),angular.module("ui.bootstrap.alert",[]).controller("UibAlertController",["$scope","$element","$attrs","$interpolate","$timeout",function($scope,$element,$attrs,$interpolate,$timeout){$scope.closeable=!!$attrs.close,$element.addClass("alert"),$attrs.$set("role","alert"),$scope.closeable&&$element.addClass("alert-dismissible");$element=angular.isDefined($attrs.dismissOnTimeout)?$interpolate($attrs.dismissOnTimeout)($scope.$parent):null;$element&&$timeout(function(){$scope.close()},parseInt($element,10))}]).directive("uibAlert",function(){return{controller:"UibAlertController",controllerAs:"alert",restrict:"A",templateUrl:function(element,attrs){return attrs.templateUrl||"uib/template/alert/alert.html"},transclude:!0,scope:{close:"&"}}}),angular.module("ui.bootstrap.buttons",[]).constant("uibButtonConfig",{activeClass:"active",toggleEvent:"click"}).controller("UibButtonsController",["uibButtonConfig",function(buttonConfig){this.activeClass=buttonConfig.activeClass||"active",this.toggleEvent=buttonConfig.toggleEvent||"click"}]).directive("uibBtnRadio",["$parse",function($parse){return{require:["uibBtnRadio","ngModel"],controller:"UibButtonsController",controllerAs:"buttons",link:function(scope,element,attrs,ctrls){var buttonsCtrl=ctrls[0],ngModelCtrl=ctrls[1],ctrls=$parse(attrs.uibUncheckable);element.find("input").css({display:"none"}),ngModelCtrl.$render=function(){element.toggleClass(buttonsCtrl.activeClass,angular.equals(ngModelCtrl.$modelValue,scope.$eval(attrs.uibBtnRadio)))},element.on(buttonsCtrl.toggleEvent,function(){var isActive;attrs.disabled||((isActive=element.hasClass(buttonsCtrl.activeClass))&&!angular.isDefined(attrs.uncheckable)||scope.$apply(function(){ngModelCtrl.$setViewValue(isActive?null:scope.$eval(attrs.uibBtnRadio)),ngModelCtrl.$render()}))}),attrs.uibUncheckable&&scope.$watch(ctrls,function(uncheckable){attrs.$set("uncheckable",uncheckable?"":void 0)})}}}]).directive("uibBtnCheckbox",function(){return{require:["uibBtnCheckbox","ngModel"],controller:"UibButtonsController",controllerAs:"button",link:function(scope,element,attrs,ctrls){var buttonsCtrl=ctrls[0],ngModelCtrl=ctrls[1];function getTrueValue(){return getCheckboxValue(attrs.btnCheckboxTrue,!0)}function getCheckboxValue(attribute,defaultValue){return angular.isDefined(attribute)?scope.$eval(attribute):defaultValue}element.find("input").css({display:"none"}),ngModelCtrl.$render=function(){element.toggleClass(buttonsCtrl.activeClass,angular.equals(ngModelCtrl.$modelValue,getTrueValue()))},element.on(buttonsCtrl.toggleEvent,function(){attrs.disabled||scope.$apply(function(){ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass)?getCheckboxValue(attrs.btnCheckboxFalse,!1):getTrueValue()),ngModelCtrl.$render()})})}}}),angular.module("ui.bootstrap.carousel",[]).controller("UibCarouselController",["$scope","$element","$interval","$timeout","$animate",function($scope,$element,$interval,$timeout,$animate){var currentInterval,isPlaying,self=this,slides=self.slides=$scope.slides=[],SLIDE_DIRECTION="uib-slideDirection",currentIndex=$scope.active,destroyed=!1;function setActive(index){for(var i=0;i=slides.length?(currentIndex=slides.length-1,setActive($scope.active=currentIndex),self.select(slides[slides.length-1])):(currentIndex=slide,setActive($scope.active=currentIndex),self.select(slides[slide])):slideself.getCurrentIndex()?"next":"prev"),nextSlide.slide.index===currentIndex||$scope.$currentTransition||function(slide,index,direction){destroyed||(angular.extend(slide,{direction:direction}),angular.extend(slides[currentIndex].slide||{},{direction:direction}),$animate.enabled($element)&&!$scope.$currentTransition&&slides[index].element&&1=format.length||"'"!==format.charAt(i+1))&&(formatters.push(function(format,literalIdx,endIdx){return function(){return format.substr(literalIdx+1,endIdx-literalIdx-1)}}(format,literalIdx,i)),literalIdx=null);else if(i===format.length)for(;literalIdxself.modes.indexOf(self[key]))&&($scope.datepickerMode=self[key],$scope.datepickerOptions.datepickerMode=self[key])}):self[key]=$scope[key]=datepickerConfig[key]||null}}),$scope.uniqueId="datepicker-"+$scope.$id+"-"+Math.floor(1e4*Math.random()),$scope.disabled=angular.isDefined($attrs.disabled)||!1,angular.isDefined($attrs.ngDisabled)&&watchListeners.push($scope.$parent.$watch($attrs.ngDisabled,function(disabled){$scope.disabled=disabled,self.refreshView()})),$scope.isActive=function(dateObject){return 0===self.compare(dateObject.date,self.activeDate)&&($scope.activeDateId=dateObject.uid,!0)},this.init=function(ngModelCtrl_){ngModelOptions=function(ngModelCtrl){var ngModelOptions;{var timezone;angular.version.minor<6?(ngModelOptions=ngModelCtrl.$options||$scope.datepickerOptions.ngModelOptions||datepickerConfig.ngModelOptions||{}).getOption=function(key){return ngModelOptions[key]}:(timezone=ngModelCtrl.$options.getOption("timezone")||($scope.datepickerOptions.ngModelOptions?$scope.datepickerOptions.ngModelOptions.timezone:null)||(datepickerConfig.ngModelOptions?datepickerConfig.ngModelOptions.timezone:null),ngModelOptions=ngModelCtrl.$options.createChild(datepickerConfig.ngModelOptions).createChild($scope.datepickerOptions.ngModelOptions).createChild(ngModelCtrl.$options).createChild({timezone:timezone}))}return ngModelOptions}(ngModelCtrl=ngModelCtrl_),$scope.datepickerOptions.initDate?(self.activeDate=dateParser.fromTimezone($scope.datepickerOptions.initDate,ngModelOptions.getOption("timezone"))||new Date,$scope.$watch("datepickerOptions.initDate",function(initDate){initDate&&(ngModelCtrl.$isEmpty(ngModelCtrl.$modelValue)||ngModelCtrl.$invalid)&&(self.activeDate=dateParser.fromTimezone(initDate,ngModelOptions.getOption("timezone")),self.refreshView())})):self.activeDate=new Date;ngModelCtrl_=ngModelCtrl.$modelValue?new Date(ngModelCtrl.$modelValue):new Date;this.activeDate=isNaN(ngModelCtrl_)?dateParser.fromTimezone(new Date,ngModelOptions.getOption("timezone")):dateParser.fromTimezone(ngModelCtrl_,ngModelOptions.getOption("timezone")),ngModelCtrl.$render=function(){self.render()}},this.render=function(){var date;ngModelCtrl.$viewValue&&(date=new Date(ngModelCtrl.$viewValue),!isNaN(date)?this.activeDate=dateParser.fromTimezone(date,ngModelOptions.getOption("timezone")):$datepickerSuppressError||$log.error('Datepicker directive: "ng-model" value must be a Date object')),this.refreshView()},this.refreshView=function(){var date;this.element&&($scope.selectedDt=null,this._refreshView(),$scope.activeDt&&($scope.activeDateId=$scope.activeDt.uid),date=ngModelCtrl.$viewValue?new Date(ngModelCtrl.$viewValue):null,date=dateParser.fromTimezone(date,ngModelOptions.getOption("timezone")),ngModelCtrl.$setValidity("dateDisabled",!date||this.element&&!this.isDisabled(date)))},this.createDateObject=function(date,format){var model=ngModelCtrl.$viewValue?new Date(ngModelCtrl.$viewValue):null,model=dateParser.fromTimezone(model,ngModelOptions.getOption("timezone")),today=new Date,today=dateParser.fromTimezone(today,ngModelOptions.getOption("timezone")),today=this.compare(date,today),format={date:date,label:dateParser.filter(date,format),selected:model&&0===this.compare(date,model),disabled:this.isDisabled(date),past:today<0,current:0===today,future:0'),$document.find("body").append(isBody),SCROLLBAR_WIDTH=isBody[0].offsetWidth-isBody[0].clientWidth,SCROLLBAR_WIDTH=isFinite(SCROLLBAR_WIDTH)?SCROLLBAR_WIDTH:0,isBody.remove()),SCROLLBAR_WIDTH)},scrollbarPadding:function(elem){elem=this.getRawNode(elem);var elemStyle=$window.getComputedStyle(elem),paddingRight=this.parseStyle(elemStyle.paddingRight),elemStyle=this.parseStyle(elemStyle.paddingBottom),elem=this.scrollParent(elem,!1,!0),scrollbarWidth=this.scrollbarWidth(BODY_REGEX.test(elem.tagName));return{scrollbarWidth:scrollbarWidth,widthOverflow:elem.scrollWidth>elem.clientWidth,right:paddingRight+scrollbarWidth,originalRight:paddingRight,heightOverflow:elem.scrollHeight>elem.clientHeight,bottom:elemStyle+scrollbarWidth,originalBottom:elemStyle}},isScrollable:function(elem,includeHidden){elem=this.getRawNode(elem);includeHidden=includeHidden?OVERFLOW_REGEX.hidden:OVERFLOW_REGEX.normal,elem=$window.getComputedStyle(elem);return includeHidden.test(elem.overflow+elem.overflowY+elem.overflowX)},scrollParent:function(elem,includeHidden,includeSelf){elem=this.getRawNode(elem);var overflowRegex=includeHidden?OVERFLOW_REGEX.hidden:OVERFLOW_REGEX.normal,documentEl=$document[0].documentElement,includeHidden=$window.getComputedStyle(elem);if(includeSelf&&overflowRegex.test(includeHidden.overflow+includeHidden.overflowY+includeHidden.overflowX))return elem;var excludeStatic="absolute"===includeHidden.position,scrollParent=elem.parentElement||documentEl;if(scrollParent===documentEl||"fixed"===includeHidden.position)return documentEl;for(;scrollParent.parentElement&&scrollParent!==documentEl;){var spStyle=$window.getComputedStyle(scrollParent);if(!(excludeStatic=excludeStatic&&"static"!==spStyle.position?!1:excludeStatic)&&overflowRegex.test(spStyle.overflow+spStyle.overflowY+spStyle.overflowX))break;scrollParent=scrollParent.parentElement}return scrollParent},position:function(elem,includeMagins){elem=this.getRawNode(elem);var elemOffset=this.offset(elem),includeMagins=(includeMagins&&(includeMagins=$window.getComputedStyle(elem),elemOffset.top-=this.parseStyle(includeMagins.marginTop),elemOffset.left-=this.parseStyle(includeMagins.marginLeft)),this.offsetParent(elem)),parentOffset={top:0,left:0};return includeMagins!==$document[0].documentElement&&((parentOffset=this.offset(includeMagins)).top+=includeMagins.clientTop-includeMagins.scrollTop,parentOffset.left+=includeMagins.clientLeft-includeMagins.scrollLeft),{width:Math.round(angular.isNumber(elemOffset.width)?elemOffset.width:elem.offsetWidth),height:Math.round(angular.isNumber(elemOffset.height)?elemOffset.height:elem.offsetHeight),top:Math.round(elemOffset.top-parentOffset.top),left:Math.round(elemOffset.left-parentOffset.left)}},offset:function(elem){var elemBCR=(elem=this.getRawNode(elem)).getBoundingClientRect();return{width:Math.round(angular.isNumber(elemBCR.width)?elemBCR.width:elem.offsetWidth),height:Math.round(angular.isNumber(elemBCR.height)?elemBCR.height:elem.offsetHeight),top:Math.round(elemBCR.top+($window.pageYOffset||$document[0].documentElement.scrollTop)),left:Math.round(elemBCR.left+($window.pageXOffset||$document[0].documentElement.scrollLeft))}},viewportOffset:function(elem,useDocument,includePadding){includePadding=!1!==includePadding;var elemBCR=(elem=this.getRawNode(elem)).getBoundingClientRect(),offsetBCR={top:0,left:0,bottom:0,right:0},useDocument=useDocument?$document[0].documentElement:this.scrollParent(elem),elem=useDocument.getBoundingClientRect();return offsetBCR.top=elem.top+useDocument.clientTop,offsetBCR.left=elem.left+useDocument.clientLeft,useDocument===$document[0].documentElement&&(offsetBCR.top+=$window.pageYOffset,offsetBCR.left+=$window.pageXOffset),offsetBCR.bottom=offsetBCR.top+useDocument.clientHeight,offsetBCR.right=offsetBCR.left+useDocument.clientWidth,includePadding&&(elem=$window.getComputedStyle(useDocument),offsetBCR.top+=this.parseStyle(elem.paddingTop),offsetBCR.bottom-=this.parseStyle(elem.paddingBottom),offsetBCR.left+=this.parseStyle(elem.paddingLeft),offsetBCR.right-=this.parseStyle(elem.paddingRight)),{top:Math.round(elemBCR.top-offsetBCR.top),bottom:Math.round(offsetBCR.bottom-elemBCR.bottom),left:Math.round(elemBCR.left-offsetBCR.left),right:Math.round(offsetBCR.right-elemBCR.right)}},parsePlacement:function(placement){var autoPlace=PLACEMENT_REGEX.auto.test(placement);return(placement=(placement=autoPlace?placement.replace(PLACEMENT_REGEX.auto,""):placement).split("-"))[0]=placement[0]||"top",PLACEMENT_REGEX.primary.test(placement[0])||(placement[0]="top"),placement[1]=placement[1]||"center",PLACEMENT_REGEX.secondary.test(placement[1])||(placement[1]="center"),placement[2]=!!autoPlace,placement},positionElements:function(hostElem,targetElem,placement,appendToBody){hostElem=this.getRawNode(hostElem),targetElem=this.getRawNode(targetElem);var xOverflow,targetWidth=angular.isDefined(targetElem.offsetWidth)?targetElem.offsetWidth:targetElem.prop("offsetWidth"),targetHeight=angular.isDefined(targetElem.offsetHeight)?targetElem.offsetHeight:targetElem.prop("offsetHeight"),hostElemPos=(placement=this.parsePlacement(placement),appendToBody?this.offset(hostElem):this.position(hostElem)),targetElemPos={top:0,left:0,placement:""};switch(placement[2]&&(hostElem=this.viewportOffset(hostElem,appendToBody),appendToBody=$window.getComputedStyle(targetElem),targetElem=targetWidth+Math.round(Math.abs(this.parseStyle(appendToBody.marginLeft)+this.parseStyle(appendToBody.marginRight))),appendToBody=targetHeight+Math.round(Math.abs(this.parseStyle(appendToBody.marginTop)+this.parseStyle(appendToBody.marginBottom))),placement[0]="top"===placement[0]&&appendToBody>hostElem.top&&appendToBody<=hostElem.bottom?"bottom":"bottom"===placement[0]&&appendToBody>hostElem.bottom&&appendToBody<=hostElem.top?"top":"left"===placement[0]&&targetElem>hostElem.left&&targetElem<=hostElem.right?"right":"right"===placement[0]&&targetElem>hostElem.right&&targetElem<=hostElem.left?"left":placement[0],placement[1]="top"===placement[1]&&appendToBody-hostElemPos.height>hostElem.bottom&&appendToBody-hostElemPos.height<=hostElem.top?"bottom":"bottom"===placement[1]&&appendToBody-hostElemPos.height>hostElem.top&&appendToBody-hostElemPos.height<=hostElem.bottom?"top":"left"===placement[1]&&targetElem-hostElemPos.width>hostElem.right&&targetElem-hostElemPos.width<=hostElem.left?"right":"right"===placement[1]&&targetElem-hostElemPos.width>hostElem.left&&targetElem-hostElemPos.width<=hostElem.right?"left":placement[1],"center"===placement[1]&&(PLACEMENT_REGEX.vertical.test(placement[0])?(xOverflow=hostElemPos.width/2-targetWidth/2,hostElem.left+xOverflow<0&&targetElem-hostElemPos.width<=hostElem.right?placement[1]="left":hostElem.right+xOverflow<0&&targetElem-hostElemPos.width<=hostElem.left&&(placement[1]="right")):(xOverflow=hostElemPos.height/2-appendToBody/2,hostElem.top+xOverflow<0&&appendToBody-hostElemPos.height<=hostElem.bottom?placement[1]="top":hostElem.bottom+xOverflow<0&&appendToBody-hostElemPos.height<=hostElem.top&&(placement[1]="bottom")))),placement[0]){case"top":targetElemPos.top=hostElemPos.top-targetHeight;break;case"bottom":targetElemPos.top=hostElemPos.top+hostElemPos.height;break;case"left":targetElemPos.left=hostElemPos.left-targetWidth;break;case"right":targetElemPos.left=hostElemPos.left+hostElemPos.width}switch(placement[1]){case"top":targetElemPos.top=hostElemPos.top;break;case"bottom":targetElemPos.top=hostElemPos.top+hostElemPos.height-targetHeight;break;case"left":targetElemPos.left=hostElemPos.left;break;case"right":targetElemPos.left=hostElemPos.left+hostElemPos.width-targetWidth;break;case"center":PLACEMENT_REGEX.vertical.test(placement[0])?targetElemPos.left=hostElemPos.left+hostElemPos.width/2-targetWidth/2:targetElemPos.top=hostElemPos.top+hostElemPos.height/2-targetHeight/2}return targetElemPos.top=Math.round(targetElemPos.top),targetElemPos.left=Math.round(targetElemPos.left),targetElemPos.placement="center"===placement[1]?placement[0]:placement[0]+"-"+placement[1],targetElemPos},adjustTop:function(placementClasses,containerPosition,initialHeight,currentHeight){if(-1!==placementClasses.indexOf("top")&&initialHeight!==currentHeight)return{top:containerPosition.top-currentHeight+"px"}},positionArrow:function(elem,placement){var innerElem=(elem=this.getRawNode(elem)).querySelector(".tooltip-inner, .popover-inner");if(innerElem){var isTooltip=angular.element(innerElem).hasClass("tooltip-inner"),arrowElem=isTooltip?elem.querySelector(".tooltip-arrow"):elem.querySelector(".arrow");if(arrowElem){var arrowCss={top:"",bottom:"",left:"",right:""};if("center"!==(placement=this.parsePlacement(placement))[1]){var borderProp="border-"+placement[0]+"-width",borderWidth=$window.getComputedStyle(arrowElem)[borderProp],borderProp="border-",innerElem=(PLACEMENT_REGEX.vertical.test(placement[0])?borderProp+=placement[0]+"-"+placement[1]:borderProp+=placement[1]+"-"+placement[0],borderProp+="-radius",$window.getComputedStyle(isTooltip?innerElem:elem)[borderProp]);switch(placement[0]){case"top":arrowCss.bottom=isTooltip?"0":"-"+borderWidth;break;case"bottom":arrowCss.top=isTooltip?"0":"-"+borderWidth;break;case"left":arrowCss.right=isTooltip?"0":"-"+borderWidth;break;case"right":arrowCss.left=isTooltip?"0":"-"+borderWidth}arrowCss[placement[1]]=innerElem}angular.element(arrowElem).css(arrowCss)}}}}}]),angular.module("ui.bootstrap.datepickerPopup",["ui.bootstrap.datepicker","ui.bootstrap.position"]).value("$datepickerPopupLiteralWarning",!0).constant("uibDatepickerPopupConfig",{altInputFormats:[],appendToBody:!1,clearText:"Clear",closeOnDateSelection:!0,closeText:"Done",currentText:"Today",datepickerPopup:"yyyy-MM-dd",datepickerPopupTemplateUrl:"uib/template/datepickerPopup/popup.html",datepickerTemplateUrl:"uib/template/datepicker/datepicker.html",html5Types:{date:"yyyy-MM-dd","datetime-local":"yyyy-MM-ddTHH:mm:ss.sss",month:"yyyy-MM"},onOpenFocus:!0,showButtonBar:!0,placement:"auto bottom-left"}).controller("UibDatepickerPopupController",["$scope","$element","$attrs","$compile","$log","$parse","$window","$document","$rootScope","$uibPosition","dateFilter","uibDateParser","uibDatepickerPopupConfig","$timeout","uibDatepickerConfig","$datepickerPopupLiteralWarning",function($scope,$element,$attrs,$compile,$log,$parse,$window,$document,$rootScope,$position,dateFilter,dateParser,datepickerPopupConfig,$timeout,datepickerConfig,$datepickerPopupLiteralWarning){var dateFormat,closeOnDateSelection,appendToBody,onOpenFocus,datepickerTemplateUrl,popupEl,datepickerPopupTemplateUrl,scrollParentEl,ngModel,ngModelOptions,$popup,altInputFormats,isHtml5DateInput=!1,watchListeners=[];function parseDateString(viewValue){var date=dateParser.parse(viewValue,dateFormat,$scope.date);if(isNaN(date))for(var i=0;i
")).attr({"ng-model":"date","ng-change":"dateSelection(date)","template-url":datepickerPopupTemplateUrl}),(datepickerPopupTemplateUrl=angular.element(popupEl.children()[0])).attr("template-url",datepickerTemplateUrl),$scope.datepickerOptions||($scope.datepickerOptions={}),isHtml5DateInput&&"month"===$attrs.type&&($scope.datepickerOptions.datepickerMode="month",$scope.datepickerOptions.minMode="month"),datepickerPopupTemplateUrl.attr("datepicker-options","datepickerOptions"),isHtml5DateInput?ngModel.$formatters.push(function(value){return $scope.date=dateParser.fromTimezone(value,ngModelOptions.getOption("timezone")),value}):(ngModel.$$parserName="date",ngModel.$validators.date=validator,ngModel.$parsers.unshift(parseDate),ngModel.$formatters.push(function(value){return ngModel.$isEmpty(value)?$scope.date=value:(angular.isNumber(value)&&(value=new Date(value)),$scope.date=dateParser.fromTimezone(value,ngModelOptions.getOption("timezone")),dateParser.filter($scope.date,dateFormat))})),ngModel.$viewChangeListeners.push(function(){$scope.date=parseDateString(ngModel.$viewValue)}),$element.on("keydown",inputKeydownBind),$popup=$compile(popupEl)($scope),popupEl.remove(),appendToBody?$document.find("body").append($popup):$element.after($popup),$scope.$on("$destroy",function(){for(!0!==$scope.isOpen||$rootScope.$$phase||$scope.$apply(function(){$scope.isOpen=!1}),$popup.remove(),$element.off("keydown",inputKeydownBind),$document.off("click",documentClickBind),scrollParentEl&&scrollParentEl.off("scroll",positionPopup),angular.element($window).off("resize",positionPopup);watchListeners.length;)watchListeners.shift()()})},$scope.getText=function(key){return $scope[key+"Text"]||datepickerPopupConfig[key+"Text"]},$scope.isDisabled=function(date){"today"===date&&(date=dateParser.fromTimezone(new Date,ngModelOptions.getOption("timezone")));var dates={};return angular.forEach(["minDate","maxDate"],function(key){$scope.datepickerOptions[key]?angular.isDate($scope.datepickerOptions[key])?dates[key]=new Date($scope.datepickerOptions[key]):($datepickerPopupLiteralWarning&&$log.warn("Literal date support has been deprecated, please switch to date object usage"),dates[key]=new Date(dateFilter($scope.datepickerOptions[key],"medium"))):dates[key]=null}),$scope.datepickerOptions&&dates.minDate&&$scope.compare(date,dates.minDate)<0||dates.maxDate&&0<$scope.compare(date,dates.maxDate)},$scope.compare=function(date1,date2){return new Date(date1.getFullYear(),date1.getMonth(),date1.getDate())-new Date(date2.getFullYear(),date2.getMonth(),date2.getDate())},$scope.dateSelection=function(dt){$scope.date=dt;dt=$scope.date?dateParser.filter($scope.date,dateFormat):null;$element.val(dt),ngModel.$setViewValue(dt),closeOnDateSelection&&($scope.isOpen=!1,$element[0].focus())},$scope.keydown=function(evt){27===evt.which&&(evt.stopPropagation(),$scope.isOpen=!1,$element[0].focus())},$scope.select=function(date,evt){evt.stopPropagation(),"today"===date&&(evt=new Date,angular.isDate($scope.date)?(date=new Date($scope.date)).setFullYear(evt.getFullYear(),evt.getMonth(),evt.getDate()):(date=dateParser.fromTimezone(evt,ngModelOptions.getOption("timezone"))).setHours(0,0,0,0)),$scope.dateSelection(date)},$scope.close=function(evt){evt.stopPropagation(),$scope.isOpen=!1,$element[0].focus()},$scope.disabled=angular.isDefined($attrs.disabled)||!1,$attrs.ngDisabled&&watchListeners.push($scope.$parent.$watch($parse($attrs.ngDisabled),function(disabled){$scope.disabled=disabled})),$scope.$watch("isOpen",function(value){value?$scope.disabled?$scope.isOpen=!1:$timeout(function(){positionPopup(),onOpenFocus&&$scope.$broadcast("uib:datepicker.focus"),$document.on("click",documentClickBind);var placement=$attrs.popupPlacement||datepickerPopupConfig.placement;appendToBody||$position.parsePlacement(placement)[2]?(scrollParentEl=scrollParentEl||angular.element($position.scrollParent($element)))&&scrollParentEl.on("scroll",positionPopup):scrollParentEl=null,angular.element($window).on("resize",positionPopup)},0,!1):($document.off("click",documentClickBind),scrollParentEl&&scrollParentEl.off("scroll",positionPopup),angular.element($window).off("resize",positionPopup))}),$scope.$on("uib:datepicker.mode",function(){$timeout(positionPopup,0,!1)})}]).directive("uibDatepickerPopup",function(){return{require:["ngModel","uibDatepickerPopup"],controller:"UibDatepickerPopupController",scope:{datepickerOptions:"=?",isOpen:"=?",currentText:"@",clearText:"@",closeText:"@"},link:function(scope,element,attrs,ctrls){var ngModel=ctrls[0];ctrls[1].init(ngModel)}}}).directive("uibDatepickerPopupWrap",function(){return{restrict:"A",transclude:!0,templateUrl:function(element,attrs){return attrs.templateUrl||"uib/template/datepickerPopup/popup.html"}}}),angular.module("ui.bootstrap.debounce",[]).factory("$$debounce",["$timeout",function($timeout){return function(callback,debounceTime){var timeoutPromise;return function(){var self=this,args=Array.prototype.slice.call(arguments);timeoutPromise&&$timeout.cancel(timeoutPromise),timeoutPromise=$timeout(function(){callback.apply(self,args)},debounceTime)}}}]),angular.module("ui.bootstrap.multiMap",[]).factory("$$multiMap",function(){return{createNew:function(){var map={};return{entries:function(){return Object.keys(map).map(function(key){return{key:key,value:map[key]}})},get:function(key){return map[key]},hasKey:function(key){return!!map[key]},keys:function(){return Object.keys(map)},put:function(key,value){map[key]||(map[key]=[]),map[key].push(value)},remove:function(key,value){var values=map[key];values&&(-1!==(value=values.indexOf(value))&&values.splice(value,1),values.length||delete map[key])}}}}}),angular.module("ui.bootstrap.dropdown",["ui.bootstrap.multiMap","ui.bootstrap.position"]).constant("uibDropdownConfig",{appendToOpenClass:"uib-dropdown-open",openClass:"open"}).service("uibDropdownService",["$document","$rootScope","$$multiMap",function($document,$rootScope,$$multiMap){var openScope=null,openedContainers=$$multiMap.createNew(),closeDropdown=(this.isOnlyOpen=function(dropdownScope,appendTo){appendTo=openedContainers.get(appendTo);if(appendTo&&appendTo.reduce(function(toClose,dropdown){return dropdown.scope===dropdownScope?dropdown:toClose},{}))return 1===appendTo.length;return!1},this.open=function(dropdownScope,element,appendTo){var openedDropdowns;openScope||$document.on("click",closeDropdown),openScope&&openScope!==dropdownScope&&(openScope.isOpen=!1),openScope=dropdownScope,!appendTo||(openedDropdowns=openedContainers.get(appendTo))&&-1!==openedDropdowns.map(function(dropdown){return dropdown.scope}).indexOf(dropdownScope)||openedContainers.put(appendTo,{scope:dropdownScope})},this.close=function(dropdownScope,element,appendTo){var openedDropdowns;openScope===dropdownScope&&($document.off("click",closeDropdown),$document.off("keydown",this.keybindFilter),openScope=null),appendTo&&(openedDropdowns=openedContainers.get(appendTo))&&(openedDropdowns=openedDropdowns.reduce(function(toClose,dropdown){return dropdown.scope===dropdownScope?dropdown:toClose},{}))&&openedContainers.remove(appendTo,openedDropdowns)},function(evt){var toggleElement;openScope&&openScope.isOpen&&(evt&&"disabled"===openScope.getAutoClose()||evt&&3===evt.which||(toggleElement=openScope.getToggleElement(),evt&&toggleElement&&toggleElement[0].contains(evt.target)||(toggleElement=openScope.getDropdownElement(),evt&&"outsideClick"===openScope.getAutoClose()&&toggleElement&&toggleElement[0].contains(evt.target)||(openScope.focusToggleElement(),openScope.isOpen=!1,$rootScope.$$phase||openScope.$apply()))))});this.keybindFilter=function(evt){var dropdownElement,toggleElement;openScope&&(dropdownElement=openScope.getDropdownElement(),toggleElement=openScope.getToggleElement(),dropdownElement=dropdownElement&&dropdownElement[0].contains(evt.target),toggleElement=toggleElement&&toggleElement[0].contains(evt.target),27===evt.which?(evt.stopPropagation(),openScope.focusToggleElement(),closeDropdown()):openScope.isKeynavEnabled()&&-1!==[38,40].indexOf(evt.which)&&openScope.isOpen&&(dropdownElement||toggleElement)&&(evt.preventDefault(),evt.stopPropagation(),openScope.focusDropdownEntry(evt.which)))}}]).controller("UibDropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest",function($scope,$element,$attrs,$parse,dropdownConfig,uibDropdownService,$animate,$position,$document,$compile,$templateRequest){var templateScope,getIsOpen,self=this,scope=$scope.$new(),appendToOpenClass=dropdownConfig.appendToOpenClass,openClass=dropdownConfig.openClass,setIsOpen=angular.noop,toggleInvoker=$attrs.onToggle?$parse($attrs.onToggle):angular.noop,keynavEnabled=!1,body=$document.find("body");function removeDropdownMenu(){$element.append(self.dropdownMenu)}$element.addClass("dropdown"),this.init=function(){$attrs.isOpen&&(getIsOpen=$parse($attrs.isOpen),setIsOpen=getIsOpen.assign,$scope.$watch(getIsOpen,function(value){scope.isOpen=!!value})),keynavEnabled=angular.isDefined($attrs.keyboardNav)},this.toggle=function(open){return scope.isOpen=arguments.length?!!open:!scope.isOpen,angular.isFunction(setIsOpen)&&setIsOpen(scope,scope.isOpen),scope.isOpen},this.isOpen=function(){return scope.isOpen},scope.getToggleElement=function(){return self.toggleElement},scope.getAutoClose=function(){return $attrs.autoClose||"always"},scope.getElement=function(){return $element},scope.isKeynavEnabled=function(){return keynavEnabled},scope.focusDropdownEntry=function(keyCode){var elems=(self.dropdownMenu?angular.element(self.dropdownMenu):$element.find("ul").eq(0)).find("a");switch(keyCode){case 40:angular.isNumber(self.selectedOption)?self.selectedOption=self.selectedOption===elems.length-1?self.selectedOption:self.selectedOption+1:self.selectedOption=0;break;case 38:angular.isNumber(self.selectedOption)?self.selectedOption=0===self.selectedOption?0:self.selectedOption-1:self.selectedOption=elems.length-1}elems[self.selectedOption].focus()},scope.getDropdownElement=function(){return self.dropdownMenu},scope.focusToggleElement=function(){self.toggleElement&&self.toggleElement[0].focus()},scope.$watch("isOpen",function(isOpen,wasOpen){var css,scrollbarPadding,appendTo=null,appendToBody=!1,appendToEl=(!angular.isDefined($attrs.dropdownAppendTo)||(appendToEl=$parse($attrs.dropdownAppendTo)(scope))&&(appendTo=angular.element(appendToEl)),(appendTo=(appendToBody=angular.isDefined($attrs.dropdownAppendToBody)&&!1!==$parse($attrs.dropdownAppendToBody)(scope)?!0:appendToBody)&&!appendTo?body:appendTo)&&self.dropdownMenu&&(isOpen?(appendTo.append(self.dropdownMenu),$element.on("$destroy",removeDropdownMenu)):($element.off("$destroy",removeDropdownMenu),removeDropdownMenu())),appendTo&&self.dropdownMenu&&(css={top:(pos=$position.positionElements($element,self.dropdownMenu,"bottom-left",!(appendToEl=0))).top+"px",display:isOpen?"block":"none"},(rightalign=self.dropdownMenu.hasClass("dropdown-menu-right"))?(css.left="auto",(scrollbarPadding=$position.scrollbarPadding(appendTo)).heightOverflow&&scrollbarPadding.scrollbarWidth&&(appendToEl=scrollbarPadding.scrollbarWidth),css.right=window.innerWidth-appendToEl-(pos.left+$element.prop("offsetWidth"))+"px"):(css.left=pos.left+"px",css.right="auto"),appendToBody||(scrollbarPadding=$position.offset(appendTo),css.top=pos.top-scrollbarPadding.top+"px",rightalign?css.right=window.innerWidth-(pos.left-scrollbarPadding.left+$element.prop("offsetWidth"))+"px":css.left=pos.left-scrollbarPadding.left+"px"),self.dropdownMenu.css(css)),appendTo||$element),appendToBody=appendTo?appendToOpenClass:openClass,rightalign=appendToEl.hasClass(appendToBody),pos=uibDropdownService.isOnlyOpen($scope,appendTo);rightalign===!isOpen&&$animate[appendTo?pos?"removeClass":"addClass":isOpen?"addClass":"removeClass"](appendToEl,appendToBody).then(function(){angular.isDefined(isOpen)&&isOpen!==wasOpen&&toggleInvoker($scope,{open:!!isOpen})}),isOpen?(self.dropdownMenuTemplateUrl?$templateRequest(self.dropdownMenuTemplateUrl).then(function(tplContent){templateScope=scope.$new(),$compile(tplContent.trim())(templateScope,function(dropdownElement){self.dropdownMenu.replaceWith(dropdownElement),self.dropdownMenu=dropdownElement,$document.on("keydown",uibDropdownService.keybindFilter)})}):$document.on("keydown",uibDropdownService.keybindFilter),scope.focusToggleElement(),uibDropdownService.open(scope,$element,appendTo)):(uibDropdownService.close(scope,$element,appendTo),self.dropdownMenuTemplateUrl&&(templateScope&&templateScope.$destroy(),scrollbarPadding=angular.element(''),self.dropdownMenu.replaceWith(scrollbarPadding),self.dropdownMenu=scrollbarPadding),self.selectedOption=null),angular.isFunction(setIsOpen)&&setIsOpen($scope,isOpen)})}]).directive("uibDropdown",function(){return{controller:"UibDropdownController",link:function(scope,element,attrs,dropdownCtrl){dropdownCtrl.init()}}}).directive("uibDropdownMenu",function(){return{restrict:"A",require:"?^uibDropdown",link:function(scope,element,attrs,dropdownCtrl){dropdownCtrl&&!angular.isDefined(attrs.dropdownNested)&&(element.addClass("dropdown-menu"),(attrs=attrs.templateUrl)&&(dropdownCtrl.dropdownMenuTemplateUrl=attrs),dropdownCtrl.dropdownMenu||(dropdownCtrl.dropdownMenu=element))}}}).directive("uibDropdownToggle",function(){return{require:"?^uibDropdown",link:function(scope,element,attrs,dropdownCtrl){var toggleDropdown;dropdownCtrl&&(element.addClass("dropdown-toggle"),(dropdownCtrl.toggleElement=element).on("click",toggleDropdown=function(event){event.preventDefault(),element.hasClass("disabled")||attrs.disabled||scope.$apply(function(){dropdownCtrl.toggle()})}),element.attr({"aria-haspopup":!0,"aria-expanded":!1}),scope.$watch(dropdownCtrl.isOpen,function(isOpen){element.attr("aria-expanded",!!isOpen)}),scope.$on("$destroy",function(){element.off("click",toggleDropdown)}))}}}),angular.module("ui.bootstrap.stackedMap",[]).factory("$$stackedMap",function(){return{createNew:function(){var stack=[];return{add:function(key,value){stack.push({key:key,value:value})},get:function(key){for(var i=0;i')).attr({class:"modal-backdrop","ng-style":"{'z-index': 1040 + (index && 1 || 0) + index*10}","uib-modal-animation-class":"fade","modal-in-class":"in"}),modal.backdropClass&&backdropDomEl.addClass(modal.backdropClass),modal.animation&&backdropDomEl.attr("modal-animation","true"),$compile(backdropDomEl)(backdropScope),$animate.enter(backdropDomEl,modalInstance),$uibPosition.isScrollable(modalInstance)&&(scrollbarPadding=$uibPosition.scrollbarPadding(modalInstance)).heightOverflow&&scrollbarPadding.scrollbarWidth&&modalInstance.css({paddingRight:scrollbarPadding.right+"px"})),modal.component?(content=document.createElement(modal.component.name.replace(SNAKE_CASE_REGEXP,function(letter,pos){return(pos?"-":"")+letter.toLowerCase()})),(content=angular.element(content)).attr({resolve:"$resolve","modal-instance":"$uibModalInstance",close:"$close($value)",dismiss:"$dismiss($value)"})):content=modal.content,topModalIndex=previousTopOpenedModal?parseInt(previousTopOpenedModal.value.modalDomEl.attr("index"),10)+1:0,angular.element('
'));currBackdropIndex.attr({class:"modal","template-url":modal.windowTemplateUrl,"window-top-class":modal.windowTopClass,role:"dialog","aria-labelledby":modal.ariaLabelledBy,"aria-describedby":modal.ariaDescribedBy,size:modal.size,index:topModalIndex,animate:"animate","ng-style":"{'z-index': 1050 + $$topModalIndex*10, display: 'block'}",tabindex:-1,"uib-modal-animation-class":"fade","modal-in-class":"in"}).append(content),modal.windowClass&&currBackdropIndex.addClass(modal.windowClass),modal.animation&&currBackdropIndex.attr("modal-animation","true"),modalInstance.addClass(modalBodyClass),modal.scope&&(modal.scope.$$topModalIndex=topModalIndex),$animate.enter($compile(currBackdropIndex)(modal.scope),modalInstance),openedWindows.top().value.modalDomEl=currBackdropIndex,openedWindows.top().value.modalOpener=modalOpener,function applyAriaHidden(el){if(!el||"BODY"===el[0].tagName)return;getSiblings(el).forEach(function(sibling){var elemIsAlreadyHidden="true"===sibling.getAttribute("aria-hidden"),ariaHiddenCount=parseInt(sibling.getAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME),10);ariaHiddenCount=ariaHiddenCount||(elemIsAlreadyHidden?1:0),sibling.setAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME,ariaHiddenCount+1),sibling.setAttribute("aria-hidden","true")});return applyAriaHidden(el.parent());function getSiblings(el){var children=el.parent()?el.parent().children():[];return Array.prototype.filter.call(children,function(child){return child!==el[0]})}}(currBackdropIndex)},$modalStack.close=function(modalInstance,result){var modalWindow=openedWindows.get(modalInstance);return unhideBackgroundElements(),modalWindow&&broadcastClosing(modalWindow,result,!0)?(modalWindow.value.modalScope.$$uibDestructionScheduled=!0,modalWindow.value.deferred.resolve(result),removeModalWindow(modalInstance,modalWindow.value.modalOpener),!0):!modalWindow},$modalStack.dismiss=function(modalInstance,reason){var modalWindow=openedWindows.get(modalInstance);return unhideBackgroundElements(),modalWindow&&broadcastClosing(modalWindow,reason,!1)?(modalWindow.value.modalScope.$$uibDestructionScheduled=!0,modalWindow.value.deferred.reject(reason),removeModalWindow(modalInstance,modalWindow.value.modalOpener),!0):!modalWindow},$modalStack.dismissAll=function(reason){for(var topModal=this.getTop();topModal&&this.dismiss(topModal.key,reason);)topModal=this.getTop()},$modalStack.getTop=function(){return openedWindows.top()},$modalStack.modalRendered=function(modalInstance){modalInstance=openedWindows.get(modalInstance);modalInstance&&modalInstance.value.renderDeferred.resolve()},$modalStack.focusFirstFocusableElement=function(list){return 0$scope.totalPages?$scope.selectPage($scope.totalPages):ctrl.ngModelCtrl.$render()},$scope.$on("$destroy",function(){for(;ctrl._watchers.length;)ctrl._watchers.shift()()})}}}]),angular.module("ui.bootstrap.pager",["ui.bootstrap.paging","ui.bootstrap.tabindex"]).controller("UibPagerController",["$scope","$attrs","uibPaging","uibPagerConfig",function($scope,$attrs,uibPaging,uibPagerConfig){$scope.align=angular.isDefined($attrs.align)?$scope.$parent.$eval($attrs.align):uibPagerConfig.align,uibPaging.create(this,$scope,$attrs)}]).constant("uibPagerConfig",{itemsPerPage:10,previousText:"« Previous",nextText:"Next »",align:!0}).directive("uibPager",["uibPagerConfig",function(uibPagerConfig){return{scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["uibPager","?ngModel"],restrict:"A",controller:"UibPagerController",controllerAs:"pager",templateUrl:function(element,attrs){return attrs.templateUrl||"uib/template/pager/pager.html"},link:function(scope,element,attrs,ctrls){element.addClass("pager");element=ctrls[0],ctrls=ctrls[1];ctrls&&element.init(ctrls,uibPagerConfig)}}}]),angular.module("ui.bootstrap.pagination",["ui.bootstrap.paging","ui.bootstrap.tabindex"]).controller("UibPaginationController",["$scope","$attrs","$parse","uibPaging","uibPaginationConfig",function($scope,$attrs,$parse,uibPaging,uibPaginationConfig){var ctrl=this,maxSize=angular.isDefined($attrs.maxSize)?$scope.$parent.$eval($attrs.maxSize):uibPaginationConfig.maxSize,rotate=angular.isDefined($attrs.rotate)?$scope.$parent.$eval($attrs.rotate):uibPaginationConfig.rotate,forceEllipses=angular.isDefined($attrs.forceEllipses)?$scope.$parent.$eval($attrs.forceEllipses):uibPaginationConfig.forceEllipses,boundaryLinkNumbers=angular.isDefined($attrs.boundaryLinkNumbers)?$scope.$parent.$eval($attrs.boundaryLinkNumbers):uibPaginationConfig.boundaryLinkNumbers,pageLabel=angular.isDefined($attrs.pageLabel)?function(idx){return $scope.$parent.$eval($attrs.pageLabel,{$page:idx})}:angular.identity;function makePage(number,text,isActive){return{number:number,text:text,active:isActive}}$scope.boundaryLinks=angular.isDefined($attrs.boundaryLinks)?$scope.$parent.$eval($attrs.boundaryLinks):uibPaginationConfig.boundaryLinks,$scope.directionLinks=angular.isDefined($attrs.directionLinks)?$scope.$parent.$eval($attrs.directionLinks):uibPaginationConfig.directionLinks,$attrs.$set("role","menu"),uibPaging.create(this,$scope,$attrs),$attrs.maxSize&&ctrl._watchers.push($scope.$parent.$watch($parse($attrs.maxSize),function(value){maxSize=parseInt(value,10),ctrl.render()}));var originalRender=this.render;this.render=function(){originalRender(),0<$scope.page&&$scope.page<=$scope.totalPages&&($scope.pages=function(currentPage,totalPages){var pages=[],startPage=1,endPage=totalPages,isMaxSized=angular.isDefined(maxSize)&&maxSize';return{compile:function(tElem,tAttrs){var tooltipLinker=$compile(template);return function(scope,element,attrs,tooltipCtrl){function positionTooltip(){tooltip&&tooltip.html()&&(positionTimeout=positionTimeout||$timeout(function(){var ttPosition=$position.positionElements(element,tooltip,ttScope.placement,appendToBody),initialHeight=angular.isDefined(tooltip.offsetHeight)?tooltip.offsetHeight:tooltip.prop("offsetHeight"),elementPos=appendToBody?$position.offset(element):$position.position(element),placementClasses=(tooltip.css({top:ttPosition.top+"px",left:ttPosition.left+"px"}),ttPosition.placement.split("-"));tooltip.hasClass(placementClasses[0])||(tooltip.removeClass(lastPlacement.split("-")[0]),tooltip.addClass(placementClasses[0])),tooltip.hasClass(options.placementClassPrefix+ttPosition.placement)||(tooltip.removeClass(options.placementClassPrefix+lastPlacement),tooltip.addClass(options.placementClassPrefix+ttPosition.placement)),adjustmentTimeout=$timeout(function(){var currentHeight=angular.isDefined(tooltip.offsetHeight)?tooltip.offsetHeight:tooltip.prop("offsetHeight"),currentHeight=$position.adjustTop(placementClasses,elementPos,initialHeight,currentHeight);currentHeight&&tooltip.css(currentHeight),adjustmentTimeout=null},0,!1),tooltip.hasClass("uib-position-measure")?($position.positionArrow(tooltip,ttPosition.placement),tooltip.removeClass("uib-position-measure")):lastPlacement!==ttPosition.placement&&$position.positionArrow(tooltip,ttPosition.placement),lastPlacement=ttPosition.placement,positionTimeout=null},0,!1))}var tooltip,tooltipLinkedScope,transitionTimeout,showTimeout,hideTimeout,positionTimeout,adjustmentTimeout,lastPlacement,appendToBody=!!angular.isDefined(options.appendToBody)&&options.appendToBody,triggers=getTriggers(void 0),hasEnableExp=angular.isDefined(attrs[prefix+"Enable"]),ttScope=scope.$new(!0),repositionScheduled=!1,isOpenParse=!!angular.isDefined(attrs[prefix+"IsOpen"])&&$parse(attrs[prefix+"IsOpen"]),contentParse=!!options.useContentExp&&$parse(attrs[ttType]),observers=[];function toggleTooltipBind(){(ttScope.isOpen?hideTooltipBind:showTooltipBind)()}function showTooltipBind(){var placement,closeDelay;hasEnableExp&&!scope.$eval(attrs[prefix+"Enable"])||(cancelHide(),ttScope.title=attrs[prefix+"Title"],ttScope.content=contentParse?contentParse(scope):attrs[ttType],ttScope.popupClass=attrs[prefix+"Class"],ttScope.placement=angular.isDefined(attrs[prefix+"Placement"])?attrs[prefix+"Placement"]:options.placement,placement=$position.parsePlacement(ttScope.placement),lastPlacement=placement[1]?placement[0]+"-"+placement[1]:placement[0],placement=parseInt(attrs[prefix+"PopupDelay"],10),closeDelay=parseInt(attrs[prefix+"PopupCloseDelay"],10),ttScope.popupDelay=isNaN(placement)?options.popupDelay:placement,ttScope.popupCloseDelay=isNaN(closeDelay)?options.popupCloseDelay:closeDelay,ttScope.popupDelay?showTimeout=showTimeout||$timeout(show,ttScope.popupDelay,!1):show())}function hideTooltipBind(){cancelShow(),ttScope.popupCloseDelay?hideTimeout=hideTimeout||$timeout(hide,ttScope.popupCloseDelay,!1):hide()}function show(){if(cancelShow(),cancelHide(),!ttScope.content)return angular.noop;tooltip||(tooltipLinkedScope=ttScope.$new(),tooltip=tooltipLinker(tooltipLinkedScope,function(tooltip){appendToBody?$document.find("body").append(tooltip):element.after(tooltip)}),openedTooltips.add(ttScope,{close:hide}),observers.length=0,contentParse?(observers.push(scope.$watch(contentParse,function(val){!(ttScope.content=val)&&ttScope.isOpen&&hide()})),observers.push(tooltipLinkedScope.$watch(function(){repositionScheduled||(repositionScheduled=!0,tooltipLinkedScope.$$postDigest(function(){repositionScheduled=!1,ttScope&&ttScope.isOpen&&positionTooltip()}))}))):observers.push(attrs.$observe(ttType,function(val){(!(ttScope.content=val)&&ttScope.isOpen?hide:positionTooltip)()})),observers.push(attrs.$observe(prefix+"Title",function(val){ttScope.title=val,ttScope.isOpen&&positionTooltip()})),observers.push(attrs.$observe(prefix+"Placement",function(val){ttScope.placement=val||options.placement,ttScope.isOpen&&positionTooltip()}))),ttScope.$evalAsync(function(){assignIsOpen(ttScope.isOpen=!0),positionTooltip()})}function cancelShow(){showTimeout&&($timeout.cancel(showTimeout),showTimeout=null),positionTimeout&&($timeout.cancel(positionTimeout),positionTimeout=null)}function hide(){ttScope&&ttScope.$evalAsync(function(){ttScope&&(assignIsOpen(ttScope.isOpen=!1),ttScope.animation?transitionTimeout=transitionTimeout||$timeout(removeTooltip,150,!1):removeTooltip())})}function cancelHide(){hideTimeout&&($timeout.cancel(hideTimeout),hideTimeout=null),transitionTimeout&&($timeout.cancel(transitionTimeout),transitionTimeout=null)}function removeTooltip(){cancelShow(),cancelHide(),observers.length&&(angular.forEach(observers,function(observer){observer()}),observers.length=0),tooltip&&(tooltip.remove(),tooltip=null,adjustmentTimeout&&$timeout.cancel(adjustmentTimeout)),openedTooltips.remove(ttScope),tooltipLinkedScope&&(tooltipLinkedScope.$destroy(),tooltipLinkedScope=null)}function assignIsOpen(isOpen){isOpenParse&&angular.isFunction(isOpenParse.assign)&&isOpenParse.assign(scope,isOpen)}function bodyHideTooltipBind(e){ttScope&&ttScope.isOpen&&tooltip&&(element[0].contains(e.target)||tooltip[0].contains(e.target)||hideTooltipBind())}function hideOnEscapeKey(e){27===e.which&&hideTooltipBind()}ttScope.origScope=scope,ttScope.isOpen=!1,ttScope.contentExp=function(){return ttScope.content},attrs.$observe("disabled",function(val){val&&cancelShow(),val&&ttScope.isOpen&&hide()}),isOpenParse&&scope.$watch(isOpenParse,function(val){ttScope&&!val===ttScope.isOpen&&toggleTooltipBind()});function unregisterTriggers(){triggers.show.forEach(function(trigger){"outsideClick"===trigger?element.off("click",toggleTooltipBind):(element.off(trigger,showTooltipBind),element.off(trigger,toggleTooltipBind)),element.off("keypress",hideOnEscapeKey)}),triggers.hide.forEach(function(trigger){"outsideClick"===trigger?$document.off("click",bodyHideTooltipBind):element.off(trigger,hideTooltipBind)})}var showTriggers,hideTriggers,val;showTriggers=[],hideTriggers=[],val=scope.$eval(attrs[prefix+"Trigger"]),unregisterTriggers(),"none"!==(triggers=angular.isObject(val)?(Object.keys(val).forEach(function(key){showTriggers.push(key),hideTriggers.push(val[key])}),{show:showTriggers,hide:hideTriggers}):getTriggers(val)).show&&triggers.show.forEach(function(trigger,idx){"outsideClick"===trigger?(element.on("click",toggleTooltipBind),$document.on("click",bodyHideTooltipBind)):trigger===triggers.hide[idx]?element.on(trigger,toggleTooltipBind):trigger&&(element.on(trigger,showTooltipBind),element.on(triggers.hide[idx],hideTooltipBind)),element.on("keypress",hideOnEscapeKey)});var animation=scope.$eval(attrs[prefix+"Animation"]),animation=(ttScope.animation=angular.isDefined(animation)?!!animation:options.animation,prefix+"AppendToBody"),animation=animation in attrs&&void 0===attrs[animation]||scope.$eval(attrs[animation]),appendToBody=angular.isDefined(animation)?animation:appendToBody;scope.$on("$destroy",function(){unregisterTriggers(),removeTooltip(),ttScope=null})}}}}}]}).directive("uibTooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest",function($animate,$sce,$compile,$templateRequest){return{link:function(scope,elem,attrs){function cleanupLastIncludeContent(){previousElement&&(previousElement.remove(),previousElement=null),currentScope&&(currentScope.$destroy(),currentScope=null),currentElement&&($animate.leave(currentElement).then(function(){previousElement=null}),previousElement=currentElement,currentElement=null)}var currentScope,previousElement,currentElement,origScope=scope.$eval(attrs.tooltipTemplateTranscludeScope),changeCounter=0;scope.$watch($sce.parseAsResourceUrl(attrs.uibTooltipTemplateTransclude),function(src){var thisChangeId=++changeCounter;src?($templateRequest(src,!0).then(function(response){var newScope;thisChangeId===changeCounter&&(newScope=origScope.$new(),response=$compile(response)(newScope,function(clone){cleanupLastIncludeContent(),$animate.enter(clone,elem)}),currentElement=response,(currentScope=newScope).$emit("$includeContentLoaded",src))},function(){thisChangeId===changeCounter&&(cleanupLastIncludeContent(),scope.$emit("$includeContentError",src))}),scope.$emit("$includeContentRequested",src)):cleanupLastIncludeContent()}),scope.$on("$destroy",cleanupLastIncludeContent)}}}]).directive("uibTooltipClasses",["$uibPosition",function($uibPosition){return{restrict:"A",link:function(scope,element,attrs){var position;scope.placement&&(position=$uibPosition.parsePlacement(scope.placement),element.addClass(position[0])),scope.popupClass&&element.addClass(scope.popupClass),scope.animation&&element.addClass(attrs.tooltipAnimationClass)}}}]).directive("uibTooltipPopup",function(){return{restrict:"A",scope:{content:"@"},templateUrl:"uib/template/tooltip/tooltip-popup.html"}}).directive("uibTooltip",["$uibTooltip",function($uibTooltip){return $uibTooltip("uibTooltip","tooltip","mouseenter")}]).directive("uibTooltipTemplatePopup",function(){return{restrict:"A",scope:{contentExp:"&",originScope:"&"},templateUrl:"uib/template/tooltip/tooltip-template-popup.html"}}).directive("uibTooltipTemplate",["$uibTooltip",function($uibTooltip){return $uibTooltip("uibTooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("uibTooltipHtmlPopup",function(){return{restrict:"A",scope:{contentExp:"&"},templateUrl:"uib/template/tooltip/tooltip-html-popup.html"}}).directive("uibTooltipHtml",["$uibTooltip",function($uibTooltip){return $uibTooltip("uibTooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.popover",["ui.bootstrap.tooltip"]).directive("uibPopoverTemplatePopup",function(){return{restrict:"A",scope:{uibTitle:"@",contentExp:"&",originScope:"&"},templateUrl:"uib/template/popover/popover-template.html"}}).directive("uibPopoverTemplate",["$uibTooltip",function($uibTooltip){return $uibTooltip("uibPopoverTemplate","popover","click",{useContentExp:!0})}]).directive("uibPopoverHtmlPopup",function(){return{restrict:"A",scope:{contentExp:"&",uibTitle:"@"},templateUrl:"uib/template/popover/popover-html.html"}}).directive("uibPopoverHtml",["$uibTooltip",function($uibTooltip){return $uibTooltip("uibPopoverHtml","popover","click",{useContentExp:!0})}]).directive("uibPopoverPopup",function(){return{restrict:"A",scope:{uibTitle:"@",content:"@"},templateUrl:"uib/template/popover/popover.html"}}).directive("uibPopover",["$uibTooltip",function($uibTooltip){return $uibTooltip("uibPopover","popover","click")}]),angular.module("ui.bootstrap.progressbar",[]).constant("uibProgressConfig",{animate:!0,max:100}).controller("UibProgressController",["$scope","$attrs","uibProgressConfig",function($scope,$attrs,progressConfig){var self=this,animate=angular.isDefined($attrs.animate)?$scope.$parent.$eval($attrs.animate):progressConfig.animate;function getMaxOrDefault(){return angular.isDefined($scope.maxParam)?$scope.maxParam:progressConfig.max}this.bars=[],$scope.max=getMaxOrDefault(),this.addBar=function(bar,element,attrs){animate||element.css({transition:"none"}),this.bars.push(bar),bar.max=getMaxOrDefault(),bar.title=attrs&&angular.isDefined(attrs.title)?attrs.title:"progressbar",bar.$watch("value",function(value){bar.recalculatePercentage()}),bar.recalculatePercentage=function(){var totalPercentage=self.bars.reduce(function(total,bar){return bar.percent=+(100*bar.value/bar.max).toFixed(2),total+bar.percent},0);100=this.titles.length?index+1:this.titles[index]},$scope.rate=function(value){!$scope.readonly&&0<=value&&value<=$scope.range.length&&(value=self.enableReset&&ngModelCtrl.$viewValue===value?0:value,ngModelCtrl.$setViewValue(value),ngModelCtrl.$render())},$scope.enter=function(value){$scope.readonly||($scope.value=value),$scope.onHover({value:value})},$scope.reset=function(){$scope.value=ngModelCtrl.$viewValue,$scope.onLeave()},$scope.onKeydown=function(evt){/(37|38|39|40)/.test(evt.which)&&(evt.preventDefault(),evt.stopPropagation(),$scope.rate($scope.value+(38===evt.which||39===evt.which?1:-1)))},this.render=function(){$scope.value=ngModelCtrl.$viewValue,$scope.title=self.getTitle($scope.value-1)}}]).directive("uibRating",function(){return{require:["uibRating","ngModel"],restrict:"A",scope:{readonly:"=?readOnly",onHover:"&",onLeave:"&"},controller:"UibRatingController",templateUrl:"uib/template/rating/rating.html",link:function(scope,element,attrs,ctrls){var ratingCtrl=ctrls[0],ctrls=ctrls[1];ratingCtrl.init(ctrls)}}}),angular.module("ui.bootstrap.tabs",[]).controller("UibTabsetController",["$scope",function($scope){var oldIndex,destroyed,ctrl=this;function findTabIndex(index){for(var i=0;it2.index?1:t1.indexmax:disabled||addMinutes(selected,-720)")).css("position","relative"),element.after(inputsContainer),(hintInputElem=element.clone()).attr("placeholder",""),hintInputElem.attr("tabindex","-1"),hintInputElem.val(""),hintInputElem.css({position:"absolute",top:"0px",left:"0px","border-color":"transparent","box-shadow":"none",opacity:1,background:"none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)",color:"#999"}),element.css({position:"relative","vertical-align":"top","background-color":"transparent"}),hintInputElem.attr("id")&&hintInputElem.removeAttr("id"),inputsContainer.append(hintInputElem),hintInputElem.after(element)),angular.element("
")),resetHint=(popUpEl.attr({id:popupId,matches:"matches",active:"activeIdx",select:"select(activeIdx, evt)","move-in-progress":"moveInProgress",query:"query",position:"position","assign-is-open":"assignIsOpen(isOpen)",debounce:"debounceUpdate"}),angular.isDefined(attrs.typeaheadTemplateUrl)&&popUpEl.attr("template-url",attrs.typeaheadTemplateUrl),angular.isDefined(attrs.typeaheadPopupTemplateUrl)&&popUpEl.attr("popup-template-url",attrs.typeaheadPopupTemplateUrl),function(){showHint&&hintInputElem.val("")}),resetMatches=function(){scope.matches=[],scope.activeIdx=-1,element.attr("aria-expanded",!1),resetHint()},getMatchId=function(index){return popupId+"-option-"+index},inputIsExactMatch=(scope.$watch("activeIdx",function(index){index<0?element.removeAttr("aria-activedescendant"):element.attr("aria-activedescendant",getMatchId(index))}),function(inputValue,index){return!!(scope.matches.length>index&&inputValue)&&inputValue.toUpperCase()===scope.matches[index].label.toUpperCase()}),getMatchesAsync=function(inputValue,evt){var locals={$viewValue:inputValue};isLoadingSetter(originalScope,!0),isNoResultsSetter(originalScope,!1),$q.when(parserResult.source(originalScope,locals)).then(function(matches){var onCurrentRequest=inputValue===modelCtrl.$viewValue;if(onCurrentRequest&&hasFocus)if(matches&&0=minLength?(0/g.test(matchItem)&&$log.warn("Unsafe use of typeahead please use ngSanitize"),matchItem=query?(""+matchItem).replace(new RegExp(query.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1"),"gi"),"$&"):matchItem,matchItem=isSanitizePresent?matchItem:$sce.trustAsHtml(matchItem)}}]),angular.module("uib/template/accordion/accordion-group.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/accordion/accordion-group.html",'\n
\n
\n
\n')}]),angular.module("uib/template/accordion/accordion.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/accordion/accordion.html",'
')}]),angular.module("uib/template/alert/alert.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/alert/alert.html",'\n
\n')}]),angular.module("uib/template/carousel/carousel.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/carousel/carousel.html",'\n\n \n previous\n\n\n \n next\n\n\n')}]),angular.module("uib/template/carousel/slide.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/carousel/slide.html",'
\n')}]),angular.module("uib/template/datepicker/datepicker.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/datepicker/datepicker.html",'
\n
\n
\n
\n
\n')}]),angular.module("uib/template/datepicker/day.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/datepicker/day.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{::label.abbr}}
{{ weekNumbers[$index] }}\n \n
\n')}]),angular.module("uib/template/datepicker/month.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/datepicker/month.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n')}]),angular.module("uib/template/datepicker/year.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/datepicker/year.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n')}]),angular.module("uib/template/datepickerPopup/popup.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/datepickerPopup/popup.html",'\n')}]),angular.module("uib/template/modal/window.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/modal/window.html","
\n")}]),angular.module("uib/template/pager/pager.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/pager/pager.html",'
  • {{::getText(\'previous\')}}
  • \n
  • {{::getText(\'next\')}}
  • \n')}]),angular.module("uib/template/pagination/pagination.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/pagination/pagination.html",'\n\n\n\n\n')}]),angular.module("uib/template/tooltip/tooltip-html-popup.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/tooltip/tooltip-html-popup.html",'
    \n
    \n')}]),angular.module("uib/template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/tooltip/tooltip-popup.html",'
    \n
    \n')}]),angular.module("uib/template/tooltip/tooltip-template-popup.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/tooltip/tooltip-template-popup.html",'
    \n
    \n')}]),angular.module("uib/template/popover/popover-html.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/popover/popover-html.html",'
    \n\n
    \n

    \n
    \n
    \n')}]),angular.module("uib/template/popover/popover-template.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/popover/popover-template.html",'
    \n\n
    \n

    \n
    \n
    \n')}]),angular.module("uib/template/popover/popover.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/popover/popover.html",'
    \n\n
    \n

    \n
    \n
    \n')}]),angular.module("uib/template/progressbar/bar.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/progressbar/bar.html",'
    \n')}]),angular.module("uib/template/progressbar/progress.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/progressbar/progress.html",'
    ')}]),angular.module("uib/template/progressbar/progressbar.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/progressbar/progressbar.html",'
    \n
    \n
    \n')}]),angular.module("uib/template/rating/rating.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/rating/rating.html",'\n ({{ $index < value ? \'*\' : \' \' }})\n \n\n')}]),angular.module("uib/template/tabs/tab.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/tabs/tab.html",'\n')}]),angular.module("uib/template/tabs/tabset.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/tabs/tabset.html",'
    \n \n
    \n
    \n
    \n
    \n
    \n')}]),angular.module("uib/template/timepicker/timepicker.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/timepicker/timepicker.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
      
    \n \n :\n \n :\n \n
      
    \n')}]),angular.module("uib/template/typeahead/typeahead-match.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/typeahead/typeahead-match.html",'\n')}]),angular.module("uib/template/typeahead/typeahead-popup.html",[]).run(["$templateCache",function($templateCache){$templateCache.put("uib/template/typeahead/typeahead-popup.html",'\n')}]),angular.module("ui.bootstrap.carousel").run(function(){angular.$$csp().noInlineStyle||angular.$$uibCarouselCss||angular.element(document).find("head").prepend(''),angular.$$uibCarouselCss=!0}),angular.module("ui.bootstrap.datepicker").run(function(){angular.$$csp().noInlineStyle||angular.$$uibDatepickerCss||angular.element(document).find("head").prepend(''),angular.$$uibDatepickerCss=!0}),angular.module("ui.bootstrap.position").run(function(){angular.$$csp().noInlineStyle||angular.$$uibPositionCss||angular.element(document).find("head").prepend(''),angular.$$uibPositionCss=!0}),angular.module("ui.bootstrap.datepickerPopup").run(function(){angular.$$csp().noInlineStyle||angular.$$uibDatepickerpopupCss||angular.element(document).find("head").prepend(''),angular.$$uibDatepickerpopupCss=!0}),angular.module("ui.bootstrap.tooltip").run(function(){angular.$$csp().noInlineStyle||angular.$$uibTooltipCss||angular.element(document).find("head").prepend(''),angular.$$uibTooltipCss=!0}),angular.module("ui.bootstrap.timepicker").run(function(){angular.$$csp().noInlineStyle||angular.$$uibTimepickerCss||angular.element(document).find("head").prepend(''),angular.$$uibTimepickerCss=!0}),angular.module("ui.bootstrap.typeahead").run(function(){angular.$$csp().noInlineStyle||angular.$$uibTypeaheadCss||angular.element(document).find("head").prepend(''),angular.$$uibTypeaheadCss=!0}),angular.module("ui.alias",[]).config(["$compileProvider","uiAliasConfig",function(a,b){b=b||{},angular.forEach(b,function(b,c){angular.isString(b)&&(b={replace:!0,template:b}),a.directive(c,function(){return b})})}]),angular.module("ui.event",[]).directive("uiEvent",["$parse",function(a){return function(b,c,d){d=b.$eval(d.uiEvent);angular.forEach(d,function(d,e){var f=a(d);c.bind(e,function(a){var c=(c=Array.prototype.slice.call(arguments)).splice(1);f(b,{$event:a,$params:c}),b.$$phase||b.$apply()})})}}]),angular.module("ui.format",[]).filter("format",function(){return function(a,b){var d,c=a;return angular.isString(c)&&void 0!==b&&(angular.isArray(b)||angular.isObject(b)||(b=[b]),angular.isArray(b)?(d=b.length,c=c.replace(/\$([0-9]+)/g,function(a,c){return 0<=(c=parseInt(c,10))&&c'+b+""):a.replace(new RegExp(b,"gi"),'$&')):a}}),angular.module("ui.include",[]).directive("uiInclude",["$http","$templateCache","$anchorScroll","$compile",function(a,b,c,d){return{restrict:"ECA",terminal:!0,compile:function(e,f){var g=f.uiInclude||f.src,h=f.fragment||"",i=f.onload||"",j=f.autoscroll;return function(e,f){function k(){var k=++m,o=e.$eval(g),p=e.$eval(h);o?a.get(o,{cache:b}).success(function(a){k===m&&(l&&l.$destroy(),l=e.$new(),a=p?angular.element("
    ").html(a).find(p):angular.element("
    ").html(a).contents(),f.html(a),d(a)(l),!angular.isDefined(j)||j&&!e.$eval(j)||c(),l.$emit("$includeContentLoaded"),e.$eval(i))}).error(function(){k===m&&n()}):n()}function n(){l&&(l.$destroy(),l=null),f.html("")}var l,m=0;e.$watch(h,k),e.$watch(g,k)}}}}]),angular.module("ui.indeterminate",[]).directive("uiIndeterminate",[function(){return{compile:function(a,b){return b.type&&"checkbox"===b.type.toLowerCase()?function(a,b,c){a.$watch(c.uiIndeterminate,function(a){b[0].indeterminate=!!a})}:angular.noop}}}]),angular.module("ui.inflector",[]).filter("inflector",function(){function a(a){return a.replace(/^([a-z])|\s+([a-z])/g,function(a){return a.toUpperCase()})}function b(a,b){return a.replace(/[A-Z]/g,function(a){return b+a})}var c={humanize:function(c){return a(b(c," ").split("_").join(" "))},underscore:function(a){return a.substr(0,1).toLowerCase()+b(a.substr(1),"_").toLowerCase().split(" ").join("_")},variable:function(b){return b.substr(0,1).toLowerCase()+a(b.split("_").join(" ")).substr(1).split(" ").join("")}};return function(a,b){return!1!==b&&angular.isString(a)?c[b=b||"humanize"](a):a}}),angular.module("ui.jq",[]).value("uiJqConfig",{}).directive("uiJq",["uiJqConfig","$timeout",function(a,b){return{restrict:"A",compile:function(c,d){var e;if(angular.isFunction(c[d.uiJq]))return e=a&&a[d.uiJq],function(a,c,d){function f(){b(function(){c[d.uiJq].apply(c,g)},0,!1)}var g=[];d.uiOptions?(g=a.$eval("["+d.uiOptions+"]"),angular.isObject(e)&&angular.isObject(g[0])&&(g[0]=angular.extend({},e,g[0]))):e&&(g=[e]),d.ngModel&&c.is("select,input,textarea")&&c.bind("change",function(){c.trigger("input")}),d.uiRefresh&&a.$watch(d.uiRefresh,function(){f()}),f()};throw new Error('ui-jq: The "'+d.uiJq+'" function does not exist')}}}]),angular.module("ui.keypress",[]).factory("keypressHelper",["$parse",function(a){var b={8:"backspace",9:"tab",13:"enter",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"delete"};return function(d,e,f,g){var i=[],g=e.$eval(g["ui"+function(a){return a.charAt(0).toUpperCase()+a.slice(1)}(d)]);angular.forEach(g,function(b,c){var d,e=a(b);angular.forEach(c.split(" "),function(a){d={expression:e,keys:{}},angular.forEach(a.split("-"),function(a){d.keys[a]=!0}),i.push(d)})}),f.bind(d,function(a){var c=!(!a.metaKey||a.ctrlKey),f=!!a.altKey,g=!!a.ctrlKey,h=!!a.shiftKey,j=a.keyCode;"keypress"===d&&!h&&97<=j&&j<=122&&(j-=32),angular.forEach(i,function(d){var i=d.keys[b[j]]||d.keys[j.toString()],k=!!d.keys.meta,l=!!d.keys.alt,m=!!d.keys.ctrl,n=!!d.keys.shift;i&&k==c&&l==f&&m==g&&n==h&&e.$apply(function(){d.expression(e,{$event:a})})})})}}]),angular.module("ui.keypress").directive("uiKeydown",["keypressHelper",function(a){return{link:function(b,c,d){a("keydown",b,c,d)}}}]),angular.module("ui.keypress").directive("uiKeypress",["keypressHelper",function(a){return{link:function(b,c,d){a("keypress",b,c,d)}}}]),angular.module("ui.keypress").directive("uiKeyup",["keypressHelper",function(a){return{link:function(b,c,d){a("keyup",b,c,d)}}}]),angular.module("ui.mask",[]).value("uiMaskConfig",{maskDefinitions:{9:/\d/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/}}).directive("uiMask",["uiMaskConfig",function(a){return{priority:100,require:"ngModel",restrict:"A",compile:function(){var b=a;return function(a,c,d,e){function j(){return N=!1,O&&(c.unbind("blur",t),c.unbind("mousedown",u),c.unbind("mouseup",u),c.unbind("input",w),c.unbind("keyup",w),c.unbind("click",w),c.unbind("focus",w),O=!1),angular.isDefined(P)?c.attr("placeholder",P):c.removeAttr("placeholder"),angular.isDefined(Q)?c.attr("maxlength",Q):c.removeAttr("maxlength"),c.val(e.$modelValue),e.$viewValue=e.$modelValue,!1}function n(a){return!a.length||a.length>=F}function o(a){var b="",c=C.slice();return a=a.toString(),angular.forEach(E,function(b){a=a.replace(b,"")}),angular.forEach(a.split(""),function(a){c.length&&c[0].test(a)&&(b+=a,c.shift())}),b}function p(a){var b="",c=B.slice();return angular.forEach(D.split(""),function(d,e){a.length&&e===c[0]?(b+=a.charAt(0)||"_",a=a.substr(1),c.shift()):b+=d}),b}function q(a){var b=d.placeholder;return void 0!==b&&b[a]?b[a]:"_"}function t(){M=L=0,I&&0!==G.length||(H="",c.val(""),a.$apply(function(){e.$setViewValue("")}))}function u(a){"mousedown"===a.type?c.bind("mouseout",v):c.unbind("mouseout",v)}function v(){M=A(this),c.unbind("mouseout",v)}function w(b){var d=(b=b||{}).which,f=b.type;if(16!==d&&91!==d){var h=c.val(),i=J,j=o(h),k=K,l=!1,m=function(a){if(a){if(void 0!==a.selectionStart)return a.selectionStart;var b;if(document.selection)return a.focus(),(b=document.selection.createRange()).moveStart("character",-a.value.length),b.text.length}return 0}(this)||0,n=L||0,q=m-n,r=B[0],s=B[j.length]||B.slice().shift(),t=M||0,u=0i.length||t&&h.length>i.length-t,h=h.length>>0;if(0!=c){var d=0;if(1');c.wrap('').after(f),f.bind("click",function(c){c.preventDefault(),a.$apply(function(){e.$setViewValue(d.uiReset?a.$eval(d.uiReset):b),e.$render()})})}}}]),angular.module("ui.route",[]).directive("uiRoute",["$location","$parse",function(a,b){return{restrict:"AC",scope:!0,compile:function(c,d){var e;if(d.uiRoute)e="uiRoute";else if(d.ngHref)e="ngHref";else{if(!d.href)throw new Error("uiRoute missing a route or href property on "+c[0]);e="href"}return function(c,d,f){function g(b){var d=b.indexOf("#");-1 as a repeating tag: "+a[0].outerHTML);return"li"!==f&&"tr"!==f&&(f="div"),(h=j[0]||angular.element(window)).css({"overflow-y":"auto",display:"block"}),g=(a=function(a,b,c){return b[{top:"before",bottom:"after"}[c]](a),{paddingHeight:function(){return a.paddingHeight.apply(a,arguments)},insert:function(b){return a[{top:"after",bottom:"before"}[c]](b)}}})((d=function(a){var b,d;return"tr"===a?(d=angular.element("
    "),b=d.find("div"),(d=d.find("tr")).paddingHeight=function(){return b.height.apply(b,arguments)}):(d=angular.element("<"+a+">")).paddingHeight=d.height,d})(f),e,"top"),b=a(d(f),e,"bottom"),R.$destroy(),k={viewport:h,topPadding:g.paddingHeight,bottomPadding:b.paddingHeight,append:b.insert,prepend:g.insert,bottomDataPos:function(){return O(h)-b.paddingHeight()},topDataPos:function(){return g.paddingHeight()}}}),T=k.viewport,I=B=1,p=[],n=x=!(J=[]),G=u.loading||function(){},E=!1,L=function(a,b){for(var d,c=d=a;a<=b?do()+q());c=g<=0?++f:--f)b+=d,e++,x=!1;return 0S()-q()},t=function(){for(var c,e=0,d=0,f=0,g=p.length;fd.uiScrollfix?c.addClass("ui-scrollfix"):c.hasClass("ui-scrollfix")&&b")(this.$scope),this.parent.appendChild(this.progressbarEl[0]),this.$scope.count=this.count,void 0!==this.height&&this.progressbarEl.eq(0).children().css("height",this.height),void 0!==this.color&&(this.progressbarEl.eq(0).children().css("background-color",this.color),this.progressbarEl.eq(0).children().css("color",this.color)),this.intervalCounterId=0,this.start=function(){this.show();var a=this;clearInterval(this.intervalCounterId),this.intervalCounterId=setInterval(function(){isNaN(a.count)?(clearInterval(a.intervalCounterId),a.count=0,a.hide()):(a.remaining=100-a.count,a.count=a.count+.15*Math.pow(1-Math.sqrt(a.remaining),2),a.updateCount(a.count))},200)},this.updateCount=function(a){this.$scope.count=a,this.$scope.$$phase||this.$scope.$apply()},this.setHeight=function(a){return void 0!==a&&(this.height=a,this.$scope.height=this.height,this.$scope.$$phase||this.$scope.$apply()),this.height},this.setColor=function(a){return void 0!==a&&(this.color=a,this.$scope.color=this.color,this.$scope.$$phase||this.$scope.$apply()),this.color},this.hide=function(){this.progressbarEl.children().css("opacity","0");var a=this;a.animate(function(){a.progressbarEl.children().css("width","0%"),a.animate(function(){a.show()},500)},500)},this.show=function(){var a=this;a.animate(function(){a.progressbarEl.children().css("opacity","1")},100)},this.animate=function(a,b){void 0!==this.animation&&e.cancel(this.animation),this.animation=e(a,b)},this.status=function(){return this.count},this.stop=function(){clearInterval(this.intervalCounterId)},this.set=function(a){return this.show(),this.updateCount(a),this.count=a,clearInterval(this.intervalCounterId),this.count},this.css=function(a){return this.progressbarEl.children().css(a)},this.reset=function(){return clearInterval(this.intervalCounterId),this.count=0,this.updateCount(this.count),0},this.complete=function(){this.count=100,this.updateCount(this.count);var a=this;return clearInterval(this.intervalCounterId),e(function(){a.hide(),e(function(){a.count=0,a.updateCount(a.count)},500)},1e3),this.count},this.setParent=function(a){if(null==a)throw new Error("Provide a valid parent of type HTMLElement");null!==this.parent&&void 0!==this.parent&&this.parent.removeChild(this.progressbarEl[0]),this.parent=a,this.parent.appendChild(this.progressbarEl[0])},this.getDomElement=function(){return this.progressbarEl},this.setAbsolute=function(){this.progressbarEl.css("position","absolute")}}]}).factory("ngProgressFactory",["$injector","ngProgress",function(a,b){return{createInstance:function(){return a.instantiate(b)}}}]),angular.module("ngProgress.directive",[]).directive("ngProgress",["$window","$rootScope",function(a,b){return{replace:!0,restrict:"E",link:function(a,b,c,d){a.$watch("count",function(c){void 0===c&&null===c||(a.counter=c,b.eq(0).children().css("width",c+"%"))}),a.$watch("color",function(c){void 0===c&&null===c||(a.color=c,b.eq(0).children().css("background-color",c),b.eq(0).children().css("color",c))}),a.$watch("height",function(c){void 0===c&&null===c||(a.height=c,b.eq(0).children().css("height",c))})},template:'
    '}}]),angular.module("ngProgress",["ngProgress.directive","ngProgress.provider"]),angular.module("gettext",[]),angular.module("gettext").constant("gettext",function(t){return t}),angular.module("gettext").factory("gettextCatalog",["gettextPlurals","gettextFallbackLanguage","$http","$cacheFactory","$interpolate","$rootScope",function(i,u,e,t,c,r){function o(t){return a.debug&&a.currentLanguage!==a.baseLanguage?a.debugPrefix+t:t}function f(t){return a.showTranslatedMarkers?a.translatedMarkerPrefix+t+a.translatedMarkerSuffix:t}var a,l="$$noContext",n='test',g=angular.element(""+n+"").html()!==n;function h(){r.$broadcast("gettextLanguageChanged")}return a={debug:!1,debugPrefix:"[MISSING]: ",showTranslatedMarkers:!1,translatedMarkerPrefix:"[",translatedMarkerSuffix:"]",strings:{},baseLanguage:"en",currentLanguage:"en",cache:t("strings"),setCurrentLanguage:function(t){this.currentLanguage=t,h()},getCurrentLanguage:function(){return this.currentLanguage},setStrings:function(t,e){this.strings[t]||(this.strings[t]={});var a,r=i(t,1);for(a in e){var s,u,n=e[a];for(u in g&&(a=angular.element(""+a+"").html()),(angular.isString(n)||angular.isArray(n))&&((s={})[l]=n,n=s),this.strings[t][a]||(this.strings[t][a]={}),n){var c=n[u];angular.isArray(c)?this.strings[t][a][u]=c:(this.strings[t][a][u]=[],this.strings[t][a][u][r]=c)}}h()},getStringFormFor:function(t,e,r,a){return t?(((this.strings[t]||{})[e]||{})[a||l]||[])[i(t,r)]:null},getString:function(t,e,r){var a=u(this.currentLanguage);return t=this.getStringFormFor(this.currentLanguage,t,1,r)||this.getStringFormFor(a,t,1,r)||o(t),t=e?c(t)(e):t,f(t)},getPlural:function(t,e,r,a,n){var s=u(this.currentLanguage);return e=this.getStringFormFor(this.currentLanguage,e,t,n)||this.getStringFormFor(s,e,t,n)||o(1===t?e:r),a&&(a.$count=t,e=c(e)(a)),f(e)},loadRemote:function(t){return e({method:"GET",url:t,cache:a.cache}).then(function(t){var r,e=t.data;for(r in e)a.setStrings(r,e[r]);return t})}}}]),angular.module("gettext").directive("translate",["gettextCatalog","$parse","$animate","$compile","$window","gettextUtil",function(h,a,m,d,t,x){var e=angular.$$lowercase||angular.lowercase,r=parseInt((/msie (\d+)/.exec(e(t.navigator.userAgent))||[])[1],10),c="translateParams";function n(e,r,n){var s,u,t=Object.keys(r).filter(function(t){return x.startsWith(t,c)&&t!==c});return t.length?(s=angular.extend({},e),u=[],t.forEach(function(a){var t=e.$watch(r[a],function(t){var r=x.lcFirst(a.replace(c,""));s[r]=t,n(s)});u.push(t)}),e.$on("$destroy",function(){u.forEach(function(t){t()})}),s):null}return{restrict:"AE",terminal:!0,compile:function(t,e){x.assert(!e.translatePlural||e.translateN,"translate-n","translate-plural"),x.assert(!e.translateN||e.translatePlural,"translate-plural","translate-n");var g=x.trim(t.html()),o=e.translatePlural,f=e.translateContext;return r<=8&&"\x3c!--IE fix--\x3e"===g.slice(-13)&&(g=g.slice(0,-13)),{post:function(s,u,t){var c=a(t.translateN),i=null,l=!0;function e(t){t=t||null,t=o?((s=i=i||s.$new()).$count=c(s),h.getPlural(s.$count,g,o,t,f)):h.getString(g,t,f);var r=u.contents();(r||t)&&(t!==x.trim(r.html())?(t=angular.element(""+t+""),d(t.contents())(s),t=t.contents(),m.enter(t,u),m.leave(r)):l&&d(r)(s))}var r=n(s,t,e);e(r),l=!1,t.translateN&&s.$watch(t.translateN,function(){e(r)}),s.$on("gettextLanguageChanged",function(){e(r)})}}}}}]),angular.module("gettext").factory("gettextFallbackLanguage",function(){var r={},a=/([^_]+)_[^_]+$/;return function(t){var e;return r[t]||((e=a.exec(t))?(r[t]=e[1],e[1]):null)}}),angular.module("gettext").filter("translate",["gettextCatalog",function(r){function t(t,e){return r.getString(t,null,e)}return t.$stateful=!0,t}]),angular.module("gettext").factory("gettextPlurals",function(){var r={pt_BR:"pt_BR","pt-BR":"pt_BR"};return function(t,e){switch(function(t){return r[t]||(r[t]=t.split(/\-|_/).shift()),r[t]}(t)){case"ay":case"bo":case"cgg":case"dz":case"fa":case"id":case"ja":case"jbo":case"ka":case"kk":case"km":case"ko":case"ky":case"lo":case"ms":case"my":case"sah":case"su":case"th":case"tt":case"ug":case"vi":case"wo":case"zh":return 0;case"is":return e%10!=1||e%100==11?1:0;case"jv":return 0!=e?1:0;case"mk":return 1==e||e%10==1?0:1;case"ach":case"ak":case"am":case"arn":case"br":case"fil":case"fr":case"gun":case"ln":case"mfe":case"mg":case"mi":case"oc":case"pt_BR":case"tg":case"ti":case"tr":case"uz":case"wa":case"zh":return 1=fn.length?fn.apply(this,arguments):(args=Array.prototype.slice.call(arguments),curried.bind.apply(curried,__spreadArrays([this],args)))}}function compose(){var args=arguments,start=args.length-1;return function(){for(var i=start,result=args[start].apply(this,arguments);i--;)result=args[i].call(this,result);return result}}function pipe(){for(var _i=0;_ithis._limit&&this.evict(),item},Queue.prototype.evict=function(){var item=this._items.shift();return this._evictListeners.forEach(function(fn){return fn(item)}),item},Queue.prototype.dequeue=function(){if(this.size())return this._items.splice(0,1)[0]},Queue.prototype.clear=function(){var current=this._items;return this._items=[],current},Queue.prototype.size=function(){return this._items.length},Queue.prototype.remove=function(item){item=this._items.indexOf(item);return-1 "+stringify(trans))},Trace.prototype.traceTransitionIgnored=function(trans){this.enabled(exports.Category.TRANSITION)&&safeConsole.log(transLbl(trans)+": Ignored <> "+stringify(trans))},Trace.prototype.traceHookInvocation=function(step,trans,options){var event;this.enabled(exports.Category.HOOK)&&(event=parse("traceData.hookType")(options)||"internal",options=parse("traceData.context.state.name")(options)||parse("traceData.context")(options)||"unknown",step=functionToString(step.registeredHook.callback),safeConsole.log(transLbl(trans)+": Hook -> "+event+" context: "+options+", "+maxLength(200,step)))},Trace.prototype.traceHookResult=function(hookResult,trans,transitionOptions){this.enabled(exports.Category.HOOK)&&safeConsole.log(transLbl(trans)+": <- Hook returned: "+maxLength(200,stringify(hookResult)))},Trace.prototype.traceResolvePath=function(path,when,trans){this.enabled(exports.Category.RESOLVE)&&safeConsole.log(transLbl(trans)+": Resolving "+path+" ("+when+")")},Trace.prototype.traceResolvableResolved=function(resolvable,trans){this.enabled(exports.Category.RESOLVE)&&safeConsole.log(transLbl(trans)+": <- Resolved "+resolvable+" to: "+maxLength(200,stringify(resolvable.data)))},Trace.prototype.traceError=function(reason,trans){this.enabled(exports.Category.TRANSITION)&&safeConsole.log(transLbl(trans)+": <- Rejected "+stringify(trans)+", reason: "+reason)},Trace.prototype.traceSuccess=function(finalState,trans){this.enabled(exports.Category.TRANSITION)&&safeConsole.log(transLbl(trans)+": <- Success "+stringify(trans)+", final state: "+finalState.name)},Trace.prototype.traceUIViewEvent=function(event,viewData,extra){void 0===extra&&(extra=""),this.enabled(exports.Category.UIVIEW)&&safeConsole.log("ui-view: "+padString(30,event)+" "+uiViewString(viewData)+extra)},Trace.prototype.traceUIViewConfigUpdated=function(viewData,context){this.enabled(exports.Category.UIVIEW)&&this.traceUIViewEvent("Updating",viewData," with ViewConfig from context='"+context+"'")},Trace.prototype.traceUIViewFill=function(viewData,html){this.enabled(exports.Category.UIVIEW)&&this.traceUIViewEvent("Fill",viewData," with: "+maxLength(200,html))},Trace.prototype.traceViewSync=function(pairs){var uivheader;this.enabled(exports.Category.VIEWCONFIG)&&(uivheader="uiview component fqn",pairs=pairs.map(function(_a){var uiView=_a.uiView,_a=_a.viewConfig,uiView=uiView&&uiView.fqn,_a=_a&&_a.viewDecl.$context.name+": ("+_a.viewDecl.$name+")",_b={};return _b[uivheader]=uiView,_b["view config state (view name)"]=_a,_b}).sort(function(a,b){return(a[uivheader]||"").localeCompare(b[uivheader]||"")}),safeConsole.table(pairs))},Trace.prototype.traceViewServiceEvent=function(event,viewConfig){this.enabled(exports.Category.VIEWCONFIG)&&safeConsole.log("VIEWCONFIG: "+event+" "+function(viewConfig){var view=viewConfig.viewDecl,state=view.$context.name||"(root)";return"[View#"+viewConfig.$id+" from '"+state+"' state]: target ui-view: '"+view.$uiViewName+"@"+view.$uiViewContextAnchor+"'"}(viewConfig))},Trace.prototype.traceViewServiceUIViewEvent=function(event,viewData){this.enabled(exports.Category.VIEWCONFIG)&&safeConsole.log("VIEWCONFIG: "+event+" "+uiViewString(viewData))},Trace}(),trace=new noopConsoleStub,ParamType=function(){function ParamType(def){this.pattern=/.*/,this.inherit=!0,extend(this,def)}return ParamType.prototype.is=function(val,key){return!0},ParamType.prototype.encode=function(val,key){return val},ParamType.prototype.decode=function(val,key){return val},ParamType.prototype.equals=function(a,b){return a==b},ParamType.prototype.$subPattern=function(){var sub=this.pattern.toString();return sub.substr(1,sub.length-2)},ParamType.prototype.toString=function(){return"{ParamType:"+this.name+"}"},ParamType.prototype.$normalize=function(val){return this.is(val)?val:this.decode(val)},ParamType.prototype.$asArray=function(mode,isSearch){if(!mode)return this;if("auto"!==mode||isSearch)return new ArrayType(this,mode);throw new Error("'auto' array mode is for query parameters only")},ParamType}();function ArrayType(type,mode){var _this=this;function arrayWrap(val){return isArray(val)?val:isDefined(val)?[val]:[]}function arrayHandler(callback,allTruthyMode){return function(val){return isArray(val)&&0===val.length?val:(val=map(arrayWrap(val),callback),!0===allTruthyMode?0===filter(val,function(x){return!x}).length:function(val){switch(val.length){case 0:return;case 1:return"auto"===mode?val[0]:val;default:return val}}(val))}}function arrayEqualsHandler(callback){return function(val1,val2){var left=arrayWrap(val1),right=arrayWrap(val2);if(left.length!==right.length)return!1;for(var i=0;i=hook.invokeLimit&&hook.deregister()}}},TransitionHook.prototype.handleHookResult=function(result){var _this=this,notCurrent=this.getNotCurrentRejection();return notCurrent||(isPromise(result)?result.then(function(val){return _this.handleHookResult(val)}):(trace.traceHookResult(result,this.transition,this.options),!1===result?Rejection.aborted("Hook aborted transition").toPromise():is(TargetState)(result)?Rejection.redirected(result).toPromise():void 0))},TransitionHook.prototype.getNotCurrentRejection=function(){var router=this.transition.router;return router._disposed?Rejection.aborted("UIRouter instance #"+router.$id+" has been stopped (disposed)").toPromise():this.transition._aborted?Rejection.aborted().toPromise():this.isSuperseded()?Rejection.superseded(this.options.current()).toPromise():void 0},TransitionHook.prototype.toString=function(){var options=this.options,registeredHook=this.registeredHook;return(parse("traceData.hookType")(options)||"internal")+" context: "+(parse("traceData.context.state.name")(options)||parse("traceData.context")(options)||"unknown")+", "+maxLength(200,fnToString(registeredHook.callback))},TransitionHook.HANDLE_RESULT=function(hook){return function(result){return hook.handleHookResult(result)}},TransitionHook.LOG_REJECTED_RESULT=function(hook){return function(result){isPromise(result)&&result.catch(function(err){return hook.logError(Rejection.normalize(err))})}},TransitionHook.LOG_ERROR=function(hook){return function(error){return hook.logError(error)}},TransitionHook.REJECT_ERROR=function(hook){return silentRejection},TransitionHook.THROW_ERROR=function(hook){return function(error){throw error}},TransitionHook}();function matchState(state,criterion,transition){var toMatch=isString(criterion)?[criterion]:criterion;return!!(isFunction(toMatch)?toMatch:function(_state){for(var globStrings=toMatch,i=0;i "+(this.valid()?"":"(X) ")+"'"+(isObject(toStateOrName)?toStateOrName.name:toStateOrName)+"'"+stringify(avoidEmptyHash(this.params()))+" )"},Transition.diToken=Transition}();function quoteRegExp(str,param){var surroundPattern=["",""],result=str.replace(/[\\\[\]\^$*+?.()|{}]/g,"\\$&");if(!param)return result;switch(param.squash){case!1:surroundPattern=["(",")"+(param.isOptional?"?":"")];break;case!0:result=result.replace(/\/$/,""),surroundPattern=["(?:/(",")|/)?"];break;default:surroundPattern=["("+param.squash+"|",")?"]}return result+surroundPattern[0]+param.type.pattern.source+surroundPattern[1]}var splitOnSlash=splitOnDelim("/"),defaultConfig={state:{params:{}},strict:!0,caseInsensitive:!0,decodeParams:!0},UrlMatcher=function(){function UrlMatcher(pattern,paramTypes,paramFactory,config){for(var matchArray,details,_this=this,placeholder=(this._cache={path:[this]},this._children=[],this._params=[],this._segments=[],this._compiled=[],this.config=config=defaults(config,defaultConfig),this.pattern=pattern,/([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g),searchPlaceholder=/([:]?)([\w\[\].-]+)|\{([\w\[\].-]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,patterns=[],last=0,checkParamErrors=function(id){if(!UrlMatcher.nameValidator.test(id))throw new Error("Invalid parameter name '"+id+"' in pattern '"+pattern+"'");if(find(_this._params,propEq("id",id)))throw new Error("Duplicate parameter name '"+id+"' in pattern '"+pattern+"'")},matchDetails=function(m,isSearch){var id=m[2]||m[3],regexp=isSearch?m[4]:m[4]||("*"===m[1]?"[\\s\\S]*":null);return{id:id,regexp:regexp,segment:pattern.substring(last,m.index),type:regexp?paramTypes.type(regexp)||(id=regexp,inherit(paramTypes.type(isSearch?"query":"path"),{pattern:new RegExp(id,_this.config.caseInsensitive?"i":void 0)})):null}};(matchArray=placeholder.exec(pattern))&&!(0<=(details=matchDetails(matchArray,!1)).segment.indexOf("?"));)checkParamErrors(details.id),this._params.push(paramFactory.fromPath(details.id,details.type,config.state)),this._segments.push(details.segment),patterns.push([details.segment,tail(this._params)]),last=placeholder.lastIndex;var i=(segment=pattern.substring(last)).indexOf("?");if(0<=i){var search=segment.substring(i),segment=segment.substring(0,i);if(0 Registering",viewConfig),this._viewConfigs.push(viewConfig)},ViewService.prototype.sync=function(){var _this=this,uiViewsByFqn=this._uiViews.map(function(uiv){return[uiv.fqn,uiv]}).reduce(applyPairs,{});function viewConfigDepth(config){for(var context=config.viewDecl.$context,count=0;++count&&context.parent;)context=context.parent;return count}var depthCompare=curry(function(depthFn,posNeg,left,right){return posNeg*(depthFn(left)-depthFn(right))}),uiViewTuples=this._uiViews.sort(depthCompare(function(uiView){function stateDepth(context){return context&&context.parent?stateDepth(context.parent)+1:1}return 1e4*uiView.fqn.split(".").length+stateDepth(uiView.creationContext)},1)).map(function(uiView){var matchingConfigs=_this._viewConfigs.filter(ViewService.matches(uiViewsByFqn,uiView));return 1 Registering",uiView);var uiViews=this._uiViews;return uiViews.filter(function(uiv){return uiv.fqn===uiView.fqn&&uiv.$type===uiView.$type}).length&&trace.traceViewServiceUIViewEvent("!!!! duplicate uiView named:",uiView),uiViews.push(uiView),this.sync(),function(){-1===uiViews.indexOf(uiView)?trace.traceViewServiceUIViewEvent("Tried removing non-registered uiView",uiView):(trace.traceViewServiceUIViewEvent("<- Deregistering",uiView),removeFrom(uiViews)(uiView))}},ViewService.prototype.available=function(){return this._uiViews.map(prop("fqn"))},ViewService.prototype.active=function(){return this._uiViews.filter(prop("$config")).map(prop("name"))},ViewService.matches=function(uiViewsByFqn,uiView){return function(viewConfig){var uivSegments,vcSegments;return uiView.$type===viewConfig.viewDecl.$type&&(vcSegments=(viewConfig=viewConfig.viewDecl).$uiViewName.split("."),uivSegments=uiView.fqn.split("."),!!equals(vcSegments,uivSegments.slice(0-vcSegments.length))&&(vcSegments=1-vcSegments.length||void 0,uivSegments=uivSegments.slice(0,vcSegments).join("."),vcSegments=uiViewsByFqn[uivSegments].creationContext,viewConfig.$uiViewContextAnchor===(vcSegments&&vcSegments.name)))}},ViewService}(),UIRouterGlobals=function(){function UIRouterGlobals(){this.params=new StateParams,this.lastStartedTransitionId=-1,this.transitionHistory=new Queue([],1),this.successfulTransitions=new Queue([],1)}return UIRouterGlobals.prototype.dispose=function(){this.transitionHistory.clear(),this.successfulTransitions.clear(),this.transition=null},UIRouterGlobals}();function getHandlerFn(handler){if(isFunction(handler)||isString(handler)||is(TargetState)(handler)||TargetState.isDef(handler))return isFunction(handler)?handler:val(handler);throw new Error("'handler' must be a string, function, TargetState, or have a state: 'newtarget' property")}var defaultRuleSortFn=function(a,b){var cmp=function(a,b){return(b.priority||0)-(a.priority||0)}(a,b);return 0!==cmp||0!==(cmp=function(a,b){var weights={STATE:4,URLMATCHER:4,REGEXP:3,RAW:2,OTHER:1};return(weights[a.type]||0)-(weights[b.type]||0)}(a,b))||0!==function(a,b){return a.urlMatcher&&b.urlMatcher?UrlMatcher.compare(a.urlMatcher,b.urlMatcher):0}(a,b)?cmp:function(a,b){var useMatchPriority={STATE:!0,URLMATCHER:!0};return useMatchPriority[a.type]&&useMatchPriority[b.type]?0:(a.$id||0)-(b.$id||0)}(a,b)},UrlRules=function(){function UrlRules(router){this.router=router,this._sortFn=defaultRuleSortFn,this._rules=[],this._id=0,this.urlRuleFactory=new UrlRuleFactory(router)}return UrlRules.prototype.dispose=function(router){this._rules=[],delete this._otherwiseFn},UrlRules.prototype.initial=function(handler){handler=getHandlerFn(handler);this.rule(this.urlRuleFactory.create(function(urlParts,router){return 0===router.globals.transitionHistory.size()&&!!/^\/?$/.exec(urlParts.path)},handler))},UrlRules.prototype.otherwise=function(handler){handler=getHandlerFn(handler);this._otherwiseFn=this.urlRuleFactory.create(val(!0),handler),this._sorted=!1},UrlRules.prototype.removeRule=function(rule){removeFrom(this._rules,rule)},UrlRules.prototype.rule=function(rule){var _this=this;if(UrlRuleFactory.isUrlRule(rule))return rule.$id=this._id++,rule.priority=rule.priority||0,this._rules.push(rule),this._sorted=!1,function(){return _this.removeRule(rule)};throw new Error("invalid rule")},UrlRules.prototype.rules=function(){return this.ensureSorted(),this._rules.concat(this._otherwiseFn?[this._otherwiseFn]:[])},UrlRules.prototype.sort=function(compareFn){for(var sorted=this.stableSort(this._rules,this._sortFn=compareFn||this._sortFn),group=0,i=0;ibest.weight?rule:best}return best},UrlService}(),_routerInstance=0,locationServiceStub=makeStub("LocationServices",["url","path","search","hash","onChange"]),locationConfigStub=makeStub("LocationConfig",["port","protocol","host","baseHref","html5Mode","hashPrefix"]),UIRouter=function(){function UIRouter(locationService,locationConfig){void 0===locationConfig&&(locationConfig=locationConfigStub),this.locationService=locationService=void 0===locationService?locationServiceStub:locationService,this.locationConfig=locationConfig,this.$id=_routerInstance++,this._disposed=!1,this._disposables=[],this.trace=trace,this.viewService=new ViewService(this),this.globals=new UIRouterGlobals,this.transitionService=new TransitionService(this),this.urlMatcherFactory=new UrlMatcherFactory(this),this.urlRouter=new UrlRouter(this),this.urlService=new UrlService(this),this.stateRegistry=new StateRegistry(this),this.stateService=new StateService(this),this._plugins={},this.viewService._pluginapi._rootViewContext(this.stateRegistry.root()),this.globals.$current=this.stateRegistry.root(),this.globals.current=this.globals.$current.self,this.disposable(this.globals),this.disposable(this.stateService),this.disposable(this.stateRegistry),this.disposable(this.transitionService),this.disposable(this.urlService),this.disposable(locationService),this.disposable(locationConfig)}return UIRouter.prototype.disposable=function(disposable){this._disposables.push(disposable)},UIRouter.prototype.dispose=function(disposable){var _this=this;disposable&&isFunction(disposable.dispose)?disposable.dispose(this):(this._disposed=!0,this._disposables.slice().forEach(function(d){try{"function"==typeof d.dispose&&d.dispose(_this),removeFrom(_this._disposables,d)}catch(ignored){}}))},UIRouter.prototype.plugin=function(plugin,options){plugin=new plugin(this,options=void 0===options?{}:options);if(plugin.name)return this._disposables.push(plugin),this._plugins[plugin.name]=plugin;throw new Error("Required property `name` missing on plugin: "+plugin)},UIRouter.prototype.getPlugin=function(pluginName){return pluginName?this._plugins[pluginName]:values(this._plugins)},UIRouter}();function addCoreResolvables(trans){trans.addResolvable(Resolvable.fromData(UIRouter,trans.router),""),trans.addResolvable(Resolvable.fromData(Transition,trans),""),trans.addResolvable(Resolvable.fromData("$transition$",trans),""),trans.addResolvable(Resolvable.fromData("$stateParams",trans.params()),""),trans.entering().forEach(function(state){trans.addResolvable(Resolvable.fromData("$state$",state),state)})}function treeChangesCleanup(trans){function replaceTransitionWithNull(r){return isTransition(r.token)?Resolvable.fromData(r.token,null):r}(trans=values(trans.treeChanges()).reduce(unnestR,[]).reduce(uniqR,[])).forEach(function(node){node.resolvables=node.resolvables.map(replaceTransitionWithNull)})}function redirectToHook(trans){var $state,redirect=trans.to().redirectTo;if(redirect)return $state=trans.router.stateService,isFunction(redirect)?services.$q.when(redirect(trans)).then(handleResult):handleResult(redirect);function handleResult(result){if(result)return result instanceof TargetState?result:isString(result)?$state.target(result,trans.params(),trans.options()):result.state||result.params?$state.target(result.state||trans.to(),result.params||trans.params(),trans.options()):void 0}}var isTransition=inArray(["$transition$",Transition]);function makeEnterExitRetainHook(hookName){return function(transition,state){return(0,state.$$state()[hookName])(transition,state)}}function eagerResolvePath(trans){return new ResolveContext(trans.treeChanges().to).resolvePath("EAGER",trans).then(noop)}function lazyResolveState(trans,state){return new ResolveContext(trans.treeChanges().to).subContext(state.$$state()).resolvePath("LAZY",trans).then(noop)}function resolveRemaining(trans){return new ResolveContext(trans.treeChanges().to).resolvePath("LAZY",trans).then(noop)}function loadEnteringViews(transition){var $q=services.$q;if((transition=transition.views("entering")).length)return $q.all(transition.map(function(view){return $q.when(view.load())})).then(noop)}function activateViews(transition){var $view,enteringViews=transition.views("entering"),exitingViews=transition.views("exiting");(enteringViews.length||exitingViews.length)&&($view=transition.router.viewService,exitingViews.forEach(function(vc){return $view.deactivateViewConfig(vc)}),enteringViews.forEach(function(vc){return $view.activateViewConfig(vc)}),$view.sync())}function updateGlobalState(trans){function clearCurrentTransition(){globals.transition===trans&&(globals.transition=null)}var globals=trans.router.globals;trans.onSuccess({},function(){globals.successfulTransitions.enqueue(trans),globals.$current=trans.$to(),globals.current=globals.$current.self,copy(trans.params(),globals.params)},{priority:1e4}),trans.promise.then(clearCurrentTransition,clearCurrentTransition)}function updateUrl(transition){var options=transition.options(),$state=transition.router.stateService,transition=transition.router.urlRouter;"url"!==options.source&&options.location&&$state.$current.navigable&&(options={replace:"replace"===options.location},transition.push($state.$current.navigable.url,$state.params,options)),transition.update(!0)}function lazyLoadHook(transition){var router=transition.router,promises=transition.entering().filter(function(state){return!!state.$$state().lazyLoad}).map(function(state){return lazyLoadState(transition,state)});return services.$q.all(promises).then(function(){var rule,orig;return"url"!==transition.originalTransition().options().source?(orig=transition.targetState(),router.stateService.target(orig.identifier(),orig.params(),orig.options())):(rule=(orig=(orig=router.urlService).match(orig.parts()))&&orig.rule)&&"STATE"===rule.type?(rule=rule.state,orig=orig.match,router.stateService.target(rule,orig,transition.options())):void router.urlService.sync()})}var onExitHook=makeEnterExitRetainHook("onExit"),onRetainHook=makeEnterExitRetainHook("onRetain"),onEnterHook=makeEnterExitRetainHook("onEnter");function lazyLoadState(transition,state){var lazyLoadFn=state.$$state().lazyLoad,promise=lazyLoadFn._promise;return promise||(promise=lazyLoadFn._promise=services.$q.when(lazyLoadFn(transition,state)).then(function(result){result&&Array.isArray(result.states)&&result.states.forEach(function(_state){return transition.router.stateRegistry.register(_state)});return result}).then(function(result){return delete state.lazyLoad,delete state.$$state().lazyLoad,delete lazyLoadFn._promise,result},function(err){return delete lazyLoadFn._promise,services.$q.reject(err)})),promise}var TransitionEventType=function(name,hookPhase,hookOrder,criteriaMatchPath,reverseSort,getResultHandler,getErrorHandler,synchronous){void 0===reverseSort&&(reverseSort=!1),void 0===getResultHandler&&(getResultHandler=TransitionHook.HANDLE_RESULT),void 0===getErrorHandler&&(getErrorHandler=TransitionHook.REJECT_ERROR),void 0===synchronous&&(synchronous=!1),this.name=name,this.hookPhase=hookPhase,this.hookOrder=hookOrder,this.criteriaMatchPath=criteriaMatchPath,this.reverseSort=reverseSort,this.getResultHandler=getResultHandler,this.getErrorHandler=getErrorHandler,this.synchronous=synchronous};function ignoredHook(trans){var ignoredReason=trans._ignoredReason();if(ignoredReason)return trace.traceTransitionIgnored(trans),trans=trans.router.globals.transition,"SameAsCurrent"===ignoredReason&&trans&&trans.abort(),Rejection.ignored().toPromise()}function invalidTransitionHook(trans){if(!trans.valid())throw new Error(trans.error().toString())}function getParams(queryString){return queryString.split("&").filter(identity).map(splitEqual).reduce(keyValsToObjectR,{})}var defaultTransOpts={location:!0,relative:null,inherit:!1,notify:!0,reload:!1,supercede:!0,custom:{},current:function(){return null},source:"unknown"},TransitionService=function(){function TransitionService(_router){this._transitionCount=0,this._eventTypes=[],this._registeredHooks={},this._criteriaPaths={},this._router=_router,this.$view=_router.viewService,this._deregisterHookFns={},this._pluginapi=createProxyFunctions(val(this),{},val(this),["_definePathType","_defineEvent","_getPathTypes","_getEvents","getHooks"]),this._defineCorePaths(),this._defineCoreEvents(),this._registerCoreTransitionHooks(),_router.globals.successfulTransitions.onEvict(treeChangesCleanup)}return TransitionService.prototype.onCreate=function(criteria,callback,options){},TransitionService.prototype.onBefore=function(criteria,callback,options){},TransitionService.prototype.onStart=function(criteria,callback,options){},TransitionService.prototype.onExit=function(criteria,callback,options){},TransitionService.prototype.onRetain=function(criteria,callback,options){},TransitionService.prototype.onEnter=function(criteria,callback,options){},TransitionService.prototype.onFinish=function(criteria,callback,options){},TransitionService.prototype.onSuccess=function(criteria,callback,options){},TransitionService.prototype.onError=function(criteria,callback,options){},TransitionService.prototype.dispose=function(router){values(this._registeredHooks).forEach(function(hooksArray){return hooksArray.forEach(function(hook){hook._deregistered=!0,removeFrom(hooksArray,hook)})})},TransitionService.prototype.create=function(fromPath,targetState){return new Transition(fromPath,targetState,this._router)},TransitionService.prototype._defineCoreEvents=function(){var Phase=exports.TransitionHookPhase,TH=TransitionHook,paths=this._criteriaPaths;this._defineEvent("onCreate",Phase.CREATE,0,paths.to,!1,TH.LOG_REJECTED_RESULT,TH.THROW_ERROR,!0),this._defineEvent("onBefore",Phase.BEFORE,0,paths.to),this._defineEvent("onStart",Phase.RUN,0,paths.to),this._defineEvent("onExit",Phase.RUN,100,paths.exiting,!0),this._defineEvent("onRetain",Phase.RUN,200,paths.retained),this._defineEvent("onEnter",Phase.RUN,300,paths.entering),this._defineEvent("onFinish",Phase.RUN,400,paths.to),this._defineEvent("onSuccess",Phase.SUCCESS,0,paths.to,!1,TH.LOG_REJECTED_RESULT,TH.LOG_ERROR,!0),this._defineEvent("onError",Phase.ERROR,0,paths.to,!1,TH.LOG_REJECTED_RESULT,TH.LOG_ERROR,!0)},TransitionService.prototype._defineCorePaths=function(){var STATE=exports.TransitionHookScope.STATE,TRANSITION=exports.TransitionHookScope.TRANSITION;this._definePathType("to",TRANSITION),this._definePathType("from",TRANSITION),this._definePathType("exiting",STATE),this._definePathType("retained",STATE),this._definePathType("entering",STATE)},TransitionService.prototype._defineEvent=function(name,hookPhase,hookOrder,criteriaMatchPath,reverseSort,getResultHandler,getErrorHandler,synchronous){void 0===getResultHandler&&(getResultHandler=TransitionHook.HANDLE_RESULT),void 0===getErrorHandler&&(getErrorHandler=TransitionHook.REJECT_ERROR);name=new TransitionEventType(name,hookPhase,hookOrder,criteriaMatchPath,reverseSort=void 0===reverseSort?!1:reverseSort,getResultHandler,getErrorHandler,synchronous=void 0===synchronous?!1:synchronous);this._eventTypes.push(name),makeEvent(this,this,name)},TransitionService.prototype._getEvents=function(phase){return(isDefined(phase)?this._eventTypes.filter(function(type){return type.hookPhase===phase}):this._eventTypes.slice()).sort(function(l,r){var cmpByPhase=l.hookPhase-r.hookPhase;return 0==cmpByPhase?l.hookOrder-r.hookOrder:cmpByPhase})},TransitionService.prototype._definePathType=function(name,hookScope){this._criteriaPaths[name]={name:name,scope:hookScope}},TransitionService.prototype._getPathTypes=function(){return this._criteriaPaths},TransitionService.prototype.getHooks=function(hookName){return this._registeredHooks[hookName]},TransitionService.prototype._registerCoreTransitionHooks=function(){var fns=this._deregisterHookFns;fns.addCoreResolves=this.onCreate({},addCoreResolvables),fns.ignored=function(transitionService){return transitionService.onBefore({},ignoredHook,{priority:-9999})}(this),fns.invalid=function(transitionService){return transitionService.onBefore({},invalidTransitionHook,{priority:-1e4})}(this),fns.redirectTo=function(transitionService){return transitionService.onStart({to:function(state){return!!state.redirectTo}},redirectToHook)}(this),fns.onExit=function(transitionService){return transitionService.onExit({exiting:function(state){return!!state.onExit}},onExitHook)}(this),fns.onRetain=function(transitionService){return transitionService.onRetain({retained:function(state){return!!state.onRetain}},onRetainHook)}(this),fns.onEnter=function(transitionService){return transitionService.onEnter({entering:function(state){return!!state.onEnter}},onEnterHook)}(this),fns.eagerResolve=function(transitionService){return transitionService.onStart({},eagerResolvePath,{priority:1e3})}(this),fns.lazyResolve=function(transitionService){return transitionService.onEnter({entering:val(!0)},lazyResolveState,{priority:1e3})}(this),fns.resolveAll=function(transitionService){return transitionService.onFinish({},resolveRemaining,{priority:1e3})}(this),fns.loadViews=function(transitionService){return transitionService.onFinish({},loadEnteringViews)}(this),fns.activateViews=function(transitionService){return transitionService.onSuccess({},activateViews)}(this),fns.updateGlobals=function(transitionService){return transitionService.onCreate({},updateGlobalState)}(this),fns.updateUrl=function(transitionService){return transitionService.onSuccess({},updateUrl,{priority:9999})}(this),fns.lazyLoad=function(transitionService){return transitionService.onBefore({entering:function(state){return!!state.lazyLoad}},lazyLoadHook)}(this)},TransitionService}(),StateService=function(){function StateService(router){this.router=router,this.invalidCallbacks=[],this._defaultErrorHandler=function($error$){$error$ instanceof Error&&$error$.stack?(console.error($error$),console.error($error$.stack)):$error$ instanceof Rejection?(console.error($error$.toString()),$error$.detail&&$error$.detail.stack&&console.error($error$.detail.stack)):console.error($error$)};router=Object.keys(StateService.prototype).filter(not(inArray(["current","$current","params","transition"])));createProxyFunctions(val(StateService.prototype),this,val(this),router)}return Object.defineProperty(StateService.prototype,"transition",{get:function(){return this.router.globals.transition},enumerable:!1,configurable:!0}),Object.defineProperty(StateService.prototype,"params",{get:function(){return this.router.globals.params},enumerable:!1,configurable:!0}),Object.defineProperty(StateService.prototype,"current",{get:function(){return this.router.globals.current},enumerable:!1,configurable:!0}),Object.defineProperty(StateService.prototype,"$current",{get:function(){return this.router.globals.$current},enumerable:!1,configurable:!0}),StateService.prototype.dispose=function(){this.defaultErrorHandler(noop),this.invalidCallbacks=[]},StateService.prototype._handleInvalidTargetState=function(fromPath,toState){var _this=this,fromState=PathUtils.makeTargetState(this.router.stateRegistry,fromPath),globals=this.router.globals,latestThing=function(){return globals.transitionHistory.peekTail()},latest=latestThing(),callbackQueue=new Queue(this.invalidCallbacks.slice()),injector=new ResolveContext(fromPath).injector(),checkForRedirect=function(result){if(result instanceof TargetState)return(result=_this.target((result=result).identifier(),result.params(),result.options())).valid()?latestThing()!==latest?Rejection.superseded().toPromise():_this.transitionTo(result.identifier(),result.params(),result.options()):Rejection.invalid(result.error()).toPromise()};return function invokeNextCallback(){var nextCallback=callbackQueue.dequeue();return void 0===nextCallback?Rejection.invalid(toState.error()).toPromise():services.$q.when(nextCallback(toState,fromState,injector)).then(checkForRedirect).then(function(result){return result||invokeNextCallback()})}()},StateService.prototype.onInvalid=function(callback){return this.invalidCallbacks.push(callback),function(){removeFrom(this.invalidCallbacks)(callback)}.bind(this)},StateService.prototype.reload=function(reloadState){return this.transitionTo(this.current,this.params,{reload:!isDefined(reloadState)||reloadState,inherit:!1,notify:!1})},StateService.prototype.go=function(to,params,options){options=defaults(options,{relative:this.$current,inherit:!0},defaultTransOpts);return this.transitionTo(to,params,options)},StateService.prototype.target=function(identifier,params,options){if(isObject((options=void 0===options?{}:options).reload)&&!options.reload.name)throw new Error("Invalid reload state object");var reg=this.router.stateRegistry;if(options.reloadState=!0===options.reload?reg.root():reg.matcher.find(options.reload,options.relative),options.reload&&!options.reloadState)throw new Error("No such reload state '"+(isString(options.reload)?options.reload:options.reload.name)+"'");return new TargetState(this.router.stateRegistry,identifier,params,options)},StateService.prototype.getCurrentPath=function(){var _this=this,latestSuccess=this.router.globals.successfulTransitions.peekTail();return latestSuccess?latestSuccess.treeChanges().to:[new PathNode(_this.router.stateRegistry.root())]},StateService.prototype.transitionTo=function(to,toParams,options){function getCurrent(){return globals.transition}var rejectedTransitionHandler,transitionToPromise,_this=this,router=(void 0===toParams&&(toParams={}),this.router),globals=router.globals,to=(options=defaults(options=void 0===options?{}:options,defaultTransOpts),options=extend(options,{current:getCurrent}),this.target(to,toParams,options)),toParams=this.getCurrentPath();return to.exists()?to.valid()?!1===options.supercede&&getCurrent()?Rejection.ignored("Another transition is in progress and supercede has been set to false in TransitionOptions for the transition. So the transition was ignored in favour of the existing one in progress.").toPromise():(rejectedTransitionHandler=function(trans){return function(error){if(error instanceof Rejection){var isLatest=router.globals.lastStartedTransitionId<=trans.$id;if(error.type===exports.RejectType.IGNORED)return isLatest&&router.urlRouter.update(),services.$q.when(globals.current);var detail=error.detail;if(error.type===exports.RejectType.SUPERSEDED&&error.redirected&&detail instanceof TargetState)return(detail=trans.redirect(detail)).run().catch(rejectedTransitionHandler(detail));if(error.type===exports.RejectType.ABORTED)return isLatest&&router.urlRouter.update(),services.$q.reject(error)}return _this.defaultErrorHandler()(error),services.$q.reject(error)}},transitionToPromise=(options=this.router.transitionService.create(toParams,to)).run().catch(rejectedTransitionHandler(options)),silenceUncaughtInPromise(transitionToPromise),extend(transitionToPromise,{transition:options})):silentRejection(to.error()):this._handleInvalidTargetState(toParams,to)},StateService.prototype.is=function(stateOrName,params,options){options=defaults(options,{relative:this.$current});stateOrName=this.router.stateRegistry.matcher.find(stateOrName,options.relative);if(isDefined(stateOrName))return this.$current===stateOrName&&(!params||(options=stateOrName.parameters({inherit:!0,matchingKeys:params}),Param.equals(options,Param.values(options,params),this.params)))},StateService.prototype.includes=function(stateOrName,params,options){options=defaults(options,{relative:this.$current});var glob=isString(stateOrName)&&Glob.fromString(stateOrName);if(glob){if(!glob.matches(this.$current.name))return!1;stateOrName=this.$current.name}glob=this.router.stateRegistry.matcher.find(stateOrName,options.relative),stateOrName=this.$current.includes;if(isDefined(glob))return!!isDefined(stateOrName[glob.name])&&(!params||(options=glob.parameters({inherit:!0,matchingKeys:params}),Param.equals(options,Param.values(options,params),this.params)))},StateService.prototype.href=function(stateOrName,params,options){options=defaults(options,{lossy:!0,inherit:!0,absolute:!1,relative:this.$current}),params=params||{};stateOrName=this.router.stateRegistry.matcher.find(stateOrName,options.relative);if(!isDefined(stateOrName))return null;options.inherit&&(params=this.params.$inherit(params,this.$current,stateOrName));stateOrName=stateOrName&&options.lossy?stateOrName.navigable:stateOrName;return stateOrName&&void 0!==stateOrName.url&&null!==stateOrName.url?this.router.urlRouter.href(stateOrName.url,params,{absolute:options.absolute}):null},StateService.prototype.defaultErrorHandler=function(handler){return this._defaultErrorHandler=handler||this._defaultErrorHandler},StateService.prototype.get=function(stateOrName,base){var reg=this.router.stateRegistry;return 0===arguments.length?reg.get():reg.get(stateOrName,base||this.$current)},StateService.prototype.lazyLoad=function(stateOrName,transition){var currentPath,target,state=this.get(stateOrName);if(state&&state.lazyLoad)return currentPath=this.getCurrentPath(),target=PathUtils.makeTargetState(this.router.stateRegistry,currentPath),lazyLoadState(transition=transition||this.router.transitionService.create(currentPath,target),state);throw new Error("Can not lazy load "+stateOrName)},StateService}(),$q={when:function(val){return new Promise(function(resolve,reject){return resolve(val)})},reject:function(val){return new Promise(function(resolve,reject){reject(val)})},defer:function(){var deferred={};return deferred.promise=new Promise(function(resolve,reject){deferred.resolve=resolve,deferred.reject=reject}),deferred},all:function(promises){var chain;return isArray(promises)?Promise.all(promises):isObject(promises)?(chain=Object.keys(promises).map(function(key){return promises[key].then(function(val){return{key:key,val:val}})}),$q.all(chain).then(function(values){return values.reduce(function(acc,tuple){return acc[tuple.key]=tuple.val,acc},{})})):void 0}},globals={},STRIP_COMMENTS=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,ARGUMENT_NAMES=/([^\s,]+)/g,$injector={get:function(name){return globals[name]},has:function(name){return null!=$injector.get(name)},invoke:function(fn,context,locals){var all=extend({},globals,locals||{}),locals=$injector.annotate(fn),ensureExist=assertPredicate(function(key){return all.hasOwnProperty(key)},function(key){return"DI can't find injectable: '"+key+"'"}),locals=locals.filter(ensureExist).map(function(x){return all[x]});return(isFunction(fn)?fn:fn.slice(-1)[0]).apply(context,locals)},annotate:function(fn){var fnStr;if(isInjectable(fn))return fn&&fn.$inject?fn.$inject:isArray(fn)?fn.slice(0,-1):(fnStr=fn.toString().replace(STRIP_COMMENTS,"")).slice(fnStr.indexOf("(")+1,fnStr.indexOf(")")).match(ARGUMENT_NAMES)||[];throw new Error("Not an injectable function: "+fn)}},keyValsToObjectR=function(accum,_a){var key=_a[0],_a=_a[1];return accum.hasOwnProperty(key)?isArray(accum[key])?accum[key].push(_a):accum[key]=[accum[key],_a]:accum[key]=_a,accum};function parseUrl$1(url){function orEmptyString(x){return x||""}var _a=splitHash(url).map(orEmptyString),beforehash=_a[0],_a=_a[1],beforehash=splitQuery(beforehash).map(orEmptyString);return{path:beforehash[0],search:beforehash[1],hash:_a,url:url}}function buildUrl(loc){var path=loc.path(),searchObject=loc.search(),loc=loc.hash(),search=Object.keys(searchObject).map(function(key){var param=searchObject[key];return(isArray(param)?param:[param]).map(function(val){return key+"="+val})}).reduce(unnestR,[]).join("&");return path+(search?"?"+search:"")+(loc?"#"+loc:"")}function locationPluginFactory(name,isHtml5,serviceClass,configurationClass){return function(uiRouter){var service=uiRouter.locationService=new serviceClass(uiRouter),configuration=uiRouter.locationConfig=new configurationClass(uiRouter,isHtml5);return{name:name,service:service,configuration:configuration,dispose:function(router){router.dispose(service),router.dispose(configuration)}}}}function MemoryLocationConfig(){var _this=this;this.dispose=noop,this._baseHref="",this._port=80,this._protocol="http",this._host="localhost",this._hashPrefix="",this.port=function(){return _this._port},this.protocol=function(){return _this._protocol},this.host=function(){return _this._host},this.baseHref=function(){return _this._baseHref},this.html5Mode=function(){return!1},this.hashPrefix=function(newval){return isDefined(newval)?_this._hashPrefix=newval:_this._hashPrefix}}var extendStatics,DefType=function(){function BaseLocationServices(router,fireAfterUpdate){var _this=this;this.fireAfterUpdate=fireAfterUpdate,this._listeners=[],this._listener=function(evt){return _this._listeners.forEach(function(cb){return cb(evt)})},this.hash=function(){return parseUrl$1(_this._get()).hash},this.path=function(){return parseUrl$1(_this._get()).path},this.search=function(){return getParams(parseUrl$1(_this._get()).search)},this._location=root.location,this._history=root.history}return BaseLocationServices.prototype.url=function(url,replace){return void 0===replace&&(replace=!0),isDefined(url)&&url!==this._get()&&(this._set(null,null,url,replace),this.fireAfterUpdate&&this._listeners.forEach(function(cb){return cb({url:url})})),buildUrl(this)},BaseLocationServices.prototype.onChange=function(cb){var _this=this;return this._listeners.push(cb),function(){return removeFrom(_this._listeners,cb)}},BaseLocationServices.prototype.dispose=function(router){deregAll(this._listeners)},BaseLocationServices}(),__extends=(extendStatics=function(d,b){return(extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)b.hasOwnProperty(p)&&(d[p]=b[p])})(d,b)},function(d,b){function __(){this.constructor=d}extendStatics(d,b),d.prototype=null===b?Object.create(b):(__.prototype=b.prototype,new __)}),HashLocationService=function(_super){function HashLocationService(router){router=_super.call(this,router,!1)||this;return root.addEventListener("hashchange",router._listener,!1),router}return __extends(HashLocationService,_super),HashLocationService.prototype._get=function(){return trimHashVal(this._location.hash)},HashLocationService.prototype._set=function(state,title,url,replace){this._location.hash=url},HashLocationService.prototype.dispose=function(router){_super.prototype.dispose.call(this,router),root.removeEventListener("hashchange",this._listener)},HashLocationService}(DefType),__extends$1=function(){var extendStatics=function(d,b){return(extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)b.hasOwnProperty(p)&&(d[p]=b[p])})(d,b)};return function(d,b){function __(){this.constructor=d}extendStatics(d,b),d.prototype=null===b?Object.create(b):(__.prototype=b.prototype,new __)}}(),MemoryLocationService=function(_super){function MemoryLocationService(router){return _super.call(this,router,!0)||this}return __extends$1(MemoryLocationService,_super),MemoryLocationService.prototype._get=function(){return this._url},MemoryLocationService.prototype._set=function(state,title,url,replace){this._url=url},MemoryLocationService}(DefType),__extends$2=function(){var extendStatics=function(d,b){return(extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)b.hasOwnProperty(p)&&(d[p]=b[p])})(d,b)};return function(d,b){function __(){this.constructor=d}extendStatics(d,b),d.prototype=null===b?Object.create(b):(__.prototype=b.prototype,new __)}}(),PushStateLocationService=function(_super){function PushStateLocationService(router){var _this=_super.call(this,router,!0)||this;return _this._config=router.urlService.config,root.addEventListener("popstate",_this._listener,!1),_this}return __extends$2(PushStateLocationService,_super),PushStateLocationService.prototype._getBasePrefix=function(){return stripLastPathElement(this._config.baseHref())},PushStateLocationService.prototype._get=function(){var _a=this._location,pathname=_a.pathname,hash=_a.hash,_a=_a.search,_a=splitQuery(_a)[1],hash=splitHash(hash)[1],basePrefix=this._getBasePrefix(),exactBaseHrefMatch=pathname===this._config.baseHref(),startsWithBase=pathname.substr(0,basePrefix.length)===basePrefix;return(pathname=exactBaseHrefMatch?"/":startsWithBase?pathname.substring(basePrefix.length):pathname)+(_a?"?"+_a:"")+(hash?"#"+hash:"")},PushStateLocationService.prototype._set=function(state,title,url,replace){var basePrefix=this._getBasePrefix(),slash=url&&"/"!==url[0]?"/":"",basePrefix=""===url||"/"===url?this._config.baseHref():basePrefix+slash+url;replace?this._history.replaceState(state,title,basePrefix):this._history.pushState(state,title,basePrefix)},PushStateLocationService.prototype.dispose=function(router){_super.prototype.dispose.call(this,router),root.removeEventListener("popstate",this._listener)},PushStateLocationService}(DefType),BrowserLocationConfig=function(){function BrowserLocationConfig(router,_isHtml5){this._isHtml5=_isHtml5=void 0===_isHtml5?!1:_isHtml5,this._baseHref=void 0,this._hashPrefix=""}return BrowserLocationConfig.prototype.port=function(){return location.port?Number(location.port):"https"===this.protocol()?443:80},BrowserLocationConfig.prototype.protocol=function(){return location.protocol.replace(/:/g,"")},BrowserLocationConfig.prototype.host=function(){return location.hostname},BrowserLocationConfig.prototype.html5Mode=function(){return this._isHtml5},BrowserLocationConfig.prototype.hashPrefix=function(newprefix){return isDefined(newprefix)?this._hashPrefix=newprefix:this._hashPrefix},BrowserLocationConfig.prototype.baseHref=function(href){return isDefined(href)&&(this._baseHref=href),isUndefined(this._baseHref)&&(this._baseHref=this.getBaseHref()),this._baseHref},BrowserLocationConfig.prototype.getBaseHref=function(){var baseTag=document.getElementsByTagName("base")[0];return baseTag&&baseTag.href?baseTag.href.replace(/^([^/:]*:)?\/\/[^/]*/,""):!this._isHtml5&&location.pathname||"/"},BrowserLocationConfig.prototype.dispose=function(){},BrowserLocationConfig}();function servicesPlugin(router){return services.$injector=$injector,{name:"vanilla.services",$q:services.$q=$q,$injector:$injector,dispose:function(){return null}}}var hashLocationPlugin=locationPluginFactory("vanilla.hashBangLocation",!1,HashLocationService,BrowserLocationConfig),pushStateLocationPlugin=locationPluginFactory("vanilla.pushStateLocation",!0,PushStateLocationService,BrowserLocationConfig),memoryLocationPlugin=locationPluginFactory("vanilla.memoryLocation",!1,MemoryLocationService,MemoryLocationConfig),UIRouterPluginBase=function(){function UIRouterPluginBase(){}return UIRouterPluginBase.prototype.dispose=function(router){},UIRouterPluginBase}(),index=Object.freeze({__proto__:null,root:root,fromJson:ng_from_global,toJson:toJson,forEach:forEach,extend:extend,equals:equals,identity:identity,noop:noop,createProxyFunctions:createProxyFunctions,inherit:inherit,inArray:inArray,_inArray:_inArray,removeFrom:removeFrom,_removeFrom:_removeFrom,pushTo:pushTo,_pushTo:_pushTo,deregAll:deregAll,defaults:defaults,mergeR:mergeR,ancestors:ancestors,pick:pick,omit:omit,pluck:pluck,filter:filter,find:find,mapObj:mapObj,map:map,values:values,allTrueR:allTrueR,anyTrueR:anyTrueR,unnestR:unnestR,flattenR:flattenR,pushR:pushR,uniqR:uniqR,unnest:unnest,flatten:flatten,assertPredicate:assertPredicate,assertMap:ng_from_import,assertFn:assertFn,pairs:pairs,arrayTuples:arrayTuples,applyPairs:applyPairs,tail:tail,copy:copy,_extend:_extend,silenceUncaughtInPromise:silenceUncaughtInPromise,silentRejection:silentRejection,makeStub:makeStub,services:services,Glob:Glob,curry:curry,compose:compose,pipe:pipe,prop:prop,propEq:propEq,parse:parse,not:not,and:and,or:or,all:all,any:any,is:is,eq:eq,val:val,invoke:invoke,pattern:pattern,isUndefined:isUndefined,isDefined:isDefined,isNull:isNull,isNullOrUndefined:isNullOrUndefined,isFunction:isFunction,isNumber:isNumber,isString:isString,isObject:isObject,isArray:isArray,isDate:isDate,isRegExp:isRegExp,isInjectable:isInjectable,isPromise:isPromise,Queue:Queue,maxLength:maxLength,padString:padString,kebobString:kebobString,functionToString:functionToString,fnToString:fnToString,stringify:stringify,beforeAfterSubstr:beforeAfterSubstr,hostRegex:RejectType,stripLastPathElement:stripLastPathElement,splitHash:splitHash,splitQuery:splitQuery,splitEqual:splitEqual,trimHashVal:trimHashVal,splitOnDelim:splitOnDelim,joinNeighborsR:joinNeighborsR,get Category(){return exports.Category},Trace:noopConsoleStub,trace:trace,get DefType(){return exports.DefType},Param:Param,ParamTypes:ParamTypes,StateParams:StateParams,ParamType:ParamType,PathNode:PathNode,PathUtils:PathUtils,resolvePolicies:resolvePolicies,defaultResolvePolicy:defaultResolvePolicy,Resolvable:Resolvable,NATIVE_INJECTOR_TOKEN:"Native Injector",ResolveContext:ResolveContext,resolvablesBuilder:resolvablesBuilder,StateBuilder:StateBuilder,StateObject:StateObject,StateMatcher:StateMatcher,StateQueueManager:StateQueueManager,StateRegistry:StateRegistry,StateService:StateService,TargetState:TargetState,get TransitionHookPhase(){return exports.TransitionHookPhase},get TransitionHookScope(){return exports.TransitionHookScope},HookBuilder:HookBuilder,matchState:matchState,RegisteredHook:RegisteredHook,makeEvent:makeEvent,get RejectType(){return exports.RejectType},Rejection:Rejection,Transition:Transition,TransitionHook:TransitionHook,TransitionEventType:TransitionEventType,defaultTransOpts:defaultTransOpts,TransitionService:TransitionService,UrlRules:UrlRules,UrlConfig:UrlConfig,UrlMatcher:UrlMatcher,ParamFactory:ParamFactory,UrlMatcherFactory:UrlMatcherFactory,UrlRouter:UrlRouter,UrlRuleFactory:UrlRuleFactory,BaseUrlRule:BaseUrlRule,UrlService:UrlService,ViewService:ViewService,UIRouterGlobals:UIRouterGlobals,UIRouter:UIRouter,$q:$q,$injector:$injector,BaseLocationServices:DefType,HashLocationService:HashLocationService,MemoryLocationService:MemoryLocationService,PushStateLocationService:PushStateLocationService,MemoryLocationConfig:MemoryLocationConfig,BrowserLocationConfig:BrowserLocationConfig,keyValsToObjectR:keyValsToObjectR,getParams:getParams,parseUrl:parseUrl$1,buildUrl:buildUrl,locationPluginFactory:locationPluginFactory,servicesPlugin:servicesPlugin,hashLocationPlugin:hashLocationPlugin,pushStateLocationPlugin:pushStateLocationPlugin,memoryLocationPlugin:memoryLocationPlugin,UIRouterPluginBase:UIRouterPluginBase});function getNg1ViewConfigFactory(){var templateFactory=null;return function(path,view){return templateFactory=templateFactory||services.$injector.get("$templateFactory"),[new Ng1ViewConfig(path,view,templateFactory)]}}var hasAnyKey=function(keys,obj){return keys.reduce(function(acc,key){return acc||isDefined(obj[key])},!1)};function ng1ViewsBuilder(state){if(!state.parent)return{};var compKeys=["component","bindings","componentProvider"],nonCompKeys=["templateProvider","templateUrl","template","notify","async"].concat(["controller","controllerProvider","controllerAs","resolveAs"]),allViewKeys=compKeys.concat(nonCompKeys);if(isDefined(state.views)&&hasAnyKey(allViewKeys,state))throw new Error("State '"+state.name+"' has a 'views' object. It cannot also have \"view properties\" at the state level. Move the following properties into a view (in the 'views' object): "+allViewKeys.filter(function(key){return isDefined(state[key])}).join(", "));var views={},allViewKeys=state.views||{$default:pick(state,allViewKeys)};return forEach(allViewKeys,function(config,name){if(name=name||"$default",isString(config)&&(config={component:config}),config=extend({},config),hasAnyKey(compKeys,config)&&hasAnyKey(nonCompKeys,config))throw new Error("Cannot combine: "+compKeys.join("|")+" with: "+nonCompKeys.join("|")+" in stateview: '"+name+"@"+state.name+"'");config.resolveAs=config.resolveAs||"$resolve",config.$type="ng1",config.$context=state,config.$name=name;var normalized=ViewService.normalizeUIViewTarget(config.$context,config.$name);config.$uiViewName=normalized.uiViewName,config.$uiViewContextAnchor=normalized.uiViewContextAnchor,views[name]=config}),views}var id$1=0,Ng1ViewConfig=function(){function Ng1ViewConfig(path,viewDecl,factory){var _this=this;this.path=path,this.viewDecl=viewDecl,this.factory=factory,this.$id=id$1++,this.loaded=!1,this.getTemplate=function(uiView,context){return _this.component?_this.factory.makeComponentTemplate(uiView,context,_this.component,_this.viewDecl.bindings):_this.template}}return Ng1ViewConfig.prototype.load=function(){var _this=this,$q=services.$q,context=new ResolveContext(this.path),params=this.path.reduce(function(acc,node){return extend(acc,node.paramValues)},{}),params={template:$q.when(this.factory.fromConfig(this.viewDecl,params,context)),controller:$q.when(this.getController(context))};return $q.all(params).then(function(results){return trace.traceViewServiceEvent("Loaded",_this),_this.controller=results.controller,extend(_this,results.template),_this})},Ng1ViewConfig.prototype.getController=function(context){var deps,provider=this.viewDecl.controllerProvider;return isInjectable(provider)?(deps=services.$injector.annotate(provider),provider=isArray(provider)?tail(provider):provider,new Resolvable("",provider,deps).get(context)):this.viewDecl.controller},Ng1ViewConfig}(),TemplateFactory=function(){function TemplateFactory(){var _this=this;this._useHttp=ng.version.minor<3,this.$get=["$http","$templateCache","$injector",function($http,$templateCache,$injector){return _this.$templateRequest=$injector.has&&$injector.has("$templateRequest")&&$injector.get("$templateRequest"),_this.$http=$http,_this.$templateCache=$templateCache,_this}]}return TemplateFactory.prototype.useHttpService=function(value){this._useHttp=value},TemplateFactory.prototype.fromConfig=function(config,params,context){function asTemplate(result){return services.$q.when(result).then(function(str){return{template:str}})}function asComponent(result){return services.$q.when(result).then(function(str){return{component:str}})}return isDefined(config.template)?asTemplate(this.fromString(config.template,params)):isDefined(config.templateUrl)?asTemplate(this.fromUrl(config.templateUrl,params)):isDefined(config.templateProvider)?asTemplate(this.fromProvider(config.templateProvider,params,context)):isDefined(config.component)?asComponent(config.component):isDefined(config.componentProvider)?asComponent(this.fromComponentProvider(config.componentProvider,params,context)):asTemplate("")},TemplateFactory.prototype.fromString=function(template,params){return isFunction(template)?template(params):template},TemplateFactory.prototype.fromUrl=function(url,params){return null==(url=isFunction(url)?url(params):url)?null:this._useHttp?this.$http.get(url,{cache:this.$templateCache,headers:{Accept:"text/html"}}).then(function(response){return response.data}):this.$templateRequest(url)},TemplateFactory.prototype.fromProvider=function(provider,params,context){var deps=services.$injector.annotate(provider),provider=isArray(provider)?tail(provider):provider;return new Resolvable("",provider,deps).get(context)},TemplateFactory.prototype.fromComponentProvider=function(provider,params,context){var deps=services.$injector.annotate(provider),provider=isArray(provider)?tail(provider):provider;return new Resolvable("",provider,deps).get(context)},TemplateFactory.prototype.makeComponentTemplate=function(uiView,context,component,bindings){bindings=bindings||{};function kebob(camelCase){return camelCase=kebobString(camelCase),/^(x|data)-/.exec(camelCase)?"x-"+camelCase:camelCase}var prefix=3<=ng.version.minor?"::":"",attrs=function(name){var cmpDefs=services.$injector.get(name+"Directive");if(cmpDefs&&cmpDefs.length)return cmpDefs.map(getBindings).reduce(unnestR,[]);throw new Error("Unable to find component named '"+name+"'")}(component).map(function(input){var args,name=input.name,input=input.type,attrName=kebob(name);return uiView.attr(attrName)&&!bindings[name]?attrName+"='"+uiView.attr(attrName)+"'":(name=bindings[name]||name,"@"===input?attrName+"='{{"+prefix+"$resolve."+name+"}}'":"&"===input?(args=(input=(input=context.getResolvable(name))&&input.data)&&services.$injector.annotate(input)||[],attrName+"='$resolve."+name+(isArray(input)?"["+(input.length-1)+"]":"")+"("+args.join(",")+")'"):attrName+"='"+prefix+"$resolve."+name+"'")}).join(" "),component=kebob(component);return"<"+component+" "+attrs+">"},TemplateFactory}();function getStateHookBuilder(hookName){return function(stateObject){var hook=stateObject[hookName],pathname="onExit"===hookName?"from":"to";return hook?function(trans,state){var subContext=new ResolveContext(trans.treeChanges(pathname)).subContext(state.$$state()),subContext=extend(getLocals(subContext),{$state$:state,$transition$:trans});return services.$injector.invoke(hook,this,subContext)}:void 0}}var getBindings=function(def){return isObject(def.bindToController)?scopeBindings(def.bindToController):scopeBindings(def.scope)},scopeBindings=function(bindingsObj){return Object.keys(bindingsObj||{}).map(function(key){return[key,/^([=<@&])[?]?(.*)/.exec(bindingsObj[key])]}).filter(function(tuple){return isDefined(tuple)&&isArray(tuple[1])}).map(function(tuple){return{name:tuple[1][2]||tuple[0],type:tuple[1][1]}})},StateProvider=function(){function StateProvider(stateRegistry,stateService){this.stateRegistry=stateRegistry,this.stateService=stateService,createProxyFunctions(val(StateProvider.prototype),this,val(this))}return StateProvider.prototype.decorator=function(name,func){return this.stateRegistry.decorator(name,func)||this},StateProvider.prototype.state=function(name,definition){return isObject(name)?definition=name:definition.name=name,this.stateRegistry.register(definition),this},StateProvider.prototype.onInvalid=function(callback){return this.stateService.onInvalid(callback)},StateProvider}(),Ng1LocationServices=function(){function Ng1LocationServices($locationProvider){this._urlListeners=[],this.$locationProvider=$locationProvider;$locationProvider=val($locationProvider);createProxyFunctions($locationProvider,this,$locationProvider,["hashPrefix"])}return Ng1LocationServices.monkeyPatchPathParameterType=function(router){router=router.urlMatcherFactory.type("path");router.encode=function(x){return null!=x?x.toString().replace(/(~|\/)/g,function(m){return{"~":"~~","/":"~2F"}[m]}):x},router.decode=function(x){return null!=x?x.toString().replace(/(~~|~2F)/g,function(m){return{"~~":"~","~2F":"/"}[m]}):x}},Ng1LocationServices.prototype.dispose=function(){},Ng1LocationServices.prototype.onChange=function(callback){var _this=this;return this._urlListeners.push(callback),function(){return removeFrom(_this._urlListeners)(callback)}},Ng1LocationServices.prototype.html5Mode=function(){var html5Mode=this.$locationProvider.html5Mode();return(isObject(html5Mode)?html5Mode.enabled:html5Mode)&&this.$sniffer.history},Ng1LocationServices.prototype.baseHref=function(){return this._baseHref||(this._baseHref=this.$browser.baseHref()||this.$window.location.pathname)},Ng1LocationServices.prototype.url=function(newUrl,replace,state){return void 0===replace&&(replace=!1),isDefined(newUrl)&&this.$location.url(newUrl),replace&&this.$location.replace(),state&&this.$location.state(state),this.$location.url()},Ng1LocationServices.prototype._runtimeServices=function($rootScope,$location,$sniffer,$browser,$window){var _this=this,$sniffer=(this.$location=$location,this.$sniffer=$sniffer,this.$browser=$browser,this.$window=$window,$rootScope.$on("$locationChangeSuccess",function(evt){return _this._urlListeners.forEach(function(fn){return fn(evt)})}),val($location));createProxyFunctions($sniffer,this,$sniffer,["replace","path","search","hash"]),createProxyFunctions($sniffer,this,$sniffer,["port","protocol","host"])},Ng1LocationServices}(),UrlRouterProvider=function(){function UrlRouterProvider(router){this.router=router}return UrlRouterProvider.injectableHandler=function(router,handler){return function(match){return services.$injector.invoke(handler,null,{$match:match,$stateParams:router.globals.params})}},UrlRouterProvider.prototype.$get=function(){var urlService=this.router.urlService;return this.router.urlRouter.update(!0),urlService.interceptDeferred||urlService.listen(),this.router.urlRouter},UrlRouterProvider.prototype.rule=function(ruleFn){var rule,_this=this;if(isFunction(ruleFn))return rule=new BaseUrlRule(function(){return ruleFn(services.$injector,_this.router.locationService)},identity),this.router.urlService.rules.rule(rule),this;throw new Error("'rule' must be a function")},UrlRouterProvider.prototype.otherwise=function(rule){var _this=this,urlRules=this.router.urlService.rules;if(isString(rule))urlRules.otherwise(rule);else{if(!isFunction(rule))throw new Error("'rule' must be a string or function");urlRules.otherwise(function(){return rule(services.$injector,_this.router.locationService)})}return this},UrlRouterProvider.prototype.when=function(what,handler){return(isArray(handler)||isFunction(handler))&&(handler=UrlRouterProvider.injectableHandler(this.router,handler)),this.router.urlService.rules.when(what,handler),this},UrlRouterProvider.prototype.deferIntercept=function(defer){this.router.urlService.deferIntercept(defer)},UrlRouterProvider}(),mod_init=(ng.module("ui.router.angular1",[]),ng.module("ui.router.init",["ng"])),mod_util=ng.module("ui.router.util",["ui.router.init"]),mod_rtr=ng.module("ui.router.router",["ui.router.util"]),mod_state=ng.module("ui.router.state",["ui.router.router","ui.router.util","ui.router.angular1"]),mod_main=ng.module("ui.router",["ui.router.init","ui.router.state","ui.router.angular1"]),router=(ng.module("ui.router.compat",["ui.router"]),null);function $uiRouterProvider($locationProvider){(router=this.router=new UIRouter).stateProvider=new StateProvider(router.stateRegistry,router.stateService),router.stateRegistry.decorator("views",ng1ViewsBuilder),router.stateRegistry.decorator("onExit",getStateHookBuilder("onExit")),router.stateRegistry.decorator("onRetain",getStateHookBuilder("onRetain")),router.stateRegistry.decorator("onEnter",getStateHookBuilder("onEnter")),router.viewService._pluginapi._viewConfigFactory("ng1",getNg1ViewConfigFactory()),router.urlService.config._decodeParams=!1;var ng1LocationService=router.locationService=router.locationConfig=new Ng1LocationServices($locationProvider);function $get($location,$browser,$window,$sniffer,$rootScope,$http,$templateCache){return ng1LocationService._runtimeServices($rootScope,$location,$sniffer,$browser,$window),delete router.router,delete router.$get,router}return Ng1LocationServices.monkeyPatchPathParameterType(router),((router.router=router).$get=$get).$inject=["$location","$browser","$window","$sniffer","$rootScope","$http","$templateCache"],router}$uiRouterProvider.$inject=["$locationProvider"];function getProviderFor(serviceName){return["$uiRouterProvider",function($urp){var service=$urp.router[serviceName];return service.$get=function(){return service},service}]}function runBlock($injector,$q,$uiRouter){if(services.$injector=$injector,services.$q=$q,!Object.prototype.hasOwnProperty.call($injector,"strictDi"))try{$injector.invoke(function(checkStrictDi){})}catch(error){$injector.strictDi=!!/strict mode/.exec(error&&error.toString())}$uiRouter.stateRegistry.get().map(function(x){return x.$$state().resolvables}).reduce(unnestR,[]).filter(function(x){return"deferred"===x.deps}).forEach(function(resolvable){return resolvable.deps=$injector.annotate(resolvable.resolveFn,$injector.strictDi)})}runBlock.$inject=["$injector","$q","$uiRouter"];function watchDigests($rootScope){$rootScope.$watch(function(){trace.approximateDigests++})}watchDigests.$inject=["$rootScope"],mod_init.provider("$uiRouter",$uiRouterProvider),mod_rtr.provider("$urlRouter",["$uiRouterProvider",function(uiRouter){return uiRouter.urlRouterProvider=new UrlRouterProvider(uiRouter)}]),mod_util.provider("$urlService",getProviderFor("urlService")),mod_util.provider("$urlMatcherFactory",["$uiRouterProvider",function(){return router.urlMatcherFactory}]),mod_util.provider("$templateFactory",function(){return new TemplateFactory}),mod_state.provider("$stateRegistry",getProviderFor("stateRegistry")),mod_state.provider("$uiRouterGlobals",getProviderFor("globals")),mod_state.provider("$transitions",getProviderFor("transitionService")),mod_state.provider("$state",["$uiRouterProvider",function(){return extend(router.stateProvider,{$get:function(){return router.stateService}})}]),mod_state.factory("$stateParams",["$uiRouter",function($uiRouter){return $uiRouter.globals.params}]),mod_main.factory("$view",function(){return router.viewService}),mod_main.service("$trace",function(){return trace}),mod_main.run(watchDigests),mod_util.run(["$urlMatcherFactory",function($urlMatcherFactory){}]),mod_state.run(["$state",function($state){}]),mod_rtr.run(["$urlRouter",function($urlRouter){}]),mod_init.run(runBlock);var getLocals=function(ctx){return ctx.getTokens().filter(isString).map(function(key){var resolvable=ctx.getResolvable(key);return[key,"NOWAIT"===ctx.getPolicy(resolvable).async?resolvable.promise:resolvable.data]}).reduce(applyPairs,{})};function parseStateRef(ref){var paramsOnly=ref.match(/^\s*({[^}]*})\s*$/),paramsOnly=(ref=paramsOnly?"("+paramsOnly[1]+")":ref).replace(/\n/g," ").match(/^\s*([^(]*?)\s*(\((.*)\))?\s*$/);if(paramsOnly&&4===paramsOnly.length)return{state:paramsOnly[1]||null,paramExpr:paramsOnly[3]||null};throw new Error("Invalid state ref '"+ref+"'")}function stateContext(el){el=el.parent().inheritedData("$uiView"),el=parse("$cfg.path")(el);return el?tail(el).state.name:void 0}function processedDef($state,$element,def){var uiState=def.uiState||$state.current.name,$element=extend(function(el,$state){return{relative:stateContext(el)||$state.$current,inherit:!0,source:"sref"}}($element,$state),def.uiStateOpts||{}),$state=$state.href(uiState,def.uiStateParams,$element);return{uiState:uiState,uiStateParams:def.uiStateParams,uiStateOpts:$element,href:$state}}function getTypeInfo(el){var isSvg="[object SVGAnimatedString]"===Object.prototype.toString.call(el.prop("href")),isForm="FORM"===el[0].nodeName;return{attr:isForm?"action":isSvg?"xlink:href":"href",isAnchor:"A"===el.prop("tagName").toUpperCase(),clickable:!isForm}}function clickHook(el,$state,$timeout,type,getDef){return function(e){var transition_1,ignorePreventDefaultCount_1,button=e.which||e.button,target=getDef();1=parseInt(TRANSACTION_DISPLAYED,10)&&($scope.txs=$scope.txs.splice(0,TRANSACTION_DISPLAYED))}),socket.on("block",function(){_getBlocks()})}var socket=getSocket($scope);socket.on("connect",function(){_startSocket()}),$scope.humanSince=function(time){return moment.unix(time).max().fromNow()},$scope.index=function(){_getBlocks(),_startSocket()},$scope.txs=[],$scope.blocks=[]}),angular.module("insight.messages").controller("VerifyMessageController",function($scope,$http){$scope.message={address:"",signature:"",message:""},$scope.verification={status:"unverified",result:null,error:null,address:""},$scope.verifiable=function(){return $scope.message.address&&$scope.message.signature&&$scope.message.message},$scope.verify=function(){$scope.verification.status="loading",$scope.verification.address=$scope.message.address;$http.post(window.apiPrefix+"/messages/verify",$scope.message).then(function(data){"boolean"==typeof data.data.result?data.data.result?($scope.verification.status="verified",$scope.verification.result=data.data.result):($scope.verification.status="verified",$scope.verification.result=!1):($scope.verification.status="error",$scope.verification.error=null)}).catch(function(data){console.log("c",data)})};function unverify(){$scope.verification.status="unverified"}$scope.$watch("message.address",unverify),$scope.$watch("message.signature",unverify),$scope.$watch("message.message",unverify)}),angular.module("insight.system").controller("ScannerController",function($scope,$rootScope,$uibModalInstance,Global){$scope.global=Global;function _scan(evt){if($scope.isMobile){$scope.scannerLoading=!0;var file,evt=evt.target.files;1===evt.length&&0===evt[0].type.indexOf("image/")&&(file=evt[0],(evt=new FileReader).onload=function(e){new MegaPixImage(file).render(canvas,{maxWidth:200,maxHeight:200,orientation:6}),setTimeout(function(){qrcode.width=canvas.width,qrcode.height=canvas.height,qrcode.imagedata=context.getImageData(0,0,qrcode.width,qrcode.height);try{qrcode.decode()}catch(e){alert(e)}},1500)},evt.readAsDataURL(file))}else{if(localMediaStream){context.drawImage(video,0,0,300,225);try{qrcode.decode()}catch(e){}}setTimeout(_scan,500)}}function _successCallback(stream){video.src=window.URL&&window.URL.createObjectURL(stream)||stream,localMediaStream=stream,video.play(),setTimeout(_scan,1e3)}function _scanStop(){$scope.scannerLoading=!1,$uibModalInstance.close(),$scope.isMobile||(localMediaStream.stop&&localMediaStream.stop(),localMediaStream=null,video.src="")}function _videoError(err){console.log("Video Error: "+JSON.stringify(err)),_scanStop()}var video,canvas,context,localMediaStream,isMobile={Android:function(){return navigator.userAgent.match(/Android/i)},BlackBerry:function(){return navigator.userAgent.match(/BlackBerry/i)},iOS:function(){return navigator.userAgent.match(/iPhone|iPad|iPod/i)},Opera:function(){return navigator.userAgent.match(/Opera Mini/i)},Windows:function(){return navigator.userAgent.match(/IEMobile/i)},any:function(){return isMobile.Android()||isMobile.BlackBerry()||isMobile.iOS()||isMobile.Opera()||isMobile.Windows()}},$searchInput=(navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia,window.URL=window.URL||window.webkitURL||window.mozURL||window.msURL,$scope.isMobile=isMobile.any(),$scope.scannerLoading=!1,angular.element(document.getElementById("search")));qrcode.callback=function(data){_scanStop();data=0===data.indexOf("dash:")?data.substring(8):data;console.log("QR code detected: "+data),$searchInput.val(data).triggerHandler("change").triggerHandler("submit")},$scope.cancel=function(){_scanStop()},$uibModalInstance.opened.then(function(){$rootScope.isCollapsed=!0,setTimeout(function(){canvas=document.getElementById("qr-canvas"),context=canvas.getContext("2d"),$scope.isMobile?document.getElementById("qrcode-camera").addEventListener("change",_scan,!1):(video=document.getElementById("qrcode-scanner-video"),angular.element(video),canvas.width=300,canvas.height=225,context.clearRect(0,0,300,225),navigator.getUserMedia({video:!0},_successCallback,_videoError))},500)})}),angular.module("insight.search").controller("SearchController",function($scope,$rootScope,$routeParams,$location,$timeout,Global,Block,Transaction,Address,BlockHashValidator,TransactionHashValidator,AddressValidator,BlockByHeight){$scope.global=Global,$scope.loading=!1;function _resetSearch(){$scope.q="",$scope.loading=!1}var currentNetwork=$rootScope.network;$scope.search=function(){function fetchAndRedirectTransactionSearch(){return Transaction.get({txId:q},function(){_resetSearch(),$location.path("/tx/"+q)},badQueryLoadHandler)}var q=$scope.q,isBlockHeight=($scope.badQuery=!1,$scope.loading=!0,isFinite(q)),isBlockHash=BlockHashValidator.test(q,currentNetwork),isTransactionHash=TransactionHashValidator.test(q),isAddress=AddressValidator.test(q),badQueryLoadHandler=function(){$scope.loading=!1,$scope.badQuery=!0,$timeout(function(){$scope.badQuery=!1},2e3)};isBlockHeight?BlockByHeight.get({blockHeight:q},function(hash){_resetSearch(),$location.path("/block/"+hash.blockHash)},badQueryLoadHandler):isAddress?Address.get({addrStr:q},function(){_resetSearch(),$location.path("address/"+q)},badQueryLoadHandler):isBlockHash?Block.get({blockHash:q},function(res){if(404===res.status)return fetchAndRedirectTransactionSearch();_resetSearch(),$location.path("/block/"+q)},badQueryLoadHandler):(isTransactionHash?fetchAndRedirectTransactionSearch:badQueryLoadHandler)()}}),angular.module("insight.status").controller("StatusController",function($scope,$routeParams,$location,Global,Status,Sync,getSocket){$scope.global=Global,$scope.getStatus=function(q){Status.get({q:"get"+q},function(d){$scope.loaded=1,angular.extend($scope,d)},function(e){$scope.error="API ERROR: "+e.data})},$scope.humanSince=function(time){return moment.unix(time/1e3).max().fromNow()};function _onSyncUpdate(sync){$scope.sync=sync}function _startSocket(){socket.emit("subscribe","sync"),socket.on("status",function(sync){_onSyncUpdate(sync)})}var socket=getSocket($scope);socket.on("connect",function(){_startSocket()}),$scope.getSync=function(){_startSocket(),Sync.get({},function(sync){_onSyncUpdate(sync)},function(e){e="Could not get sync information"+e.toString();$scope.sync={error:e}})}}),angular.module("insight.transactions").controller("transactionsController",function($scope,$rootScope,$routeParams,$location,Global,Transaction,TransactionsByBlock,TransactionsByAddress){$scope.global=Global,$scope.loading=!1,$scope.loadedBy=null;function _paginate(data){$scope.loading=!1,pagesTotal=data.pagesTotal,pageNum+=1,data.txs.forEach(function(tx){_processTX(tx),$scope.txs.push(tx)})}function _findTx(txid){Transaction.get({txId:txid},function(tx){tx.txid&&($rootScope.titleDetail=tx.txid.substring(0,7)+"..."),$rootScope.flashMessage=null,$scope.tx=tx,_processTX(tx),$scope.txs.unshift(tx)},function(e){400===e.status?$rootScope.flashMessage="Invalid Transaction ID: "+$routeParams.txId:503===e.status?$rootScope.flashMessage="Backend Error. "+e.data:$rootScope.flashMessage="Transaction Not Found",$location.path("/")})}var pageNum=0,pagesTotal=1,_aggregateItems=function(items){if(!items)return[];for(var l=items.length,ret=[],tmp={},u=0,i=0;i"!=$routeParams.v_type&&"<"!=$routeParams.v_type||($scope.from_vin="<"==$routeParams.v_type,$scope.from_vout=">"==$routeParams.v_type,$scope.v_index=parseInt($routeParams.v_index),$scope.itemsExpanded=!0),$scope.txs=[],$scope.$on("tx",function(event,txid){_findTx(txid)})}),angular.module("insight.transactions").controller("SendRawTransactionController",function($scope,$http){$scope.transaction="",$scope.status="ready",$scope.txid="",$scope.error=null,$scope.formValid=function(){return!!$scope.transaction},$scope.send=function(){var postData={rawtx:$scope.transaction};$scope.status="loading",$http.post(window.apiPrefix+"/tx/send",postData).then(function(response){response=response.data;"string"!=typeof response.txid?($scope.status="error",$scope.error="The transaction was sent but no transaction id was got back"):($scope.status="sent",$scope.txid=response.txid)}).catch(function(response){response=response.data;$scope.status="error",$scope.error=response||"No error message given (connection error?)"})}}),angular.module("insight.address").factory("Address",function($resource){return $resource(window.apiPrefix+"/addr/:addrStr/?noTxList=1",{addrStr:"@addStr"},{get:{method:"GET",interceptor:{response:function(res){return res.data},responseError:function(res){if(404===res.status)return res}}}})}).factory("AddressValidator",function(){return{test:function(addressStr){return/^[XxYy][1-9A-Za-z][^OIl]{20,40}/.test(addressStr)}}}),angular.module("insight.blocks").factory("Block",function($resource){return $resource(window.apiPrefix+"/block/:blockHash",{blockHash:"@blockHash"},{get:{method:"GET",interceptor:{response:function(res){return res.data},responseError:function(res){if(404===res.status)return res}}}})}).factory("Blocks",function($resource){return $resource(window.apiPrefix+"/blocks")}).factory("BlockHashValidator",function(HashValidator){return{test:function(blockHashStr,network){return HashValidator.test64(blockHashStr)||HashValidator.test66(blockHashStr)&&blockHashStr.startsWith("0x")}}}).factory("BlockByHeight",function($resource){return $resource(window.apiPrefix+"/block-index/:blockHeight")}),angular.module("insight.currency").factory("Currency",function($resource){return $resource(window.apiPrefix+"/currency")}),angular.module("insight.system").factory("Global",[function(){return{get:function(){return null}}}]).factory("Version",function($resource){return $resource(window.apiPrefix+"/version")}),angular.module("insight.hash").factory("HashValidator",function(){return{test64:function(hashStr){return"string"==typeof hashStr&&/^(0x)?[0-9a-f]{64}$/i.test(hashStr)},test66:function(hashStr){return"string"==typeof hashStr&&/^(0x)?[0-9a-f]{66}$/i.test(hashStr)}}}),function(socket,$rootScope){this.socket=socket,this.$rootScope=$rootScope,this.listeners=[]});ScopedSocket.prototype.removeAllListeners=function(opts){opts=opts||{};for(var i=0;i
    ',link:function(scope,elm){elm.on("mousedown",function(event){var text=scope.clipCopy,textArea=document.createElement("textarea");textArea.style.position="fixed",textArea.style.top=0,textArea.style.left=0,textArea.style.width="2em",textArea.style.height="2em",textArea.style.padding=0,textArea.style.border="none",textArea.style.outline="none",textArea.style.boxShadow="none",textArea.style.background="transparent";textArea.value=text.replace(//gi,"\n"),document.body.appendChild(textArea),textArea.select();try{var successful=document.execCommand("copy");document.execCommand("RemoveFormat");angular.element(elm[0].querySelector(".tooltip"))[0].style.display="block",angular.element(elm[0].querySelector(".tooltip"))[0].style.opacity="1",setTimeout(function(){angular.element(elm[0].querySelector(".tooltip"))[0].style.opacity="0",angular.element(elm[0].querySelector(".tooltip"))[0].style.display="none"},1e3)}catch(err){console.log("Oops, unable to copy")}document.body.removeChild(textArea)})}}}).directive("focus",function($timeout){return{scope:{trigger:"@focus"},link:function(scope,element){scope.$watch("trigger",function(value){"true"===value&&$timeout(function(){element[0].focus()})})}}}),angular.module("insight").filter("startFrom",function(){return function(input,start){return input.slice(start=+start)}}).filter("split",function(){return function(input,delimiter){delimiter=delimiter||",";return input.split(delimiter)}}),angular.module("insight").config(function($routeProvider){$routeProvider.when("/block/:blockHash",{templateUrl:"views/block.html",title:"Dash Block "}).when("/block-index/:blockHeight",{controller:"BlocksController",templateUrl:"views/redirect.html"}).when("/tx/send",{templateUrl:"views/transaction_sendraw.html",title:"Broadcast Raw Transaction"}).when("/tx/:txId/:v_type?/:v_index?",{templateUrl:"views/transaction.html",title:"Dash Transaction "}).when("/",{templateUrl:"views/index.html",title:"Home"}).when("/blocks",{templateUrl:"views/block_list.html",title:"Dash Blocks solved Today"}).when("/blocks-date/:blockDate/:startTimestamp?",{templateUrl:"views/block_list.html",title:"Dash Blocks solved "}).when("/address/:addrStr",{templateUrl:"views/address.html",title:"Dash Address "}).when("/status",{templateUrl:"views/status.html",title:"Status"}).when("/messages/verify",{templateUrl:"views/messages_verify.html",title:"Verify Message"}).otherwise({templateUrl:"views/404.html",title:"Error"})}),angular.module("insight").config(function($locationProvider){$locationProvider.html5Mode(!0),$locationProvider.hashPrefix("!")}).run(function($rootScope,$route,$location,$routeParams,$anchorScroll,ngProgressFactory,gettextCatalog,amMoment){var ngProgress=ngProgressFactory.createInstance();gettextCatalog.currentLanguage=defaultLanguage,amMoment.changeLocale(defaultLanguage),$rootScope.$on("$routeChangeStart",function(){ngProgress.start()}),$rootScope.$on("$routeChangeSuccess",function(){ngProgress.complete(),$rootScope.titleDetail="",$rootScope.title=$route.current.title,$rootScope.currentAddr=null,$location.hash($routeParams.scrollTo),$anchorScroll()})}),angular.element(document).ready(function(){}),angular.module("insight").run(["gettextCatalog",function(gettextCatalog){gettextCatalog.setStrings("de_DE",{"(Input unconfirmed)":"(Eingabe unbestätigt)","404 Page not found :(":"404 Seite nicht gefunden :(",'insight is an open-source Dash blockchain explorer with complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by dashd RPC. Check out the source code.':'insight ist ein Open Source Dash Blockchain Explorer mit vollständigen REST und Websocket APIs um eigene Wallets oder Applikationen zu implementieren. Hierbei werden fortschrittlichere Abfragen der Blockchain ermöglicht, bei denen die RPC des dashd nicht mehr ausreichen. Der aktuelle Quellcode ist auf GitHub zu finden.','insight is still in development, so be sure to report any bugs and provide feedback for improvement at our github issue tracker.':'insight befindet sich aktuell noch in der Entwicklung. Bitte sende alle gefundenen Fehler (Bugs) und Feedback zur weiteren Verbesserung an unseren GitHub Issue Tracker.',About:"Über insight",Address:"Adresse",Age:"Alter","Application Status":"Programmstatus","Best Block":"Bester Block","Dash node information":"Dash-Node Info",Block:"Block","Block Reward":"Belohnung",Blocks:"Blöcke","Bytes Serialized":"Serialisierte Bytes","Can't connect to dashd to get live updates from the p2p network. (Tried connecting to dashd at {{host}}:{{port}} and failed.)":"Es ist nicht möglich mit dashd zu verbinden um live Aktualisierungen vom P2P Netzwerk zu erhalten. (Verbindungsversuch zu dashd an {{host}}:{{port}} ist fehlgeschlagen.)","Can't connect to insight server. Attempting to reconnect...":"Keine Verbindung zum insight-Server möglich. Es wird versucht die Verbindung neu aufzubauen...","Can't connect to internet. Please, check your connection.":"Keine Verbindung zum Internet möglich, bitte Zugangsdaten prüfen.",Complete:"Vollständig",Confirmations:"Bestätigungen",Conn:"Verbindungen","Connections to other nodes":"Verbindungen zu Nodes","Current Blockchain Tip (insight)":"Aktueller Blockchain Tip (insight)","Current Sync Status":"Aktueller Status",Details:"Details",Difficulty:"Schwierigkeit","Double spent attempt detected. From tx:":'Es wurde ein "double Spend" Versuch erkannt. Von tx:',"Error!":"Fehler!",Fee:"Gebühr","Final Balance":"Schlussbilanz","Finish Date":"Fertigstellung","Go to home":"Zur Startseite","Hash Serialized":"Hash Serialisiert",Height:"Höhe","Included in Block":"Eingefügt in Block","Incoherence in levelDB detected:":"Es wurde eine Zusammenhangslosigkeit in der LevelDB festgestellt:","Info Errors":"Fehlerbeschreibung","Initial Block Chain Height":"Ursprüngliche Blockchain Höhe",Input:"Eingänge","Last Block":"Letzter Block","Last Block Hash (dashd)":"Letzter Hash (dashd)","Latest Blocks":"Letzte Blöcke","Latest Transactions":"Letzte Transaktionen","Loading Address Information":"Lade Adressinformationen","Loading Block Information":"Lade Blockinformation","Loading Selected Date...":"Lade gewähltes Datum...","Loading Transaction Details":"Lade Transaktionsdetails","Loading Transactions...":"Lade Transaktionen...","Loading...":"Lade...","Mined Time":"Block gefunden (Mining)","Mined by":"Gefunden von","Mining Difficulty":"Schwierigkeitgrad","Next Block":"Nächster Block","No Inputs (Newly Generated Coins)":"Keine Eingänge (Neu generierte Coins)","No blocks yet.":"Keine Blöcke bisher.","No matching records found!":"Keine passenden Einträge gefunden!","No. Transactions":"Anzahl Transaktionen","Number Of Transactions":"Anzahl der Transaktionen",Output:"Ausgänge","Powered by":"Powered by","Previous Block":"Letzter Block","Protocol version":"Protokollversion","Proxy setting":"Proxyeinstellung","Received Time":"Eingangszeitpunkt","Redirecting...":"Umleitung...","Search for block, transaction or address":"Suche Block, Transaktion oder Adresse","See all blocks":"Alle Blöcke anzeigen","Show Transaction Output data":"Zeige Abgänge","Show all":"Zeige Alles","Show input":"Zeige Eingänge","Show less":"Weniger anzeigen","Show more":"Mehr anzeigen",Size:"Größe","Size (bytes)":"Größe (bytes)","Skipped Blocks (previously synced)":"Verworfene Blöcke (bereits syncronisiert)","Start Date":"Startdatum",Status:"Status",Summary:"Zusammenfassung","Summary confirmed":"Zusammenfassung bestätigt","Sync Progress":"Fortschritt","Sync Status":"Syncronisation","Sync Type":"Art der Syncronisation","Synced Blocks":"Syncronisierte Blöcke",Testnet:"Testnet aktiv","There are no transactions involving this address.":"Es gibt keine Transaktionen zu dieser Adressse","Time Offset":"Zeitoffset zu UTC",Timestamp:"Zeitstempel",Today:"Heute","Total Amount":"Gesamtsumme","Total Received":"Insgesamt empfangen","Total Sent":"Insgesamt gesendet",Transaction:"Transaktion","Transaction Output Set Information":"Transaktions Abgänge","Transaction Outputs":"Abgänge",Transactions:"Transaktionen",Type:"Typ",Unconfirmed:"Unbestätigt","Unconfirmed Transaction!":"Unbestätigte Transaktion!","Unconfirmed Txs Balance":"Unbestätigtes Guthaben","Value Out":"Wert",Version:"Version","Waiting for blocks...":"Warte auf Blöcke...","Waiting for transactions...":"Warte auf Transaktionen...","by date.":"nach Datum.","first seen at":"zuerst gesehen am",mined:"gefunden","mined on:":"vom:","Waiting for blocks":"Warte auf Blöcke"}),gettextCatalog.setStrings("es",{"(Input unconfirmed)":"(Entrada sin confirmar)","404 Page not found :(":"404 Página no encontrada :(",'insight is an open-source Dash blockchain explorer with complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by dashd RPC. Check out the source code.':'insight es un explorador de bloques de Dash open-source con un completo conjunto de REST y APIs de websockets que pueden ser usadas para escribir monederos de Dashs y otras aplicaciones que requieran consultar un explorador de bloques. Obtén el código en el repositorio abierto de GitHub.','insight is still in development, so be sure to report any bugs and provide feedback for improvement at our github issue tracker.':'insight esta en desarrollo aún, por ello agradecemos que nos reporten errores o sugerencias para mejorar el software. GitHub issue tracker.',About:"Acerca de",Address:"Dirección",Age:"Edad","Application Status":"Estado de la Aplicación","Best Block":"Mejor Bloque","Dash node information":"Información del nodo Dash",Block:"Bloque","Block Reward":"Bloque Recompensa",Blocks:"Bloques","Bytes Serialized":"Bytes Serializados","Can't connect to dashd to get live updates from the p2p network. (Tried connecting to dashd at {{host}}:{{port}} and failed.)":"No se pudo conectar a dashd para obtener actualizaciones en vivo de la red p2p. (Se intentó conectar a dashd de {{host}}:{{port}} y falló.)","Can't connect to insight server. Attempting to reconnect...":"No se pudo conectar al servidor insight. Intentando re-conectar...","Can't connect to internet. Please, check your connection.":"No se pudo conectar a Internet. Por favor, verifique su conexión.",Complete:"Completado",Confirmations:"Confirmaciones",Conn:"Con","Connections to other nodes":"Conexiones a otros nodos","Current Blockchain Tip (insight)":"Actual Blockchain Tip (insight)","Current Sync Status":"Actual Estado de Sincronización",Details:"Detalles",Difficulty:"Dificultad","Double spent attempt detected. From tx:":"Intento de doble gasto detectado. De la transacción:","Error!":"¡Error!",Fee:"Tasa","Final Balance":"Balance Final","Finish Date":"Fecha Final","Go to home":"Volver al Inicio","Hash Serialized":"Hash Serializado",Height:"Altura","Included in Block":"Incluido en el Bloque","Incoherence in levelDB detected:":"Detectada una incoherencia en levelDB:","Info Errors":"Errores de Información","Initial Block Chain Height":"Altura de la Cadena en Bloque Inicial",Input:"Entrada","Last Block":"Último Bloque","Last Block Hash (dashd)":"Último Bloque Hash (dashd)","Latest Blocks":"Últimos Bloques","Latest Transactions":"Últimas Transacciones","Loading Address Information":"Cargando Información de la Dirección","Loading Block Information":"Cargando Información del Bloque","Loading Selected Date...":"Cargando Fecha Seleccionada...","Loading Transaction Details":"Cargando Detalles de la Transacción","Loading Transactions...":"Cargando Transacciones...","Loading...":"Cargando...","Mined Time":"Hora de Minado","Mined by":"Minado por","Mining Difficulty":"Dificultad de Minado","Next Block":"Próximo Bloque","No Inputs (Newly Generated Coins)":"Sin Entradas (Monedas Recién Generadas)","No blocks yet.":"No hay bloques aún.","No matching records found!":"¡No se encontraron registros coincidentes!","No. Transactions":"Nro. de Transacciones","Number Of Transactions":"Número de Transacciones",Output:"Salida","Powered by":"Funciona con","Previous Block":"Bloque Anterior","Protocol version":"Versión del protocolo","Proxy setting":"Opción de proxy","Received Time":"Hora de Recibido","Redirecting...":"Redireccionando...","Search for block, transaction or address":"Buscar bloques, transacciones o direcciones","See all blocks":"Ver todos los bloques","Show Transaction Output data":"Mostrar dato de Salida de la Transacción","Show all":"Mostrar todos","Show input":"Mostrar entrada","Show less":"Ver menos","Show more":"Ver más",Size:"Tamaño","Size (bytes)":"Tamaño (bytes)","Skipped Blocks (previously synced)":"Bloques Saltados (previamente sincronizado)","Start Date":"Fecha de Inicio",Status:"Estado",Summary:"Resumen","Summary confirmed":"Resumen confirmados","Sync Progress":"Proceso de Sincronización","Sync Status":"Estado de Sincronización","Sync Type":"Tipo de Sincronización","Synced Blocks":"Bloques Sincornizados",Testnet:"Red de prueba","There are no transactions involving this address.":"No hay transacciones para esta dirección","Time Offset":"Desplazamiento de hora",Timestamp:"Fecha y hora",Today:"Hoy","Total Amount":"Cantidad Total","Total Received":"Total Recibido","Total Sent":"Total Enviado",Transaction:"Transacción","Transaction Output Set Information":"Información del Conjunto de Salida de la Transacción","Transaction Outputs":"Salidas de la Transacción",Transactions:"Transacciones",Type:"Tipo",Unconfirmed:"Sin confirmar","Unconfirmed Transaction!":"¡Transacción sin confirmar!","Unconfirmed Txs Balance":"Balance sin confirmar","Value Out":"Valor de Salida",Version:"Versión","Waiting for blocks...":"Esperando bloques...","Waiting for transactions...":"Esperando transacciones...","by date.":"por fecha.","first seen at":"Visto a",mined:"minado","mined on:":"minado el:","Waiting for blocks":"Esperando bloques"}),gettextCatalog.setStrings("fr_FR",{"(Input unconfirmed)":"(Entrée non confirmé)","404 Page not found :(":"404 Page introuvable :(",'insight is an open-source Dash blockchain explorer with complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by dashd RPC. Check out the source code.':'insight est un explorateur open-source de blocs avec un ensemble complet d\'API REST et websockets qui peuvent être utilisées pour écrire portefeuille et autres applications nécéssitant des requêtes plus complète que celles proposés par les commandes RPC de dashd. Consultez le code source sur GitHub.','insight is still in development, so be sure to report any bugs and provide feedback for improvement at our github issue tracker.':'insight est toujours en développement, hésitez pas à remonter tout bugs et proposer des améliorations sur notre GitHub issue tracker.',About:"À propos",Address:"Adresse",Age:"Âge","Application Status":"Status de l'application","Best Block":"Meilleur Bloc","Dash node information":"Information sur le noeud Dash",Block:"Bloc","Block Reward":"Recompense de bloc",Blocks:"Blocs","Bytes Serialized":"Octets sérialisés","Can't connect to dashd to get live updates from the p2p network. (Tried connecting to dashd at {{host}}:{{port}} and failed.)":"Impossible de se connecter à dashd pour récupérer les dernières informations du réseau p2p. (Tentative de connexion à dashd ({{host}}:{{port}}) échouée.)","Can't connect to insight server. Attempting to reconnect...":"Impossible de se connecter au serveur Insight. Tentative de reconnexion...","Can't connect to internet. Please, check your connection.":"Impossible de se connecter à internet. S'il vous plait, réessayer.",Complete:"Achevés",Confirmations:"Confirmations",Conn:"Conn","Connections to other nodes":"Connexion aux autre noeuds","Current Blockchain Tip (insight)":"Tip Actuel de la Blockchain (insight)","Current Sync Status":"Status actuel de synchronisation",Details:"Détails",Difficulty:"Difficultée","Double spent attempt detected. From tx:":"Tentative de double dépense détectée. Dans la tx:","Error!":"Erreur!",Fee:"Frais","Final Balance":"Solde final","Finish Date":"Date de fin","Go to home":"Retour à l'accueil","Hash Serialized":"Hash Serialisé",Height:"Hauteur","Included in Block":"Inclus dans le bloc","Incoherence in levelDB detected:":"Incohérence dans levelDB détectée:","Info Errors":"Erreurs d'informations","Initial Block Chain Height":"Hauteur de la chaîne initiale",Input:"Entrée","Last Block":"Dernier bloc","Last Block Hash (dashd)":"Hash du dernier bloc (dashd)","Latest Blocks":"Derniers Blocs","Latest Transactions":"Dernières transactions","Loading Address Information":"Chargement des informations de l'adresse","Loading Block Information":"Chagement des information du bloc","Loading Selected Date...":"Chargement de la date sélectionnée...","Loading Transaction Details":"Chargement des détails de la transaction","Loading Transactions...":"Chagement des Transactions...","Loading...":"Chargement...","Mined Time":"Heure de minage","Mined by":"Miné par","Mining Difficulty":"Difficultée de minage","Next Block":"Bloc suivant","No Inputs (Newly Generated Coins)":"Pas d'entrées (nouvellement générées)","No blocks yet.":"Aucun blocs pour l'instant.","No matching records found!":"Aucun enregistremements correspondants trouvés!","No. Transactions":"Transactions N°","Number Of Transactions":"Nombre de transaction",Output:"Sortie","Powered by":"Propulsé par","Previous Block":"Bloc précédent","Protocol version":"Version du protocol","Proxy setting":"Paramètre de proxy","Received Time":"Heure de réception","Redirecting...":"Redirection...","Search for block, transaction or address":"Rechercher des blocs, transactions ou adresses","See all blocks":"Voir tous les blocs","Show Transaction Output data":"Afficher les données de sortie de transaction","Show all":"Tout afficher","Show input":"Afficher l'entrée","Show less":"Voir moins","Show more":"Voir plus",Size:"Taille","Size (bytes)":"Taille (octets)","Skipped Blocks (previously synced)":"Blocs ignorés (préalablement synchronisés)","Start Date":"Date de début",Status:"Status",Summary:"Résumé","Summary confirmed":"Résume confirmé","Sync Progress":"Progression de la synchronication","Sync Status":"Status de la synchronisation","Sync Type":"Type de la synchronisation","Synced Blocks":"Blocs synchronisés",Testnet:"Réseau de test","There are no transactions involving this address.":"Il n'y a pas de transactions impliquant cette adresse.","Time Offset":"Décalage horaire",Timestamp:"Date et heure",Today:"Aujourd'hui","Total Amount":"Montant Total","Total Received":"Total Reçu","Total Sent":"Total Envoyés",Transaction:"Transaction","Transaction Output Set Information":"Informations sur l'ensemble des sorties de transaction","Transaction Outputs":"Sorties de transaction",Transactions:"Transactions",Type:"Type",Unconfirmed:"Non confirmée","Unconfirmed Transaction!":"Transaction non confirmée!","Unconfirmed Txs Balance":"Solde non confirmé","Value Out":"Valeur de sortie",Version:"Version","Waiting for blocks...":"En attente de blocs...","Waiting for transactions...":"En attente de transactions...","by date.":"par date.","first seen at":"aperçu la première fois le",mined:"miné","mined on:":"miné le:","Waiting for blocks":"Esperando bloques"}),gettextCatalog.setStrings("ja",{"(Input unconfirmed)":"(入力は未検証です)","404 Page not found :(":"404 ページがみつかりません (´・ω・`)",'insight is an open-source Dash blockchain explorer with complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by dashd RPC. Check out the source code.':'insightは、dashd RPCの提供するものよりも詳細なブロックチェインへの問い合わせを必要とするウェブウォレットやその他のアプリを書くのに使える、完全なRESTおよびwebsocket APIを備えたオープンソースのビットコインブロックエクスプローラです。ソースコードを確認','insight is still in development, so be sure to report any bugs and provide feedback for improvement at our github issue tracker.':'insightは現在開発中です。githubのissueトラッカにてバグの報告や改善案の提案をお願いします。',About:"はじめに",Address:"アドレス",Age:"生成後経過時間","An error occured in the verification process.":"検証過程でエラーが発生しました。","An error occured:
    {{error}}":"エラーが発生しました:
    {{error}}","Application Status":"アプリケーションの状態","Best Block":"最良ブロック","Dash comes with a way of signing arbitrary messages.":"Dashには任意のメッセージを署名する昨日が備わっています。","Dash node information":"Dashノード情報",Block:"ブロック","Block Reward":"ブロック報酬",Blocks:"ブロック","Broadcast Raw Transaction":"生のトランザクションを配信","Bytes Serialized":"シリアライズ後の容量 (バイト)","Can't connect to dashd to get live updates from the p2p network. (Tried connecting to dashd at {{host}}:{{port}} and failed.)":"P2Pネットワークからライブ情報を取得するためにdashdへ接続することができませんでした。({{host}}:{{port}} への接続を試みましたが、失敗しました。)","Can't connect to insight server. Attempting to reconnect...":"insight サーバに接続できません。再接続しています...","Can't connect to internet. Please, check your connection.":"インターネットに接続できません。コネクションを確認してください。",Complete:"完了",Confirmations:"検証数",Conn:"接続数","Connections to other nodes":"他ノードへの接続","Current Blockchain Tip (insight)":"現在のブロックチェインのTip (insight)","Current Sync Status":"現在の同期状況",Details:"詳細",Difficulty:"難易度","Double spent attempt detected. From tx:":"二重支払い攻撃をこのトランザクションから検知しました:","Error message:":"エラーメッセージ:","Error!":"エラー!",Fee:"手数料","Final Balance":"最終残高","Finish Date":"終了日時","Go to home":"ホームへ","Hash Serialized":"シリアライズデータのハッシュ値",Height:"ブロック高","Included in Block":"取り込まれたブロック","Incoherence in levelDB detected:":"levelDBの破損を検知しました:","Info Errors":"エラー情報","Initial Block Chain Height":"起動時のブロック高",Input:"入力","Last Block":"直前のブロック","Last Block Hash (dashd)":"直前のブロックのハッシュ値 (dashd)","Latest Blocks":"最新のブロック","Latest Transactions":"最新のトランザクション","Loading Address Information":"アドレス情報を読み込んでいます","Loading Block Information":"ブロック情報を読み込んでいます","Loading Selected Date...":"選択されたデータを読み込んでいます...","Loading Transaction Details":"トランザクションの詳細を読み込んでいます","Loading Transactions...":"トランザクションを読み込んでいます...","Loading...":"ロード中...",Message:"メッセージ","Mined Time":"採掘時刻","Mined by":"採掘者","Mining Difficulty":"採掘難易度","Next Block":"次のブロック","No Inputs (Newly Generated Coins)":"入力なし (新しく生成されたコイン)","No blocks yet.":"ブロックはありません。","No matching records found!":"一致するレコードはありません!","No. Transactions":"トランザクション数","Number Of Transactions":"トランザクション数",Output:"出力","Powered by":"Powered by","Previous Block":"前のブロック","Protocol version":"プロトコルバージョン","Proxy setting":"プロキシ設定","Raw transaction data":"トランザクションの生データ","Raw transaction data must be a valid hexadecimal string.":"生のトランザクションデータは有効な16進数でなければいけません。","Received Time":"受信時刻","Redirecting...":"リダイレクトしています...","Search for block, transaction or address":"ブロック、トランザクション、アドレスを検索","See all blocks":"すべてのブロックをみる","Send transaction":"トランザクションを送信","Show Transaction Output data":"トランザクションの出力データをみる","Show all":"すべて表示","Show input":"入力を表示","Show less":"隠す","Show more":"表示する",Signature:"署名",Size:"サイズ","Size (bytes)":"サイズ (バイト)","Skipped Blocks (previously synced)":"スキップされたブロック (同期済み)","Start Date":"開始日時",Status:"ステータス",Summary:"概要","Summary confirmed":"サマリ 検証済み","Sync Progress":"同期の進捗状況","Sync Status":"同期ステータス","Sync Type":"同期タイプ","Synced Blocks":"同期されたブロック数",Testnet:"テストネット","The message failed to verify.":"メッセージの検証に失敗しました。","The message is verifiably from {{verification.address}}.":"メッセージは{{verification.address}}により検証されました。","There are no transactions involving this address.":"このアドレスに対するトランザクションはありません。","This form can be used to broadcast a raw transaction in hex format over\n the Dash network.":"このフォームでは、16進数フォーマットの生のトランザクションをDashネットワーク上に配信することができます。","This form can be used to verify that a message comes from\n a specific Dash address.":"このフォームでは、メッセージが特定のDashアドレスから来たかどうかを検証することができます。","Time Offset":"時間オフセット",Timestamp:"タイムスタンプ",Today:"今日","Total Amount":"Dash総量","Total Received":"総入金額","Total Sent":"総送金額",Transaction:"トランザクション","Transaction Output Set Information":"トランザクションの出力セット情報","Transaction Outputs":"トランザクションの出力","Transaction succesfully broadcast.
    Transaction id: {{txid}}":"トランザクションの配信に成功しました。
    トランザクションID: {{txid}}",Transactions:"トランザクション",Type:"タイプ",Unconfirmed:"未検証","Unconfirmed Transaction!":"未検証のトランザクションです!","Unconfirmed Txs Balance":"未検証トランザクションの残高","Value Out":"出力値",Verify:"検証","Verify signed message":"署名済みメッセージを検証",Version:"バージョン","Waiting for blocks...":"ブロックを待っています...","Waiting for transactions...":"トランザクションを待っています...","by date.":"日毎。","first seen at":"最初に発見された日時",mined:"採掘された","mined on:":"採掘日時:","(Mainchain)":"(メインチェーン)","(Orphaned)":"(孤立したブロック)",Bits:"Bits","Block #{{block.height}}":"ブロック #{{block.height}}",BlockHash:"ブロックのハッシュ値","Blocks
    mined on:":"ブロック
    採掘日",Coinbase:"コインベース",Hash:"ハッシュ値",LockTime:"ロック時間","Merkle Root":"Merkleルート",Nonce:"Nonce","Ooops!":"おぉっと!","Output is spent":"出力は使用済みです","Output is unspent":"出力は未使用です",Scan:"スキャン","Show/Hide items details":"アイテムの詳細を表示または隠す","Waiting for blocks":"ブロックを待っています","by date. {{detail}} {{before}}":"日時順 {{detail}} {{before}}",scriptSig:"scriptSig","{{tx.confirmations}} Confirmations":"{{tx.confirmations}} 検証",' (Orphaned)':' (孤立したブロック)',' Incoherence in levelDB detected: {{vin.dbError}}':' Incoherence in levelDB detected: {{vin.dbError}}','Waiting for blocks ':'ブロックを待っています '}),gettextCatalog.setStrings("de_DE",{"(Input unconfirmed)":"(Input onbevestigd)","404 Page not found :(":"404 Pagina niet gevonden :(",'insight is an open-source Dash blockchain explorer with complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by dashd RPC. Check out the source code.':'insight is een opensource Dash-blokketenexplorer met volledige REST- en websocket-API\'s om eigen webportomonnee\'s en andere apps te implementeren. Hierdoor zijn meer geavanceerde query\'s op de blokketen mogelijk, dan die door RPC worden aangeboden. De actuele broncode is op GitHub te vinden.','insight is still in development, so be sure to report any bugs and provide feedback for improvement at our github issue tracker.':'insight is nog steeds in ontwikkeling. Dus rapporteer fouten (bugs) en geef terugkoppeling voor verbeteringen via onze issuetracker op GitHub.',About:"Over",Address:"Adres",Age:"Leeftijd","Application Status":"Programmastatus","Best Block":"Beste blok","Dash node information":"Dash-knooppuntinformatie",Block:"Blok","Block Reward":"Blokbeloning",Blocks:"Blokken","Bytes Serialized":"Geserialiseerde bytes","Can't connect to dashd to get live updates from the p2p network. (Tried connecting to dashd at {{host}}:{{port}} and failed.)":"Kan geen verbinding maken net dashd om liveupdates van het P2P-netwerk te ontvangen. (Geprobeerd verbinding te maken met dashd op {{host}}:{{port}} en is mislukt.)","Can't connect to insight server. Attempting to reconnect...":"Kan geen verbinding maken met de insight-server. Het wordt nog eens geprobeerd...","Can't connect to internet. Please, check your connection.":"Kan geen verbinding maken met het internet. Controleer je verbinding.",Complete:"Compleet",Confirmations:"Bevestigingen",Conn:"Verbindingen","Connections to other nodes":"Verbindingen met andere knooppunten","Current Blockchain Tip (insight)":"Huidige blokketentop (insight)","Current Sync Status":"Huidige synchronisatiestatus",Details:"Details",Difficulty:"Moeilijkheid","Double spent attempt detected. From tx:":'Er is een "dubbele uitgave" gedetecteerd. Van tx:',"Error!":"Fout!",Fee:"Transactiekosten","Final Balance":"Totaalsaldo","Finish Date":"Einddatum","Go to home":"Ga naar home","Hash Serialized":"Geserialiseerde hash",Height:"Hoogte","Included in Block":"Inbegrepen in blok","Incoherence in levelDB detected:":"Incoherentie is gedetecteerd in levelDB:","Info Errors":"Foutbeschrijving","Initial Block Chain Height":"Oorspronkelijke blokketenhoogte",Input:"Input","Last Block":"Laatste blok","Last Block Hash (dashd)":"Laatste blokhash (dashd)","Latest Blocks":"Recentste blok","Latest Transactions":"Recentste transacties","Loading Address Information":"Adresinformatie aan het laden","Loading Block Information":"Blokinformatie aan het laden","Loading Selected Date...":"Geselecteerde datum aan het laden...","Loading Transaction Details":"Transactiedetails aan het laden","Loading Transactions...":"Transacties aan het laden...","Loading...":"Aan het laden...","Mined Time":"Miningtijdstip","Mined by":"Gemined door","Mining Difficulty":"Miningmoeilijkheid","Next Block":"Volgende blok","No Inputs (Newly Generated Coins)":"Geen inputs (nieuw aangemaakte munten)","No blocks yet.":"Nog geen blokken.","No matching records found!":"Geen passende records gevonden!","No. Transactions":"Aantal transacties","Number Of Transactions":"Aantal transacties",Output:"Output","Powered by":"Aangedreven door","Previous Block":"Vorig blok","Protocol version":"Protocolversie","Proxy setting":"Proxy-instellingen","Received Time":"Onvangsttijdstip","Redirecting...":"Aan het omleiden...","Search for block, transaction or address":"Zoek op blok, transactie of adres","See all blocks":"Bekijk alle blokken","Show Transaction Output data":"Toon transactieoutputgegevens","Show all":"Toon alles","Show input":"Toon input","Show less":"Toon minder","Show more":"Toon meer",Size:"Grootte","Size (bytes)":"Grootte (bytes)","Skipped Blocks (previously synced)":"Overgeslagen blokken (voorheen gesynchroniseerd)","Start Date":"Startdatum",Status:"Status",Summary:"Samenvatting","Summary confirmed":"Samenvatting bevestigd","Sync Progress":"Synchronisatievoortgang","Sync Status":"Synchronisatiestatus","Sync Type":"Synchronisatietype","Synced Blocks":"Gesynchroniseerde blokken",Testnet:"Testnet actief","There are no transactions involving this address.":"Er zijn geen transacties gerelateerd aan dit adres.","Time Offset":"Tijdsoffset tot UTC",Timestamp:"Tijdsstempel",Today:"Vandaag","Total Amount":"Totaalbedrag","Total Received":"Totaal ontvangen","Total Sent":"Totaal verstuurd",Transaction:"Transactie","Transaction Output Set Information":"Transactieoutputsetinformatie","Transaction Outputs":"Transactieoutputs",Transactions:"Transacties",Type:"Type",Unconfirmed:"Onbevestigd","Unconfirmed Transaction!":"Onbevestigde transacties!","Unconfirmed Txs Balance":"Onbevestigde transactiesaldo","Value Out":"Waarde",Version:"Versie","Waiting for blocks...":"Op blokken aan het wachten...","Waiting for transactions...":"Op transacties aan het wachten...","by date.":"op datum.","first seen at":"voor het eerst gezien op",mined:"gemined","mined on:":"gemined op:","Waiting for blocks":"Op blokken aan het wachten"}),gettextCatalog.setStrings("pt_BR",{"(Input unconfirmed)":"(Entrada não confirmada)",'insight is an open-source Bitcoin blockchain explorer with complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by bitcoind RPC. Check out the source code.':'insight é um explorador de blocos Bitcoin de código aberto com um conjunto completo de APIs de websocket e REST que podem ser usadas para programar carteiras online e outros aplicativos que necessitam consultar um explorador de blocos. Confira o código-fonte.','insight is still in development, so be sure to report any bugs and provide feedback for improvement at our GitHub issue tracker.':'insight ainda está em desenvolvimento, portanto agradecemos que postem erros e sugestões para melhorias em nosso rastreador de problemas no GitHub.',"404 Page not found :(":"404 Página não encontrada :(",About:"Sobre",Address:"Endereço",Age:"Idade","An error occured in the verification process.":"Ocorreu um erro no processo de verificação.","An error occured:
    {{error}}":"Ocorreu um erro:
    {{error}}","Application Status":"Estado do Aplicativo","Bitcoin comes with a way of signing arbitrary messages.":"Bitcoin possui um método de assinar mensagens arbitrárias.","Bitcoin node information":"Informações do nó Bitcoin",Block:"Bloco","Block Reward":"Recompensa do Bloco",Blocks:"Blocos","Broadcast Raw Transaction":"Transmitir Transações Brutas","by date.":"por data.","Can't connect to bitcoind to get live updates from the p2p network. (Tried connecting to bitcoind at {{host}}:{{port}} and failed.)":"Não foi possível conectar-se ao bitcoind para obter atualizações em tempo real da rede p2p. (A tentativa de conectar-se à {{host}}:{{port}} falhou.)","Can't connect to insight server. Attempting to reconnect...":"Não foi possível conectar-se ao servidor insight. Tentando reconectar...","Can't connect to internet. Please, check your connection.":"Não foi possível conectar-se à internet. Verifique sua conexão.",Complete:"Completa",Confirmations:"Confirmações",Conn:"Con","Connections to other nodes":"Conexões a outros nós","Current Blockchain Tip (insight)":"Atual Blockchain Tip (insight)","Current Sync Status":"Estado Atual de Sincronização",Details:"Detalhes",Difficulty:"Dificuldade","Double spent attempt detected. From tx:":"Tentativa de gasto duplo detectada. Da transação:","Error message:":"Mensagem de erro:","Error!":"Erro!",Fee:"Taxa","Fee Rate":"Taxa por kilobyte","Final Balance":"Saldo Final","Finish Date":"Data de Término","first seen at":"visto pela primeira vez em","Go to home":"Voltar ao início",Height:"Altura","Included in Block":"Incluída no Bloco","Incoherence in levelDB detected:":"Incoerência no levelDB detectada:","Info Errors":"Erros de informação","Initial Block Chain Height":"Altura inicial da Blockchain",Input:"Entrada","Last Block":"Último Bloco","Last Block Hash (Bitcoind)":"Hash do Último Bloco (Bitcoind)","Latest Blocks":"Blocos Recentes","Latest Transactions":"Transações Recentes","Loading Address Information":"Carregando informações do endereço","Loading Block Information":"Carregando informações do bloco","Loading Selected Date...":"Carregando data selecionada...","Loading Transaction Details":"Carregando detalhes da transação","Loading Transactions...":"Carregando transações...","Loading...":"Carregando...",Message:"Mensagem",mined:"minerado","Mined by":"Minerado por","mined on:":"minerado em:","Mined Time":"Minerada em","Mining Difficulty":"Dificuldade de Mineração",Network:"Rede","Next Block":"Próximo Bloco","No blocks yet.":"Ainda não há blocos.","No Inputs (Newly Generated Coins)":"Nenhuma Entrada (moedas recém-geradas)","No matching records found!":"Não foram encontrados registros correspondentes!","No. Transactions":"Nº de transações","Number Of Transactions":"Número de Transações",Output:"Saída","Powered by":"Funciona com","Previous Block":"Bloco Anterior","Protocol version":"Versão do protocolo","Proxy setting":"Configuração de proxy","Raw transaction data":"Dados brutos da transação","Raw transaction data must be a valid hexadecimal string.":"Os dados brutos da transação devem ser uma string hexadecimal válida.","Received Time":"Recebida em","Redirecting...":"Redirecionando...","Search for block, transaction or address":"Procurar por blocos, transações ou endereços","See all blocks":"Visualizar todos os blocos","Send transaction":"Enviar transação","Show all":"Mostrar todos","Show input":"Mostrar entrada","Show less":"Mostrar menos","Show more":"Mostrar mais",Signature:"Assinatura",Size:"Tamanho","Size (bytes)":"Tamanho (bytes)","Skipped Blocks (previously synced)":"Blocos Ignorados (previamente sincronizados)","Start Date":"Data de Início",Status:"Estado",Summary:"Resumo","Summary confirmed":"Resumo confirmado","Sync Progress":"Progresso de Sincronização","Sync Status":"Estado de Sincronização","Sync Type":"Tipo de Sincronização","Synced Blocks":"Blocos sincronizados","The message failed to verify.":"Falha ao verificar a mensagem.","The message is verifiably from {{verification.address}}.":"A mensagem é verificável de {{verification.address}}.","There are no transactions involving this address.":"Não existem transações envolvendo este endereço.","This form can be used to broadcast a raw transaction in hex format over\r\n the Bitcoin network.":"Este formulário pode ser usado para transmitir uma transação bruta em formato \r\n hexadecimal para a rede Bitcoin.","This form can be used to verify that a message comes from\r\n a specific Bitcoin address.":"Este formulário pode ser usado para verificar se uma mensagem\r\n veio de um endereço Bitcoin específico.","Time Offset":"Compensação de Tempo",Timestamp:"Data e Hora",Today:"Hoje","Total Received":"Total Recebido","Total Sent":"Total Enviado",Transaction:"Transação","Transaction succesfully broadcast.
    Transaction id: {{txid}}":"Transação transmitida com sucesso.
    ID da transação: {{txid}}",Transactions:"Transações",Type:"Tipo",Unconfirmed:"Não confirmada","Unconfirmed Transaction!":"Transação não confirmada!","Unconfirmed Txs Balance":"Balanço de Transações não confirmadas","Value Out":"Valor de Saída",Verify:"Verificar","Verify signed message":"Verificar mensagem assinada",Version:"Versão","Waiting for blocks...":"Esperando por blocos...","Waiting for transactions...":"Esperando por transações..."}),gettextCatalog.setStrings("zh",{"(Input unconfirmed)":"输入未确定","404 Page not found :(":"404 页面不存在",'insight is an open-source Bitcoin blockchain explorer with complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by bitcoind RPC. Check out the source code.':'insight是一个开源的比特币区块链浏览器。支持完整的REST和Web Socket API 调用,可用于编写Web钱包和其他需要比bitcoind RPC提供的更高级区块链查询的应用程序。查看源代码','insight is still in development, so be sure to report any bugs and provide feedback for improvement at our github issue tracker.':'该系统仍在开发中详情发现问题或提供反馈请报告给我们的开发人员',About:"关于",Address:"地址",Age:"生成时间","An error occured in the verification process.":"验证过程出错","An error occured:
    {{error}}":"发生错误
    {{error}}","Application Status":"程序状态","Best Block":"最好的块","Bitcoin comes with a way of signing arbitrary messages.":"Bitcoin可以签名任意消息","Bitcoin node information":"比特币节点信息",Block:"区块","Block Reward":"块报酬",Blocks:"区块","Blocks Num":"区块数","Broadcast Raw Transaction":"广播原始交易","Bytes Serialized":"序列化后的大小 (B)","Can't connect to bitcoind to get live updates from the p2p network. (Tried connecting to bitcoind at {{host}}:{{port}} and failed.)":"无法连接到BitCoin P2P网络。(尝试{{host}}:{{port}} 连接失败)","Can't connect to insight server. Attempting to reconnect...":"无法连接到服务器,正在重试","Can't connect to internet. Please, check your connection.":"无法连接到因特网,请检查连接",Complete:"完成",Confirmations:"个确认",Conn:"连接数","Connections to other nodes":"连接数","Current Blockchain Tip (insight)":"当前区块链Tip(insight)","Current Sync Status":"当前同步状态",Details:"详情",Difficulty:"难度","Double spent attempt detected. From tx:":"检测到双花,来自tx:","Error message:":"错误消息:","Error!":"错误",Fee:"手续费","Final Balance":"钱包余额","Finish Date":"结束日期","Go to home":"回主页","Hash Serialized":"Hash序列化",Height:"高度",BlockHeight:"区块高度","Included in Block":"所在区块","Incoherence in levelDB detected:":"在levelDB中检测到不一致:","Info Errors":"错误信息","Initial Block Chain Height":"最新区块高度",Input:"输入","Last Block":"最新区块信息","Last Block Hash (Bitcoind)":"最新区块哈希(Bitcoind)","Latest Blocks":"最新区块","Latest Transactions":"最新交易","Loading Address Information":"加载地址信息","Loading Block Information":"加载区块信息","Loading Selected Date...":"加载选择日期...","Loading Transaction Details":"加载交易详情","Loading Transactions...":"加载交易...","Loading...":"加载中...",Message:"消息","Mined Time":"挖掘时间","Mined by":"矿池","Mining Difficulty":"挖矿难度","Next Block":"下一个区块","No Inputs (Newly Generated Coins)":"没有输入(新生产的币)","No blocks yet.":"尚无区块","No Transactions.":"尚无交易...","No matching records found!":"没找到匹配的记录","No. Transactions":"交易数量","Number Of Transactions":"交易数目",Output:"输出","Powered by":"Powered by","Previous Block":"上一个区块","Protocol version":"协议版本","Proxy setting":"代理设置","Raw transaction data":"原始交易数据","Raw transaction data must be a valid hexadecimal string.":"原始交易数据必须是有效的十六进制","Received Time":"接收时间","Redirecting...":"重定向中...","Search for block, transaction or address":"查询区块高度、区块哈希、交易哈希或地址","See all blocks":"查看所有区块","See all transcations":"查看所有交易","Send transaction":"发送交易","Show Transaction Output data":"显示交易输出数据","Show all":"显示所有","Show input":"显示输入","Show less":"隐藏","Show more":"显示更多",Signature:"签名",Size:"大小","Size (bytes)":"大小(字节)","Skipped Blocks (previously synced)":"已跳过块数量","Start Date":"开始时间",Status:"状态",Summary:"摘要","Summary confirmed":"摘要已确认","Sync Progress":"同步进度","Sync Status":"同步状态","Sync Type":"同步类型","Synced Blocks":"已同步块数量",Testnet:"Testnet","The message failed to verify.":"验证消息失败","The message is verifiably from {{verification.address}}.":"消息由{{verification.address}}验证","There are no transactions involving this address.":"此地址没有发生过交易","This form can be used to broadcast a raw transaction in hex format over\n the Bitcoin network.":"此表单可用于以十六进制格式通过比特币网络广播一个原始事务。","This form can be used to verify that a message comes from\n a specific Bitcoin address.":"此表单可用于验证消息是否来自特定的比特币地址。","Time Offset":"时间偏移",Timestamp:"交易时间",Today:"今天","Total Amount":"总数","Total Received":"总收入","Total Sent":"总支出",Transaction:"交易","Transaction Hash":"交易哈希","Transaction Output Set Information":"交易输出集合信息","Transaction Outputs":"交易输出","Transaction succesfully broadcast.
    Transaction id: {{txid}}":"交易成功播报,
    交易ID: {{txid}}",Transactions:"交易",Type:"类别",Unconfirmed:"未确认","Unconfirmed Transaction!":"未确认!","Unconfirmed Txs Balance":"未确认的交易余额","Value Out":"输出值",Verify:"验证","Verify signed message":"验证签名消息",Version:"版本","Waiting for blocks...":"等待区块...","Waiting for transactions...":"等待交易...","by date.":"按日期","first seen at":"最初发现于",mined:"挖掘","mined on:":"挖掘日期",Home:"首页",History:"历史",Blacklist:"黑名单",Network:"网络",syncing:"同步中",synced:"同步完成","Merkle Root":"Merkle根",Nonce:"随机数",Blockhash:"区块哈希","Fee Rate":"费率"})}]); \ No newline at end of file +/*! @dashevo/insight-ui 4.0.4 */ +var defaultLanguage=localStorage.getItem("insight-language")||"en",defaultCurrency=localStorage.getItem("insight-currency")||"DASH",TRANSACTION_DISPLAYED=(angular.module("insight",["ngAnimate","ngResource","ngRoute","ngProgress","ui.bootstrap","ui.route","monospaced.qrcode","gettext","angularMoment","insight.system","insight.socket","insight.hash","insight.blocks","insight.transactions","insight.address","insight.search","insight.status","insight.connection","insight.currency","insight.messages"]),angular.module("insight.system",[]),angular.module("insight.socket",[]),angular.module("insight.hash",[]),angular.module("insight.blocks",[]),angular.module("insight.transactions",[]),angular.module("insight.address",[]),angular.module("insight.search",[]),angular.module("insight.status",[]),angular.module("insight.connection",[]),angular.module("insight.currency",[]),angular.module("insight.messages",[]),angular.module("insight.address").controller("AddressController",function($scope,$rootScope,$routeParams,$location,Global,Address,getSocket){$scope.global=Global;function _startSocket(){socket.on("dashd/addresstxid",function(data){data.address===addrStr&&($rootScope.$broadcast("tx",data.txid),data=document.querySelector("base"),new Audio(data.href+"/sound/transaction.mp3").play())}),socket.emit("subscribe","dashd/addresstxid",[addrStr])}var socket=getSocket($scope),addrStr=$routeParams.addrStr;socket.on("connect",function(){_startSocket()}),$scope.$on("$destroy",function(){socket.emit("unsubscribe","dashd/addresstxid",[addrStr])}),$scope.params=$routeParams,$scope.findOne=function(){$rootScope.currentAddr=$routeParams.addrStr,_startSocket(),Address.get({addrStr:$routeParams.addrStr},function(address){$rootScope.titleDetail=address.addrStr.substring(0,7)+"...",$rootScope.flashMessage=null,$scope.address=address},function(e){400===e.status?$rootScope.flashMessage="Invalid Address: "+$routeParams.addrStr:503===e.status?$rootScope.flashMessage="Backend Error. "+e.data:$rootScope.flashMessage="Address Not Found",$location.path("/")})}}),angular.module("insight.blocks").controller("BlocksController",function($scope,$rootScope,$routeParams,$location,Global,Block,Blocks,BlockByHeight){$scope.global=Global,$scope.loading=!1,$routeParams.blockHeight&&BlockByHeight.get({blockHeight:$routeParams.blockHeight},function(hash){$location.path("/block/"+hash.blockHash)},function(){$rootScope.flashMessage="Bad Request",$location.path("/")});function toUTCDate(date){return new Date(date.getUTCFullYear(),date.getUTCMonth(),date.getUTCDate(),date.getUTCHours(),date.getUTCMinutes(),date.getUTCSeconds())}$scope.toUTCDate=toUTCDate,$scope.millisToUTCDate=function(millis){return toUTCDate(new Date(1e3*millis))};$scope.$watch("dt",function(newValue,oldValue){var mm;newValue!==oldValue&&$location.path("/blocks-date/"+(newValue=(oldValue=newValue).getUTCFullYear().toString(),mm=(oldValue.getUTCMonth()+1).toString(),oldValue=oldValue.getUTCDate().toString(),newValue+"-"+(mm[1]?mm:"0"+mm[0])+"-"+(oldValue[1]?oldValue:"0"+oldValue[0])))}),$scope.openCalendar=function($event){$scope.opened=!0,setTimeout(function(){angular.element(document.querySelector(".uib-datepicker-popup"))[0].style.display="block"},100)},$scope.humanSince=function(time){var time=moment.unix(time).startOf("day"),b=moment().startOf("day");return time.max().from(b)},$scope.list=function(){var d,m;$scope.loading=!0,$routeParams.blockDate&&($scope.detail="On "+$routeParams.blockDate),$routeParams.startTimestamp&&((m=(d=new Date(1e3*$routeParams.startTimestamp)).getMinutes())<10&&(m="0"+m),$scope.before=" before "+d.getHours()+":"+m),$rootScope.titleDetail=$scope.detail,Blocks.get({blockDate:$routeParams.blockDate,startTimestamp:$routeParams.startTimestamp},function(res){for(var key in $scope.loading=!1,$scope.blocks=res.blocks,$scope.pagination=res.pagination,$scope.pagination.olderBlocks=$scope.pagination.moreTs,$scope.blocks)$scope.blocks[key].time<$scope.pagination.olderBlocks&&($scope.pagination.olderBlocks=$scope.blocks[key].time)})},$scope.findOne=function(){$scope.loading=!0,Block.get({blockHash:$routeParams.blockHash},function(block){$rootScope.titleDetail=block.height,$rootScope.flashMessage=null,$scope.loading=!1,$scope.block=block},function(e){400===e.status?$rootScope.flashMessage="Invalid Transaction ID: "+$routeParams.txId:503===e.status?$rootScope.flashMessage="Backend Error. "+e.data:$rootScope.flashMessage="Block Not Found",$location.path("/")})},$scope.params=$routeParams}),angular.module("insight.connection").controller("ConnectionController",function($scope,$window,Status,getSocket,PeerSync){$scope.apiOnline=!0,$scope.serverOnline=!0,$scope.clienteOnline=!0;var socket=getSocket($scope);socket.on("connect",function(){$scope.serverOnline=!0,socket.on("disconnect",function(){$scope.serverOnline=!1})}),$scope.getConnStatus=function(){PeerSync.get({},function(peer){$scope.apiOnline=peer.connected,$scope.host=peer.host,$scope.port=peer.port},function(){$scope.apiOnline=!1})},socket.emit("subscribe","sync"),socket.on("status",function(sync){$scope.sync=sync,$scope.apiOnline="aborted"!==sync.status&&"error"!==sync.status}),$window.addEventListener("offline",function(){$scope.$apply(function(){$scope.clienteOnline=!1})},!0),$window.addEventListener("online",function(){$scope.$apply(function(){$scope.clienteOnline=!0})},!0)}),angular.module("insight.currency",["ui.router","ui.bootstrap"]).controller("CurrencyController",function($scope,$rootScope,Currency){$rootScope.currency.symbol=defaultCurrency;function _roundFloat(x,n){return parseInt(n,10)&&parseFloat(x)||(n=0),Math.round(x*Math.pow(10,n))/Math.pow(10,n)}$rootScope.currency.getConvertion=function(value){return value=+value,isNaN(value)||null==value?"value error":0===value?"0 "+this.symbol:(value=(value="USD"===this.symbol?_roundFloat(value*this.factor,2):"mDASH"===this.symbol?(this.factor=1e3,_roundFloat(value*this.factor,5)):"uDASH"===this.symbol?(this.factor=1e6,_roundFloat(value*this.factor,2)):(this.factor=1,value))<1e-7?value.toFixed(8):value)+" "+this.symbol},$scope.setCurrency=function(currency){$rootScope.currency.symbol=currency,localStorage.setItem("insight-currency",currency),"USD"===currency?Currency.get({},function(res){$rootScope.currency.factor=$rootScope.currency.bitstamp=res.data.bitstamp}):$rootScope.currency.factor="mDASH"===currency?1e3:"uDASH"===currency?1e6:1},Currency.get({},function(res){$rootScope.currency.factor=$rootScope.currency.bitstamp=res.data.bitstamp})}),angular.module("insight.system").controller("FooterController",function($scope,$route,$templateCache,gettextCatalog,amMoment,Version){$scope.defaultLanguage=defaultLanguage;$scope.version=void Version.get({},function(res){$scope.version=res.version}),$scope.availableLanguages=[{name:"Deutsch",isoCode:"de_DE"},{name:"English",isoCode:"en"},{name:"French",isoCode:"fr_FR"},{name:"Spanish",isoCode:"es"},{name:"Portuguese",isoCode:"pt_BR"},{name:"Japanese",isoCode:"ja"},{name:"Chinese",isoCode:"zh"}],$scope.setLanguage=function(isoCode){gettextCatalog.currentLanguage=$scope.defaultLanguage=defaultLanguage=isoCode,amMoment.changeLocale(isoCode),localStorage.setItem("insight-language",isoCode);isoCode=$route.current.templateUrl;$templateCache.remove(isoCode),$route.reload()}}),angular.module("insight.system").controller("HeaderController",function($scope,$rootScope,$uibModal,getSocket,Global,Block,Status){$scope.global=Global,$rootScope.network="testnet",Status.get({},function(status){$rootScope.network=status.info&&status.info.network||"testnet"}),$rootScope.currency={factor:1,bitstamp:0,symbol:"DASH"},$scope.menu=[{title:"Blocks",link:"blocks"},{title:"Status",link:"status"}],$scope.openScannerModal=function(){$uibModal.open({templateUrl:"scannerModal.html",controller:"ScannerController"})};var socket=getSocket($scope);socket.on("connect",function(){socket.emit("subscribe","inv"),socket.on("block",function(block){block=block.toString();Block.get({blockHash:block},function(res){$scope.totalBlocks=res.height})})}),$rootScope.isCollapsed=!0}),10),BLOCKS_DISPLAYED=5,ScopedSocket=(angular.module("insight.system").controller("IndexController",function($scope,Global,getSocket,Blocks){$scope.global=Global;function _getBlocks(){Blocks.get({limit:BLOCKS_DISPLAYED},function(res){$scope.blocks=res.blocks,$scope.blocksLength=res.length})}function _startSocket(){socket.emit("subscribe","inv"),socket.on("tx",function(tx){$scope.txs.unshift(tx),parseInt($scope.txs.length,10)>=parseInt(TRANSACTION_DISPLAYED,10)&&($scope.txs=$scope.txs.splice(0,TRANSACTION_DISPLAYED))}),socket.on("block",function(){_getBlocks()})}var socket=getSocket($scope);socket.on("connect",function(){_startSocket()}),$scope.humanSince=function(time){return moment.unix(time).max().fromNow()},$scope.index=function(){_getBlocks(),_startSocket()},$scope.txs=[],$scope.blocks=[]}),angular.module("insight.messages").controller("VerifyMessageController",function($scope,$http){$scope.message={address:"",signature:"",message:""},$scope.verification={status:"unverified",result:null,error:null,address:""},$scope.verifiable=function(){return $scope.message.address&&$scope.message.signature&&$scope.message.message},$scope.verify=function(){$scope.verification.status="loading",$scope.verification.address=$scope.message.address;$http.post(window.apiPrefix+"/messages/verify",$scope.message).then(function(data){"boolean"==typeof data.data.result?data.data.result?($scope.verification.status="verified",$scope.verification.result=data.data.result):($scope.verification.status="verified",$scope.verification.result=!1):($scope.verification.status="error",$scope.verification.error=null)}).catch(function(data){console.log("c",data)})};function unverify(){$scope.verification.status="unverified"}$scope.$watch("message.address",unverify),$scope.$watch("message.signature",unverify),$scope.$watch("message.message",unverify)}),angular.module("insight.system").controller("ScannerController",function($scope,$rootScope,$uibModalInstance,Global){$scope.global=Global;function _scan(evt){if($scope.isMobile){$scope.scannerLoading=!0;var file,evt=evt.target.files;1===evt.length&&0===evt[0].type.indexOf("image/")&&(file=evt[0],(evt=new FileReader).onload=function(e){new MegaPixImage(file).render(canvas,{maxWidth:200,maxHeight:200,orientation:6}),setTimeout(function(){qrcode.width=canvas.width,qrcode.height=canvas.height,qrcode.imagedata=context.getImageData(0,0,qrcode.width,qrcode.height);try{qrcode.decode()}catch(e){alert(e)}},1500)},evt.readAsDataURL(file))}else{if(localMediaStream){context.drawImage(video,0,0,300,225);try{qrcode.decode()}catch(e){}}setTimeout(_scan,500)}}function _successCallback(stream){video.src=window.URL&&window.URL.createObjectURL(stream)||stream,localMediaStream=stream,video.play(),setTimeout(_scan,1e3)}function _scanStop(){$scope.scannerLoading=!1,$uibModalInstance.close(),$scope.isMobile||(localMediaStream.stop&&localMediaStream.stop(),localMediaStream=null,video.src="")}function _videoError(err){console.log("Video Error: "+JSON.stringify(err)),_scanStop()}var video,canvas,context,localMediaStream,isMobile={Android:function(){return navigator.userAgent.match(/Android/i)},BlackBerry:function(){return navigator.userAgent.match(/BlackBerry/i)},iOS:function(){return navigator.userAgent.match(/iPhone|iPad|iPod/i)},Opera:function(){return navigator.userAgent.match(/Opera Mini/i)},Windows:function(){return navigator.userAgent.match(/IEMobile/i)},any:function(){return isMobile.Android()||isMobile.BlackBerry()||isMobile.iOS()||isMobile.Opera()||isMobile.Windows()}},$searchInput=(navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia,window.URL=window.URL||window.webkitURL||window.mozURL||window.msURL,$scope.isMobile=isMobile.any(),$scope.scannerLoading=!1,angular.element(document.getElementById("search")));qrcode.callback=function(data){_scanStop();data=0===data.indexOf("dash:")?data.substring(8):data;console.log("QR code detected: "+data),$searchInput.val(data).triggerHandler("change").triggerHandler("submit")},$scope.cancel=function(){_scanStop()},$uibModalInstance.opened.then(function(){$rootScope.isCollapsed=!0,setTimeout(function(){canvas=document.getElementById("qr-canvas"),context=canvas.getContext("2d"),$scope.isMobile?document.getElementById("qrcode-camera").addEventListener("change",_scan,!1):(video=document.getElementById("qrcode-scanner-video"),angular.element(video),canvas.width=300,canvas.height=225,context.clearRect(0,0,300,225),navigator.getUserMedia({video:!0},_successCallback,_videoError))},500)})}),angular.module("insight.search").controller("SearchController",function($scope,$rootScope,$routeParams,$location,$timeout,Global,Block,Transaction,Address,BlockHashValidator,TransactionHashValidator,AddressValidator,BlockByHeight){$scope.global=Global,$scope.loading=!1;function _resetSearch(){$scope.q="",$scope.loading=!1}var currentNetwork=$rootScope.network;$scope.search=function(){function fetchAndRedirectTransactionSearch(){return Transaction.get({txId:q},function(){_resetSearch(),$location.path("/tx/"+q)},badQueryLoadHandler)}var q=$scope.q,isBlockHeight=($scope.badQuery=!1,$scope.loading=!0,isFinite(q)),isBlockHash=BlockHashValidator.test(q,currentNetwork),isTransactionHash=TransactionHashValidator.test(q),isAddress=AddressValidator.test(q),badQueryLoadHandler=function(){$scope.loading=!1,$scope.badQuery=!0,$timeout(function(){$scope.badQuery=!1},2e3)};isBlockHeight?BlockByHeight.get({blockHeight:q},function(hash){_resetSearch(),$location.path("/block/"+hash.blockHash)},badQueryLoadHandler):isAddress?Address.get({addrStr:q},function(){_resetSearch(),$location.path("address/"+q)},badQueryLoadHandler):isBlockHash?Block.get({blockHash:q},function(res){if(404===res.status)return fetchAndRedirectTransactionSearch();_resetSearch(),$location.path("/block/"+q)},badQueryLoadHandler):(isTransactionHash?fetchAndRedirectTransactionSearch:badQueryLoadHandler)()}}),angular.module("insight.status").controller("StatusController",function($scope,$routeParams,$location,Global,Status,Sync,getSocket){$scope.global=Global,$scope.getStatus=function(q){Status.get({q:"get"+q},function(d){$scope.loaded=1,angular.extend($scope,d)},function(e){$scope.error="API ERROR: "+e.data})},$scope.humanSince=function(time){return moment.unix(time/1e3).max().fromNow()};function _onSyncUpdate(sync){$scope.sync=sync}function _startSocket(){socket.emit("subscribe","sync"),socket.on("status",function(sync){_onSyncUpdate(sync)})}var socket=getSocket($scope);socket.on("connect",function(){_startSocket()}),$scope.getSync=function(){_startSocket(),Sync.get({},function(sync){_onSyncUpdate(sync)},function(e){e="Could not get sync information"+e.toString();$scope.sync={error:e}})}}),angular.module("insight.transactions").controller("transactionsController",function($scope,$rootScope,$routeParams,$location,Global,Transaction,TransactionsByBlock,TransactionsByAddress){$scope.global=Global,$scope.loading=!1,$scope.loadedBy=null;function _paginate(data){$scope.loading=!1,pagesTotal=data.pagesTotal,pageNum+=1,data.txs.forEach(function(tx){_processTX(tx),$scope.txs.push(tx)})}function _findTx(txid){Transaction.get({txId:txid},function(tx){tx.txid&&($rootScope.titleDetail=tx.txid.substring(0,7)+"..."),$rootScope.flashMessage=null,$scope.tx=tx,_processTX(tx),$scope.txs.unshift(tx)},function(e){400===e.status?$rootScope.flashMessage="Invalid Transaction ID: "+$routeParams.txId:503===e.status?$rootScope.flashMessage="Backend Error. "+e.data:$rootScope.flashMessage="Transaction Not Found",$location.path("/")})}var pageNum=0,pagesTotal=1,_aggregateItems=function(items){if(!items)return[];for(var l=items.length,ret=[],tmp={},u=0,i=0;i"!=$routeParams.v_type&&"<"!=$routeParams.v_type||($scope.from_vin="<"==$routeParams.v_type,$scope.from_vout=">"==$routeParams.v_type,$scope.v_index=parseInt($routeParams.v_index),$scope.itemsExpanded=!0),$scope.txs=[],$scope.$on("tx",function(event,txid){_findTx(txid)})}),angular.module("insight.transactions").controller("SendRawTransactionController",function($scope,$http){$scope.transaction="",$scope.status="ready",$scope.txid="",$scope.error=null,$scope.formValid=function(){return!!$scope.transaction},$scope.send=function(){var postData={rawtx:$scope.transaction};$scope.status="loading",$http.post(window.apiPrefix+"/tx/send",postData).then(function(response){response=response.data;"string"!=typeof response.txid?($scope.status="error",$scope.error="The transaction was sent but no transaction id was got back"):($scope.status="sent",$scope.txid=response.txid)}).catch(function(response){response=response.data;$scope.status="error",$scope.error=response||"No error message given (connection error?)"})}}),angular.module("insight.address").factory("Address",function($resource){return $resource(window.apiPrefix+"/addr/:addrStr/?noTxList=1",{addrStr:"@addStr"},{get:{method:"GET",interceptor:{response:function(res){return res.data},responseError:function(res){if(404===res.status)return res}}}})}).factory("AddressValidator",function(){return{test:function(addressStr){return/^[Xy789][1-9A-Za-z][^OIl]{20,40}/.test(addressStr)}}}),angular.module("insight.blocks").factory("Block",function($resource){return $resource(window.apiPrefix+"/block/:blockHash",{blockHash:"@blockHash"},{get:{method:"GET",interceptor:{response:function(res){return res.data},responseError:function(res){if(404===res.status)return res}}}})}).factory("Blocks",function($resource){return $resource(window.apiPrefix+"/blocks")}).factory("BlockHashValidator",function(HashValidator){return{test:function(blockHashStr,network){return HashValidator.test64(blockHashStr)||HashValidator.test66(blockHashStr)&&blockHashStr.startsWith("0x")}}}).factory("BlockByHeight",function($resource){return $resource(window.apiPrefix+"/block-index/:blockHeight")}),angular.module("insight.currency").factory("Currency",function($resource){return $resource(window.apiPrefix+"/currency")}),angular.module("insight.system").factory("Global",[function(){return{get:function(){return null}}}]).factory("Version",function($resource){return $resource(window.apiPrefix+"/version")}),angular.module("insight.hash").factory("HashValidator",function(){return{test64:function(hashStr){return"string"==typeof hashStr&&/^(0x)?[0-9a-f]{64}$/i.test(hashStr)},test66:function(hashStr){return"string"==typeof hashStr&&/^(0x)?[0-9a-f]{66}$/i.test(hashStr)}}}),function(socket,$rootScope){this.socket=socket,this.$rootScope=$rootScope,this.listeners=[]});ScopedSocket.prototype.removeAllListeners=function(opts){opts=opts||{};for(var i=0;i
    ',link:function(scope,elm){elm.on("mousedown",function(event){var text=scope.clipCopy,textArea=document.createElement("textarea");textArea.style.position="fixed",textArea.style.top=0,textArea.style.left=0,textArea.style.width="2em",textArea.style.height="2em",textArea.style.padding=0,textArea.style.border="none",textArea.style.outline="none",textArea.style.boxShadow="none",textArea.style.background="transparent";textArea.value=text.replace(//gi,"\n"),document.body.appendChild(textArea),textArea.select();try{var successful=document.execCommand("copy");document.execCommand("RemoveFormat");angular.element(elm[0].querySelector(".tooltip"))[0].style.display="block",angular.element(elm[0].querySelector(".tooltip"))[0].style.opacity="1",setTimeout(function(){angular.element(elm[0].querySelector(".tooltip"))[0].style.opacity="0",angular.element(elm[0].querySelector(".tooltip"))[0].style.display="none"},1e3)}catch(err){console.log("Oops, unable to copy")}document.body.removeChild(textArea)})}}}).directive("focus",function($timeout){return{scope:{trigger:"@focus"},link:function(scope,element){scope.$watch("trigger",function(value){"true"===value&&$timeout(function(){element[0].focus()})})}}}),angular.module("insight").filter("startFrom",function(){return function(input,start){return input.slice(start=+start)}}).filter("split",function(){return function(input,delimiter){delimiter=delimiter||",";return input.split(delimiter)}}),angular.module("insight").config(function($routeProvider){$routeProvider.when("/block/:blockHash",{templateUrl:"views/block.html",title:"Dash Block "}).when("/block-index/:blockHeight",{controller:"BlocksController",templateUrl:"views/redirect.html"}).when("/tx/send",{templateUrl:"views/transaction_sendraw.html",title:"Broadcast Raw Transaction"}).when("/tx/:txId/:v_type?/:v_index?",{templateUrl:"views/transaction.html",title:"Dash Transaction "}).when("/",{templateUrl:"views/index.html",title:"Home"}).when("/blocks",{templateUrl:"views/block_list.html",title:"Dash Blocks solved Today"}).when("/blocks-date/:blockDate/:startTimestamp?",{templateUrl:"views/block_list.html",title:"Dash Blocks solved "}).when("/address/:addrStr",{templateUrl:"views/address.html",title:"Dash Address "}).when("/status",{templateUrl:"views/status.html",title:"Status"}).when("/messages/verify",{templateUrl:"views/messages_verify.html",title:"Verify Message"}).otherwise({templateUrl:"views/404.html",title:"Error"})}),angular.module("insight").config(function($locationProvider){$locationProvider.html5Mode(!0),$locationProvider.hashPrefix("!")}).run(function($rootScope,$route,$location,$routeParams,$anchorScroll,ngProgressFactory,gettextCatalog,amMoment){var ngProgress=ngProgressFactory.createInstance();gettextCatalog.currentLanguage=defaultLanguage,amMoment.changeLocale(defaultLanguage),$rootScope.$on("$routeChangeStart",function(){ngProgress.start()}),$rootScope.$on("$routeChangeSuccess",function(){ngProgress.complete(),$rootScope.titleDetail="",$rootScope.title=$route.current.title,$rootScope.currentAddr=null,$location.hash($routeParams.scrollTo),$anchorScroll()})}),angular.element(document).ready(function(){}),angular.module("insight").run(["gettextCatalog",function(gettextCatalog){gettextCatalog.setStrings("de_DE",{"(Input unconfirmed)":"(Eingabe unbestätigt)","404 Page not found :(":"404 Seite nicht gefunden :(",'insight is an open-source Dash blockchain explorer with complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by dashd RPC. Check out the source code.':'insight ist ein Open Source Dash Blockchain Explorer mit vollständigen REST und Websocket APIs um eigene Wallets oder Applikationen zu implementieren. Hierbei werden fortschrittlichere Abfragen der Blockchain ermöglicht, bei denen die RPC des dashd nicht mehr ausreichen. Der aktuelle Quellcode ist auf GitHub zu finden.','insight is still in development, so be sure to report any bugs and provide feedback for improvement at our github issue tracker.':'insight befindet sich aktuell noch in der Entwicklung. Bitte sende alle gefundenen Fehler (Bugs) und Feedback zur weiteren Verbesserung an unseren GitHub Issue Tracker.',About:"Über insight",Address:"Adresse",Age:"Alter","Application Status":"Programmstatus","Best Block":"Bester Block","Dash node information":"Dash-Node Info",Block:"Block","Block Reward":"Belohnung",Blocks:"Blöcke","Bytes Serialized":"Serialisierte Bytes","Can't connect to dashd to get live updates from the p2p network. (Tried connecting to dashd at {{host}}:{{port}} and failed.)":"Es ist nicht möglich mit dashd zu verbinden um live Aktualisierungen vom P2P Netzwerk zu erhalten. (Verbindungsversuch zu dashd an {{host}}:{{port}} ist fehlgeschlagen.)","Can't connect to insight server. Attempting to reconnect...":"Keine Verbindung zum insight-Server möglich. Es wird versucht die Verbindung neu aufzubauen...","Can't connect to internet. Please, check your connection.":"Keine Verbindung zum Internet möglich, bitte Zugangsdaten prüfen.",Complete:"Vollständig",Confirmations:"Bestätigungen",Conn:"Verbindungen","Connections to other nodes":"Verbindungen zu Nodes","Current Blockchain Tip (insight)":"Aktueller Blockchain Tip (insight)","Current Sync Status":"Aktueller Status",Details:"Details",Difficulty:"Schwierigkeit","Double spent attempt detected. From tx:":'Es wurde ein "double Spend" Versuch erkannt. Von tx:',"Error!":"Fehler!",Fee:"Gebühr","Final Balance":"Schlussbilanz","Finish Date":"Fertigstellung","Go to home":"Zur Startseite","Hash Serialized":"Hash Serialisiert",Height:"Höhe","Included in Block":"Eingefügt in Block","Incoherence in levelDB detected:":"Es wurde eine Zusammenhangslosigkeit in der LevelDB festgestellt:","Info Errors":"Fehlerbeschreibung","Initial Block Chain Height":"Ursprüngliche Blockchain Höhe",Input:"Eingänge","Last Block":"Letzter Block","Last Block Hash (dashd)":"Letzter Hash (dashd)","Latest Blocks":"Letzte Blöcke","Latest Transactions":"Letzte Transaktionen","Loading Address Information":"Lade Adressinformationen","Loading Block Information":"Lade Blockinformation","Loading Selected Date...":"Lade gewähltes Datum...","Loading Transaction Details":"Lade Transaktionsdetails","Loading Transactions...":"Lade Transaktionen...","Loading...":"Lade...","Mined Time":"Block gefunden (Mining)","Mined by":"Gefunden von","Mining Difficulty":"Schwierigkeitgrad","Next Block":"Nächster Block","No Inputs (Newly Generated Coins)":"Keine Eingänge (Neu generierte Coins)","No blocks yet.":"Keine Blöcke bisher.","No matching records found!":"Keine passenden Einträge gefunden!","No. Transactions":"Anzahl Transaktionen","Number Of Transactions":"Anzahl der Transaktionen",Output:"Ausgänge","Powered by":"Powered by","Previous Block":"Letzter Block","Protocol version":"Protokollversion","Proxy setting":"Proxyeinstellung","Received Time":"Eingangszeitpunkt","Redirecting...":"Umleitung...","Search for block, transaction or address":"Suche Block, Transaktion oder Adresse","See all blocks":"Alle Blöcke anzeigen","Show Transaction Output data":"Zeige Abgänge","Show all":"Zeige Alles","Show input":"Zeige Eingänge","Show less":"Weniger anzeigen","Show more":"Mehr anzeigen",Size:"Größe","Size (bytes)":"Größe (bytes)","Skipped Blocks (previously synced)":"Verworfene Blöcke (bereits syncronisiert)","Start Date":"Startdatum",Status:"Status",Summary:"Zusammenfassung","Summary confirmed":"Zusammenfassung bestätigt","Sync Progress":"Fortschritt","Sync Status":"Syncronisation","Sync Type":"Art der Syncronisation","Synced Blocks":"Syncronisierte Blöcke",Testnet:"Testnet aktiv","There are no transactions involving this address.":"Es gibt keine Transaktionen zu dieser Adressse","Time Offset":"Zeitoffset zu UTC",Timestamp:"Zeitstempel",Today:"Heute","Total Amount":"Gesamtsumme","Total Received":"Insgesamt empfangen","Total Sent":"Insgesamt gesendet",Transaction:"Transaktion","Transaction Output Set Information":"Transaktions Abgänge","Transaction Outputs":"Abgänge",Transactions:"Transaktionen",Type:"Typ",Unconfirmed:"Unbestätigt","Unconfirmed Transaction!":"Unbestätigte Transaktion!","Unconfirmed Txs Balance":"Unbestätigtes Guthaben","Value Out":"Wert",Version:"Version","Waiting for blocks...":"Warte auf Blöcke...","Waiting for transactions...":"Warte auf Transaktionen...","by date.":"nach Datum.","first seen at":"zuerst gesehen am",mined:"gefunden","mined on:":"vom:","Waiting for blocks":"Warte auf Blöcke"}),gettextCatalog.setStrings("es",{"(Input unconfirmed)":"(Entrada sin confirmar)","404 Page not found :(":"404 Página no encontrada :(",'insight is an open-source Dash blockchain explorer with complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by dashd RPC. Check out the source code.':'insight es un explorador de bloques de Dash open-source con un completo conjunto de REST y APIs de websockets que pueden ser usadas para escribir monederos de Dashs y otras aplicaciones que requieran consultar un explorador de bloques. Obtén el código en el repositorio abierto de GitHub.','insight is still in development, so be sure to report any bugs and provide feedback for improvement at our github issue tracker.':'insight esta en desarrollo aún, por ello agradecemos que nos reporten errores o sugerencias para mejorar el software. GitHub issue tracker.',About:"Acerca de",Address:"Dirección",Age:"Edad","Application Status":"Estado de la Aplicación","Best Block":"Mejor Bloque","Dash node information":"Información del nodo Dash",Block:"Bloque","Block Reward":"Bloque Recompensa",Blocks:"Bloques","Bytes Serialized":"Bytes Serializados","Can't connect to dashd to get live updates from the p2p network. (Tried connecting to dashd at {{host}}:{{port}} and failed.)":"No se pudo conectar a dashd para obtener actualizaciones en vivo de la red p2p. (Se intentó conectar a dashd de {{host}}:{{port}} y falló.)","Can't connect to insight server. Attempting to reconnect...":"No se pudo conectar al servidor insight. Intentando re-conectar...","Can't connect to internet. Please, check your connection.":"No se pudo conectar a Internet. Por favor, verifique su conexión.",Complete:"Completado",Confirmations:"Confirmaciones",Conn:"Con","Connections to other nodes":"Conexiones a otros nodos","Current Blockchain Tip (insight)":"Actual Blockchain Tip (insight)","Current Sync Status":"Actual Estado de Sincronización",Details:"Detalles",Difficulty:"Dificultad","Double spent attempt detected. From tx:":"Intento de doble gasto detectado. De la transacción:","Error!":"¡Error!",Fee:"Tasa","Final Balance":"Balance Final","Finish Date":"Fecha Final","Go to home":"Volver al Inicio","Hash Serialized":"Hash Serializado",Height:"Altura","Included in Block":"Incluido en el Bloque","Incoherence in levelDB detected:":"Detectada una incoherencia en levelDB:","Info Errors":"Errores de Información","Initial Block Chain Height":"Altura de la Cadena en Bloque Inicial",Input:"Entrada","Last Block":"Último Bloque","Last Block Hash (dashd)":"Último Bloque Hash (dashd)","Latest Blocks":"Últimos Bloques","Latest Transactions":"Últimas Transacciones","Loading Address Information":"Cargando Información de la Dirección","Loading Block Information":"Cargando Información del Bloque","Loading Selected Date...":"Cargando Fecha Seleccionada...","Loading Transaction Details":"Cargando Detalles de la Transacción","Loading Transactions...":"Cargando Transacciones...","Loading...":"Cargando...","Mined Time":"Hora de Minado","Mined by":"Minado por","Mining Difficulty":"Dificultad de Minado","Next Block":"Próximo Bloque","No Inputs (Newly Generated Coins)":"Sin Entradas (Monedas Recién Generadas)","No blocks yet.":"No hay bloques aún.","No matching records found!":"¡No se encontraron registros coincidentes!","No. Transactions":"Nro. de Transacciones","Number Of Transactions":"Número de Transacciones",Output:"Salida","Powered by":"Funciona con","Previous Block":"Bloque Anterior","Protocol version":"Versión del protocolo","Proxy setting":"Opción de proxy","Received Time":"Hora de Recibido","Redirecting...":"Redireccionando...","Search for block, transaction or address":"Buscar bloques, transacciones o direcciones","See all blocks":"Ver todos los bloques","Show Transaction Output data":"Mostrar dato de Salida de la Transacción","Show all":"Mostrar todos","Show input":"Mostrar entrada","Show less":"Ver menos","Show more":"Ver más",Size:"Tamaño","Size (bytes)":"Tamaño (bytes)","Skipped Blocks (previously synced)":"Bloques Saltados (previamente sincronizado)","Start Date":"Fecha de Inicio",Status:"Estado",Summary:"Resumen","Summary confirmed":"Resumen confirmados","Sync Progress":"Proceso de Sincronización","Sync Status":"Estado de Sincronización","Sync Type":"Tipo de Sincronización","Synced Blocks":"Bloques Sincornizados",Testnet:"Red de prueba","There are no transactions involving this address.":"No hay transacciones para esta dirección","Time Offset":"Desplazamiento de hora",Timestamp:"Fecha y hora",Today:"Hoy","Total Amount":"Cantidad Total","Total Received":"Total Recibido","Total Sent":"Total Enviado",Transaction:"Transacción","Transaction Output Set Information":"Información del Conjunto de Salida de la Transacción","Transaction Outputs":"Salidas de la Transacción",Transactions:"Transacciones",Type:"Tipo",Unconfirmed:"Sin confirmar","Unconfirmed Transaction!":"¡Transacción sin confirmar!","Unconfirmed Txs Balance":"Balance sin confirmar","Value Out":"Valor de Salida",Version:"Versión","Waiting for blocks...":"Esperando bloques...","Waiting for transactions...":"Esperando transacciones...","by date.":"por fecha.","first seen at":"Visto a",mined:"minado","mined on:":"minado el:","Waiting for blocks":"Esperando bloques"}),gettextCatalog.setStrings("fr_FR",{"(Input unconfirmed)":"(Entrée non confirmé)","404 Page not found :(":"404 Page introuvable :(",'insight is an open-source Dash blockchain explorer with complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by dashd RPC. Check out the source code.':'insight est un explorateur open-source de blocs avec un ensemble complet d\'API REST et websockets qui peuvent être utilisées pour écrire portefeuille et autres applications nécéssitant des requêtes plus complète que celles proposés par les commandes RPC de dashd. Consultez le code source sur GitHub.','insight is still in development, so be sure to report any bugs and provide feedback for improvement at our github issue tracker.':'insight est toujours en développement, hésitez pas à remonter tout bugs et proposer des améliorations sur notre GitHub issue tracker.',About:"À propos",Address:"Adresse",Age:"Âge","Application Status":"Status de l'application","Best Block":"Meilleur Bloc","Dash node information":"Information sur le noeud Dash",Block:"Bloc","Block Reward":"Recompense de bloc",Blocks:"Blocs","Bytes Serialized":"Octets sérialisés","Can't connect to dashd to get live updates from the p2p network. (Tried connecting to dashd at {{host}}:{{port}} and failed.)":"Impossible de se connecter à dashd pour récupérer les dernières informations du réseau p2p. (Tentative de connexion à dashd ({{host}}:{{port}}) échouée.)","Can't connect to insight server. Attempting to reconnect...":"Impossible de se connecter au serveur Insight. Tentative de reconnexion...","Can't connect to internet. Please, check your connection.":"Impossible de se connecter à internet. S'il vous plait, réessayer.",Complete:"Achevés",Confirmations:"Confirmations",Conn:"Conn","Connections to other nodes":"Connexion aux autre noeuds","Current Blockchain Tip (insight)":"Tip Actuel de la Blockchain (insight)","Current Sync Status":"Status actuel de synchronisation",Details:"Détails",Difficulty:"Difficultée","Double spent attempt detected. From tx:":"Tentative de double dépense détectée. Dans la tx:","Error!":"Erreur!",Fee:"Frais","Final Balance":"Solde final","Finish Date":"Date de fin","Go to home":"Retour à l'accueil","Hash Serialized":"Hash Serialisé",Height:"Hauteur","Included in Block":"Inclus dans le bloc","Incoherence in levelDB detected:":"Incohérence dans levelDB détectée:","Info Errors":"Erreurs d'informations","Initial Block Chain Height":"Hauteur de la chaîne initiale",Input:"Entrée","Last Block":"Dernier bloc","Last Block Hash (dashd)":"Hash du dernier bloc (dashd)","Latest Blocks":"Derniers Blocs","Latest Transactions":"Dernières transactions","Loading Address Information":"Chargement des informations de l'adresse","Loading Block Information":"Chagement des information du bloc","Loading Selected Date...":"Chargement de la date sélectionnée...","Loading Transaction Details":"Chargement des détails de la transaction","Loading Transactions...":"Chagement des Transactions...","Loading...":"Chargement...","Mined Time":"Heure de minage","Mined by":"Miné par","Mining Difficulty":"Difficultée de minage","Next Block":"Bloc suivant","No Inputs (Newly Generated Coins)":"Pas d'entrées (nouvellement générées)","No blocks yet.":"Aucun blocs pour l'instant.","No matching records found!":"Aucun enregistremements correspondants trouvés!","No. Transactions":"Transactions N°","Number Of Transactions":"Nombre de transaction",Output:"Sortie","Powered by":"Propulsé par","Previous Block":"Bloc précédent","Protocol version":"Version du protocol","Proxy setting":"Paramètre de proxy","Received Time":"Heure de réception","Redirecting...":"Redirection...","Search for block, transaction or address":"Rechercher des blocs, transactions ou adresses","See all blocks":"Voir tous les blocs","Show Transaction Output data":"Afficher les données de sortie de transaction","Show all":"Tout afficher","Show input":"Afficher l'entrée","Show less":"Voir moins","Show more":"Voir plus",Size:"Taille","Size (bytes)":"Taille (octets)","Skipped Blocks (previously synced)":"Blocs ignorés (préalablement synchronisés)","Start Date":"Date de début",Status:"Status",Summary:"Résumé","Summary confirmed":"Résume confirmé","Sync Progress":"Progression de la synchronication","Sync Status":"Status de la synchronisation","Sync Type":"Type de la synchronisation","Synced Blocks":"Blocs synchronisés",Testnet:"Réseau de test","There are no transactions involving this address.":"Il n'y a pas de transactions impliquant cette adresse.","Time Offset":"Décalage horaire",Timestamp:"Date et heure",Today:"Aujourd'hui","Total Amount":"Montant Total","Total Received":"Total Reçu","Total Sent":"Total Envoyés",Transaction:"Transaction","Transaction Output Set Information":"Informations sur l'ensemble des sorties de transaction","Transaction Outputs":"Sorties de transaction",Transactions:"Transactions",Type:"Type",Unconfirmed:"Non confirmée","Unconfirmed Transaction!":"Transaction non confirmée!","Unconfirmed Txs Balance":"Solde non confirmé","Value Out":"Valeur de sortie",Version:"Version","Waiting for blocks...":"En attente de blocs...","Waiting for transactions...":"En attente de transactions...","by date.":"par date.","first seen at":"aperçu la première fois le",mined:"miné","mined on:":"miné le:","Waiting for blocks":"Esperando bloques"}),gettextCatalog.setStrings("ja",{"(Input unconfirmed)":"(入力は未検証です)","404 Page not found :(":"404 ページがみつかりません (´・ω・`)",'insight is an open-source Dash blockchain explorer with complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by dashd RPC. Check out the source code.':'insightは、dashd RPCの提供するものよりも詳細なブロックチェインへの問い合わせを必要とするウェブウォレットやその他のアプリを書くのに使える、完全なRESTおよびwebsocket APIを備えたオープンソースのビットコインブロックエクスプローラです。ソースコードを確認','insight is still in development, so be sure to report any bugs and provide feedback for improvement at our github issue tracker.':'insightは現在開発中です。githubのissueトラッカにてバグの報告や改善案の提案をお願いします。',About:"はじめに",Address:"アドレス",Age:"生成後経過時間","An error occured in the verification process.":"検証過程でエラーが発生しました。","An error occured:
    {{error}}":"エラーが発生しました:
    {{error}}","Application Status":"アプリケーションの状態","Best Block":"最良ブロック","Dash comes with a way of signing arbitrary messages.":"Dashには任意のメッセージを署名する昨日が備わっています。","Dash node information":"Dashノード情報",Block:"ブロック","Block Reward":"ブロック報酬",Blocks:"ブロック","Broadcast Raw Transaction":"生のトランザクションを配信","Bytes Serialized":"シリアライズ後の容量 (バイト)","Can't connect to dashd to get live updates from the p2p network. (Tried connecting to dashd at {{host}}:{{port}} and failed.)":"P2Pネットワークからライブ情報を取得するためにdashdへ接続することができませんでした。({{host}}:{{port}} への接続を試みましたが、失敗しました。)","Can't connect to insight server. Attempting to reconnect...":"insight サーバに接続できません。再接続しています...","Can't connect to internet. Please, check your connection.":"インターネットに接続できません。コネクションを確認してください。",Complete:"完了",Confirmations:"検証数",Conn:"接続数","Connections to other nodes":"他ノードへの接続","Current Blockchain Tip (insight)":"現在のブロックチェインのTip (insight)","Current Sync Status":"現在の同期状況",Details:"詳細",Difficulty:"難易度","Double spent attempt detected. From tx:":"二重支払い攻撃をこのトランザクションから検知しました:","Error message:":"エラーメッセージ:","Error!":"エラー!",Fee:"手数料","Final Balance":"最終残高","Finish Date":"終了日時","Go to home":"ホームへ","Hash Serialized":"シリアライズデータのハッシュ値",Height:"ブロック高","Included in Block":"取り込まれたブロック","Incoherence in levelDB detected:":"levelDBの破損を検知しました:","Info Errors":"エラー情報","Initial Block Chain Height":"起動時のブロック高",Input:"入力","Last Block":"直前のブロック","Last Block Hash (dashd)":"直前のブロックのハッシュ値 (dashd)","Latest Blocks":"最新のブロック","Latest Transactions":"最新のトランザクション","Loading Address Information":"アドレス情報を読み込んでいます","Loading Block Information":"ブロック情報を読み込んでいます","Loading Selected Date...":"選択されたデータを読み込んでいます...","Loading Transaction Details":"トランザクションの詳細を読み込んでいます","Loading Transactions...":"トランザクションを読み込んでいます...","Loading...":"ロード中...",Message:"メッセージ","Mined Time":"採掘時刻","Mined by":"採掘者","Mining Difficulty":"採掘難易度","Next Block":"次のブロック","No Inputs (Newly Generated Coins)":"入力なし (新しく生成されたコイン)","No blocks yet.":"ブロックはありません。","No matching records found!":"一致するレコードはありません!","No. Transactions":"トランザクション数","Number Of Transactions":"トランザクション数",Output:"出力","Powered by":"Powered by","Previous Block":"前のブロック","Protocol version":"プロトコルバージョン","Proxy setting":"プロキシ設定","Raw transaction data":"トランザクションの生データ","Raw transaction data must be a valid hexadecimal string.":"生のトランザクションデータは有効な16進数でなければいけません。","Received Time":"受信時刻","Redirecting...":"リダイレクトしています...","Search for block, transaction or address":"ブロック、トランザクション、アドレスを検索","See all blocks":"すべてのブロックをみる","Send transaction":"トランザクションを送信","Show Transaction Output data":"トランザクションの出力データをみる","Show all":"すべて表示","Show input":"入力を表示","Show less":"隠す","Show more":"表示する",Signature:"署名",Size:"サイズ","Size (bytes)":"サイズ (バイト)","Skipped Blocks (previously synced)":"スキップされたブロック (同期済み)","Start Date":"開始日時",Status:"ステータス",Summary:"概要","Summary confirmed":"サマリ 検証済み","Sync Progress":"同期の進捗状況","Sync Status":"同期ステータス","Sync Type":"同期タイプ","Synced Blocks":"同期されたブロック数",Testnet:"テストネット","The message failed to verify.":"メッセージの検証に失敗しました。","The message is verifiably from {{verification.address}}.":"メッセージは{{verification.address}}により検証されました。","There are no transactions involving this address.":"このアドレスに対するトランザクションはありません。","This form can be used to broadcast a raw transaction in hex format over\n the Dash network.":"このフォームでは、16進数フォーマットの生のトランザクションをDashネットワーク上に配信することができます。","This form can be used to verify that a message comes from\n a specific Dash address.":"このフォームでは、メッセージが特定のDashアドレスから来たかどうかを検証することができます。","Time Offset":"時間オフセット",Timestamp:"タイムスタンプ",Today:"今日","Total Amount":"Dash総量","Total Received":"総入金額","Total Sent":"総送金額",Transaction:"トランザクション","Transaction Output Set Information":"トランザクションの出力セット情報","Transaction Outputs":"トランザクションの出力","Transaction succesfully broadcast.
    Transaction id: {{txid}}":"トランザクションの配信に成功しました。
    トランザクションID: {{txid}}",Transactions:"トランザクション",Type:"タイプ",Unconfirmed:"未検証","Unconfirmed Transaction!":"未検証のトランザクションです!","Unconfirmed Txs Balance":"未検証トランザクションの残高","Value Out":"出力値",Verify:"検証","Verify signed message":"署名済みメッセージを検証",Version:"バージョン","Waiting for blocks...":"ブロックを待っています...","Waiting for transactions...":"トランザクションを待っています...","by date.":"日毎。","first seen at":"最初に発見された日時",mined:"採掘された","mined on:":"採掘日時:","(Mainchain)":"(メインチェーン)","(Orphaned)":"(孤立したブロック)",Bits:"Bits","Block #{{block.height}}":"ブロック #{{block.height}}",BlockHash:"ブロックのハッシュ値","Blocks
    mined on:":"ブロック
    採掘日",Coinbase:"コインベース",Hash:"ハッシュ値",LockTime:"ロック時間","Merkle Root":"Merkleルート",Nonce:"Nonce","Ooops!":"おぉっと!","Output is spent":"出力は使用済みです","Output is unspent":"出力は未使用です",Scan:"スキャン","Show/Hide items details":"アイテムの詳細を表示または隠す","Waiting for blocks":"ブロックを待っています","by date. {{detail}} {{before}}":"日時順 {{detail}} {{before}}",scriptSig:"scriptSig","{{tx.confirmations}} Confirmations":"{{tx.confirmations}} 検証",' (Orphaned)':' (孤立したブロック)',' Incoherence in levelDB detected: {{vin.dbError}}':' Incoherence in levelDB detected: {{vin.dbError}}','Waiting for blocks ':'ブロックを待っています '}),gettextCatalog.setStrings("de_DE",{"(Input unconfirmed)":"(Input onbevestigd)","404 Page not found :(":"404 Pagina niet gevonden :(",'insight is an open-source Dash blockchain explorer with complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by dashd RPC. Check out the source code.':'insight is een opensource Dash-blokketenexplorer met volledige REST- en websocket-API\'s om eigen webportomonnee\'s en andere apps te implementeren. Hierdoor zijn meer geavanceerde query\'s op de blokketen mogelijk, dan die door RPC worden aangeboden. De actuele broncode is op GitHub te vinden.','insight is still in development, so be sure to report any bugs and provide feedback for improvement at our github issue tracker.':'insight is nog steeds in ontwikkeling. Dus rapporteer fouten (bugs) en geef terugkoppeling voor verbeteringen via onze issuetracker op GitHub.',About:"Over",Address:"Adres",Age:"Leeftijd","Application Status":"Programmastatus","Best Block":"Beste blok","Dash node information":"Dash-knooppuntinformatie",Block:"Blok","Block Reward":"Blokbeloning",Blocks:"Blokken","Bytes Serialized":"Geserialiseerde bytes","Can't connect to dashd to get live updates from the p2p network. (Tried connecting to dashd at {{host}}:{{port}} and failed.)":"Kan geen verbinding maken net dashd om liveupdates van het P2P-netwerk te ontvangen. (Geprobeerd verbinding te maken met dashd op {{host}}:{{port}} en is mislukt.)","Can't connect to insight server. Attempting to reconnect...":"Kan geen verbinding maken met de insight-server. Het wordt nog eens geprobeerd...","Can't connect to internet. Please, check your connection.":"Kan geen verbinding maken met het internet. Controleer je verbinding.",Complete:"Compleet",Confirmations:"Bevestigingen",Conn:"Verbindingen","Connections to other nodes":"Verbindingen met andere knooppunten","Current Blockchain Tip (insight)":"Huidige blokketentop (insight)","Current Sync Status":"Huidige synchronisatiestatus",Details:"Details",Difficulty:"Moeilijkheid","Double spent attempt detected. From tx:":'Er is een "dubbele uitgave" gedetecteerd. Van tx:',"Error!":"Fout!",Fee:"Transactiekosten","Final Balance":"Totaalsaldo","Finish Date":"Einddatum","Go to home":"Ga naar home","Hash Serialized":"Geserialiseerde hash",Height:"Hoogte","Included in Block":"Inbegrepen in blok","Incoherence in levelDB detected:":"Incoherentie is gedetecteerd in levelDB:","Info Errors":"Foutbeschrijving","Initial Block Chain Height":"Oorspronkelijke blokketenhoogte",Input:"Input","Last Block":"Laatste blok","Last Block Hash (dashd)":"Laatste blokhash (dashd)","Latest Blocks":"Recentste blok","Latest Transactions":"Recentste transacties","Loading Address Information":"Adresinformatie aan het laden","Loading Block Information":"Blokinformatie aan het laden","Loading Selected Date...":"Geselecteerde datum aan het laden...","Loading Transaction Details":"Transactiedetails aan het laden","Loading Transactions...":"Transacties aan het laden...","Loading...":"Aan het laden...","Mined Time":"Miningtijdstip","Mined by":"Gemined door","Mining Difficulty":"Miningmoeilijkheid","Next Block":"Volgende blok","No Inputs (Newly Generated Coins)":"Geen inputs (nieuw aangemaakte munten)","No blocks yet.":"Nog geen blokken.","No matching records found!":"Geen passende records gevonden!","No. Transactions":"Aantal transacties","Number Of Transactions":"Aantal transacties",Output:"Output","Powered by":"Aangedreven door","Previous Block":"Vorig blok","Protocol version":"Protocolversie","Proxy setting":"Proxy-instellingen","Received Time":"Onvangsttijdstip","Redirecting...":"Aan het omleiden...","Search for block, transaction or address":"Zoek op blok, transactie of adres","See all blocks":"Bekijk alle blokken","Show Transaction Output data":"Toon transactieoutputgegevens","Show all":"Toon alles","Show input":"Toon input","Show less":"Toon minder","Show more":"Toon meer",Size:"Grootte","Size (bytes)":"Grootte (bytes)","Skipped Blocks (previously synced)":"Overgeslagen blokken (voorheen gesynchroniseerd)","Start Date":"Startdatum",Status:"Status",Summary:"Samenvatting","Summary confirmed":"Samenvatting bevestigd","Sync Progress":"Synchronisatievoortgang","Sync Status":"Synchronisatiestatus","Sync Type":"Synchronisatietype","Synced Blocks":"Gesynchroniseerde blokken",Testnet:"Testnet actief","There are no transactions involving this address.":"Er zijn geen transacties gerelateerd aan dit adres.","Time Offset":"Tijdsoffset tot UTC",Timestamp:"Tijdsstempel",Today:"Vandaag","Total Amount":"Totaalbedrag","Total Received":"Totaal ontvangen","Total Sent":"Totaal verstuurd",Transaction:"Transactie","Transaction Output Set Information":"Transactieoutputsetinformatie","Transaction Outputs":"Transactieoutputs",Transactions:"Transacties",Type:"Type",Unconfirmed:"Onbevestigd","Unconfirmed Transaction!":"Onbevestigde transacties!","Unconfirmed Txs Balance":"Onbevestigde transactiesaldo","Value Out":"Waarde",Version:"Versie","Waiting for blocks...":"Op blokken aan het wachten...","Waiting for transactions...":"Op transacties aan het wachten...","by date.":"op datum.","first seen at":"voor het eerst gezien op",mined:"gemined","mined on:":"gemined op:","Waiting for blocks":"Op blokken aan het wachten"}),gettextCatalog.setStrings("pt_BR",{"(Input unconfirmed)":"(Entrada não confirmada)",'insight is an open-source Bitcoin blockchain explorer with complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by bitcoind RPC. Check out the source code.':'insight é um explorador de blocos Bitcoin de código aberto com um conjunto completo de APIs de websocket e REST que podem ser usadas para programar carteiras online e outros aplicativos que necessitam consultar um explorador de blocos. Confira o código-fonte.','insight is still in development, so be sure to report any bugs and provide feedback for improvement at our GitHub issue tracker.':'insight ainda está em desenvolvimento, portanto agradecemos que postem erros e sugestões para melhorias em nosso rastreador de problemas no GitHub.',"404 Page not found :(":"404 Página não encontrada :(",About:"Sobre",Address:"Endereço",Age:"Idade","An error occured in the verification process.":"Ocorreu um erro no processo de verificação.","An error occured:
    {{error}}":"Ocorreu um erro:
    {{error}}","Application Status":"Estado do Aplicativo","Bitcoin comes with a way of signing arbitrary messages.":"Bitcoin possui um método de assinar mensagens arbitrárias.","Bitcoin node information":"Informações do nó Bitcoin",Block:"Bloco","Block Reward":"Recompensa do Bloco",Blocks:"Blocos","Broadcast Raw Transaction":"Transmitir Transações Brutas","by date.":"por data.","Can't connect to bitcoind to get live updates from the p2p network. (Tried connecting to bitcoind at {{host}}:{{port}} and failed.)":"Não foi possível conectar-se ao bitcoind para obter atualizações em tempo real da rede p2p. (A tentativa de conectar-se à {{host}}:{{port}} falhou.)","Can't connect to insight server. Attempting to reconnect...":"Não foi possível conectar-se ao servidor insight. Tentando reconectar...","Can't connect to internet. Please, check your connection.":"Não foi possível conectar-se à internet. Verifique sua conexão.",Complete:"Completa",Confirmations:"Confirmações",Conn:"Con","Connections to other nodes":"Conexões a outros nós","Current Blockchain Tip (insight)":"Atual Blockchain Tip (insight)","Current Sync Status":"Estado Atual de Sincronização",Details:"Detalhes",Difficulty:"Dificuldade","Double spent attempt detected. From tx:":"Tentativa de gasto duplo detectada. Da transação:","Error message:":"Mensagem de erro:","Error!":"Erro!",Fee:"Taxa","Fee Rate":"Taxa por kilobyte","Final Balance":"Saldo Final","Finish Date":"Data de Término","first seen at":"visto pela primeira vez em","Go to home":"Voltar ao início",Height:"Altura","Included in Block":"Incluída no Bloco","Incoherence in levelDB detected:":"Incoerência no levelDB detectada:","Info Errors":"Erros de informação","Initial Block Chain Height":"Altura inicial da Blockchain",Input:"Entrada","Last Block":"Último Bloco","Last Block Hash (Bitcoind)":"Hash do Último Bloco (Bitcoind)","Latest Blocks":"Blocos Recentes","Latest Transactions":"Transações Recentes","Loading Address Information":"Carregando informações do endereço","Loading Block Information":"Carregando informações do bloco","Loading Selected Date...":"Carregando data selecionada...","Loading Transaction Details":"Carregando detalhes da transação","Loading Transactions...":"Carregando transações...","Loading...":"Carregando...",Message:"Mensagem",mined:"minerado","Mined by":"Minerado por","mined on:":"minerado em:","Mined Time":"Minerada em","Mining Difficulty":"Dificuldade de Mineração",Network:"Rede","Next Block":"Próximo Bloco","No blocks yet.":"Ainda não há blocos.","No Inputs (Newly Generated Coins)":"Nenhuma Entrada (moedas recém-geradas)","No matching records found!":"Não foram encontrados registros correspondentes!","No. Transactions":"Nº de transações","Number Of Transactions":"Número de Transações",Output:"Saída","Powered by":"Funciona com","Previous Block":"Bloco Anterior","Protocol version":"Versão do protocolo","Proxy setting":"Configuração de proxy","Raw transaction data":"Dados brutos da transação","Raw transaction data must be a valid hexadecimal string.":"Os dados brutos da transação devem ser uma string hexadecimal válida.","Received Time":"Recebida em","Redirecting...":"Redirecionando...","Search for block, transaction or address":"Procurar por blocos, transações ou endereços","See all blocks":"Visualizar todos os blocos","Send transaction":"Enviar transação","Show all":"Mostrar todos","Show input":"Mostrar entrada","Show less":"Mostrar menos","Show more":"Mostrar mais",Signature:"Assinatura",Size:"Tamanho","Size (bytes)":"Tamanho (bytes)","Skipped Blocks (previously synced)":"Blocos Ignorados (previamente sincronizados)","Start Date":"Data de Início",Status:"Estado",Summary:"Resumo","Summary confirmed":"Resumo confirmado","Sync Progress":"Progresso de Sincronização","Sync Status":"Estado de Sincronização","Sync Type":"Tipo de Sincronização","Synced Blocks":"Blocos sincronizados","The message failed to verify.":"Falha ao verificar a mensagem.","The message is verifiably from {{verification.address}}.":"A mensagem é verificável de {{verification.address}}.","There are no transactions involving this address.":"Não existem transações envolvendo este endereço.","This form can be used to broadcast a raw transaction in hex format over\r\n the Bitcoin network.":"Este formulário pode ser usado para transmitir uma transação bruta em formato \r\n hexadecimal para a rede Bitcoin.","This form can be used to verify that a message comes from\r\n a specific Bitcoin address.":"Este formulário pode ser usado para verificar se uma mensagem\r\n veio de um endereço Bitcoin específico.","Time Offset":"Compensação de Tempo",Timestamp:"Data e Hora",Today:"Hoje","Total Received":"Total Recebido","Total Sent":"Total Enviado",Transaction:"Transação","Transaction succesfully broadcast.
    Transaction id: {{txid}}":"Transação transmitida com sucesso.
    ID da transação: {{txid}}",Transactions:"Transações",Type:"Tipo",Unconfirmed:"Não confirmada","Unconfirmed Transaction!":"Transação não confirmada!","Unconfirmed Txs Balance":"Balanço de Transações não confirmadas","Value Out":"Valor de Saída",Verify:"Verificar","Verify signed message":"Verificar mensagem assinada",Version:"Versão","Waiting for blocks...":"Esperando por blocos...","Waiting for transactions...":"Esperando por transações..."}),gettextCatalog.setStrings("zh",{"(Input unconfirmed)":"输入未确定","404 Page not found :(":"404 页面不存在",'insight is an open-source Bitcoin blockchain explorer with complete REST and websocket APIs that can be used for writing web wallets and other apps that need more advanced blockchain queries than provided by bitcoind RPC. Check out the source code.':'insight是一个开源的比特币区块链浏览器。支持完整的REST和Web Socket API 调用,可用于编写Web钱包和其他需要比bitcoind RPC提供的更高级区块链查询的应用程序。查看源代码','insight is still in development, so be sure to report any bugs and provide feedback for improvement at our github issue tracker.':'该系统仍在开发中详情发现问题或提供反馈请报告给我们的开发人员',About:"关于",Address:"地址",Age:"生成时间","An error occured in the verification process.":"验证过程出错","An error occured:
    {{error}}":"发生错误
    {{error}}","Application Status":"程序状态","Best Block":"最好的块","Bitcoin comes with a way of signing arbitrary messages.":"Bitcoin可以签名任意消息","Bitcoin node information":"比特币节点信息",Block:"区块","Block Reward":"块报酬",Blocks:"区块","Blocks Num":"区块数","Broadcast Raw Transaction":"广播原始交易","Bytes Serialized":"序列化后的大小 (B)","Can't connect to bitcoind to get live updates from the p2p network. (Tried connecting to bitcoind at {{host}}:{{port}} and failed.)":"无法连接到BitCoin P2P网络。(尝试{{host}}:{{port}} 连接失败)","Can't connect to insight server. Attempting to reconnect...":"无法连接到服务器,正在重试","Can't connect to internet. Please, check your connection.":"无法连接到因特网,请检查连接",Complete:"完成",Confirmations:"个确认",Conn:"连接数","Connections to other nodes":"连接数","Current Blockchain Tip (insight)":"当前区块链Tip(insight)","Current Sync Status":"当前同步状态",Details:"详情",Difficulty:"难度","Double spent attempt detected. From tx:":"检测到双花,来自tx:","Error message:":"错误消息:","Error!":"错误",Fee:"手续费","Final Balance":"钱包余额","Finish Date":"结束日期","Go to home":"回主页","Hash Serialized":"Hash序列化",Height:"高度",BlockHeight:"区块高度","Included in Block":"所在区块","Incoherence in levelDB detected:":"在levelDB中检测到不一致:","Info Errors":"错误信息","Initial Block Chain Height":"最新区块高度",Input:"输入","Last Block":"最新区块信息","Last Block Hash (Bitcoind)":"最新区块哈希(Bitcoind)","Latest Blocks":"最新区块","Latest Transactions":"最新交易","Loading Address Information":"加载地址信息","Loading Block Information":"加载区块信息","Loading Selected Date...":"加载选择日期...","Loading Transaction Details":"加载交易详情","Loading Transactions...":"加载交易...","Loading...":"加载中...",Message:"消息","Mined Time":"挖掘时间","Mined by":"矿池","Mining Difficulty":"挖矿难度","Next Block":"下一个区块","No Inputs (Newly Generated Coins)":"没有输入(新生产的币)","No blocks yet.":"尚无区块","No Transactions.":"尚无交易...","No matching records found!":"没找到匹配的记录","No. Transactions":"交易数量","Number Of Transactions":"交易数目",Output:"输出","Powered by":"Powered by","Previous Block":"上一个区块","Protocol version":"协议版本","Proxy setting":"代理设置","Raw transaction data":"原始交易数据","Raw transaction data must be a valid hexadecimal string.":"原始交易数据必须是有效的十六进制","Received Time":"接收时间","Redirecting...":"重定向中...","Search for block, transaction or address":"查询区块高度、区块哈希、交易哈希或地址","See all blocks":"查看所有区块","See all transcations":"查看所有交易","Send transaction":"发送交易","Show Transaction Output data":"显示交易输出数据","Show all":"显示所有","Show input":"显示输入","Show less":"隐藏","Show more":"显示更多",Signature:"签名",Size:"大小","Size (bytes)":"大小(字节)","Skipped Blocks (previously synced)":"已跳过块数量","Start Date":"开始时间",Status:"状态",Summary:"摘要","Summary confirmed":"摘要已确认","Sync Progress":"同步进度","Sync Status":"同步状态","Sync Type":"同步类型","Synced Blocks":"已同步块数量",Testnet:"Testnet","The message failed to verify.":"验证消息失败","The message is verifiably from {{verification.address}}.":"消息由{{verification.address}}验证","There are no transactions involving this address.":"此地址没有发生过交易","This form can be used to broadcast a raw transaction in hex format over\n the Bitcoin network.":"此表单可用于以十六进制格式通过比特币网络广播一个原始事务。","This form can be used to verify that a message comes from\n a specific Bitcoin address.":"此表单可用于验证消息是否来自特定的比特币地址。","Time Offset":"时间偏移",Timestamp:"交易时间",Today:"今天","Total Amount":"总数","Total Received":"总收入","Total Sent":"总支出",Transaction:"交易","Transaction Hash":"交易哈希","Transaction Output Set Information":"交易输出集合信息","Transaction Outputs":"交易输出","Transaction succesfully broadcast.
    Transaction id: {{txid}}":"交易成功播报,
    交易ID: {{txid}}",Transactions:"交易",Type:"类别",Unconfirmed:"未确认","Unconfirmed Transaction!":"未确认!","Unconfirmed Txs Balance":"未确认的交易余额","Value Out":"输出值",Verify:"验证","Verify signed message":"验证签名消息",Version:"版本","Waiting for blocks...":"等待区块...","Waiting for transactions...":"等待交易...","by date.":"按日期","first seen at":"最初发现于",mined:"挖掘","mined on:":"挖掘日期",Home:"首页",History:"历史",Blacklist:"黑名单",Network:"网络",syncing:"同步中",synced:"同步完成","Merkle Root":"Merkle根",Nonce:"随机数",Blockhash:"区块哈希","Fee Rate":"费率"})}]); \ No newline at end of file diff --git a/public/js/vendors.min.js b/public/js/vendors.min.js index 8a60c53e5..f12db10b9 100644 --- a/public/js/vendors.min.js +++ b/public/js/vendors.min.js @@ -1,2 +1,2 @@ -/*! @dashevo/insight-ui 4.0.2 */ +/*! @dashevo/insight-ui 4.0.4 */ !function(){function renderImageToCanvas(img,canvas,options,doSquash){var iw=img.naturalWidth,ih=img.naturalHeight,width=options.width,height=options.height,ctx=canvas.getContext("2d");ctx.save(),function(canvas,width,height,orientation){switch(orientation){case 5:case 6:case 7:case 8:canvas.width=height,canvas.height=width;break;default:canvas.width=width,canvas.height=height}var ctx=canvas.getContext("2d");switch(orientation){case 2:ctx.translate(width,0),ctx.scale(-1,1);break;case 3:ctx.translate(width,height),ctx.rotate(Math.PI);break;case 4:ctx.translate(0,height),ctx.scale(1,-1);break;case 5:ctx.rotate(.5*Math.PI),ctx.scale(1,-1);break;case 6:ctx.rotate(.5*Math.PI),ctx.translate(0,-height);break;case 7:ctx.rotate(.5*Math.PI),ctx.translate(width,-height),ctx.scale(-1,1);break;case 8:ctx.rotate(-.5*Math.PI),ctx.translate(-width,0)}}(canvas,width,height,options.orientation);!function(img){var canvas,iw=img.naturalWidth;return 1048576>1;return 0==(img=py/ih)?1:img}(img,ih):1,dw=Math.ceil(d*width/iw),dh=Math.ceil(d*height/ih/canvas),sy=0,dy=0;sy>i&1);_modules[Math.floor(i/3)][i%3+_moduleCount-8-3]=mod}for(i=0;i<18;i+=1){mod=!test&&1==(bits>>i&1);_modules[i%3+_moduleCount-8-3][Math.floor(i/3)]=mod}},setupTypeInfo=function(test,maskPattern){for(var bits=QRUtil.getBCHTypeInfo(_errorCorrectLevel<<3|maskPattern),i=0;i<15;i+=1){var mod=!test&&1==(bits>>i&1);i<6?_modules[i][8]=mod:i<8?_modules[i+1][8]=mod:_modules[_moduleCount-15+i][8]=mod}for(i=0;i<15;i+=1){mod=!test&&1==(bits>>i&1);i<8?_modules[8][_moduleCount-i-1]=mod:i<9?_modules[8][15-i-1+1]=mod:_modules[8][15-i-1]=mod}_modules[_moduleCount-8][8]=!test},mapData=function(data,maskPattern){for(var inc=-1,row=_moduleCount-1,bitIndex=7,byteIndex=0,maskFunc=QRUtil.getMaskFunction(maskPattern),col=_moduleCount-1;0>>bitIndex&1)),mask=maskFunc(row,col-c),_modules[row][col-c]=dark=mask?!dark:dark,-1==--bitIndex&&(byteIndex+=1,bitIndex=7));if((row+=inc)<0||_moduleCount<=row){row-=inc,inc=-inc;break}}},createData=function(typeNumber,errorCorrectLevel,dataList){for(var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel),buffer=qrBitBuffer(),i=0;i8*totalDataCount)throw new Error("code length overflow. ("+buffer.getLengthInBits()+">"+8*totalDataCount+")");for(buffer.getLengthInBits()+4<=8*totalDataCount&&buffer.put(0,4);buffer.getLengthInBits()%8!=0;)buffer.putBit(!1);for(;;){if(buffer.getLengthInBits()>=8*totalDataCount)break;if(buffer.put(236,8),buffer.getLengthInBits()>=8*totalDataCount)break;buffer.put(17,8)}return function(buffer,rsBlocks){for(var offset=0,maxDcCount=0,maxEcCount=0,dcdata=new Array(rsBlocks.length),ecdata=new Array(rsBlocks.length),r=0;r'+"",r=0;r<_this.getModuleCount();r+=1){qrHtml+="";for(var c=0;c<_this.getModuleCount();c+=1)qrHtml=(qrHtml=(qrHtml=(qrHtml+='';qrHtml+=""}return qrHtml=qrHtml+""+""},_this.createImgTag=function(cellSize,margin){cellSize=cellSize||2,margin=void 0===margin?4*cellSize:margin;var size=_this.getModuleCount()*cellSize+2*margin,min=margin,max=size-margin;return createImgTag(size,size,function(x,y){return min<=x&&x>>8),bytes.push(255&c)):bytes.push(unknownChar)}return bytes}};var PATTERN_POSITION_TABLE,_this,QRMode_MODE_NUMBER=1,QRMode_MODE_ALPHA_NUM=2,QRMode_MODE_8BIT_BYTE=4,QRMode_MODE_KANJI=8,QRErrorCorrectLevel={L:1,M:0,Q:3,H:2},QRMaskPattern_PATTERN000=0,QRMaskPattern_PATTERN001=1,QRMaskPattern_PATTERN010=2,QRMaskPattern_PATTERN011=3,QRMaskPattern_PATTERN100=4,QRMaskPattern_PATTERN101=5,QRMaskPattern_PATTERN110=6,QRMaskPattern_PATTERN111=7,QRUtil=(PATTERN_POSITION_TABLE=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],(_this={}).getBCHTypeInfo=function(data){for(var d=data<<10;0<=getBCHDigit(d)-getBCHDigit(1335);)d^=1335<>>=1;return digit}var QRMath=function(){for(var EXP_TABLE=new Array(256),LOG_TABLE=new Array(256),i=0;i<8;i+=1)EXP_TABLE[i]=1<>>_buflen-6),_buflen-=6},flush:function(){if(0<_buflen&&(writeEncoded(_buffer<<6-_buflen),_buflen=_buffer=0),_length%3!=0)for(var padlen=3-_length%3,i=0;i>>length!=0)throw new Error("length over");for(;8<=_bitLength+length;)_out.writeByte(255&(data<<_bitLength|_bitBuffer)),length-=8-_bitLength,data>>>=8-_bitLength,_bitLength=_bitBuffer=0;_bitBuffer|=data<<_bitLength,_bitLength+=length},flush:function(){0<_bitLength&&_out.writeByte(_bitBuffer)}}),dataIndex=(bitOut.write(clearCode,bitLength),0),s=String.fromCharCode(_data[dataIndex]);for(dataIndex+=1;dataIndex<_data.length;){var c=String.fromCharCode(_data[dataIndex]);dataIndex+=1,table.contains(s+c)?s+=c:(bitOut.write(table.indexOf(s),bitLength),table.size()<4095&&(table.size()==1<>>7-index%8&1)},put:function(num,length){for(var i=0;i>>length-i-1&1))},getLengthInBits:function(){return _length},putBit:function(bit){var bufIndex=Math.floor(_length/8);_buffer.length<=bufIndex&&_buffer.push(0),bit&&(_buffer[bufIndex]|=128>>>_length%8),_length+=1}};return _this},qr8BitByte=function(data){var _mode=QRMode_MODE_8BIT_BYTE,_bytes=qrcode.stringToBytes(data),data={getMode:function(){return _mode},getLength:function(buffer){return _bytes.length},write:function(buffer){for(var i=0;i<_bytes.length;i+=1)buffer.put(_bytes[i],8)}};return data},byteArrayOutputStream=function(){var _bytes=new Array,_this={writeByte:function(b){_bytes.push(255&b)},writeShort:function(i){_this.writeByte(i),_this.writeByte(i>>>8)},writeBytes:function(b,off,len){off=off||0,len=len||b.length;for(var i=0;i=_str.length){if(0==_buflen)return-1;throw new Error("unexpected end of file./"+_buflen)}var c=_str.charAt(_pos);if(_pos+=1,"="==c)return _buflen=0,-1;c.match(/^\s$/)||(_buffer=_buffer<<6|decode(c.charCodeAt(0)),_buflen+=6)}var n=_buffer>>>_buflen-8&255;return _buflen-=8,n}},decode=function(c){if(65<=c&&c<=90)return c-65;if(97<=c&&c<=122)return c-97+26;if(48<=c&&c<=57)return c-48+52;if(43==c)return 62;if(47==c)return 63;throw new Error("c:"+c)};return str},createImgTag=function(width,height,getPixel,alt){for(var gif=gifImage(width,height),y=0;yMath.abs(toX-fromX),dx=(steep&&(temp=fromX,fromX=fromY,fromY=temp,temp=toX,toX=toY,toY=temp),Math.abs(toX-fromX)),dy=Math.abs(toY-fromY),error=-dx>>1,ystep=fromY=qrcode.width&&(scale=(qrcode.width-1-fromX)/(toX-fromX),toX=qrcode.width-1),Math.floor(fromY-(toY-fromY)*scale)),scale=1;return toY<0?(scale=fromY/(fromY-toY),toY=0):toY>=qrcode.height&&(scale=(qrcode.height-1-fromY)/(toY-fromY),toY=qrcode.height-1),toX=Math.floor(fromX+(toX-fromX)*scale),(result+=this.sizeOfBlackWhiteBlackRun(fromX,fromY,toX,toY))-1},this.calculateModuleSizeOneWay=function(pattern,otherPattern){var moduleSizeEst1=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(pattern.X),Math.floor(pattern.Y),Math.floor(otherPattern.X),Math.floor(otherPattern.Y)),otherPattern=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(otherPattern.X),Math.floor(otherPattern.Y),Math.floor(pattern.X),Math.floor(pattern.Y));return isNaN(moduleSizeEst1)?otherPattern/7:isNaN(otherPattern)?moduleSizeEst1/7:(moduleSizeEst1+otherPattern)/14},this.calculateModuleSize=function(topLeft,topRight,bottomLeft){return(this.calculateModuleSizeOneWay(topLeft,topRight)+this.calculateModuleSizeOneWay(topLeft,bottomLeft))/2},this.distance=function(pattern1,pattern2){return xDiff=pattern1.X-pattern2.X,yDiff=pattern1.Y-pattern2.Y,Math.sqrt(xDiff*xDiff+yDiff*yDiff)},this.computeDimension=function(topLeft,topRight,bottomLeft,moduleSize){var dimension=7+(Math.round(this.distance(topLeft,topRight)/moduleSize)+Math.round(this.distance(topLeft,bottomLeft)/moduleSize)>>1);switch(3&dimension){case 0:dimension++;break;case 2:dimension--;break;case 3:throw"Error"}return dimension},this.findAlignmentInRegion=function(overallEstModuleSize,estAlignmentX,estAlignmentY,allowanceFactor){var allowanceFactor=Math.floor(allowanceFactor*overallEstModuleSize),alignmentAreaLeftX=Math.max(0,estAlignmentX-allowanceFactor),estAlignmentX=Math.min(qrcode.width-1,estAlignmentX+allowanceFactor);if(estAlignmentX-alignmentAreaLeftX<3*overallEstModuleSize)throw"Error";var alignmentAreaTopY=Math.max(0,estAlignmentY-allowanceFactor),estAlignmentY=Math.min(qrcode.height-1,estAlignmentY+allowanceFactor);return new AlignmentPatternFinder(this.image,alignmentAreaLeftX,alignmentAreaTopY,estAlignmentX-alignmentAreaLeftX,estAlignmentY-alignmentAreaTopY,overallEstModuleSize,this.resultPointCallback).find()},this.createTransform=function(topLeft,topRight,bottomLeft,alignmentPattern,dimension){var bottomRightX,bottomRightY,dimension=dimension-3.5,sourceBottomRightX=alignmentPattern=null!=alignmentPattern?(bottomRightX=alignmentPattern.X,bottomRightY=alignmentPattern.Y,dimension-3):(bottomRightX=topRight.X-topLeft.X+bottomLeft.X,bottomRightY=topRight.Y-topLeft.Y+bottomLeft.Y,dimension);return PerspectiveTransform.quadrilateralToQuadrilateral(3.5,3.5,dimension,3.5,sourceBottomRightX,alignmentPattern,3.5,dimension,topLeft.X,topLeft.Y,topRight.X,topRight.Y,bottomRightX,bottomRightY,bottomLeft.X,bottomLeft.Y)},this.sampleGrid=function(image,transform,dimension){return GridSampler.sampleGrid3(image,dimension,transform)},this.processFinderPatternInfo=function(info){var topLeft=info.TopLeft,topRight=info.TopRight,info=info.BottomLeft,moduleSize=this.calculateModuleSize(topLeft,topRight,info);if(moduleSize<1)throw"Error";var dimension=this.computeDimension(topLeft,topRight,info,moduleSize),provisionalVersion=Version.getProvisionalVersionForDimension(dimension),modulesBetweenFPCenters=provisionalVersion.DimensionForVersion-7,alignmentPattern=null;if(0>1),points[x+1]=iValue;transform.transformPoints1(points),GridSampler.checkAndNudgePoints(image,points);try{for(x=0;x>1,y)}}catch(aioobe){throw"Error.checkAndNudgePoints"}}return bits},sampleGridx:function(image,dimension,p1ToX,p1ToY,p2ToX,p2ToY,p3ToX,p3ToY,p4ToX,p4ToY,p1FromX,p1FromY,p2FromX,p2FromY,p3FromX,p3FromY,p4FromX,p4FromY){p1ToX=PerspectiveTransform.quadrilateralToQuadrilateral(p1ToX,p1ToY,p2ToX,p2ToY,p3ToX,p3ToY,p4ToX,p4ToY,p1FromX,p1FromY,p2FromX,p2FromY,p3FromX,p3FromY,p4FromX,p4FromY);return GridSampler.sampleGrid3(image,dimension,p1ToX)}},Version.VERSION_DECODE_INFO=new Array(31892,34236,39577,42195,48118,51042,55367,58893,63784,68472,70749,76311,79154,84390,87683,92361,96236,102084,102881,110507,110734,117786,119615,126325,127568,133589,136944,141498,145311,150283,152622,158308,161089,167017),Version.VERSIONS=buildVersions(),Version.getVersionForNumber=function(versionNumber){if(versionNumber<1||40>2)}catch(iae){throw"Error getVersionForNumber"}},Version.decodeVersionInformation=function(versionBits){for(var bestDifference=4294967295,bestVersion=0,i=0;i>3&3),this.dataMask=7&formatInfo,this.__defineGetter__("ErrorCorrectionLevel",function(){return this.errorCorrectionLevel}),this.__defineGetter__("DataMask",function(){return this.dataMask}),this.GetHashCode=function(){return this.errorCorrectionLevel.ordinal()<<3|dataMask},this.Equals=function(o){return this.errorCorrectionLevel==o.errorCorrectionLevel&&this.dataMask==o.dataMask}}function ErrorCorrectionLevel(ordinal,bits,name){this.ordinal_Renamed_Field=ordinal,this.bits=bits,this.name=name,this.__defineGetter__("Bits",function(){return this.bits}),this.__defineGetter__("Name",function(){return this.name}),this.ordinal=function(){return this.ordinal_Renamed_Field}}FormatInformation.numBitsDiffering=function(a,b){return BITS_SET_IN_HALF_BYTE[15&(a^=b)]+BITS_SET_IN_HALF_BYTE[15&URShift(a,4)]+BITS_SET_IN_HALF_BYTE[15&URShift(a,8)]+BITS_SET_IN_HALF_BYTE[15&URShift(a,12)]+BITS_SET_IN_HALF_BYTE[15&URShift(a,16)]+BITS_SET_IN_HALF_BYTE[15&URShift(a,20)]+BITS_SET_IN_HALF_BYTE[15&URShift(a,24)]+BITS_SET_IN_HALF_BYTE[15&URShift(a,28)]},FormatInformation.decodeFormatInformation=function(maskedFormatInfo){var formatInfo=FormatInformation.doDecodeFormatInformation(maskedFormatInfo);return null!=formatInfo?formatInfo:FormatInformation.doDecodeFormatInformation(maskedFormatInfo^FORMAT_INFO_MASK_QR)},FormatInformation.doDecodeFormatInformation=function(maskedFormatInfo){for(var bestDifference=4294967295,bestFormatInfo=0,i=0;i=FOR_BITS.length)throw"ArgumentException";return FOR_BITS[bits]};var L=new ErrorCorrectionLevel(0,1,"L"),M=new ErrorCorrectionLevel(1,0,"M"),Q=new ErrorCorrectionLevel(2,3,"Q"),H=new ErrorCorrectionLevel(3,2,"H"),FOR_BITS=new Array(M,L,H,Q);function BitMatrix(width,height){if(height=height||width,width<1||height<1)throw"Both dimensions must be greater than 0";this.width=width,this.height=height;var rowSize=width>>5;0!=(31&width)&&rowSize++,this.rowSize=rowSize,this.bits=new Array(rowSize*height);for(var i=0;i>5);return 0!=(1&URShift(this.bits[y],31&x))},this.set_Renamed=function(x,y){y=y*this.rowSize+(x>>5);this.bits[y]|=1<<(31&x)},this.flip=function(x,y){y=y*this.rowSize+(x>>5);this.bits[y]^=1<<(31&x)},this.clear=function(){for(var max=this.bits.length,i=0;ithis.height||right>this.width)throw"The region must fit inside the matrix";for(var y=top;y>5)]|=1<<(31&x)}}function DataBlock(numDataCodewords,codewords){this.numDataCodewords=numDataCodewords,this.codewords=codewords,this.__defineGetter__("NumDataCodewords",function(){return this.numDataCodewords}),this.__defineGetter__("Codewords",function(){return this.codewords})}function BitMatrixParser(bitMatrix){var dimension=bitMatrix.Dimension;if(dimension<21||1!=(3&dimension))throw"Error BitMatrixParser";this.bitMatrix=bitMatrix,this.parsedVersion=null,this.parsedFormatInfo=null,this.copyBit=function(i,j,versionBits){return this.bitMatrix.get_Renamed(i,j)?versionBits<<1|1:versionBits<<1},this.readFormatInformation=function(){if(null!=this.parsedFormatInfo)return this.parsedFormatInfo;for(var formatInfoBits=0,i=0;i<6;i++)formatInfoBits=this.copyBit(i,8,formatInfoBits);formatInfoBits=this.copyBit(7,8,formatInfoBits),formatInfoBits=this.copyBit(8,8,formatInfoBits);for(var formatInfoBits=this.copyBit(8,7,formatInfoBits),j=5;0<=j;j--)formatInfoBits=this.copyBit(8,j,formatInfoBits);if(this.parsedFormatInfo=FormatInformation.decodeFormatInformation(formatInfoBits),null!=this.parsedFormatInfo)return this.parsedFormatInfo;for(var dimension=this.bitMatrix.Dimension,iMin=(formatInfoBits=0,dimension-8),i=dimension-1;iMin<=i;i--)formatInfoBits=this.copyBit(i,8,formatInfoBits);for(j=dimension-7;j>2;if(provisionalVersion<=6)return Version.getVersionForNumber(provisionalVersion);for(var versionBits=0,ijMin=dimension-11,j=5;0<=j;j--)for(var i=dimension-9;ijMin<=i;i--)versionBits=this.copyBit(i,j,versionBits);if(this.parsedVersion=Version.decodeVersionInformation(versionBits),null!=this.parsedVersion&&this.parsedVersion.DimensionForVersion==dimension)return this.parsedVersion;for(versionBits=0,i=5;0<=i;i--)for(j=dimension-9;ijMin<=j;j--)versionBits=this.copyBit(i,j,versionBits);if(this.parsedVersion=Version.decodeVersionInformation(versionBits),null!=this.parsedVersion&&this.parsedVersion.DimensionForVersion==dimension)return this.parsedVersion;throw"Error readVersion"},this.readCodewords=function(){for(var formatInfo=this.readFormatInformation(),version=this.readVersion(),formatInfo=DataMask.forReference(formatInfo.DataMask),dimension=this.bitMatrix.Dimension,functionPattern=(formatInfo.unmaskBitMatrix(this.bitMatrix,dimension),version.buildFunctionPattern()),readingUp=!0,result=new Array(version.TotalCodewords),resultOffset=0,currentByte=0,bitsRead=0,j=dimension-1;0=Math.floor(R/2);){var rLastLast=rLast,sLastLast=sLast,tLastLast=tLast,sLast=s,tLast=t;if((rLast=r).Zero)throw"r_{i-1} was zero";r=rLastLast;for(var q=this.field.Zero,rLastLast=rLast.getCoefficient(rLast.Degree),dltInverse=this.field.inverse(rLastLast);r.Degree>=rLast.Degree&&!r.Zero;)var degreeDiff=r.Degree-rLast.Degree,scale=this.field.multiply(r.getCoefficient(r.Degree),dltInverse),q=q.addOrSubtract(this.field.buildMonomial(degreeDiff,scale)),r=r.addOrSubtract(rLast.multiplyByMonomial(degreeDiff,scale));s=q.multiply1(sLast).addOrSubtract(sLastLast),t=q.multiply1(tLast).addOrSubtract(tLastLast)}var temp=t.getCoefficient(0);if(0==temp)throw"ReedSolomonException sigmaTilde(0) was zero";a=this.field.inverse(temp),b=t.multiply2(a),temp=r.multiply2(a);return new Array(b,temp)},this.findErrorLocations=function(errorLocator){var numErrors=errorLocator.Degree;if(1==numErrors)return new Array(errorLocator.getCoefficient(1));for(var result=new Array(numErrors),e=0,i=1;i<256&&elargerCoefficients.length&&(other=smallerCoefficients,smallerCoefficients=largerCoefficients,largerCoefficients=other),new Array(largerCoefficients.length)),lengthDiff=largerCoefficients.length-smallerCoefficients.length,ci=0;ci=other.Degree&&!remainder.Zero;)var degreeDifference=remainder.Degree-other.Degree,scale=this.field.multiply(remainder.getCoefficient(remainder.Degree),inverseDenominatorLeadingTerm),term=other.multiplyByMonomial(degreeDifference,scale),degreeDifference=this.field.buildMonomial(degreeDifference,scale),quotient=quotient.addOrSubtract(degreeDifference),remainder=remainder.addOrSubtract(term);return new Array(quotient,remainder)}}function GF256(primitive){this.expTable=new Array(256),this.logTable=new Array(256);for(var x=1,i=0;i<256;i++)this.expTable[i]=x,256<=(x<<=1)&&(x^=primitive);for(i=0;i<255;i++)this.logTable[this.expTable[i]]=i;var at0=new Array(1),at0=(at0[0]=0,this.zero=new GF256Poly(this,new Array(at0)),new Array(1));at0[0]=1,this.one=new GF256Poly(this,new Array(at0)),this.__defineGetter__("Zero",function(){return this.zero}),this.__defineGetter__("One",function(){return this.one}),this.buildMonomial=function(degree,coefficient){if(degree<0)throw"System.ArgumentException";if(0==coefficient)return zero;for(var coefficients=new Array(degree+1),i=0;i>bits:(number>>bits)+(2<<~bits)}DataBlock.getDataBlocks=function(rawCodewords,version,ecLevel){if(rawCodewords.length!=version.TotalCodewords)throw"ArgumentException";for(var ecBlocks=version.getECBlocksForLevel(ecLevel),totalBlocks=0,ecBlockArray=ecBlocks.getECBlocks(),i=0;iqrcode.maxImgSize&&(nwidth=(ir=image.width/image.height)*(nheight=Math.sqrt(qrcode.maxImgSize/ir))),canvas_qr.width=nwidth,canvas_qr.height=nheight,context.drawImage(image,0,0,canvas_qr.width,canvas_qr.height),qrcode.width=canvas_qr.width,qrcode.height=canvas_qr.height;try{qrcode.imagedata=context.getImageData(0,0,canvas_qr.width,canvas_qr.height)}catch(e){return qrcode.result="Cross domain image reading not supported in your browser! Save it to your computer then drag and drop the file!",void(null!=qrcode.callback&&qrcode.callback(qrcode.result))}try{qrcode.result=qrcode.process(context)}catch(e){console.log(e),qrcode.result="error decoding QR Code"}null!=qrcode.callback&&qrcode.callback(qrcode.result)},image.src=src},qrcode.isUrl=function(s){return/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/.test(s)},qrcode.decode_url=function(s){var escaped="";try{escaped=escape(s)}catch(e){console.log(e),escaped=s}s="";try{s=decodeURIComponent(escaped)}catch(e){console.log(e),s=escaped}return s},qrcode.decode_utf8=function(s){return qrcode.isUrl(s)?qrcode.decode_url(s):s},qrcode.process=function(ctx){var start=(new Date).getTime(),image=qrcode.grayScaleToBitmap(qrcode.grayscale());if(qrcode.debug){for(var y=0;yminmax[ax][ay][1]&&(minmax[ax][ay][1]=target)}}for(var middle=new Array(4),i3=0;i3<4;i3++)middle[i3]=new Array(4);for(ay=0;ay<4;ay++)for(ax=0;ax<4;ax++)middle[ax][ay]=Math.floor((minmax[ax][ay][0]+minmax[ax][ay][1])/2);return middle},qrcode.grayScaleToBitmap=function(grayScale){for(var middle=qrcode.getMiddleBrightnessPerArea(grayScale),sqrtNumArea=middle.length,areaWidth=Math.floor(qrcode.width/sqrtNumArea),areaHeight=Math.floor(qrcode.height/sqrtNumArea),bitmap=new Array(qrcode.height*qrcode.width),ay=0;aymaxCount)return NaN;for(;0<=i&&image[centerJ+i*qrcode.width]&&stateCount[0]<=maxCount;)stateCount[0]++,i--;if(stateCount[0]>maxCount)return NaN;for(i=startI+1;i=maxCount)return NaN;for(;i=maxCount)&&(startI=stateCount[0]+stateCount[1]+stateCount[2]+stateCount[3]+stateCount[4],!(5*Math.abs(startI-originalStateCountTotal)>=2*originalStateCountTotal)&&this.foundPatternCross(stateCount))?this.centerFromEnd(stateCount,i):NaN},this.crossCheckHorizontal=function(startJ,centerI,maxCount,originalStateCountTotal){for(var image=this.image,maxJ=qrcode.width,stateCount=this.CrossCheckStateCount,j=startJ;0<=j&&image[j+centerI*qrcode.width];)stateCount[2]++,j--;if(j<0)return NaN;for(;0<=j&&!image[j+centerI*qrcode.width]&&stateCount[1]<=maxCount;)stateCount[1]++,j--;if(j<0||stateCount[1]>maxCount)return NaN;for(;0<=j&&image[j+centerI*qrcode.width]&&stateCount[0]<=maxCount;)stateCount[0]++,j--;if(stateCount[0]>maxCount)return NaN;for(j=startJ+1;j=maxCount)return NaN;for(;j=maxCount)&&(startJ=stateCount[0]+stateCount[1]+stateCount[2]+stateCount[3]+stateCount[4],!(5*Math.abs(startJ-originalStateCountTotal)>=originalStateCountTotal)&&this.foundPatternCross(stateCount))?this.centerFromEnd(stateCount,j):NaN},this.handlePossibleCenter=function(stateCount,i,j){var stateCountTotal=stateCount[0]+stateCount[1]+stateCount[2]+stateCount[3]+stateCount[4],centerJ=this.centerFromEnd(stateCount,j),centerI=this.crossCheckVertical(i,Math.floor(centerJ),stateCount[2],stateCountTotal);if(isNaN(centerI)||(centerJ=this.crossCheckHorizontal(Math.floor(centerJ),Math.floor(centerI),stateCount[2],stateCountTotal),isNaN(centerJ)))return!1;for(var estimatedModuleSize=stateCountTotal/7,found=!1,max=this.possibleCenters.length,index=0;indexlimit&&(this.possibleCenters.remove(i),i--)}}return 3b.count?-1:a.count=CENTER_QUORUM){if(null!=firstConfirmedCenter)return this.hasSkipped=!0,Math.floor((Math.abs(firstConfirmedCenter.X-center.X)-Math.abs(firstConfirmedCenter.Y-center.Y))/2);firstConfirmedCenter=center}}return 0},this.haveMultiplyConfirmedCenters=function(){for(var confirmedCount=0,totalModuleSize=0,max=this.possibleCenters.length,i=0;i=CENTER_QUORUM&&(confirmedCount++,totalModuleSize+=pattern.EstimatedModuleSize)}if(confirmedCount<3)return!1;for(var average=totalModuleSize/max,totalDeviation=0,i=0;istateCount[2]&&(i+=rowSkip-stateCount[2]-iSkip,j=maxJ-1)}else{for(;++j=maxVariance)return!1;return!0},this.crossCheckVertical=function(startI,centerJ,maxCount,originalStateCountTotal){for(var image=this.image,maxI=qrcode.height,stateCount=this.crossCheckStateCount,i=(stateCount[0]=0,stateCount[1]=0,stateCount[2]=0,startI);0<=i&&image[centerJ+i*qrcode.width]&&stateCount[1]<=maxCount;)stateCount[1]++,i--;if(i<0||stateCount[1]>maxCount)return NaN;for(;0<=i&&!image[centerJ+i*qrcode.width]&&stateCount[0]<=maxCount;)stateCount[0]++,i--;if(stateCount[0]>maxCount)return NaN;for(i=startI+1;imaxCount)return NaN;for(;imaxCount)&&(startI=stateCount[0]+stateCount[1]+stateCount[2],!(5*Math.abs(startI-originalStateCountTotal)>=2*originalStateCountTotal)&&this.foundPatternCross(stateCount))?this.centerFromEnd(stateCount,i):NaN},this.handlePossibleCenter=function(stateCount,i,j){var stateCountTotal=stateCount[0]+stateCount[1]+stateCount[2],centerJ=this.centerFromEnd(stateCount,j),centerI=this.crossCheckVertical(i,Math.floor(centerJ),2*stateCount[1],stateCountTotal);if(!isNaN(centerI)){for(var estimatedModuleSize=(stateCount[0]+stateCount[1]+stateCount[2])/3,max=this.possibleCenters.length,index=0;index>1),stateCount=new Array(0,0,0),iGen=0;iGen>1:-(iGen+1>>1)),j=(stateCount[0]=0,stateCount[1]=0,stateCount[2]=0,startX);j>this.bitPointer-numBits+1,this.bitPointer-=numBits,bits}if(numBits>8-(numBits-(this.bitPointer+1)),this.bitPointer=this.bitPointer-numBits%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),bits}if(numBits>8-(numBits-(this.bitPointer+1+8)));return this.bitPointer=this.bitPointer-(numBits-8)%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),bits}return 0},this.NextMode=function(){return this.blockPointer>this.blocks.length-this.numErrorCorrectionCode-2?0:this.getNextBits(4)},this.getDataLength=function(modeIndicator){for(var index=0;modeIndicator>>index!=1;)index++;return this.getNextBits(qrcode.sizeOfDataLengthInfo[this.dataLengthMode][index])},this.getRomanAndFigureString=function(dataLength){var length=dataLength,intData=0,strData="",tableRomanAndFigure=new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":");do{}while(1>>0,s=0;sDe(e)?(r=e+1,t-De(e)):(r=e,t);return{year:r,dayOfYear:n}}function Ie(e,t,n){var s,i,r=Ve(e.year(),t,n),r=Math.floor((e.dayOfYear()-r-1)/7)+1;return r<1?s=r+Ae(i=e.year()-1,t,n):r>Ae(e.year(),t,n)?(s=r-Ae(e.year(),t,n),i=e.year()+1):(i=e.year(),s=r),{week:s,year:i}}function Ae(e,t,n){var s=Ve(e,t,n),t=Ve(e+1,t,n);return(De(e)-s+t)/7}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),H("week","w"),H("isoWeek","W"),L("week",5),L("isoWeek",5),ue("w",B),ue("ww",B,z),ue("W",B),ue("WW",B,z),fe(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=M(e)}),I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),H("day","d"),H("weekday","e"),H("isoWeekday","E"),L("day",11),L("weekday",11),L("isoWeekday",11),ue("d",B),ue("e",B),ue("E",B),ue("dd",function(e,t){return t.weekdaysMinRegex(e)}),ue("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ue("dddd",function(e,t){return t.weekdaysRegex(e)}),fe(["dd","ddd","dddd"],function(e,t,n,s){s=n._locale.weekdaysParse(e,s,n._strict);null!=s?t.d=s:c(n).invalidWeekday=e}),fe(["d","e","E"],function(e,t,n,s){t[s]=M(e)});var je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),ze="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),$e=ae,qe=ae,Je=ae;function Be(){function e(e,t){return t.length-e.length}for(var s,i,n,a=[],o=[],u=[],l=[],t=0;t<7;t++)n=h([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),n=this.weekdays(n,""),a.push(s),o.push(i),u.push(n),l.push(s),l.push(i),l.push(n);for(a.sort(e),o.sort(e),u.sort(e),l.sort(e),t=0;t<7;t++)o[t]=de(o[t]),u[t]=de(u[t]),l[t]=de(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Qe(){return this.hours()%12||12}function Xe(e,t){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function Ke(e,t){return t._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,Qe),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+Qe.apply(this)+U(this.minutes(),2)}),I("hmmss",0,0,function(){return""+Qe.apply(this)+U(this.minutes(),2)+U(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+U(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+U(this.minutes(),2)+U(this.seconds(),2)}),Xe("a",!0),Xe("A",!1),H("hour","h"),L("hour",13),ue("a",Ke),ue("A",Ke),ue("H",B),ue("h",B),ue("k",B),ue("HH",B,z),ue("hh",B,z),ue("kk",B,z),ue("hmm",Q),ue("hmmss",X),ue("Hmm",Q),ue("Hmmss",X),ce(["H","HH"],ge),ce(["k","kk"],function(e,t,n){e=M(e);t[ge]=24===e?0:e}),ce(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ce(["h","hh"],function(e,t,n){t[ge]=M(e),c(n).bigHour=!0}),ce("hmm",function(e,t,n){var s=e.length-2;t[ge]=M(e.substr(0,s)),t[pe]=M(e.substr(s)),c(n).bigHour=!0}),ce("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=M(e.substr(0,s)),t[pe]=M(e.substr(s,2)),t[ve]=M(e.substr(i)),c(n).bigHour=!0}),ce("Hmm",function(e,t,n){var s=e.length-2;t[ge]=M(e.substr(0,s)),t[pe]=M(e.substr(s))}),ce("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=M(e.substr(0,s)),t[pe]=M(e.substr(s,2)),t[ve]=M(e.substr(i))});var et,ae=Te("Hours",!0),nt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:He,monthsShort:Re,week:{dow:0,doy:6},weekdays:je,weekdaysMin:ze,weekdaysShort:Ze,meridiemParse:/[ap]\.?m?\.?/i},st={},it={};function rt(e){return e&&e.toLowerCase().replace("_","-")}function at(e){var t;if(!st[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=et._abbr,require("./locale/"+e),ot(t)}catch(e){}return st[e]}function ot(e,t){return e&&((t=r(t)?lt(e):ut(e,t))?et=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),et._abbr}function ut(e,t){if(null===t)return delete st[e],null;var n,s=nt;if(t.abbr=e,null!=st[e])T("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=st[e]._config;else if(null!=t.parentLocale)if(null!=st[t.parentLocale])s=st[t.parentLocale]._config;else{if(null==(n=at(t.parentLocale)))return it[t.parentLocale]||(it[t.parentLocale]=[]),it[t.parentLocale].push({name:e,config:t}),null;s=n._config}return st[e]=new P(b(s,t)),it[e]&&it[e].forEach(function(e){ut(e.name,e.config)}),ot(e),st[e]}function lt(e){var t;if(!(e=e&&e._locale&&e._locale._abbr?e._locale._abbr:e))return et;if(!s(e)){if(t=at(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r=t&&S(i,n,!0)>=t-1)break;t--}r++}return et}(e)}function dt(e){var n=e._a;return n&&-2===c(e).overflow&&(n=n[_e]<0||11Pe(n[me],n[_e])?ye:n[ge]<0||24Ae(n,r,a)?c(e)._overflowWeeks=!0:null!=u?c(e)._overflowWeekday=!0:(l=Ee(n,s,i,r,a),e._a[me]=l.year,e._dayOfYear=l.dayOfYear)}(e),null!=e._dayOfYear&&(u=ht(e._a[me],i[me]),(e._dayOfYear>De(u)||0===e._dayOfYear)&&(c(e)._overflowDayOfYear=!0),l=Ge(u,0,e._dayOfYear),e._a[_e]=l.getUTCMonth(),e._a[ye]=l.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=o[t]=i[t];for(;t<7;t++)e._a[t]=o[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ge]&&0===e._a[pe]&&0===e._a[ve]&&0===e._a[we]&&(e._nextDay=!0,e._a[ge]=0),e._d=(e._useUTC?Ge:function(e,t,n,s,i,r,a){t=new Date(e,t,n,s,i,r,a);return e<100&&0<=e&&isFinite(t.getFullYear())&&t.setFullYear(e),t}).apply(null,o),u=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ge]=24),e._w&&void 0!==e._w.d&&e._w.d!==u&&(c(e).weekdayMismatch=!0)}}var ft=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,mt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/Z|[+-]\d\d(?::?\d\d)?/,yt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],gt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pt=/^\/?Date\((\-?\d+)/i;function vt(e){var t,n,s,i,r,a,o=e._i,u=ft.exec(o)||mt.exec(o);if(u){for(c(e).iso=!0,t=0,n=yt.length;t(r=Ae(e,s,i))&&(t=r),function(e,t,n,s,i){e=Ee(e,t,n,s,i),t=Ge(e.year,0,e.dayOfYear);return this.year(t.getUTCFullYear()),this.month(t.getUTCMonth()),this.date(t.getUTCDate()),this}.call(this,e,t,n,s,i))}I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),en("gggg","weekYear"),en("ggggg","weekYear"),en("GGGG","isoWeekYear"),en("GGGGG","isoWeekYear"),H("weekYear","gg"),H("isoWeekYear","GG"),L("weekYear",1),L("isoWeekYear",1),ue("G",se),ue("g",se),ue("GG",B,z),ue("gg",B,z),ue("GGGG",ee,q),ue("gggg",ee,q),ue("GGGGG",te,J),ue("ggggg",te,J),fe(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=M(e)}),fe(["gg","GG"],function(e,t,s,i){t[i]=n.parseTwoDigitYear(e)}),I("Q",0,"Qo","quarter"),H("quarter","Q"),L("quarter",7),ue("Q",Z),ce("Q",function(e,t){t[_e]=3*(M(e)-1)}),I("D",["DD",2],"Do","date"),H("date","D"),L("date",9),ue("D",B),ue("DD",B,z),ue("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ce(["D","DD"],ye),ce("Do",function(e,t){t[ye]=M(e.match(B)[0])});ee=Te("Date",!0),I("DDD",["DDDD",3],"DDDo","dayOfYear"),H("dayOfYear","DDD"),L("dayOfYear",4),ue("DDD",K),ue("DDDD",$),ce(["DDD","DDDD"],function(e,t,n){n._dayOfYear=M(e)}),I("m",["mm",2],0,"minute"),H("minute","m"),L("minute",14),ue("m",B),ue("mm",B,z),ce(["m","mm"],pe),q=Te("Minutes",!1);I("s",["ss",2],0,"second"),H("second","s"),L("second",15),ue("s",B),ue("ss",B,z),ce(["s","ss"],ve);var rn,te=Te("Seconds",!1);for(I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),I(0,["SSS",3],0,"millisecond"),I(0,["SSSS",4],0,function(){return 10*this.millisecond()}),I(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),I(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),I(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),I(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),I(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),H("millisecond","ms"),L("millisecond",16),ue("S",K,Z),ue("SS",K,z),ue("SSS",K,$),rn="SSSS";rn.length<=9;rn+="S")ue(rn,ne);function on(e,t){t[we]=M(1e3*("0."+e))}for(rn="S";rn.length<=9;rn+="S")ce(rn,on);J=Te("Milliseconds",!1),I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName"),Z=p.prototype;function dn(e){return e}Z.add=He,Z.calendar=function(e,t){var e=e||Tt(),i=Nt(e,this).startOf("day"),i=n.calendarFormat(this,i)||"sameElse",t=t&&(x(t[i])?t[i].call(this,e):t[i]);return this.format(t||this.localeData().calendar(i,this,Tt(e)))},Z.clone=function(){return new p(this)},Z.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Nt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=R(t)){case"year":r=Bt(this,s)/12;break;case"month":r=Bt(this,s);break;case"quarter":r=Bt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:w(r)},Z.endOf=function(e){return void 0===(e=R(e))||"millisecond"===e?this:this.startOf(e="date"===e?"day":e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms")},Z.format=function(e){e=e||(this.isUtc()?n.defaultFormatUtc:n.defaultFormat);e=A(this,e);return this.localeData().postformat(e)},Z.from=function(e,t){return this.isValid()&&(v(e)&&e.isValid()||Tt(e).isValid())?At({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},Z.fromNow=function(e){return this.from(Tt(),e)},Z.to=function(e,t){return this.isValid()&&(v(e)&&e.isValid()||Tt(e).isValid())?At({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},Z.toNow=function(e){return this.to(Tt(),e)},Z.get=function(e){return x(this[e=R(e)])?this[e]():this},Z.invalidAt=function(){return c(this).overflow},Z.isAfter=function(e,t){e=v(e)?e:Tt(e);return!(!this.isValid()||!e.isValid())&&("millisecond"===(t=R(r(t)?"millisecond":t))?this.valueOf()>e.valueOf():e.valueOf()this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Z.isLocal=function(){return!!this.isValid()&&!this._isUTC},Z.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},Z.isUtc=Vt,Z.isUTC=Vt,Z.zoneAbbr=function(){return this._isUTC?"UTC":""},Z.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},Z.dates=k("dates accessor is deprecated. Use date instead.",ee),Z.months=k("months accessor is deprecated. Use month instead",Fe),Z.years=k("years accessor is deprecated. Use year instead",Oe),Z.zone=k("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?(this.utcOffset(e="string"!=typeof e?-e:e,t),this):-this.utcOffset()}),Z.isDSTShifted=k("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){var e,t;return r(this._isDSTShifted)&&(y(e={},this),(e=Yt(e))._a?(t=(e._isUTC?h:Tt)(e._a),this._isDSTShifted=this.isValid()&&0