functionSelectDirective(e,t,n,r,a,o){functionl(a,l){vari=angular.element("<md-select-value><span></span></md-select-value>");if(i.append('<span class="_md-select-icon" aria-hidden="true"></span>'),i.addClass("_md-select-value"),i[0].hasAttribute("id")||i.attr("id","select_value_label_"+t.nextUid()),a.find("md-content").length||a.append(angular.element("<md-content>").append(a.contents())),l.mdOnOpen&&(a.find("md-content").prepend(angular.element('<div> <md-progress-circular md-mode="{{progressMode}}" ng-hide="$$loadingAsyncDone"></md-progress-circular></div>')),a.find("md-option").attr("ng-show","$$loadingAsyncDone")),l.name){vard=angular.element('<select class="_md-visually-hidden">');d.attr({name:"."+l.name,"ng-model":l.ngModel,"aria-hidden":"true",tabindex:"-1"});varc=a.find("md-option");angular.forEach(c,function(e){vart=angular.element("<option>"+e.innerHTML+"</option>");e.hasAttribute("ng-value")?t.attr("ng-value",e.getAttribute("ng-value")):e.hasAttribute("value")&&t.attr("value",e.getAttribute("value")),d.append(t)}),a.parent().append(d)}vars=t.parseAttributeBoolean(l.multiple),u=s?"multiple":"",p='<div class="_md-select-menu-container" aria-hidden="true"><md-select-menu {0}>{1}</md-select-menu></div>';returnp=t.supplant(p,[u,a.html()]),a.empty().append(i),a.append(p),l.tabindex=l.tabindex||"0",function(a,l,i,d){functionc(){vare=l.attr("aria-label")||l.attr("placeholder");!e&&y&&y.label&&(e=y.label.text()),b=e,r.expect(l,"aria-label",e)}functionu(){x&&(A=A||x.find("md-select-menu").controller("mdSelectMenu"),C.setLabelText(A.selectedLabels()))}functionp(){if(b){vare=A.selectedLabels({mode:"aria"});l.attr("aria-label",e.length?b+": "+e:b)}}functionf(){y&&y.setHasValue(A.selectedLabels().length>0||(l[0].validity||{}).badInput)}functionm(){if(x=angular.element(l[0].querySelector("._md-select-menu-container")),D=a,i.mdContainerClass){vare=x[0].getAttribute("class")+" "+i.mdContainerClass;x[0].setAttribute("class",e)}A=x.find("md-select-menu").controller("mdSelectMenu"),A.init(M,i.ngModel),l.on("$destroy",function(){x.remove()})}functionh(e){vart=[32,13,38,40];if(-1!=t.indexOf(e.keyCode))e.preventDefault(),g(e);elseif(e.keyCode<=90&&e.keyCode>=31){e.preventDefault();varn=A.optNodeForKeyboardSearch(e);if(!n)return;varr=angular.element(n).controller("mdOption");A.isMultiple||A.deselect(Object.keys(A.selected)[0]),A.select(r.hashKey,r.value),A.refreshViewValue()}}functiong(){D.isOpen=!0,l.attr("aria-expanded","true"),e.show({scope:D,preserveScope:!0,skipCompile:!0,element:x,target:l[0],selectCtrl:C,preserveElement:!0,hasBackdrop:!0,loadingAsync:i.mdOnOpen?a.$eval(i.mdOnOpen)||!0:!1})["finally"](function(){D.isOpen=!1,l.focus(),l.attr("aria-expanded","false"),M.$setTouched()})}varv,b,$=!0,y=d[0],C=d[1],M=d[2],k=d[3],w=l.find("md-select-value"),E=angular.isDefined(i.readonly);if(y){varS=y.isErrorGetter||function(){returnM.$invalid&&M.$touched};if(y.input)thrownewError("<md-input-container> can only have *one* child <input>, <textarea> or <select> element!");y.input=l,y.label||r.expect(l,"aria-label",l.attr("placeholder")),a.$watch(S,y.setInvalid)}varx,D,A;if(m(),n(l),i.name&&k){varO=l.parent()[0].querySelector('select[name=".'+i.name+'"]');t.nextTick(function(){vare=angular.element(O).controller("ngModel");e&&k.$removeControl(e)})}k&&angular.isDefined(i.multiple)&&t.nextTick(function(){vare=M.$modelValue||M.$viewValue;e&&k.$setPristine()});varT=M.$render;M.$render=function(){T(),u(),p(),f()},i.$observe("placeholder",M.$render),C.setLabelText=function(e){C.setIsPlaceholder(!e);vart=i.placeholder||(y&&y.label?y.label.text():"");e=e||t||"";varn=w.children().eq(0);n.html(e)},C.setIsPlaceholder=function(e){e?(w.addClass("_md-select-placeholder"),y&&y.label&&y.label.addClass("_md-placeholder")):(w.removeClass("_md-select-placeholder"),y&&y.label&&y.label.removeClass("_md-placeholder"))},E||(l.on("focus",function(e){y&&y.element.hasClass("md-input-has-value")&&y.setFocused(!0)}),t.nextTick(function(){l.on("blur",function(){$&&($=!1,M.$setUntouched()),D.isOpen||(y&&y.setFocused(!1),f())})})),C.triggerClose=function(){o(i.mdOnClose)(a)},a.$$postDigest(function(){c(),u(),p()}),a.$watch(A.selectedLabels,u);var_;i.$observe("ngMultiple",function(e){_&&_();vart=o(e);_=a.$watch(function(){returnt(a)},function(e,t){void0===e&&void0===t||(e?l.attr("multiple","multiple"):l.removeAttr("multiple"),l.attr("aria-multiselectable",e?"true":"false"),x&&(A.setMultiple(e),T=M.$render,M.$render=function(){T(),u(),p(),f()},M.$render()))})}),i.$observe("disabled",function(e){angular.isString(e)&&(e=!0),void0!==v&&v===e||(v=e,e?(l.attr({tabindex:-1,"aria-disabled":"true"}),l.off("click",g),l.off("keydown",h)):(l.attr({tabindex:i.tabindex,"aria-disabled":"false"}),l.on("click",g),l.on("keydown",h)))}),i.disabled||i.ngDisabled||(l.attr({tabindex:i.tabindex,"aria-disabled":"false"}),l.on("click",g),l.on("keydown",h));varR={role:"listbox","aria-expanded":"false","aria-multiselectable":s&&!i.ngMultiple?"true":"false"};l[0].hasAttribute("id")||(R.id="select_"+t.nextUid());varL="select_container_"+t.nextUid();x.attr("id",L),R["aria-owns"]=L,l.attr(R),a.$on("$destroy",function(){e.destroy()["finally"](function(){y&&(y.setFocused(!1),y.setHasValue(!1),y.input=null),M.$setTouched()})})}}return{restrict:"E",require:["^?mdInputContainer","mdSelect","ngModel","?^form"],compile:l,controller:function(){}}}functionSelectMenuDirective(e,t,n){functionr(e,r,a,o){functionl(e){13!=e.keyCode&&32!=e.keyCode||i(e)}functioni(n){varr=t.getClosest(n.target,"md-option"),a=r&&angular.element(r).data("$mdOptionController");if(r&&a){if(r.hasAttribute("disabled"))returnn.stopImmediatePropagation(),!1;varo=d.hashGetter(a.value),l=angular.isDefined(d.selected[o]);e.$apply(function(){d.isMultiple?l?d.deselect(o):d.select(o,a.value):l||(d.deselect(Object.keys(d.selected)[0]),d.select(o,a.value)),d.refreshViewValue()})}}vard=o[0];n(r),r.on("click",i),r.on("keypress",l)}functiona(n,r,a){functiono(){vare=i.ngModel.$modelValue||i.ngModel.$viewValue||[];if(angular.isArray(e)){vart=Object.keys(i.selected),n=e.map(i.hashGetter),r=t.filter(function(e){return-1===n.indexOf(e)});r.forEach(i.deselect),n.forEach(function(t,n){i.select(t,e[n])})}}functionl(){vare=i.ngModel.$viewValue||i.ngModel.$modelValue;Object.keys(i.selected).forEach(i.deselect),i.select(i.hashGetter(e),e)}vari=this;i.isMultiple=angular.isDefined(r.multiple),i.selected={},i.options={},n.$watchCollection(function(){returni.options},function(){i.ngModel.$render()});vard,c;i.setMultiple=function(e){functiont(e,t){returnangular.isArray(e||t||[])}varr=i.ngModel;c=c||r.$isEmpty,i.isMultiple=e,d&&d(),i.isMultiple?(r.$validators["md-multiple"]=t,r.$render=o,n.$watchCollection(i.modelBinding,function(e){t(e)&&o(e),i.ngModel.$setPristine()}),r.$isEmpty=function(e){return!e||0===e.length}):(deleter.$validators["md-multiple"],r.$render=l)};vars,u,p,f="",m=300;i.optNodeForKeyboardSearch=function(e){s&&clearTimeout(s),s=setTimeout(function(){s=void0,f="",p=void0,u=void0},m),f+=String.fromCharCode(e.keyCode);vart=newRegExp("^"+f,"i");u||(u=a.find("md-option"),p=newArray(u.length),angular.forEach(u,function(e,t){p[t]=e.textContent.trim()}));for(varn=0;n<p.length;++n)if(t.test(p[n]))returnu[n]},i.init=function(t,r){if(i.ngModel=t,i.modelBinding=r,t.$options&&t.$options.trackBy){vara={},o=e(t.$options.trackBy);i.hashGetter=function(e,t){returna.$value=e,o(t||n,a)}}elsei.hashGetter=function(e){returnangular.isObject(e)?"object_"+(e.$$mdSelectId||(e.$$mdSelectId=++selectNextId)):e};i.setMultiple(i.isMultiple)},i.selectedLabels=function(e){e=e||{};varn=e.mode||"html",r=t.nodesToArray(a[0].querySelectorAll("md-option[selected]"));if(r.length){varo;return"html"==n?o=function(e){vart=e.innerHTML,n=e.querySelector(".md-ripple-container");returnn?t.replace(n.outerHTML,""):t}:"aria"==n&&(o=function(e){returne.hasAttribute("aria-label")?e.getAttribute("aria-label"):e.textContent}),r.map(o).join(", ")}return""},i.select=function(e,t){varn=i.options[e];n&&n.setSelected(!0),i.selected[e]=t},i.deselect=function(e){vart=i.options[e];t&&t.setSelected(!1),deletei.selected[e]},i.addOption=function(e,t){if(angular.isDefined(i.options[e]))thrownewError('Duplicate md-option values are not allowed in a select. Duplicate value "'+t.value+'" found.');i.options[e]=t,angular.isDefined(i.selected[e])&&(i.select(e,t.value),i.refreshViewValue())},i.removeOption=function(e){deletei.options[e]},i.refreshViewValue=function(){vare,t=[];for(varnini.selected)(e=i.options[n])?t.push(e.value):t.push(i.selected[n]);varr=i.ngModel.$options&&i.ngModel.$options.trackBy,a=i.isMultiple?t:t[0],o=i.ngModel.$modelValue;(r?angular.equals(o,a):o==a)||(i.ngModel.$setViewValue(a),i.ngModel.$render())}}returna.$inject=["$scope","$attrs","$element"],{restrict:"E",require:["mdSelectMenu"],scope:!0,controller:a,link:{pre:r}}}functionOptionDirective(e,t){functionn(e,t){returne.append(angular.element('<div class="_md-text">').append(e.contents())),e.attr("tabindex",t.tabindex||"0"),r}functionr(n,r,a,o){functionl(e,t,r){if(!c.hashGetter)returnvoid(r||n.$$postDigest(function(){l(e,t,!0)}));vara=c.hashGetter(t,n),o=c.hashGetter(e,n);d.hashKey=o,d.value=e,c.removeOption(a,d),c.addOption(o,d)}functioni(){vare={role:"option","aria-selected":"false"};r[0].hasAttribute("id")||(e.id="select_option_"+t.nextUid()),r.attr(e)}vard=o[0],c=o[1];angular.isDefined(a.ngValue)?n.$watch(a.ngValue,l):angular.isDefined(a.value)?l(a.value):n.$watch(function(){returnr.text().trim()},l),a.$observe("disabled",function(e){e?r.attr("tabindex","-1"):r.attr("tabindex","0")}),n.$$postDigest(function(){a.$observe("selected",function(e){angular.isDefined(e)&&("string"==typeofe&&(e=!0),e?(c.isMultiple||c.deselect(Object.keys(c.selected)[0]),c.select(d.hashKey,d.value)):c.deselect(d.hashKey),c.refreshViewValue())})}),e.attach(n,r),i(),n.$on("$destroy",function(){c.removeOption(d.hashKey,d)})}functiona(e){this.selected=!1,this.setSelected=function(t){t&&!this.selected?e.attr({selected:"selected","aria-selected":"true"}):!t&&this.selected&&(e.removeAttr("selected"),e.attr("aria-selected","false")),this.selected=t}}returna.$inject=["$element"],{restrict:"E",require:["mdOption","^^mdSelectMenu"],controller:a,compile:n}}functionOptgroupDirective(){functione(e,t){varn=e.find("label");n.length||(n=angular.element("<label>"),e.prepend(n)),n.addClass("_md-container-ignore"),t.label&&n.text(t.label)}return{restrict:"E",compile:e}}functionSelectProvider(e){functiont(e,t,l,i,d,c,s,u,p){functionf(e,t,n){functionr(){returns(t,{addClass:"_md-leave"}).start()}functiona(){t.removeClass("_md-active"),t.attr("aria-hidden","true"),t[0].style.display="none",h(n),!n.$destroy&&n.restoreFocus&&n.target.focus()}returnn=n||{},n.cleanupInteraction(),n.cleanupResizing(),n.hideBackdrop(),n.$destroy===!0?a():r().then(a)}functionm(n,r,a){functiono(e,t,n){returnn.parent.append(t),d(function(e,n){try{s(t,{removeClass:"_md-leave",duration:0}).start().then(f).then(e)}catch(r){n(r)}})}functionf(){returnd(function(e){if(a.isRemoved)returnd.reject(!1);vart=g(n,r,a);t.container.element.css(b.toCss(t.container.styles)),t.dropDown.element.css(b.toCss(t.dropDown.styles)),c(function(){r.addClass("_md-active"),t.dropDown.element.css(b.toCss({transform:""})),h(a.focusedNode),e()})})}functionm(e,t,n){returnn.disableParentScroll&&!l.getClosest(n.target,"MD-DIALOG")?n.restoreScroll=l.disableScrollAround(n.element,n.parent):n.disableParentScroll=!1,n.hasBackdrop&&(n.backdrop=l.createBackdrop(e,"_md-select-backdrop _md-click-catcher"),u.enter(n.backdrop,p[0].body,null,{duration:0})),function(){n.backdrop&&n.backdrop.remove(),n.disableParentScroll&&n.restoreScroll(),deleten.restoreScroll}}functionh(e){e&&!e.hasAttribute("disabled")&&e.focus()}function$(e,t){varn=r.find("md-select-menu");if(!t.target)thrownewError(l.supplant(v,[t.target]));angular.extend(t,{isRemoved:!1,target:angular.element(t.target),parent:angular.element(t.parent),selectEl:n,contentEl:r.find("md-content"),optionNodes:n[0].getElementsByTagName("md-option")})}functiony(){vare=function(e,t,n){returnfunction(){if(!n.isRemoved){varr=g(e,t,n),a=r.container,o=r.dropDown;a.element.css(b.toCss(a.styles)),o.element.css(b.toCss(o.styles))}}}(n,r,a),t=angular.element(i);returnt.on("resize",e),t.on("orientationchange",e),function(){t.off("resize",e),t.off("orientationchange",e)}}functionC(){a.loadingAsync&&!a.isRemoved&&(n.$$loadingAsyncDone=!1,n.progressMode="indeterminate",d.when(a.loadingAsync).then(function(){n.$$loadingAsyncDone=!0,n.progressMode="",deletea.loadingAsync}).then(function(){c(f)}))}functionM(){functionn(t){t.preventDefault(),t.stopPropagation(),a.restoreFocus=!1,l.nextTick(e.hide,!0)}functiono(n){varr=t.KEY_CODE;switch(n.preventDefault(),n.stopPropagation(),n.keyCode){caser.UP_ARROW:returnc();caser.DOWN_ARROW:returnd();caser.SPACE:caser.ENTER:varo=l.getClosest(n.target,"md-option");o&&(u.triggerHandler({type:"click",target:o}),n.preventDefault()),s(n);break;caser.TAB:caser.ESCAPE:n.stopPropagation(),n.preventDefault(),a.restoreFocus=!0,l.nextTick(e.hide,!0);break;default:if(n.keyCode>=31&&n.keyCode<=90){vari=u.controller("mdSelectMenu").optNodeForKeyboardSearch(n);a.focusedNode=i||a.focusedNode,i&&i.focus()}}}functioni(e){vart,n=l.nodesToArray(a.optionNodes),r=n.indexOf(a.focusedNode);do-1===r?r=0:"next"===e&&r<n.length-1?r++:"prev"===e&&r>0&&r--,t=n[r],t.hasAttribute("disabled")&&(t=void0);while(!t&&r<n.length-1&&r>0);t&&t.focus(),a.focusedNode=t}functiond(){i("next")}functionc(){i("prev")}functions(t){functionn(){vare=!1;if(t&&t.currentTarget.children.length>0){varn=t.currentTarget.children[0],r=n.scrollHeight>n.clientHeight;if(r&&n.children.length>0){vara=t.pageX-t.currentTarget.getBoundingClientRect().left;a>n.querySelector("md-option").offsetWidth&&(e=!0)}}returne}if(!(t&&"click"==t.type&&t.currentTarget!=u[0]||n())){varr=l.getClosest(t.target,"md-option");r&&r.hasAttribute&&!r.hasAttribute("disabled")&&(t.preventDefault(),t.stopPropagation(),p.isMultiple||(a.restoreFocus=!0,l.nextTick(function(){e.hide(p.ngModel.$viewValue)},!0)))}}if(!a.isRemoved){varu=a.selectEl,p=u.controller("mdSelectMenu")||{};returnr.addClass("_md-clickable"),a.backdrop&&a.backdrop.on("click",n),u.on("keydown",o),u.on("click",s),function(){a.backdrop&&a.backdrop.off("click",n),u.off("keydown",o),u.off("click",s),r.removeClass("_md-clickable"),a.isRemoved=!0}}}returnC(),$(n,a),a.hideBackdrop=m(n,r,a),o(n,r,a).then(function(e){returnr.attr("aria-hidden","false"),a.alreadyOpen=!0,a.cleanupInteraction=M(),a.cleanupResizing=y(),e},a.hideBackdrop)}functionh(e){vart=e.selectCtrl;if(t){varn=e.selectEl.controller("mdSelectMenu");t.setLabelText(n.selectedLabels()),t.triggerClose()}}functiong(e,t,d){varc,s=t[0],u=d.target[0].children[0],f=p[0].body,m=d.selectEl[0],h=d.contentEl[0],g=f.getBoundingClientRect(),v=u.getBoundingClientRect(),b=!1,$={left:g.left+SELECT_EDGE_MARGIN,top:SELECT_EDGE_MARGIN,bottom:g.height-SELECT_EDGE_MARGIN,right:g.width-SELECT_EDGE_MARGIN-(l.floatingScrollbars()?16:0)},y={top:v.top-$.top,left:v.left-$.left,right:$.right-(v.left+v.width),bottom:$.bottom-(v.top+v.height)},C=g.width-2*SELECT_EDGE_MARGIN,M=m.querySelector("md-option[selected]"),k=m.getElementsByTagName("md-option"),w=m.getElementsByTagName("md-optgroup"),E=o(t,h),S=n(d.loadingAsync);c=S?h.firstElementChild||h:M?M:w.length?w[0]:k.length?k[0]:h.firstElementChild||h,h.offsetWidth>C?h.style["max-width"]=C+"px":h.style.maxWidth=null,b&&(h.style["min-width"]=v.width+"px"),E&&m.classList.add("_md-overflow");varx=c;"MD-OPTGROUP"===(x.tagName||"").toUpperCase()&&(x=k[0]||h.firstElementChild||h,c=x),d.focusedNode=x,s.style.display="block";varD=m.getBoundingClientRect(),A=a(c);if(c){varO=i.getComputedStyle(c);A.paddingLeft=parseInt(O.paddingLeft,10)||0,A.paddingRight=parseInt(O.paddingRight,10)||0}if(E){varT=h.offsetHeight/2;h.scrollTop=A.top+A.height/2-T,y.top<T?h.scrollTop=Math.min(A.top,h.scrollTop+T-y.top):y.bottom<T&&(h.scrollTop=Math.max(A.top+A.height-D.height,h.scrollTop-T+y.bottom))}var_,R,L,N;b?(_=v.left,R=v.top+v.height,L="50% 0",R+D.height>$.bottom&&(R=v.top-D.height,L="50% 100%")):(_=v.left+A.left-A.paddingLeft+2,R=Math.floor(v.top+v.height/2-A.height/2-A.top+h.scrollTop)+2,L=A.left+v.width/2+"px "+(A.top+A.height/2-h.scrollTop)+"px 0px",N=Math.min(v.width+A.paddingLeft+A.paddingRight,C));varV=s.getBoundingClientRect(),B=Math.round(100*Math.min(v.width/D.width,1))/100,G=Math.round(100*Math.min(v.height/D.height,1))/100;return{container:{element:angular.element(s),styles:{left:Math.floor(r($.left,_,$.right-V.width)),top:Math.floor(r($.top,R,$.bottom-V.height)),"min-width":N}},dropDown:{element:angular.element(m),styles:{transformOrigin:L,transform:d.alreadyOpen?"":l.supplant("scale({0},{1})",[B,G])}}}}varv="$mdSelect.show() expected a target element in options.target but got '{0}'!",b=l.dom.animator;return{parent:"body",themable:!0,onShow:m,onRemove:f,hasBackdrop:!0,disableParentScroll:!0}}functionn(e){returne&&angular.isFunction(e.then)}functionr(e,t,n){returnMath.max(e,Math.min(t,n))}functiona(e){returne?{left:e.offsetLeft,top:e.offsetTop,width:e.offsetWidth,height:e.offsetHeight}:{left:0,top:0,width:0,height:0}}functiono(e,t){varn=!1;try{varr=e[0].style.display;e[0].style.display="block",n=t.scrollHeight>t.offsetHeight,e[0].style.display=r}finally{}returnn}returnt.$inject=["$mdSelect","$mdConstant","$mdUtil","$window","$q","$$rAF","$animateCss","$animate","$document"],e("$mdSelect").setDefaults({methods:["target"],options:t})}goog.provide("ng.material.components.select"),goog.require("ng.material.components.backdrop"),goog.require("ng.material.core");varSELECT_EDGE_MARGIN=8,selectNextId=0;angular.module("material.components.select",["material.core","material.components.backdrop"]).directive("mdSelect",SelectDirective).directive("mdSelectMenu",SelectMenuDirective).directive("mdOption",OptionDirective).directive("mdOptgroup",OptgroupDirective).provider("$mdSelect",SelectProvider),SelectDirective.$inject=["$mdSelect","$mdUtil","$mdTheming","$mdAria","$compile","$parse"],SelectMenuDirective.$inject=["$parse","$mdUtil","$mdTheming"],OptionDirective.$inject=["$mdButtonInkRipple","$mdUtil"],SelectProvider.$inject=["$$interimElementProvider"],ng.material.components.select=angular.module("material.components.select");
functionSidenavService(e,n){returnfunction(o){functiont(){returne.when(o).then(function(e){returnc=e,e})}varr,i="SideNav '"+o+"' is not available!",c=e.get(o);returnc||e.notFoundError(o),r={isOpen:function(){returnc&&c.isOpen()},isLockedOpen:function(){returnc&&c.isLockedOpen()},toggle:function(){returnc?c.toggle():n.reject(i)},open:function(){returnc?c.open():n.reject(i)},close:function(){returnc?c.close():n.reject(i)},then:function(e){varo=c?n.when(c):t();returno.then(e||angular.noop)}}}}functionSidenavFocusDirective(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,o,t){}}}functionSidenavDirective(e,n,o,t,r,i,c,a,d,s){functionu(i,u,l,m){functionp(e,n){i.isLockedOpen=e,e===n?u.toggleClass("_md-locked-open",!!e):r[e?"addClass":"removeClass"](u,"_md-locked-open"),y.toggleClass("_md-locked-open",!!e)}functionv(e){varo=n.findFocusTarget(u)||n.findFocusTarget(u,"[md-sidenav-focus]")||u,t=u.parent();returnt[e?"on":"off"]("keydown",$),y[e?"on":"off"]("click",O),e&&(k=s[0].activeElement),f(e),C=d.all([e?r.enter(y,t):r.leave(y),r[e?"removeClass":"addClass"](u,"_md-closed")]).then(function(){i.isOpen&&o&&o.focus()})}functionf(e){varn=u.parent();e&&!S?(S=n.css("overflow"),n.css("overflow","hidden")):angular.isDefined(S)&&(n.css("overflow",S),S=void0)}functiong(e){returni.isOpen==e?d.when(!0):d(function(o){i.isOpen=e,n.nextTick(function(){C.then(function(e){i.isOpen||(k&&k.focus(),k=null),o(e)})})})}function$(e){varn=e.keyCode===o.KEY_CODE.ESCAPE;returnn?O(e):d.when(!0)}functionO(e){returne.preventDefault(),m.close()}varS,k=null,C=d.when(!0),h=c(l.mdIsLockedOpen),w=function(){returnh(i.$parent,{$media:function(n){returna.warn("$media is deprecated for is-locked-open. Use $mdMedia instead."),e(n)},$mdMedia:e})},y=n.createBackdrop(i,"_md-sidenav-backdrop md-opaque ng-enter");t.inherit(y,u),u.on("$destroy",function(){y.remove(),m.destroy()}),i.$on("$destroy",function(){y.remove()}),i.$watch(w,p),i.$watch("isOpen",v),m.$toggleOpen=g}return{restrict:"E",scope:{isOpen:"=?mdIsOpen"},controller:"$mdSidenavController",compile:function(e){returne.addClass("_md-closed"),e.attr("tabIndex","-1"),u}}}functionSidenavController(e,n,o,t,r){vari=this;i.isOpen=function(){return!!e.isOpen},i.isLockedOpen=function(){return!!e.isLockedOpen},i.open=function(){returni.$toggleOpen(!0)},i.close=function(){returni.$toggleOpen(!1)},i.toggle=function(){returni.$toggleOpen(!e.isOpen)},i.$toggleOpen=function(n){returnr.when(e.isOpen=n)},i.destroy=t.register(i,o.mdComponentId)}goog.provide("ng.material.components.sidenav"),goog.require("ng.material.components.backdrop"),goog.require("ng.material.core"),angular.module("material.components.sidenav",["material.core","material.components.backdrop"]).factory("$mdSidenav",SidenavService).directive("mdSidenav",SidenavDirective).directive("mdSidenavFocus",SidenavFocusDirective).controller("$mdSidenavController",SidenavController),SidenavService.$inject=["$mdComponentRegistry","$q"],SidenavDirective.$inject=["$mdMedia","$mdUtil","$mdConstant","$mdTheming","$animate","$compile","$parse","$log","$q","$document"],SidenavController.$inject=["$scope","$element","$attrs","$mdComponentRegistry","$q"],ng.material.components.sidenav=angular.module("material.components.sidenav");
functionSliderDirective(e,t,a,n,i,r,o,l,s){functiond(e,t){returnt.tabindex||e.attr("tabindex",0),e.attr("role","slider"),a.expect(e,"aria-label"),u}functionu(a,l,d,u){functionc(){$(),b(),p()}functionm(e){Y=parseFloat(e),l.attr("aria-valuemin",e),c()}functionv(e){j=parseFloat(e),l.attr("aria-valuemax",e),c()}functionf(e){H=parseFloat(e),p()}functiong(){l.attr("aria-disabled",!!N)}functionp(){if(angular.isDefined(d.mdDiscrete)&&!angular.isUndefined(H)){if(0>=H){vare="Slider step value must be greater than zero when in discrete mode";throws.error(e),newError(e)}vara=Math.floor((j-Y)/H);if(!I){I=angular.element("<canvas>").css("position","absolute"),G.append(I);varn=t.getComputedStyle(G[0]);J=I[0].getContext("2d"),J.fillStyle=n.backgroundColor||"black"}vari=h();I[0].width=i.width,I[0].height=i.height;for(varr,o=0;a>=o;o++)r=Math.floor(i.width*(o/a)),J.fillRect(r-1,0,2,i.height)}}function$(){Q=z[0].getBoundingClientRect()}functionh(){returnU(),Q}function_(e){if(!N){vart;e.keyCode===i.KEY_CODE.LEFT_ARROW?t=-H:e.keyCode===i.KEY_CODE.RIGHT_ARROW&&(t=H),t&&((e.metaKey||e.ctrlKey||e.altKey)&&(t*=4),e.preventDefault(),e.stopPropagation(),a.$evalAsync(function(){w(u.$viewValue+t)}))}}functionw(e){u.$setViewValue(x(y(e)))}functionb(){isNaN(u.$viewValue)&&(u.$viewValue=u.$modelValue);vare=(u.$viewValue-Y)/(j-Y);a.modelValue=u.$viewValue,l.attr("aria-valuenow",u.$viewValue),C(e),P.text(u.$viewValue)}functionx(e){returnangular.isNumber(e)?Math.max(Y,Math.min(j,e)):void0}functiony(e){if(angular.isNumber(e)){vart=Math.round((e-Y)/H)*H+Y;returnMath.round(1e3*t)/1e3}}functionC(e){e=R(e);vart=100*e+"%";B.css("width",t),T.css("left",t),l.toggleClass("_md-min",0===e),l.toggleClass("_md-max",1===e)}functionk(e){if(!N){l.addClass("_md-active"),l[0].focus(),$();vart=K(F(e.pointer.x)),n=x(y(t));a.$apply(function(){w(n),C(L(n))})}}functionV(e){if(!N){l.removeClass("_md-dragging _md-active");vart=K(F(e.pointer.x)),n=x(y(t));a.$apply(function(){w(n),b()})}}functionD(e){N||(X=!0,e.stopPropagation(),l.addClass("_md-dragging"),q(e))}functionS(e){X&&(e.stopPropagation(),q(e))}functionM(e){X&&(e.stopPropagation(),X=!1)}functionq(e){Z?E(e.pointer.x):A(e.pointer.x)}functionA(e){a.$evalAsync(function(){w(K(F(e)))})}functionE(e){vart=K(F(e)),a=x(y(t));C(F(e)),P.text(a)}functionR(e){returnMath.max(0,Math.min(e||0,1))}functionF(e){returnMath.max(0,Math.min(1,(e-Q.left)/Q.width))}functionK(e){returnY+e*(j-Y)}functionL(e){return(e-Y)/(j-Y)}r(l),u=u||{$setViewValue:function(e){this.$viewValue=e,this.$viewChangeListeners.forEach(function(e){e()})},$parsers:[],$formatters:[],$viewChangeListeners:[]};varN=!1;d.$observe("disabled",function(e){N=n.parseAttributeBoolean(e,!1),g()});varO=angular.element(l[0].querySelector("._md-thumb")),P=angular.element(l[0].querySelector("._md-thumb-text")),T=O.parent(),z=angular.element(l[0].querySelector("._md-track-container")),B=angular.element(l[0].querySelector("._md-track-fill")),G=angular.element(l[0].querySelector("._md-track-ticks")),U=n.throttle($,5e3);angular.isDefined(d.min)?d.$observe("min",m):m(0),angular.isDefined(d.max)?d.$observe("max",v):v(100),angular.isDefined(d.step)?d.$observe("step",f):f(1),o.register(l,"drag"),l.on("keydown",_).on("$md.pressdown",k).on("$md.pressup",V).on("$md.dragstart",D).on("$md.drag",S).on("$md.dragend",M),setTimeout(c,0);varW=e.throttle(c);angular.element(t).on("resize",W),a.$on("$destroy",function(){angular.element(t).off("resize",W)}),u.$render=b,u.$viewChangeListeners.push(b),u.$formatters.push(x),u.$formatters.push(y);varY,j,H,I,J,Q={};$();varX=!1,Z=angular.isDefined(d.mdDiscrete)}return{scope:{},require:"?ngModel",template:'<div class="_md-slider-wrapper"><div class="_md-track-container"><div class="_md-track"></div><div class="_md-track _md-track-fill"></div><div class="_md-track-ticks"></div></div><div class="_md-thumb-container"><div class="_md-thumb"></div><div class="_md-focus-thumb"></div><div class="_md-focus-ring"></div><div class="_md-sign"><span class="_md-thumb-text"></span></div><div class="_md-disabled-thumb"></div></div></div>',compile:d}}goog.provide("ng.material.components.slider"),goog.require("ng.material.core"),angular.module("material.components.slider",["material.core"]).directive("mdSlider",SliderDirective),SliderDirective.$inject=["$$rAF","$window","$mdAria","$mdUtil","$mdConstant","$mdTheming","$mdGesture","$parse","$log"],ng.material.components.slider=angular.module("material.components.slider");
* The `<md-tabs>` directive serves as the container for 1..n `<md-tab>` child directives to produces a Tabs components.
* In turn, the nested `<md-tab>` directive is used to specify a tab label for the **header button** and a [optional] tab view
* content that will be associated with each tab button.
*
* Below is the markup for its simplest usage:
*
* <hljs lang="html">
* <md-tabs>
* <md-tab label="Tab #1"></md-tab>
* <md-tab label="Tab #2"></md-tab>
* <md-tab label="Tab #3"></md-tab>
* </md-tabs>
* </hljs>
*
* Tabs supports three (3) usage scenarios:
*
* 1. Tabs (buttons only)
* 2. Tabs with internal view content
* 3. Tabs with external view content
*
* **Tab-only** support is useful when tab buttons are used for custom navigation regardless of any other components, content, or views.
* **Tabs with internal views** are the traditional usages where each tab has associated view content and the view switching is managed internally by the Tabs component.
* **Tabs with external view content** is often useful when content associated with each tab is independently managed and data-binding notifications announce tab selection changes.
*
* Additional features also include:
*
* * Content can include any markup.
* * If a tab is disabled while active/selected, then the next tab will be auto-selected.
*
* ### Explanation of tab stretching
*
* Initially, tabs will have an inherent size. This size will either be defined by how much space is needed to accommodate their text or set by the user through CSS. Calculations will be based on this size.
*
* On mobile devices, tabs will be expanded to fill the available horizontal space. When this happens, all tabs will become the same size.
*
* On desktops, by default, stretching will never occur.
*
* This default behavior can be overridden through the `md-stretch-tabs` attribute. Here is a table showing when stretching will occur:
*
* `md-stretch-tabs` | mobile | desktop
* ------------------|-----------|--------
* `auto` | stretched | ---
* `always` | stretched | stretched
* `never` | --- | ---
*
* @param {integer=} md-selected Index of the active/selected tab
* @param {boolean=} md-no-ink If present, disables ink ripple effects.
* @param {boolean=} md-no-ink-bar If present, disables the selection ink bar.
* @param {string=} md-align-tabs Attribute to indicate position of tab buttons: `bottom` or `top`; default is `top`
* @param {string=} md-stretch-tabs Attribute to indicate whether or not to stretch tabs: `auto`, `always`, or `never`; default is `auto`
* @param {boolean=} md-dynamic-height When enabled, the tab wrapper will resize based on the contents of the selected tab
* @param {boolean=} md-border-bottom If present, shows a solid `1px` border between the tabs and their content
* @param {boolean=} md-center-tabs When enabled, tabs will be centered provided there is no need for pagination
* @param {boolean=} md-no-pagination When enabled, pagination will remain off
* @param {boolean=} md-swipe-content When enabled, swipe gestures will be enabled for the content area to jump between tabs
* @param {boolean=} md-enable-disconnect When enabled, scopes will be disconnected for tabs that are not being displayed. This provides a performance boost, but may also cause unexpected issues and is not recommended for most users.
* @param {boolean=} md-autoselect When present, any tabs added after the initial load will be automatically selected
*
* @usage
* <hljs lang="html">
* <md-tabs md-selected="selectedIndex" >
* <img ng-src="img/angular.png" class="centered">
* <md-tab
* ng-repeat="tab in tabs | orderBy:predicate:reversed"
* @param {expression=} md-visible Boolean bound to whether the tooltip is currently visible.
* @param {number=} md-delay How many milliseconds to wait to show the tooltip after the user focuses, hovers, or touches the parent. Defaults to 300ms.
* @param {boolean=} md-autohide If present or provided with a boolean value, the tooltip will hide on mouse leave, regardless of focus
* @param {string=} md-direction Which direction would you like the tooltip to go? Supports left, right, top, and bottom. Defaults to bottom.
functionVirtualRepeatContainerDirective(){return{controller:VirtualRepeatContainerController,template:virtualRepeatContainerTemplate,compile:function(t,e){t.addClass("md-virtual-repeat-container").addClass(e.hasOwnProperty("mdOrientHorizontal")?"md-orient-horizontal":"md-orient-vertical")}}}functionvirtualRepeatContainerTemplate(t){return'<div class="md-virtual-repeat-scroller"><div class="md-virtual-repeat-sizer"></div><div class="md-virtual-repeat-offsetter">'+t[0].innerHTML+"</div></div>"}functionVirtualRepeatContainerController(t,e,i,r,s,n,o,a){this.$rootScope=r,this.$scope=n,this.$element=o,this.$attrs=a,this.size=0,this.scrollSize=0,this.scrollOffset=0,this.horizontal=this.$attrs.hasOwnProperty("mdOrientHorizontal"),this.repeater=null,this.autoShrink=this.$attrs.hasOwnProperty("mdAutoShrink"),this.autoShrinkMin=parseInt(this.$attrs.mdAutoShrinkMin,10)||0,this.originalSize=null,this.offsetSize=parseInt(this.$attrs.mdOffsetSize,10)||0,this.oldElementSize=null,this.$attrs.mdTopIndex?(this.bindTopIndex=i(this.$attrs.mdTopIndex),this.topIndex=this.bindTopIndex(this.$scope),angular.isDefined(this.topIndex)||(this.topIndex=0,this.bindTopIndex.assign(this.$scope,0)),this.$scope.$watch(this.bindTopIndex,angular.bind(this,function(t){t!==this.topIndex&&this.scrollToIndex(t)}))):this.topIndex=0,this.scroller=o[0].getElementsByClassName("md-virtual-repeat-scroller")[0],this.sizer=this.scroller.getElementsByClassName("md-virtual-repeat-sizer")[0],this.offsetter=this.scroller.getElementsByClassName("md-virtual-repeat-offsetter")[0];varl=angular.bind(this,this.updateSize);t(angular.bind(this,function(){l();vart=e.debounce(l,10,null,!1),i=angular.element(s);this.size||t(),i.on("resize",t),n.$on("$destroy",function(){i.off("resize",t)}),n.$emit("$md-resize-enable"),n.$on("$md-resize",l)}))}functionVirtualRepeatDirective(t){return{controller:VirtualRepeatController,priority:1e3,require:["mdVirtualRepeat","^^mdVirtualRepeatContainer"],restrict:"A",terminal:!0,transclude:"element",compile:function(e,i){varr=i.mdVirtualRepeat,s=r.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)\s*$/),n=s[1],o=t(s[2]),a=i.mdExtraName&&t(i.mdExtraName);returnfunction(t,e,i,r,s){r[0].link_(r[1],s,n,o,a)}}}}functionVirtualRepeatController(t,e,i,r,s,n,o,a){this.$scope=t,this.$element=e,this.$attrs=i,this.$browser=r,this.$document=s,this.$rootScope=n,this.$$rAF=o,this.onDemand=a.parseAttributeBoolean(i.mdOnDemand),this.browserCheckUrlChange=r.$$checkUrlChange,this.newStartIndex=0,this.newEndIndex=0,this.newVisibleEnd=0,this.startIndex=0,this.endIndex=0,this.itemSize=t.$eval(i.mdItemSize)||null,this.isFirstRender=!0,this.isVirtualRepeatUpdating_=!1,this.itemsLength=0,this.unwatchItemSize_=angular.noop,this.blocks={},this.pooledBlocks=[]}functionVirtualRepeatModelArrayLike(t){if(!angular.isFunction(t.getItemAtIndex)||!angular.isFunction(t.getLength))throwError("When md-on-demand is enabled, the Object passed to md-virtual-repeat must implement functions getItemAtIndex() and getLength() ");this.model=t}functionabstractMethod(){throwError("Non-overridden abstract method called.")}goog.provide("ng.material.components.virtualRepeat"),goog.require("ng.material.components.showHide"),goog.require("ng.material.core"),angular.module("material.components.virtualRepeat",["material.core","material.components.showHide"]).directive("mdVirtualRepeatContainer",VirtualRepeatContainerDirective).directive("mdVirtualRepeat",VirtualRepeatDirective);varMAX_ELEMENT_SIZE=1533917,NUM_EXTRA=3;VirtualRepeatContainerController.$inject=["$$rAF","$mdUtil","$parse","$rootScope","$window","$scope","$element","$attrs"],VirtualRepeatContainerController.prototype.register=function(t){this.repeater=t,angular.element(this.scroller).on("scroll wheel touchmove touchend",angular.bind(this,this.handleScroll_))},VirtualRepeatContainerController.prototype.isHorizontal=function(){returnthis.horizontal},VirtualRepeatContainerController.prototype.getSize=function(){returnthis.size},VirtualRepeatContainerController.prototype.setSize_=function(t){vare=this.getDimensionName_();this.size=t,this.$element[0].style[e]=t+"px"},VirtualRepeatContainerController.prototype.unsetSize_=function(){this.$element[0].style[this.getDimensionName_()]=this.oldElementSize,this.oldElementSize=null},VirtualRepeatContainerController.prototype.updateSize=function(){this.originalSize||(this.size=this.isHorizontal()?this.$element[0].clientWidth:this.$element[0].clientHeight,this.handleScroll_(),this.repeater&&this.repeater.containerUpdated())},VirtualRepeatContainerController.prototype.getScrollSize=function(){returnthis.scrollSize},VirtualRepeatContainerController.prototype.getDimensionName_=function(){returnthis.isHorizontal()?"width":"height"},VirtualRepeatContainerController.prototype.sizeScroller_=function(t){vare=this.getDimensionName_(),i=this.isHorizontal()?"height":"width";if(this.sizer.innerHTML="",MAX_ELEMENT_SIZE>t)this.sizer.style[e]=t+"px";else{this.sizer.style[e]="auto",this.sizer.style[i]="auto";varr=Math.floor(t/MAX_ELEMENT_SIZE),s=document.createElement("div");s.style[e]="1533917px",s.style[i]="1px";for(varn=0;r>n;n++)this.sizer.appendChild(s.cloneNode(!1));s.style[e]=t-r*MAX_ELEMENT_SIZE+"px",this.sizer.appendChild(s)}},VirtualRepeatContainerController.prototype.autoShrink_=function(t){vare=Math.max(t,this.autoShrinkMin*this.repeater.getItemSize());if(this.autoShrink&&e!==this.size){null===this.oldElementSize&&(this.oldElementSize=this.$element[0].style[this.getDimensionName_()]);vari=this.originalSize||this.size;!i||i>e?(this.originalSize||(this.originalSize=this.size),this.setSize_(e)):null!==this.originalSize&&(this.unsetSize_(),this.originalSize=null,this.updateSize()),this.repeater.containerUpdated()}},VirtualRepeatContainerController.prototype.setScrollSize=function(t){vare=t+this.offsetSize;this.scrollSize!==e&&(this.sizeScroller_(e),this.autoShrink_(e),this.scrollSize=e)},VirtualRepeatContainerController.prototype.getScrollOffset=function(){returnthis.scrollOffset},VirtualRepeatContainerController.prototype.scrollTo=function(t){this.scroller[this.isHorizontal()?"scrollLeft":"scrollTop"]=t,this.handleScroll_()},VirtualRepeatContainerController.prototype.scrollToIndex=function(t){vare=this.repeater.getItemSize(),i=this.repeater.itemsLength;t>i&&(t=i-1),this.scrollTo(e*t)},VirtualRepeatContainerController.prototype.resetScroll=function(){this.scrollTo(0)},VirtualRepeatContainerController.prototype.handleScroll_=function(){vart=angular.element(document)[0],e="rtl"!=t.dir&&"rtl"!=t.body.dir;e||this.maxSize||(this.scroller.scrollLeft=this.scrollSize,this.maxSize=this.scroller.scrollLeft);vari=this.isHorizontal()?e?this.scroller.scrollLeft:this.maxSize-this.scroller.scrollLeft:this.scroller.scrollTop;if(!(i===this.scrollOffset||i>this.scrollSize-this.size)){varr=this.repeater.getItemSize();if(r){vars=Math.max(0,Math.floor(i/r)-NUM_EXTRA),n=(this.isHorizontal()?"translateX(":"translateY(")+(!this.isHorizontal()||e?s*r:-(s*r))+"px)";if(this.scrollOffset=i,this.offsetter.style.webkitTransform=n,this.offsetter.style.transform=n,this.bindTopIndex){varo=Math.floor(i/r);o!==this.topIndex&&o<this.repeater.getItemCount()&&(this.topIndex=o,this.bindTopIndex.assign(this.$scope,o),this.$rootScope.$$phase||this.$scope.$digest())}this.repeater.containerUpdated()}}},VirtualRepeatDirective.$inject=["$parse"],VirtualRepeatController.$inject=["$scope","$element","$attrs","$browser","$document","$rootScope","$$rAF","$mdUtil"],VirtualRepeatController.Block,VirtualRepeatController.prototype.link_=function(t,e,i,r,s){this.container=t,this.transclude=e,this.repeatName=i,this.rawRepeatListExpression=r,this.extraName=s,this.sized=!1,this.repeatListExpression=angular.bind(this,this.repeatListExpression_),this.container.register(this)},VirtualRepeatController.prototype.readItemSize_=function(){if(!this.itemSize){this.items=this.repeatListExpression(this.$scope),this.parentNode=this.$element[0].parentNode;vart=this.getBlock_(0);t.element[0].parentNode||this.parentNode.appendChild(t.element[0]),this.itemSize=t.element[0][this.container.isHorizontal()?"offsetWidth":"offsetHeight"]||null,this.blocks[0]=t,this.poolBlock_(0),this.itemSize&&this.containerUpdated()}},VirtualRepeatController.prototype.repeatListExpression_=function(t){vare=this.rawRepeatListExpression(t);if(this.onDemand&&e){vari=newVirtualRepeatModelArrayLike(e);returni.$$includeIndexes(this.newStartIndex,this.newVisibleEnd),i}returne},VirtualRepeatController.prototype.containerUpdated=function(){returnthis.itemSize?(this.sized||(this.items=this.repeatListExpression(this.$scope)),this.sized||(this.unwatchItemSize_(),this.sized=!0,this.$scope.$watchCollection(this.repeatListExpression,angular.bind(this,function(t,e){this.isVirtualRepeatUpdating_||this.virtualRepeatUpdate_(t,e)}))),this.updateIndexes_(),void((this.newStartIndex!==this.startIndex||this.newEndIndex!==this.endIndex||this.container.getScrollOffset()>this.container.getScrollSize())&&(this.itemsinstanceofVirtualRepeatModelArrayLike&&this.items.$$includeIndexes(this.newStartIndex,this.newEndIndex),this.virtualRepeatUpdate_(this.items,this.items)))):(this.unwatchItemSize_=this.$scope.$watchCollection(this.repeatListExpression,angular.bind(this,function(t){t&&t.length&&this.$$rAF(angular.bind(this,this.readItemSize_))})),void(this.$rootScope.$$phase||this.$scope.$digest()))},VirtualRepeatController.prototype.getItemSize=function(){returnthis.itemSize},VirtualRepeatController.prototype.getItemCount=function(){returnthis.itemsLength},VirtualRepeatController.prototype.virtualRepeatUpdate_=function(t,e){this.isVirtualRepeatUpdating_=!0;vari=t&&t.length||0,r=!1;if(this.items&&i<this.items.length&&0!==this.container.getScrollOffset())returnthis.items=t,voidthis.container.resetScroll();if(i!==this.itemsLength&&(r=!0,this.itemsLength=i),this.items=t,(t!==e||r)&&this.updateIndexes_(),this.parentNode=this.$element[0].parentNode,r&&this.container.setScrollSize(i*this.itemSize),this.isFirstRender){this.isFirstRender=!1;vars=this.$attrs.mdStartIndex?this.$scope.$eval(this.$attrs.mdStartIndex):this.container.topIndex;this.container.scrollToIndex(s)}Object.keys(this.blocks).forEach(function(t){vare=parseInt(t,10);(e<this.newStartIndex||e>=this.newEndIndex)&&this.poolBlock_(e)},this),this.$browser.$$checkUrlChange=angular.noop;varn,o,a=[],l=[];for(n=this.newStartIndex;n<this.newEndIndex&&null==this.blocks[n];n++)o=this.getBlock_(n),this.updateBlock_(o,n),a.push(o);for(;null!=this.blocks[n];n++)this.updateBlock_(this.blocks[n],n);for(varh=n-1;n<this.newEndIndex;n++)o=this.getBlock_(n),this.updateBlock_(o,n),l.push(o);a.length&&this.parentNode.insertBefore(this.domFragmentFromBlocks_(a),this.$element[0].nextSibling),l.length&&this.parentNode.insertBefore(this.domFragmentFromBlocks_(l),this.blocks[h]&&this.blocks[h].element[0].nextSibling),this.$browser.$$checkUrlChange=this.browserCheckUrlChange,this.startIndex=this.newStartIndex,this.endIndex=this.newEndIndex,this.isVirtualRepeatUpdating_=!1},VirtualRepeatController.prototype.getBlock_=function(t){if(this.pooledBlocks.length)returnthis.pooledBlocks.pop();vare;returnthis.transclude(angular.bind(this,function(i,r){e={element:i,"new":!0,scope:r},this.updateScope_(r,t),this.parentNode.appendChild(i[0])})),e},VirtualRepeatController.prototype.updateBlock_=function(t,e){this.blocks[e]=t,(t["new"]||t.scope.$index!==e||t.scope[this.repeatName]!==this.items[e])&&(t["new"]=!1,this.updateScope_(t.scope,e),this.$rootScope.$$phase||t.scope.$digest())},VirtualRepeatController.prototype.updateScope_=function(t,e){t.$index=e,t[this.repeatName]=this.items&&this.items[e],this.extraName&&(t[this.extraName(this.$scope)]=this.items[e])},VirtualRepeatController.prototype.poolBlock_=function(t){this.pooledBlocks.push(this.blocks[t]),this.parentNode.removeChild(this.blocks[t].element[0]),deletethis.blocks[t]},VirtualRepeatController.prototype.domFragmentFromBlocks_=function(t){vare=this.$document[0].createDocumentFragment();returnt.forEach(function(t){e.appendChild(t.element[0])}),e},VirtualRepeatController.prototype.updateIndexes_=function(){vart=this.items?this.items.length:0,e=Math.ceil(this.container.getSize()/this.itemSize);this.newStartIndex=Math.max(0,Math.min(t-e,Math.floor(this.container.getScrollOffset()/this.itemSize))),this.newVisibleEnd=this.newStartIndex+e+NUM_EXTRA,this.newEndIndex=Math.min(t,this.newVisibleEnd),this.newStartIndex=Math.max(0,this.newStartIndex-NUM_EXTRA)},VirtualRepeatModelArrayLike.prototype.$$includeIndexes=function(t,e){for(vari=t;e>i;i++)this.hasOwnProperty(i)||(this[i]=this.model.getItemAtIndex(i));this.length=this.model.getLength()},ng.material.components.virtualRepeat=angular.module("material.components.virtualRepeat");