dgk/django-business-logic

View on GitHub
business_logic/static/business_logic/vendor.bundle.js

Summary

Maintainability
A
0 mins
Test Coverage
webpackJsonp([1],[function(e,t,n){"use strict";var o=n(26),r=n(1190),i=n(156),a=function(){function Observable(e){this._isScalar=!1,e&&(this._subscribe=e)}return Observable.prototype.lift=function(e){var t=new Observable;return t.source=this,t.operator=e,t},Observable.prototype.subscribe=function(e,t,n){var o=this.operator,i=r.toSubscriber(e,t,n);if(o?o.call(i,this.source):i.add(this.source?this._subscribe(i):this._trySubscribe(i)),i.syncErrorThrowable&&(i.syncErrorThrowable=!1,i.syncErrorThrown))throw i.syncErrorValue;return i},Observable.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.syncErrorThrown=!0,e.syncErrorValue=t,e.error(t)}},Observable.prototype.forEach=function(e,t){var n=this;if(t||(o.root.Rx&&o.root.Rx.config&&o.root.Rx.config.Promise?t=o.root.Rx.config.Promise:o.root.Promise&&(t=o.root.Promise)),!t)throw new Error("no Promise impl found");return new t(function(t,o){var r;r=n.subscribe(function(t){if(r)try{e(t)}catch(n){o(n),r.unsubscribe()}else e(t)},o,t)})},Observable.prototype._subscribe=function(e){return this.source.subscribe(e)},Observable.prototype[i.observable]=function(){return this},Observable.create=function(e){return new Observable(e)},Observable}();t.Observable=a},function(e,t,n){"use strict";var o=n(646);n.d(t,"VERSION",function(){return o._36}),n.d(t,"assertPlatform",function(){return o._37}),n.d(t,"destroyPlatform",function(){return o._38}),n.d(t,"getPlatform",function(){return o._39}),n.d(t,"PlatformRef",function(){return o._40}),n.d(t,"ApplicationRef",function(){return o._28}),n.d(t,"enableProdMode",function(){return o._41}),n.d(t,"isDevMode",function(){return o.e}),n.d(t,"createPlatformFactory",function(){return o._16}),n.d(t,"NgProbeToken",function(){return o._31}),n.d(t,"APP_ID",function(){return o._27}),n.d(t,"PACKAGE_ROOT_URL",function(){return o.z}),n.d(t,"PLATFORM_INITIALIZER",function(){return o._19}),n.d(t,"APP_BOOTSTRAP_LISTENER",function(){return o._42}),n.d(t,"APP_INITIALIZER",function(){return o._43}),n.d(t,"ApplicationInitStatus",function(){return o._44}),n.d(t,"DebugElement",function(){return o._45}),n.d(t,"DebugNode",function(){return o._46}),n.d(t,"asNativeElements",function(){return o._47}),n.d(t,"getDebugNode",function(){return o._29}),n.d(t,"Testability",function(){return o._34}),n.d(t,"TestabilityRegistry",function(){return o._48}),n.d(t,"setTestabilityGetter",function(){return o._25}),n.d(t,"TRANSLATIONS",function(){return o._13}),n.d(t,"TRANSLATIONS_FORMAT",function(){return o.v}),n.d(t,"LOCALE_ID",function(){return o.u}),n.d(t,"ApplicationModule",function(){return o._35}),n.d(t,"wtfCreateScope",function(){return o._49}),n.d(t,"wtfLeave",function(){return o._50}),n.d(t,"wtfStartTimeRange",function(){return o._51}),n.d(t,"wtfEndTimeRange",function(){return o._52}),n.d(t,"Type",function(){return o.W}),n.d(t,"EventEmitter",function(){return o._20}),n.d(t,"ErrorHandler",function(){return o._33}),n.d(t,"AnimationTransitionEvent",function(){return o._53}),n.d(t,"AnimationPlayer",function(){return o._54}),n.d(t,"AnimationStyles",function(){return o._55}),n.d(t,"AnimationKeyframe",function(){return o._56}),n.d(t,"Sanitizer",function(){return o._32}),n.d(t,"SecurityContext",function(){return o.t}),n.d(t,"ANALYZE_FOR_ENTRY_COMPONENTS",function(){return o.f}),n.d(t,"Attribute",function(){return o.V}),n.d(t,"ContentChild",function(){return o.Z}),n.d(t,"ContentChildren",function(){return o._0}),n.d(t,"Query",function(){return o.F}),n.d(t,"ViewChild",function(){return o._1}),n.d(t,"ViewChildren",function(){return o._2}),n.d(t,"Component",function(){return o.G}),n.d(t,"Directive",function(){return o.H}),n.d(t,"HostBinding",function(){return o.D}),n.d(t,"HostListener",function(){return o.E}),n.d(t,"Input",function(){return o.B}),n.d(t,"Output",function(){return o.C}),n.d(t,"Pipe",function(){return o.J}),n.d(t,"AfterContentChecked",function(){return o._57}),n.d(t,"AfterContentInit",function(){return o._58}),n.d(t,"AfterViewChecked",function(){return o._59}),n.d(t,"AfterViewInit",function(){return o._60}),n.d(t,"DoCheck",function(){return o._61}),n.d(t,"OnChanges",function(){return o._62}),n.d(t,"OnDestroy",function(){return o._63}),n.d(t,"OnInit",function(){return o._64}),n.d(t,"CUSTOM_ELEMENTS_SCHEMA",function(){return o.Y}),n.d(t,"NO_ERRORS_SCHEMA",function(){return o.X}),n.d(t,"NgModule",function(){return o.I}),n.d(t,"ViewEncapsulation",function(){return o.c}),n.d(t,"Version",function(){return o.a}),n.d(t,"createPlatform",function(){return o._65}),n.d(t,"Class",function(){return o._66}),n.d(t,"forwardRef",function(){return o._67}),n.d(t,"resolveForwardRef",function(){return o.A}),n.d(t,"Injector",function(){return o.q}),n.d(t,"ReflectiveInjector",function(){return o._14}),n.d(t,"ResolvedReflectiveFactory",function(){return o._68}),n.d(t,"ReflectiveKey",function(){return o._69}),n.d(t,"OpaqueToken",function(){return o.w}),n.d(t,"Inject",function(){return o.y}),n.d(t,"Optional",function(){return o.x}),n.d(t,"Injectable",function(){return o.R}),n.d(t,"Self",function(){return o.T}),n.d(t,"SkipSelf",function(){return o.U}),n.d(t,"Host",function(){return o.S}),n.d(t,"NgZone",function(){return o._26}),n.d(t,"RenderComponentType",function(){return o.j}),n.d(t,"Renderer",function(){return o.r}),n.d(t,"RootRenderer",function(){return o._30}),n.d(t,"COMPILER_OPTIONS",function(){return o._15}),n.d(t,"Compiler",function(){return o._12}),n.d(t,"CompilerFactory",function(){return o._18}),n.d(t,"ModuleWithComponentFactories",function(){return o._11}),n.d(t,"ComponentFactory",function(){return o.n}),n.d(t,"ComponentRef",function(){return o.o}),n.d(t,"ComponentFactoryResolver",function(){return o.m}),n.d(t,"ElementRef",function(){return o.g}),n.d(t,"NgModuleFactory",function(){return o.p}),n.d(t,"NgModuleRef",function(){return o._70}),n.d(t,"NgModuleFactoryLoader",function(){return o._71}),n.d(t,"getModuleFactory",function(){return o._72}),n.d(t,"QueryList",function(){return o.k}),n.d(t,"SystemJsNgModuleLoader",function(){return o._73}),n.d(t,"SystemJsNgModuleLoaderConfig",function(){return o._74}),n.d(t,"TemplateRef",function(){return o.l}),n.d(t,"ViewContainerRef",function(){return o.h}),n.d(t,"EmbeddedViewRef",function(){return o._75}),n.d(t,"ViewRef",function(){return o._76}),n.d(t,"ChangeDetectionStrategy",function(){return o.d}),n.d(t,"ChangeDetectorRef",function(){return o.i}),n.d(t,"CollectionChangeRecord",function(){return o._77}),n.d(t,"DefaultIterableDiffer",function(){return o._78}),n.d(t,"IterableDiffers",function(){return o._21}),n.d(t,"KeyValueChangeRecord",function(){return o._79}),n.d(t,"KeyValueDiffers",function(){return o._22}),n.d(t,"SimpleChange",function(){return o.s}),n.d(t,"WrappedValue",function(){return o._23}),n.d(t,"platformCore",function(){return o._17}),n.d(t,"__core_private__",function(){return o.b}),n.d(t,"AUTO_STYLE",function(){return o._24}),n.d(t,"AnimationEntryMetadata",function(){return o._80}),n.d(t,"AnimationStateMetadata",function(){return o._81}),n.d(t,"AnimationStateDeclarationMetadata",function(){return o.K}),n.d(t,"AnimationStateTransitionMetadata",function(){return o.L}),n.d(t,"AnimationMetadata",function(){return o._82}),n.d(t,"AnimationKeyframesSequenceMetadata",function(){return o.N}),n.d(t,"AnimationStyleMetadata",function(){return o.M}),n.d(t,"AnimationAnimateMetadata",function(){return o.O}),n.d(t,"AnimationWithStepsMetadata",function(){return o.P}),n.d(t,"AnimationSequenceMetadata",function(){return o._83}),n.d(t,"AnimationGroupMetadata",function(){return o.Q}),n.d(t,"animate",function(){return o._7}),n.d(t,"group",function(){return o._10}),n.d(t,"sequence",function(){return o._9}),n.d(t,"style",function(){return o._6}),n.d(t,"state",function(){return o._4}),n.d(t,"keyframes",function(){return o._8}),n.d(t,"transition",function(){return o._5}),n.d(t,"trigger",function(){return o._3})},,function(e,t,n){"use strict";var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(231),i=n(22),a=n(490),s=n(228),u=function(e){function Subscriber(t,n,o){switch(e.call(this),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=a.empty;break;case 1:if(!t){this.destination=a.empty;break}if("object"==typeof t){t instanceof Subscriber?(this.destination=t,this.destination.add(this)):(this.syncErrorThrowable=!0,this.destination=new l(this,t));break}default:this.syncErrorThrowable=!0,this.destination=new l(this,t,n,o)}}return o(Subscriber,e),Subscriber.prototype[s.rxSubscriber]=function(){return this},Subscriber.create=function(e,t,n){var o=new Subscriber(e,t,n);return o.syncErrorThrowable=!1,o},Subscriber.prototype.next=function(e){this.isStopped||this._next(e)},Subscriber.prototype.error=function(e){this.isStopped||(this.isStopped=!0,this._error(e))},Subscriber.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},Subscriber.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this))},Subscriber.prototype._next=function(e){this.destination.next(e)},Subscriber.prototype._error=function(e){this.destination.error(e),this.unsubscribe()},Subscriber.prototype._complete=function(){this.destination.complete(),this.unsubscribe()},Subscriber.prototype._unsubscribeAndRecycle=function(){var e=this,t=e._parent,n=e._parents;return this._parent=null,this._parents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parent=t,this._parents=n,this},Subscriber}(i.Subscription);t.Subscriber=u;var l=function(e){function SafeSubscriber(t,n,o,i){e.call(this),this._parentSubscriber=t;var s,u=this;r.isFunction(n)?s=n:n&&(s=n.next,o=n.error,i=n.complete,n!==a.empty&&(u=Object.create(n),r.isFunction(u.unsubscribe)&&this.add(u.unsubscribe.bind(u)),u.unsubscribe=this.unsubscribe.bind(this))),this._context=u,this._next=s,this._error=o,this._complete=i}return o(SafeSubscriber,e),SafeSubscriber.prototype.next=function(e){if(!this.isStopped&&this._next){var t=this._parentSubscriber;t.syncErrorThrowable?this.__tryOrSetError(t,this._next,e)&&this.unsubscribe():this.__tryOrUnsub(this._next,e)}},SafeSubscriber.prototype.error=function(e){if(!this.isStopped){var t=this._parentSubscriber;if(this._error)t.syncErrorThrowable?(this.__tryOrSetError(t,this._error,e),this.unsubscribe()):(this.__tryOrUnsub(this._error,e),this.unsubscribe());else{if(!t.syncErrorThrowable)throw this.unsubscribe(),e;t.syncErrorValue=e,t.syncErrorThrown=!0,this.unsubscribe()}}},SafeSubscriber.prototype.complete=function(){var e=this;if(!this.isStopped){var t=this._parentSubscriber;if(this._complete){var n=function(){return e._complete.call(e._context)};t.syncErrorThrowable?(this.__tryOrSetError(t,n),this.unsubscribe()):(this.__tryOrUnsub(n),this.unsubscribe())}else this.unsubscribe()}},SafeSubscriber.prototype.__tryOrUnsub=function(e,t){try{e.call(this._context,t)}catch(n){throw this.unsubscribe(),n}},SafeSubscriber.prototype.__tryOrSetError=function(e,t,n){try{t.call(this._context,n)}catch(o){return e.syncErrorValue=o,e.syncErrorThrown=!0,!0}return!1},SafeSubscriber.prototype._unsubscribe=function(){var e=this._parentSubscriber;this._context=null,this._parentSubscriber=null,e.unsubscribe()},SafeSubscriber}(u)},function(e,t,n){"use strict";var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(3),i=function(e){function OuterSubscriber(){e.apply(this,arguments)}return o(OuterSubscriber,e),OuterSubscriber.prototype.notifyNext=function(e,t,n,o,r){this.destination.next(t)},OuterSubscriber.prototype.notifyError=function(e,t){this.destination.error(e)},OuterSubscriber.prototype.notifyComplete=function(e){this.destination.complete()},OuterSubscriber}(r.Subscriber);t.OuterSubscriber=i},function(e,t,n){"use strict";function subscribeToResult(e,t,n,d){var p=new l.InnerSubscriber(e,n,d);if(p.closed)return null;if(t instanceof s.Observable)return t._isScalar?(p.next(t.value),p.complete(),null):t.subscribe(p);if(r.isArrayLike(t)){for(var g=0,f=t.length;g<f&&!p.closed;g++)p.next(t[g]);p.closed||p.complete()}else{if(i.isPromise(t))return t.then(function(e){p.closed||(p.next(e),p.complete())},function(e){return p.error(e)}).then(null,function(e){o.root.setTimeout(function(){throw e})}),p;if(t&&"function"==typeof t[u.iterator])for(var h=t[u.iterator]();;){var m=h.next();if(m.done){p.complete();break}if(p.next(m.value),p.closed)break}else if(t&&"function"==typeof t[c.observable]){var y=t[c.observable]();if("function"==typeof y.subscribe)return y.subscribe(new l.InnerSubscriber(e,n,d));p.error(new TypeError("Provided object does not correctly implement Symbol.observable"))}else{var b=a.isObject(t)?"an invalid object":"'"+t+"'",v="You provided "+b+" where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.";p.error(new TypeError(v))}}return null}var o=n(26),r=n(522),i=n(524),a=n(523),s=n(0),u=n(155),l=n(935),c=n(156);t.subscribeToResult=subscribeToResult},,function(e,t,n){"use strict";(function(e){function isPresent(e){return null!=e}function isBlank(e){return null==e}function isStrictStringMap(e){return"object"==typeof e&&null!==e&&Object.getPrototypeOf(e)===i}function stringify(e){if("string"==typeof e)return e;if(null==e)return""+e;if(e.overriddenName)return""+e.overriddenName;if(e.name)return""+e.name;var t=e.toString(),n=t.indexOf("\n");return n===-1?t:t.substring(0,n)}function isJsObject(e){return null!==e&&("function"==typeof e||"object"==typeof e)}function getSymbolIterator(){if(!s)if(o.Symbol&&Symbol.iterator)s=Symbol.iterator;else for(var e=Object.getOwnPropertyNames(Map.prototype),t=0;t<e.length;++t){var n=e[t];"entries"!==n&&"size"!==n&&Map.prototype[n]===Map.prototype.entries&&(s=n)}return s}function isPrimitive(e){return!isJsObject(e)}function escapeRegExp(e){return e.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}t.f=isPresent,t.g=isBlank,t.c=isStrictStringMap,t.e=stringify,n.d(t,"h",function(){return a}),t.a=isJsObject,t.b=getSymbolIterator,t.d=isPrimitive,t.i=escapeRegExp;var o;o="undefined"==typeof window?"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:e:window;var r=o;r.assert=function(e){};var i=Object.getPrototypeOf({}),a=function(){function NumberWrapper(){}return NumberWrapper.parseIntAutoRadix=function(e){var t=parseInt(e);if(isNaN(t))throw new Error("Invalid integer literal when parsing "+e);return t},NumberWrapper.isNumeric=function(e){return!isNaN(e-parseFloat(e))},NumberWrapper}(),s=null}).call(t,n(55))},function(e,t,n){"use strict";(function(e){function scheduleMicroTask(e){Zone.current.scheduleMicroTask("scheduleMicrotask",e)}function getTypeNameForDebugging(e){return e.name||typeof e}function isPresent(e){return null!=e}function isBlank(e){return null==e}function stringify(e){if("string"==typeof e)return e;if(null==e)return""+e;if(e.overriddenName)return""+e.overriddenName;if(e.name)return""+e.name;var t=e.toString(),n=t.indexOf("\n");return n===-1?t:t.substring(0,n)}function looseIdentical(e,t){return e===t||"number"==typeof e&&"number"==typeof t&&isNaN(e)&&isNaN(t)}function isJsObject(e){return null!==e&&("function"==typeof e||"object"==typeof e)}function print(e){console.log(e)}function warn(e){console.warn(e)}function getSymbolIterator(){if(!i)if(o.Symbol&&Symbol.iterator)i=Symbol.iterator;else for(var e=Object.getOwnPropertyNames(Map.prototype),t=0;t<e.length;++t){var n=e[t];"entries"!==n&&"size"!==n&&Map.prototype[n]===Map.prototype.entries&&(i=n)}return i}function isPrimitive(e){return!isJsObject(e)}t.l=scheduleMicroTask,n.d(t,"a",function(){return r}),t.j=getTypeNameForDebugging,t.d=isPresent,t.c=isBlank,t.b=stringify,t.i=looseIdentical,t.e=isJsObject,t.g=print,t.h=warn,t.f=getSymbolIterator,t.k=isPrimitive;var o;o="undefined"==typeof window?"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:e:window;var r=o;r.assert=function(e){};var i=(Object.getPrototypeOf({}),function(){function NumberWrapper(){}return NumberWrapper.parseIntAutoRadix=function(e){var t=parseInt(e);if(isNaN(t))throw new Error("Invalid integer literal when parsing "+e);return t},NumberWrapper.isNumeric=function(e){return!isNaN(e-parseFloat(e))},NumberWrapper}(),null)}).call(t,n(55))},,function(e,t,n){"use strict";function replaceVarInExpression(e,t,n){var o=new ue(e,t);return n.visitExpression(o,null)}function findReadVarNames(e){var t=new le;return t.visitAllStatements(e,null),t.varNames}function variable(e,t){return void 0===t&&(t=null),new E(e,t)}function importExpr(e,t){return void 0===t&&(t=null),new O(e,null,t)}function importType(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=null),n.i(o.f)(e)?expressionType(importExpr(e),t,r):null}function expressionType(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=null),n.i(o.f)(e)?new l(e,t,r):null}function literalArr(e,t){return void 0===t&&(t=null),new F(e,t)}function literalMap(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=!1),new V(e.map(function(e){return new U(e[0],e[1],n)}),t)}function not(e){return new w(e)}function fn(e,t,n){return void 0===n&&(n=null),new B(e,t,n)}function literal(e,t){return void 0===t&&(t=null),new N(e,t)}var o=n(7);n.d(t,"J",function(){return i}),n.d(t,"N",function(){return a}),n.d(t,"P",function(){return s}),n.d(t,"u",function(){return c}),n.d(t,"v",function(){return d}),n.d(t,"h",function(){return p}),n.d(t,"D",function(){return g}),n.d(t,"U",function(){return f}),n.d(t,"F",function(){return h}),n.d(t,"C",function(){return m}),n.d(t,"O",function(){return y}),n.d(t,"l",function(){return b}),n.d(t,"I",function(){return v}),n.d(t,"L",function(){return _}),n.d(t,"q",function(){return E}),n.d(t,"x",function(){return M}),n.d(t,"E",function(){return N}),n.d(t,"Q",function(){return O}),n.d(t,"r",function(){return x}),n.d(t,"m",function(){return L}),n.d(t,"G",function(){return U}),n.d(t,"H",function(){return V}),n.d(t,"c",function(){return W}),n.d(t,"y",function(){return j}),n.d(t,"k",function(){return $}),n.d(t,"b",function(){return K}),n.d(t,"M",function(){return G}),n.d(t,"j",function(){return z}),n.d(t,"w",function(){return Q}),n.d(t,"t",function(){return X}),n.d(t,"a",function(){return Z}),n.d(t,"z",function(){return ee}),n.d(t,"K",function(){return te}),n.d(t,"A",function(){return ne}),n.d(t,"e",function(){return oe}),n.d(t,"R",function(){return ae}),t.S=replaceVarInExpression,t.i=findReadVarNames,t.g=variable,t.d=importExpr,t.B=importType,t.T=expressionType,t.n=literalArr,t.o=literalMap,t.p=not,t.s=fn,t.f=literal;var r=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},i={};i.Const=0,i[i.Const]="Const";var a=function(){function Type(e){void 0===e&&(e=null),this.modifiers=e,e||(this.modifiers=[])}return Type.prototype.visitType=function(e,t){},Type.prototype.hasModifier=function(e){return this.modifiers.indexOf(e)!==-1},Type}(),s={};s.Dynamic=0,s.Bool=1,s.String=2,s.Int=3,s.Number=4,s.Function=5,s.Null=6,s[s.Dynamic]="Dynamic",s[s.Bool]="Bool",s[s.String]="String",s[s.Int]="Int",s[s.Number]="Number",s[s.Function]="Function",s[s.Null]="Null";var u=function(e){function BuiltinType(t,n){void 0===n&&(n=null),e.call(this,n),this.name=t}return r(BuiltinType,e),BuiltinType.prototype.visitType=function(e,t){return e.visitBuiltintType(this,t)},BuiltinType}(a),l=function(e){function ExpressionType(t,n,o){void 0===n&&(n=null),void 0===o&&(o=null),e.call(this,o),this.value=t,this.typeParams=n}return r(ExpressionType,e),ExpressionType.prototype.visitType=function(e,t){return e.visitExpressionType(this,t)},ExpressionType}(a),c=function(e){function ArrayType(t,n){void 0===n&&(n=null),e.call(this,n),this.of=t}return r(ArrayType,e),ArrayType.prototype.visitType=function(e,t){return e.visitArrayType(this,t)},ArrayType}(a),d=function(e){function MapType(t,n){void 0===n&&(n=null),e.call(this,n),this.valueType=t}return r(MapType,e),MapType.prototype.visitType=function(e,t){return e.visitMapType(this,t)},MapType}(a),p=new u(s.Dynamic),g=new u(s.Bool),f=(new u(s.Int),new u(s.Number)),h=new u(s.String),m=new u(s.Function),y=new u(s.Null),b={};b.Equals=0,b.NotEquals=1,b.Identical=2,b.NotIdentical=3,b.Minus=4,b.Plus=5,b.Divide=6,b.Multiply=7,b.Modulo=8,b.And=9,b.Or=10,b.Lower=11,b.LowerEquals=12,b.Bigger=13,b.BiggerEquals=14,b[b.Equals]="Equals",b[b.NotEquals]="NotEquals",b[b.Identical]="Identical",b[b.NotIdentical]="NotIdentical",b[b.Minus]="Minus",b[b.Plus]="Plus",b[b.Divide]="Divide",b[b.Multiply]="Multiply",b[b.Modulo]="Modulo",b[b.And]="And",b[b.Or]="Or",b[b.Lower]="Lower",b[b.LowerEquals]="LowerEquals",b[b.Bigger]="Bigger",b[b.BiggerEquals]="BiggerEquals";var v=function(){function Expression(e){this.type=e}return Expression.prototype.visitExpression=function(e,t){},Expression.prototype.prop=function(e){return new P(this,e)},Expression.prototype.key=function(e,t){return void 0===t&&(t=null),new H(this,e,t)},Expression.prototype.callMethod=function(e,t){return new C(this,e,t)},Expression.prototype.callFn=function(e){return new k(this,e)},Expression.prototype.instantiate=function(e,t){return void 0===t&&(t=null),new R(this,e,t)},Expression.prototype.conditional=function(e,t){return void 0===t&&(t=null),new D(this,e,t)},Expression.prototype.equals=function(e){return new L(b.Equals,this,e)},Expression.prototype.notEquals=function(e){return new L(b.NotEquals,this,e)},Expression.prototype.identical=function(e){return new L(b.Identical,this,e)},Expression.prototype.notIdentical=function(e){return new L(b.NotIdentical,this,e)},Expression.prototype.minus=function(e){return new L(b.Minus,this,e)},Expression.prototype.plus=function(e){return new L(b.Plus,this,e)},Expression.prototype.divide=function(e){return new L(b.Divide,this,e)},Expression.prototype.multiply=function(e){return new L(b.Multiply,this,e)},Expression.prototype.modulo=function(e){return new L(b.Modulo,this,e)},Expression.prototype.and=function(e){return new L(b.And,this,e)},Expression.prototype.or=function(e){return new L(b.Or,this,e)},Expression.prototype.lower=function(e){return new L(b.Lower,this,e)},Expression.prototype.lowerEquals=function(e){return new L(b.LowerEquals,this,e)},Expression.prototype.bigger=function(e){return new L(b.Bigger,this,e)},Expression.prototype.biggerEquals=function(e){return new L(b.BiggerEquals,this,e)},Expression.prototype.isBlank=function(){return this.equals(Y)},Expression.prototype.cast=function(e){return new I(this,e)},Expression.prototype.toStmt=function(){return new Q(this)},Expression}(),_={};_.This=0,_.Super=1,_.CatchError=2,_.CatchStack=3,_[_.This]="This",_[_.Super]="Super",_[_.CatchError]="CatchError",_[_.CatchStack]="CatchStack";var E=function(e){function ReadVarExpr(t,n){void 0===n&&(n=null),e.call(this,n),"string"==typeof t?(this.name=t,this.builtin=null):(this.name=null,this.builtin=t)}return r(ReadVarExpr,e),ReadVarExpr.prototype.visitExpression=function(e,t){return e.visitReadVarExpr(this,t)},ReadVarExpr.prototype.set=function(e){return new T(this.name,e)},ReadVarExpr}(v),T=function(e){function WriteVarExpr(t,n,o){void 0===o&&(o=null),e.call(this,o||n.type),this.name=t,this.value=n}return r(WriteVarExpr,e),WriteVarExpr.prototype.visitExpression=function(e,t){return e.visitWriteVarExpr(this,t)},WriteVarExpr.prototype.toDeclStmt=function(e,t){return void 0===e&&(e=null),void 0===t&&(t=null),new z(this.name,this.value,e,t)},WriteVarExpr}(v),S=function(e){function WriteKeyExpr(t,n,o,r){void 0===r&&(r=null),e.call(this,r||o.type),this.receiver=t,this.index=n,this.value=o}return r(WriteKeyExpr,e),WriteKeyExpr.prototype.visitExpression=function(e,t){return e.visitWriteKeyExpr(this,t)},WriteKeyExpr}(v),A=function(e){function WritePropExpr(t,n,o,r){void 0===r&&(r=null),e.call(this,r||o.type),this.receiver=t,this.name=n,this.value=o}return r(WritePropExpr,e),WritePropExpr.prototype.visitExpression=function(e,t){return e.visitWritePropExpr(this,t)},WritePropExpr}(v),M={};M.ConcatArray=0,M.SubscribeObservable=1,M.Bind=2,M[M.ConcatArray]="ConcatArray",M[M.SubscribeObservable]="SubscribeObservable",M[M.Bind]="Bind";var C=function(e){function InvokeMethodExpr(t,n,o,r){void 0===r&&(r=null),e.call(this,r),this.receiver=t,this.args=o,"string"==typeof n?(this.name=n,this.builtin=null):(this.name=null,this.builtin=n)}return r(InvokeMethodExpr,e),InvokeMethodExpr.prototype.visitExpression=function(e,t){return e.visitInvokeMethodExpr(this,t)},InvokeMethodExpr}(v),k=function(e){function InvokeFunctionExpr(t,n,o){void 0===o&&(o=null),e.call(this,o),this.fn=t,this.args=n}return r(InvokeFunctionExpr,e),InvokeFunctionExpr.prototype.visitExpression=function(e,t){return e.visitInvokeFunctionExpr(this,t)},InvokeFunctionExpr}(v),R=function(e){function InstantiateExpr(t,n,o){e.call(this,o),this.classExpr=t,this.args=n}return r(InstantiateExpr,e),InstantiateExpr.prototype.visitExpression=function(e,t){return e.visitInstantiateExpr(this,t)},InstantiateExpr}(v),N=function(e){function LiteralExpr(t,n){void 0===n&&(n=null),e.call(this,n),this.value=t}return r(LiteralExpr,e),LiteralExpr.prototype.visitExpression=function(e,t){return e.visitLiteralExpr(this,t)},LiteralExpr}(v),O=function(e){function ExternalExpr(t,n,o){void 0===n&&(n=null),void 0===o&&(o=null),e.call(this,n),this.value=t,this.typeParams=o}return r(ExternalExpr,e),ExternalExpr.prototype.visitExpression=function(e,t){return e.visitExternalExpr(this,t)},ExternalExpr}(v),D=function(e){function ConditionalExpr(t,n,o,r){void 0===o&&(o=null),void 0===r&&(r=null),e.call(this,r||n.type),this.condition=t,this.falseCase=o,this.trueCase=n}return r(ConditionalExpr,e),ConditionalExpr.prototype.visitExpression=function(e,t){return e.visitConditionalExpr(this,t)},ConditionalExpr}(v),w=function(e){function NotExpr(t){e.call(this,g),this.condition=t}return r(NotExpr,e),NotExpr.prototype.visitExpression=function(e,t){return e.visitNotExpr(this,t)},NotExpr}(v),I=function(e){function CastExpr(t,n){e.call(this,n),this.value=t}return r(CastExpr,e),CastExpr.prototype.visitExpression=function(e,t){return e.visitCastExpr(this,t)},CastExpr}(v),x=function(){function FnParam(e,t){void 0===t&&(t=null),this.name=e,this.type=t}return FnParam}(),B=function(e){function FunctionExpr(t,n,o){void 0===o&&(o=null),e.call(this,o),this.params=t,this.statements=n}return r(FunctionExpr,e),FunctionExpr.prototype.visitExpression=function(e,t){return e.visitFunctionExpr(this,t)},FunctionExpr.prototype.toDeclStmt=function(e,t){return void 0===t&&(t=null),new q(e,this.params,this.statements,this.type,t)},FunctionExpr}(v),L=function(e){function BinaryOperatorExpr(t,n,o,r){void 0===r&&(r=null),e.call(this,r||n.type),this.operator=t,this.rhs=o,this.lhs=n}return r(BinaryOperatorExpr,e),BinaryOperatorExpr.prototype.visitExpression=function(e,t){return e.visitBinaryOperatorExpr(this,t)},BinaryOperatorExpr}(v),P=function(e){function ReadPropExpr(t,n,o){void 0===o&&(o=null),e.call(this,o),this.receiver=t,this.name=n}return r(ReadPropExpr,e),ReadPropExpr.prototype.visitExpression=function(e,t){return e.visitReadPropExpr(this,t)},ReadPropExpr.prototype.set=function(e){return new A(this.receiver,this.name,e)},ReadPropExpr}(v),H=function(e){function ReadKeyExpr(t,n,o){void 0===o&&(o=null),e.call(this,o),this.receiver=t,this.index=n}return r(ReadKeyExpr,e),ReadKeyExpr.prototype.visitExpression=function(e,t){return e.visitReadKeyExpr(this,t)},ReadKeyExpr.prototype.set=function(e){return new S(this.receiver,this.index,e)},ReadKeyExpr}(v),F=function(e){function LiteralArrayExpr(t,n){void 0===n&&(n=null),e.call(this,n),this.entries=t}return r(LiteralArrayExpr,e),LiteralArrayExpr.prototype.visitExpression=function(e,t){return e.visitLiteralArrayExpr(this,t)},LiteralArrayExpr}(v),U=function(){function LiteralMapEntry(e,t,n){void 0===n&&(n=!1),this.key=e,this.value=t,this.quoted=n}return LiteralMapEntry}(),V=function(e){function LiteralMapExpr(t,r){void 0===r&&(r=null),e.call(this,r),this.entries=t,this.valueType=null,n.i(o.f)(r)&&(this.valueType=r.valueType)}return r(LiteralMapExpr,e),LiteralMapExpr.prototype.visitExpression=function(e,t){return e.visitLiteralMapExpr(this,t)},LiteralMapExpr}(v),W=new E(_.This),j=new E(_.Super),$=(new E(_.CatchError),new E(_.CatchStack),new N(null,null)),Y=new N(null,y),K={};K.Final=0,K.Private=1,K[K.Final]="Final",K[K.Private]="Private";var G=function(){function Statement(e){void 0===e&&(e=null),this.modifiers=e,e||(this.modifiers=[])}return Statement.prototype.visitStatement=function(e,t){},Statement.prototype.hasModifier=function(e){return this.modifiers.indexOf(e)!==-1},Statement}(),z=function(e){function DeclareVarStmt(t,n,o,r){void 0===o&&(o=null),void 0===r&&(r=null),e.call(this,r),this.name=t,this.value=n,this.type=o||n.type}return r(DeclareVarStmt,e),DeclareVarStmt.prototype.visitStatement=function(e,t){return e.visitDeclareVarStmt(this,t)},DeclareVarStmt}(G),q=function(e){function DeclareFunctionStmt(t,n,o,r,i){void 0===r&&(r=null),void 0===i&&(i=null),e.call(this,i),this.name=t,this.params=n,this.statements=o,this.type=r}return r(DeclareFunctionStmt,e),DeclareFunctionStmt.prototype.visitStatement=function(e,t){return e.visitDeclareFunctionStmt(this,t)},DeclareFunctionStmt}(G),Q=function(e){function ExpressionStatement(t){e.call(this),this.expr=t}return r(ExpressionStatement,e),ExpressionStatement.prototype.visitStatement=function(e,t){return e.visitExpressionStmt(this,t)},ExpressionStatement}(G),X=function(e){function ReturnStatement(t){e.call(this),this.value=t}return r(ReturnStatement,e),ReturnStatement.prototype.visitStatement=function(e,t){return e.visitReturnStmt(this,t)},ReturnStatement}(G),J=function(){function AbstractClassPart(e,t){void 0===e&&(e=null),this.type=e,this.modifiers=t,t||(this.modifiers=[])}return AbstractClassPart.prototype.hasModifier=function(e){return this.modifiers.indexOf(e)!==-1},AbstractClassPart}(),Z=function(e){function ClassField(t,n,o){void 0===n&&(n=null),void 0===o&&(o=null),e.call(this,n,o),this.name=t}return r(ClassField,e),ClassField}(J),ee=function(e){function ClassMethod(t,n,o,r,i){void 0===r&&(r=null),void 0===i&&(i=null),e.call(this,r,i),this.name=t,this.params=n,this.body=o}return r(ClassMethod,e),ClassMethod}(J),te=function(e){function ClassGetter(t,n,o,r){void 0===o&&(o=null),void 0===r&&(r=null),e.call(this,o,r),this.name=t,this.body=n}return r(ClassGetter,e),ClassGetter}(J),ne=function(e){function ClassStmt(t,n,o,r,i,a,s){void 0===s&&(s=null),e.call(this,s),this.name=t,this.parent=n,this.fields=o,this.getters=r,this.constructorMethod=i,this.methods=a}return r(ClassStmt,e),ClassStmt.prototype.visitStatement=function(e,t){return e.visitDeclareClassStmt(this,t)},ClassStmt}(G),oe=function(e){function IfStmt(t,n,o){void 0===o&&(o=[]),e.call(this),this.condition=t,this.trueCase=n,this.falseCase=o}return r(IfStmt,e),IfStmt.prototype.visitStatement=function(e,t){return e.visitIfStmt(this,t)},IfStmt}(G),re=(function(e){function CommentStmt(t){e.call(this),this.comment=t}return r(CommentStmt,e),CommentStmt.prototype.visitStatement=function(e,t){return e.visitCommentStmt(this,t)},CommentStmt}(G),function(e){function TryCatchStmt(t,n){e.call(this),this.bodyStmts=t,this.catchStmts=n}return r(TryCatchStmt,e),TryCatchStmt.prototype.visitStatement=function(e,t){return e.visitTryCatchStmt(this,t)},TryCatchStmt}(G)),ie=function(e){function ThrowStmt(t){e.call(this),this.error=t}return r(ThrowStmt,e),ThrowStmt.prototype.visitStatement=function(e,t){return e.visitThrowStmt(this,t)},ThrowStmt}(G),ae=function(){function ExpressionTransformer(){}return ExpressionTransformer.prototype.visitReadVarExpr=function(e,t){return e},ExpressionTransformer.prototype.visitWriteVarExpr=function(e,t){return new T(e.name,e.value.visitExpression(this,t))},ExpressionTransformer.prototype.visitWriteKeyExpr=function(e,t){return new S(e.receiver.visitExpression(this,t),e.index.visitExpression(this,t),e.value.visitExpression(this,t));
},ExpressionTransformer.prototype.visitWritePropExpr=function(e,t){return new A(e.receiver.visitExpression(this,t),e.name,e.value.visitExpression(this,t))},ExpressionTransformer.prototype.visitInvokeMethodExpr=function(e,t){var n=e.builtin||e.name;return new C(e.receiver.visitExpression(this,t),n,this.visitAllExpressions(e.args,t),e.type)},ExpressionTransformer.prototype.visitInvokeFunctionExpr=function(e,t){return new k(e.fn.visitExpression(this,t),this.visitAllExpressions(e.args,t),e.type)},ExpressionTransformer.prototype.visitInstantiateExpr=function(e,t){return new R(e.classExpr.visitExpression(this,t),this.visitAllExpressions(e.args,t),e.type)},ExpressionTransformer.prototype.visitLiteralExpr=function(e,t){return e},ExpressionTransformer.prototype.visitExternalExpr=function(e,t){return e},ExpressionTransformer.prototype.visitConditionalExpr=function(e,t){return new D(e.condition.visitExpression(this,t),e.trueCase.visitExpression(this,t),e.falseCase.visitExpression(this,t))},ExpressionTransformer.prototype.visitNotExpr=function(e,t){return new w(e.condition.visitExpression(this,t))},ExpressionTransformer.prototype.visitCastExpr=function(e,t){return new I(e.value.visitExpression(this,t),t)},ExpressionTransformer.prototype.visitFunctionExpr=function(e,t){return e},ExpressionTransformer.prototype.visitBinaryOperatorExpr=function(e,t){return new L(e.operator,e.lhs.visitExpression(this,t),e.rhs.visitExpression(this,t),e.type)},ExpressionTransformer.prototype.visitReadPropExpr=function(e,t){return new P(e.receiver.visitExpression(this,t),e.name,e.type)},ExpressionTransformer.prototype.visitReadKeyExpr=function(e,t){return new H(e.receiver.visitExpression(this,t),e.index.visitExpression(this,t),e.type)},ExpressionTransformer.prototype.visitLiteralArrayExpr=function(e,t){return new F(this.visitAllExpressions(e.entries,t))},ExpressionTransformer.prototype.visitLiteralMapExpr=function(e,t){var n=this,o=e.entries.map(function(e){return new U(e.key,e.value.visitExpression(n,t),e.quoted)});return new V(o)},ExpressionTransformer.prototype.visitAllExpressions=function(e,t){var n=this;return e.map(function(e){return e.visitExpression(n,t)})},ExpressionTransformer.prototype.visitDeclareVarStmt=function(e,t){return new z(e.name,e.value.visitExpression(this,t),e.type,e.modifiers)},ExpressionTransformer.prototype.visitDeclareFunctionStmt=function(e,t){return e},ExpressionTransformer.prototype.visitExpressionStmt=function(e,t){return new Q(e.expr.visitExpression(this,t))},ExpressionTransformer.prototype.visitReturnStmt=function(e,t){return new X(e.value.visitExpression(this,t))},ExpressionTransformer.prototype.visitDeclareClassStmt=function(e,t){return e},ExpressionTransformer.prototype.visitIfStmt=function(e,t){return new oe(e.condition.visitExpression(this,t),this.visitAllStatements(e.trueCase,t),this.visitAllStatements(e.falseCase,t))},ExpressionTransformer.prototype.visitTryCatchStmt=function(e,t){return new re(this.visitAllStatements(e.bodyStmts,t),this.visitAllStatements(e.catchStmts,t))},ExpressionTransformer.prototype.visitThrowStmt=function(e,t){return new ie(e.error.visitExpression(this,t))},ExpressionTransformer.prototype.visitCommentStmt=function(e,t){return e},ExpressionTransformer.prototype.visitAllStatements=function(e,t){var n=this;return e.map(function(e){return e.visitStatement(n,t)})},ExpressionTransformer}(),se=function(){function RecursiveExpressionVisitor(){}return RecursiveExpressionVisitor.prototype.visitReadVarExpr=function(e,t){return e},RecursiveExpressionVisitor.prototype.visitWriteVarExpr=function(e,t){return e.value.visitExpression(this,t),e},RecursiveExpressionVisitor.prototype.visitWriteKeyExpr=function(e,t){return e.receiver.visitExpression(this,t),e.index.visitExpression(this,t),e.value.visitExpression(this,t),e},RecursiveExpressionVisitor.prototype.visitWritePropExpr=function(e,t){return e.receiver.visitExpression(this,t),e.value.visitExpression(this,t),e},RecursiveExpressionVisitor.prototype.visitInvokeMethodExpr=function(e,t){return e.receiver.visitExpression(this,t),this.visitAllExpressions(e.args,t),e},RecursiveExpressionVisitor.prototype.visitInvokeFunctionExpr=function(e,t){return e.fn.visitExpression(this,t),this.visitAllExpressions(e.args,t),e},RecursiveExpressionVisitor.prototype.visitInstantiateExpr=function(e,t){return e.classExpr.visitExpression(this,t),this.visitAllExpressions(e.args,t),e},RecursiveExpressionVisitor.prototype.visitLiteralExpr=function(e,t){return e},RecursiveExpressionVisitor.prototype.visitExternalExpr=function(e,t){return e},RecursiveExpressionVisitor.prototype.visitConditionalExpr=function(e,t){return e.condition.visitExpression(this,t),e.trueCase.visitExpression(this,t),e.falseCase.visitExpression(this,t),e},RecursiveExpressionVisitor.prototype.visitNotExpr=function(e,t){return e.condition.visitExpression(this,t),e},RecursiveExpressionVisitor.prototype.visitCastExpr=function(e,t){return e.value.visitExpression(this,t),e},RecursiveExpressionVisitor.prototype.visitFunctionExpr=function(e,t){return e},RecursiveExpressionVisitor.prototype.visitBinaryOperatorExpr=function(e,t){return e.lhs.visitExpression(this,t),e.rhs.visitExpression(this,t),e},RecursiveExpressionVisitor.prototype.visitReadPropExpr=function(e,t){return e.receiver.visitExpression(this,t),e},RecursiveExpressionVisitor.prototype.visitReadKeyExpr=function(e,t){return e.receiver.visitExpression(this,t),e.index.visitExpression(this,t),e},RecursiveExpressionVisitor.prototype.visitLiteralArrayExpr=function(e,t){return this.visitAllExpressions(e.entries,t),e},RecursiveExpressionVisitor.prototype.visitLiteralMapExpr=function(e,t){var n=this;return e.entries.forEach(function(e){return e.value.visitExpression(n,t)}),e},RecursiveExpressionVisitor.prototype.visitAllExpressions=function(e,t){var n=this;e.forEach(function(e){return e.visitExpression(n,t)})},RecursiveExpressionVisitor.prototype.visitDeclareVarStmt=function(e,t){return e.value.visitExpression(this,t),e},RecursiveExpressionVisitor.prototype.visitDeclareFunctionStmt=function(e,t){return e},RecursiveExpressionVisitor.prototype.visitExpressionStmt=function(e,t){return e.expr.visitExpression(this,t),e},RecursiveExpressionVisitor.prototype.visitReturnStmt=function(e,t){return e.value.visitExpression(this,t),e},RecursiveExpressionVisitor.prototype.visitDeclareClassStmt=function(e,t){return e},RecursiveExpressionVisitor.prototype.visitIfStmt=function(e,t){return e.condition.visitExpression(this,t),this.visitAllStatements(e.trueCase,t),this.visitAllStatements(e.falseCase,t),e},RecursiveExpressionVisitor.prototype.visitTryCatchStmt=function(e,t){return this.visitAllStatements(e.bodyStmts,t),this.visitAllStatements(e.catchStmts,t),e},RecursiveExpressionVisitor.prototype.visitThrowStmt=function(e,t){return e.error.visitExpression(this,t),e},RecursiveExpressionVisitor.prototype.visitCommentStmt=function(e,t){return e},RecursiveExpressionVisitor.prototype.visitAllStatements=function(e,t){var n=this;e.forEach(function(e){return e.visitStatement(n,t)})},RecursiveExpressionVisitor}(),ue=function(e){function _ReplaceVariableTransformer(t,n){e.call(this),this._varName=t,this._newValue=n}return r(_ReplaceVariableTransformer,e),_ReplaceVariableTransformer.prototype.visitReadVarExpr=function(e,t){return e.name==this._varName?this._newValue:e},_ReplaceVariableTransformer}(ae),le=function(e){function _VariableFinder(){e.apply(this,arguments),this.varNames=new Set}return r(_VariableFinder,e),_VariableFinder.prototype.visitReadVarExpr=function(e,t){return this.varNames.add(e.name),null},_VariableFinder}(se)},,,function(e,t,n){"use strict";var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(0),i=n(3),a=n(22),s=n(229),u=n(491),l=n(228),c=function(e){function SubjectSubscriber(t){e.call(this,t),this.destination=t}return o(SubjectSubscriber,e),SubjectSubscriber}(i.Subscriber);t.SubjectSubscriber=c;var d=function(e){function Subject(){e.call(this),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}return o(Subject,e),Subject.prototype[l.rxSubscriber]=function(){return new c(this)},Subject.prototype.lift=function(e){var t=new p(this,this);return t.operator=e,t},Subject.prototype.next=function(e){if(this.closed)throw new s.ObjectUnsubscribedError;if(!this.isStopped)for(var t=this.observers,n=t.length,o=t.slice(),r=0;r<n;r++)o[r].next(e)},Subject.prototype.error=function(e){if(this.closed)throw new s.ObjectUnsubscribedError;this.hasError=!0,this.thrownError=e,this.isStopped=!0;for(var t=this.observers,n=t.length,o=t.slice(),r=0;r<n;r++)o[r].error(e);this.observers.length=0},Subject.prototype.complete=function(){if(this.closed)throw new s.ObjectUnsubscribedError;this.isStopped=!0;for(var e=this.observers,t=e.length,n=e.slice(),o=0;o<t;o++)n[o].complete();this.observers.length=0},Subject.prototype.unsubscribe=function(){this.isStopped=!0,this.closed=!0,this.observers=null},Subject.prototype._trySubscribe=function(t){if(this.closed)throw new s.ObjectUnsubscribedError;return e.prototype._trySubscribe.call(this,t)},Subject.prototype._subscribe=function(e){if(this.closed)throw new s.ObjectUnsubscribedError;return this.hasError?(e.error(this.thrownError),a.Subscription.EMPTY):this.isStopped?(e.complete(),a.Subscription.EMPTY):(this.observers.push(e),new u.SubjectSubscription(this,e))},Subject.prototype.asObservable=function(){var e=new r.Observable;return e.source=this,e},Subject.create=function(e,t){return new p(e,t)},Subject}(r.Observable);t.Subject=d;var p=function(e){function AnonymousSubject(t,n){e.call(this),this.destination=t,this.source=n}return o(AnonymousSubject,e),AnonymousSubject.prototype.next=function(e){var t=this.destination;t&&t.next&&t.next(e)},AnonymousSubject.prototype.error=function(e){var t=this.destination;t&&t.error&&this.destination.error(e)},AnonymousSubject.prototype.complete=function(){var e=this.destination;e&&e.complete&&this.destination.complete()},AnonymousSubject.prototype._subscribe=function(e){var t=this.source;return t?this.source.subscribe(e):a.Subscription.EMPTY},AnonymousSubject}(d);t.AnonymousSubject=p},function(e,t,n){"use strict";function _sanitizeIdentifier(e){return e.replace(/\W/g,"_")}function identifierName(e){if(!e||!e.reference)return null;var t=e.reference;if(t instanceof r.a)return t.name;if(t.__anonymousType)return t.__anonymousType;var o=n.i(a.e)(t);return o.indexOf("(")>=0?(o="anonymous_"+S++,t.__anonymousType=o):o=_sanitizeIdentifier(o),o}function identifierModuleUrl(e){var t=e.reference;return t instanceof r.a?t.filePath:s.a.importUri(t)}function tokenName(e){return n.i(a.f)(e.value)?_sanitizeIdentifier(e.value):identifierName(e.identifier)}function tokenReference(e){return n.i(a.f)(e.identifier)?e.identifier.reference:e.value}function createHostComponentMeta(e,t){var n=u.a.parse(t.selector)[0].getMatchingElementTemplate();return k.create({isHost:!0,type:{reference:e,diDeps:[],lifecycleHooks:[]},template:new C({encapsulation:o.ViewEncapsulation.None,template:n,templateUrl:"",styles:[],styleUrls:[],ngContentSelectors:[],animations:[]}),changeDetection:o.ChangeDetectionStrategy.Default,inputs:[],outputs:[],host:{},isComponent:!0,selector:"*",providers:[],viewProviders:[],queries:[],viewQueries:[]})}function _normalizeArray(e){return e||[]}var o=n(1),r=n(71),i=n(85),a=n(7),s=n(17),u=n(173),l=n(32);n.d(t,"n",function(){return p}),n.d(t,"d",function(){return f}),n.d(t,"o",function(){return h}),n.d(t,"j",function(){return y}),n.d(t,"h",function(){return b}),n.d(t,"i",function(){return v}),n.d(t,"g",function(){return _}),n.d(t,"e",function(){return E}),n.d(t,"f",function(){return T}),t.c=identifierName,t.m=identifierModuleUrl,n.d(t,"q",function(){return A}),t.b=tokenName,t.a=tokenReference,n.d(t,"k",function(){return M}),n.d(t,"l",function(){return C}),n.d(t,"p",function(){return k}),t.v=createHostComponentMeta,n.d(t,"t",function(){return R}),n.d(t,"r",function(){return N}),n.d(t,"s",function(){return O}),n.d(t,"u",function(){return D});var c=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},d=/^(?:(?:\[([^\]]+)\])|(?:\(([^\)]+)\)))|(\@[-\w]+)$/,p=function(){function CompileAnimationEntryMetadata(e,t){void 0===e&&(e=null),void 0===t&&(t=null),this.name=e,this.definitions=t}return CompileAnimationEntryMetadata}(),g=function(){function CompileAnimationStateMetadata(){}return CompileAnimationStateMetadata}(),f=function(e){function CompileAnimationStateDeclarationMetadata(t,n){e.call(this),this.stateNameExpr=t,this.styles=n}return c(CompileAnimationStateDeclarationMetadata,e),CompileAnimationStateDeclarationMetadata}(g),h=function(e){function CompileAnimationStateTransitionMetadata(t,n){e.call(this),this.stateChangeExpr=t,this.steps=n}return c(CompileAnimationStateTransitionMetadata,e),CompileAnimationStateTransitionMetadata}(g),m=function(){function CompileAnimationMetadata(){}return CompileAnimationMetadata}(),y=function(e){function CompileAnimationKeyframesSequenceMetadata(t){void 0===t&&(t=[]),e.call(this),this.steps=t}return c(CompileAnimationKeyframesSequenceMetadata,e),CompileAnimationKeyframesSequenceMetadata}(m),b=function(e){function CompileAnimationStyleMetadata(t,n){void 0===n&&(n=null),e.call(this),this.offset=t,this.styles=n}return c(CompileAnimationStyleMetadata,e),CompileAnimationStyleMetadata}(m),v=function(e){function CompileAnimationAnimateMetadata(t,n){void 0===t&&(t=0),void 0===n&&(n=null),e.call(this),this.timings=t,this.styles=n}return c(CompileAnimationAnimateMetadata,e),CompileAnimationAnimateMetadata}(m),_=function(e){function CompileAnimationWithStepsMetadata(t){void 0===t&&(t=null),e.call(this),this.steps=t}return c(CompileAnimationWithStepsMetadata,e),CompileAnimationWithStepsMetadata}(m),E=function(e){function CompileAnimationSequenceMetadata(t){void 0===t&&(t=null),e.call(this,t)}return c(CompileAnimationSequenceMetadata,e),CompileAnimationSequenceMetadata}(_),T=function(e){function CompileAnimationGroupMetadata(t){void 0===t&&(t=null),e.call(this,t)}return c(CompileAnimationGroupMetadata,e),CompileAnimationGroupMetadata}(_),S=0,A={};A.Pipe=0,A.Directive=1,A.NgModule=2,A.Injectable=3,A[A.Pipe]="Pipe",A[A.Directive]="Directive",A[A.NgModule]="NgModule",A[A.Injectable]="Injectable";var M=function(){function CompileStylesheetMetadata(e){var t=void 0===e?{}:e,n=t.moduleUrl,o=t.styles,r=t.styleUrls;this.moduleUrl=n,this.styles=_normalizeArray(o),this.styleUrls=_normalizeArray(r)}return CompileStylesheetMetadata}(),C=function(){function CompileTemplateMetadata(e){var t=void 0===e?{}:e,n=t.encapsulation,o=t.template,r=t.templateUrl,a=t.styles,s=t.styleUrls,u=t.externalStylesheets,l=t.animations,c=t.ngContentSelectors,d=t.interpolation;if(this.encapsulation=n,this.template=o,this.templateUrl=r,this.styles=_normalizeArray(a),this.styleUrls=_normalizeArray(s),this.externalStylesheets=_normalizeArray(u),this.animations=l?i.a.flatten(l):[],this.ngContentSelectors=c||[],d&&2!=d.length)throw new Error("'interpolation' should have a start and an end symbol.");this.interpolation=d}return CompileTemplateMetadata.prototype.toSummary=function(){return{animations:this.animations.map(function(e){return e.name}),ngContentSelectors:this.ngContentSelectors,encapsulation:this.encapsulation}},CompileTemplateMetadata}(),k=function(){function CompileDirectiveMetadata(e){var t=void 0===e?{}:e,n=t.isHost,o=t.type,r=t.isComponent,i=t.selector,a=t.exportAs,s=t.changeDetection,u=t.inputs,l=t.outputs,c=t.hostListeners,d=t.hostProperties,p=t.hostAttributes,g=t.providers,f=t.viewProviders,h=t.queries,m=t.viewQueries,y=t.entryComponents,b=t.template;this.isHost=!!n,this.type=o,this.isComponent=r,this.selector=i,this.exportAs=a,this.changeDetection=s,this.inputs=u,this.outputs=l,this.hostListeners=c,this.hostProperties=d,this.hostAttributes=p,this.providers=_normalizeArray(g),this.viewProviders=_normalizeArray(f),this.queries=_normalizeArray(h),this.viewQueries=_normalizeArray(m),this.entryComponents=_normalizeArray(y),this.template=b}return CompileDirectiveMetadata.create=function(e){var t=void 0===e?{}:e,o=t.isHost,r=t.type,i=t.isComponent,s=t.selector,u=t.exportAs,c=t.changeDetection,p=t.inputs,g=t.outputs,f=t.host,h=t.providers,m=t.viewProviders,y=t.queries,b=t.viewQueries,v=t.entryComponents,_=t.template,E={},T={},S={};n.i(a.f)(f)&&Object.keys(f).forEach(function(e){var t=f[e],o=e.match(d);null===o?S[e]=t:n.i(a.f)(o[1])?T[o[1]]=t:n.i(a.f)(o[2])&&(E[o[2]]=t)});var A={};n.i(a.f)(p)&&p.forEach(function(e){var t=n.i(l.a)(e,[e,e]);A[t[0]]=t[1]});var M={};return n.i(a.f)(g)&&g.forEach(function(e){var t=n.i(l.a)(e,[e,e]);M[t[0]]=t[1]}),new CompileDirectiveMetadata({isHost:o,type:r,isComponent:!!i,selector:s,exportAs:u,changeDetection:c,inputs:A,outputs:M,hostListeners:E,hostProperties:T,hostAttributes:S,providers:h,viewProviders:m,queries:y,viewQueries:b,entryComponents:v,template:_})},CompileDirectiveMetadata.prototype.toSummary=function(){return{summaryKind:A.Directive,type:this.type,isComponent:this.isComponent,selector:this.selector,exportAs:this.exportAs,inputs:this.inputs,outputs:this.outputs,hostListeners:this.hostListeners,hostProperties:this.hostProperties,hostAttributes:this.hostAttributes,providers:this.providers,viewProviders:this.viewProviders,queries:this.queries,entryComponents:this.entryComponents,changeDetection:this.changeDetection,template:this.template&&this.template.toSummary()}},CompileDirectiveMetadata}(),R=function(){function CompilePipeMetadata(e){var t=void 0===e?{}:e,n=t.type,o=t.name,r=t.pure;this.type=n,this.name=o,this.pure=!!r}return CompilePipeMetadata.prototype.toSummary=function(){return{summaryKind:A.Pipe,type:this.type,name:this.name,pure:this.pure}},CompilePipeMetadata}(),N=function(){function CompileNgModuleMetadata(e){var t=void 0===e?{}:e,n=t.type,o=t.providers,r=t.declaredDirectives,i=t.exportedDirectives,a=t.declaredPipes,s=t.exportedPipes,u=t.entryComponents,l=t.bootstrapComponents,c=t.importedModules,d=t.exportedModules,p=t.schemas,g=t.transitiveModule,f=t.id;this.type=n,this.declaredDirectives=_normalizeArray(r),this.exportedDirectives=_normalizeArray(i),this.declaredPipes=_normalizeArray(a),this.exportedPipes=_normalizeArray(s),this.providers=_normalizeArray(o),this.entryComponents=_normalizeArray(u),this.bootstrapComponents=_normalizeArray(l),this.importedModules=_normalizeArray(c),this.exportedModules=_normalizeArray(d),this.schemas=_normalizeArray(p),this.id=f,this.transitiveModule=g}return CompileNgModuleMetadata.prototype.toSummary=function(){return{summaryKind:A.NgModule,type:this.type,entryComponents:this.transitiveModule.entryComponents,providers:this.transitiveModule.providers,modules:this.transitiveModule.modules,exportedDirectives:this.transitiveModule.exportedDirectives,exportedPipes:this.transitiveModule.exportedPipes}},CompileNgModuleMetadata}(),O=function(){function TransitiveCompileNgModuleMetadata(){this.directivesSet=new Set,this.directives=[],this.exportedDirectivesSet=new Set,this.exportedDirectives=[],this.pipesSet=new Set,this.pipes=[],this.exportedPipesSet=new Set,this.exportedPipes=[],this.modulesSet=new Set,this.modules=[],this.entryComponentsSet=new Set,this.entryComponents=[],this.providers=[]}return TransitiveCompileNgModuleMetadata.prototype.addProvider=function(e,t){this.providers.push({provider:e,module:t})},TransitiveCompileNgModuleMetadata.prototype.addDirective=function(e){this.directivesSet.has(e.reference)||(this.directivesSet.add(e.reference),this.directives.push(e))},TransitiveCompileNgModuleMetadata.prototype.addExportedDirective=function(e){this.exportedDirectivesSet.has(e.reference)||(this.exportedDirectivesSet.add(e.reference),this.exportedDirectives.push(e))},TransitiveCompileNgModuleMetadata.prototype.addPipe=function(e){this.pipesSet.has(e.reference)||(this.pipesSet.add(e.reference),this.pipes.push(e))},TransitiveCompileNgModuleMetadata.prototype.addExportedPipe=function(e){this.exportedPipesSet.has(e.reference)||(this.exportedPipesSet.add(e.reference),this.exportedPipes.push(e))},TransitiveCompileNgModuleMetadata.prototype.addModule=function(e){this.modulesSet.has(e.reference)||(this.modulesSet.add(e.reference),this.modules.push(e))},TransitiveCompileNgModuleMetadata.prototype.addEntryComponent=function(e){this.entryComponentsSet.has(e.reference)||(this.entryComponentsSet.add(e.reference),this.entryComponents.push(e))},TransitiveCompileNgModuleMetadata}(),D=function(){function ProviderMeta(e,t){var n=t.useClass,o=t.useValue,r=t.useExisting,i=t.useFactory,a=t.deps,s=t.multi;this.token=e,this.useClass=n,this.useValue=o,this.useExisting=r,this.useFactory=i,this.dependencies=a,this.multi=!!s}return ProviderMeta}()},,,function(e,t,n){"use strict";var o=n(1);n.d(t,"K",function(){return r}),n.d(t,"p",function(){return i}),n.d(t,"H",function(){return a}),n.d(t,"J",function(){return s}),n.d(t,"F",function(){return u}),n.d(t,"e",function(){return l}),n.d(t,"g",function(){return c}),n.d(t,"h",function(){return d}),n.d(t,"c",function(){return p}),n.d(t,"d",function(){return g}),n.d(t,"i",function(){return f}),n.d(t,"j",function(){return h}),n.d(t,"l",function(){return m}),n.d(t,"b",function(){return y}),n.d(t,"n",function(){return b}),n.d(t,"m",function(){return v}),n.d(t,"q",function(){return _}),n.d(t,"o",function(){return E}),n.d(t,"k",function(){return T}),n.d(t,"f",function(){return S}),n.d(t,"C",function(){return A}),n.d(t,"a",function(){return M}),n.d(t,"N",function(){return C}),n.d(t,"M",function(){return k}),n.d(t,"t",function(){return R}),n.d(t,"v",function(){return N}),n.d(t,"u",function(){return O}),n.d(t,"r",function(){return D}),n.d(t,"s",function(){return w}),n.d(t,"D",function(){return I}),n.d(t,"L",function(){return x}),n.d(t,"G",function(){return B}),n.d(t,"E",function(){return L}),n.d(t,"w",function(){return P}),n.d(t,"x",function(){return H}),n.d(t,"y",function(){return F}),n.d(t,"A",function(){return U}),n.d(t,"z",function(){return V}),n.d(t,"I",function(){return W}),n.d(t,"B",function(){return j});var r=o.__core_private__.isDefaultChangeDetectionStrategy,i=o.__core_private__.ChangeDetectorStatus,a=o.__core_private__.LifecycleHooks,s=o.__core_private__.LIFECYCLE_HOOKS_VALUES,u=o.__core_private__.ReflectorReader,l=o.__core_private__.ViewContainer,c=o.__core_private__.CodegenComponentFactoryResolver,d=o.__core_private__.ComponentRef_,p=o.__core_private__.AppView,g=o.__core_private__.DebugAppView,f=o.__core_private__.NgModuleInjector,h=o.__core_private__.registerModuleFactory,m=o.__core_private__.ViewType,y=o.__core_private__.view_utils,b=o.__core_private__.DebugContext,v=o.__core_private__.StaticNodeDebugInfo,_=o.__core_private__.devModeEqual,E=o.__core_private__.UNINITIALIZED,T=o.__core_private__.ValueUnwrapper,S=o.__core_private__.TemplateRef_,A=(o.__core_private__.RenderDebugInfo,o.__core_private__.Console),M=o.__core_private__.reflector,C=o.__core_private__.Reflector,k=o.__core_private__.ReflectionCapabilities,R=o.__core_private__.NoOpAnimationPlayer,N=(o.__core_private__.AnimationPlayer,o.__core_private__.AnimationSequencePlayer),O=o.__core_private__.AnimationGroupPlayer,D=o.__core_private__.AnimationKeyframe,w=o.__core_private__.AnimationStyles,I=o.__core_private__.ANY_STATE,x=o.__core_private__.DEFAULT_STATE,B=o.__core_private__.EMPTY_STATE,L=o.__core_private__.FILL_STYLE_FLAG,P=o.__core_private__.prepareFinalAnimationStyles,H=o.__core_private__.balanceAnimationKeyframes,F=o.__core_private__.clearStyles,U=o.__core_private__.collectAndResolveStyles,V=o.__core_private__.renderStyles,W=(o.__core_private__.ViewMetadata,o.__core_private__.ComponentStillLoadingError),j=o.__core_private__.AnimationTransition},,function(e,t,n){"use strict";function assetUrl(e,t,n){return void 0===t&&(t=null),void 0===n&&(n="src"),null==t?"@angular/"+e+"/index":"@angular/"+e+"/"+n+"/"+t}function resolveIdentifier(e){return r.a.resolveIdentifier(e.name,e.moduleUrl,e.runtime)}function createIdentifier(e){var t=r.a.resolveIdentifier(e.name,e.moduleUrl,e.runtime);return{reference:t}}function identifierToken(e){return{identifier:e}}function createIdentifierToken(e){return identifierToken(createIdentifier(e))}function createEnumIdentifier(e,t){var n=r.a.resolveEnum(resolveIdentifier(e),t);return{reference:n}}var o=n(1),r=n(17);n.d(t,"b",function(){return l}),t.a=resolveIdentifier,t.e=createIdentifier,t.c=identifierToken,t.d=createIdentifierToken,t.f=createEnumIdentifier;var i=assetUrl("core","linker/view"),a=assetUrl("core","linker/view_utils"),s=assetUrl("core","change_detection/change_detection"),u=assetUrl("core","animation/animation_style_util"),l=function(){function Identifiers(){}return Identifiers.ANALYZE_FOR_ENTRY_COMPONENTS={name:"ANALYZE_FOR_ENTRY_COMPONENTS",moduleUrl:assetUrl("core","metadata/di"),runtime:o.ANALYZE_FOR_ENTRY_COMPONENTS},Identifiers.ViewUtils={name:"ViewUtils",moduleUrl:assetUrl("core","linker/view_utils"),runtime:r.b.ViewUtils},Identifiers.AppView={name:"AppView",moduleUrl:i,runtime:r.c},Identifiers.DebugAppView={name:"DebugAppView",moduleUrl:i,runtime:r.d},Identifiers.ViewContainer={name:"ViewContainer",moduleUrl:assetUrl("core","linker/view_container"),runtime:r.e},Identifiers.ElementRef={name:"ElementRef",moduleUrl:assetUrl("core","linker/element_ref"),runtime:o.ElementRef},Identifiers.ViewContainerRef={name:"ViewContainerRef",moduleUrl:assetUrl("core","linker/view_container_ref"),runtime:o.ViewContainerRef},Identifiers.ChangeDetectorRef={name:"ChangeDetectorRef",moduleUrl:assetUrl("core","change_detection/change_detector_ref"),runtime:o.ChangeDetectorRef},Identifiers.RenderComponentType={name:"RenderComponentType",moduleUrl:assetUrl("core","render/api"),runtime:o.RenderComponentType},Identifiers.QueryList={name:"QueryList",moduleUrl:assetUrl("core","linker/query_list"),runtime:o.QueryList},Identifiers.TemplateRef={name:"TemplateRef",moduleUrl:assetUrl("core","linker/template_ref"),runtime:o.TemplateRef},Identifiers.TemplateRef_={name:"TemplateRef_",moduleUrl:assetUrl("core","linker/template_ref"),runtime:r.f},Identifiers.CodegenComponentFactoryResolver={name:"CodegenComponentFactoryResolver",moduleUrl:assetUrl("core","linker/component_factory_resolver"),runtime:r.g},Identifiers.ComponentFactoryResolver={name:"ComponentFactoryResolver",moduleUrl:assetUrl("core","linker/component_factory_resolver"),runtime:o.ComponentFactoryResolver},Identifiers.ComponentFactory={name:"ComponentFactory",runtime:o.ComponentFactory,moduleUrl:assetUrl("core","linker/component_factory")},Identifiers.ComponentRef_={name:"ComponentRef_",runtime:r.h,moduleUrl:assetUrl("core","linker/component_factory")},Identifiers.ComponentRef={name:"ComponentRef",runtime:o.ComponentRef,moduleUrl:assetUrl("core","linker/component_factory")},Identifiers.NgModuleFactory={name:"NgModuleFactory",runtime:o.NgModuleFactory,moduleUrl:assetUrl("core","linker/ng_module_factory")},Identifiers.NgModuleInjector={name:"NgModuleInjector",runtime:r.i,moduleUrl:assetUrl("core","linker/ng_module_factory")},Identifiers.RegisterModuleFactoryFn={name:"registerModuleFactory",runtime:r.j,moduleUrl:assetUrl("core","linker/ng_module_factory_loader")},Identifiers.ValueUnwrapper={name:"ValueUnwrapper",moduleUrl:s,runtime:r.k},Identifiers.Injector={name:"Injector",moduleUrl:assetUrl("core","di/injector"),runtime:o.Injector},Identifiers.ViewEncapsulation={name:"ViewEncapsulation",moduleUrl:assetUrl("core","metadata/view"),runtime:o.ViewEncapsulation},Identifiers.ViewType={name:"ViewType",moduleUrl:assetUrl("core","linker/view_type"),runtime:r.l},Identifiers.ChangeDetectionStrategy={name:"ChangeDetectionStrategy",moduleUrl:s,runtime:o.ChangeDetectionStrategy},Identifiers.StaticNodeDebugInfo={name:"StaticNodeDebugInfo",moduleUrl:assetUrl("core","linker/debug_context"),runtime:r.m},Identifiers.DebugContext={name:"DebugContext",moduleUrl:assetUrl("core","linker/debug_context"),runtime:r.n},Identifiers.Renderer={name:"Renderer",moduleUrl:assetUrl("core","render/api"),runtime:o.Renderer},Identifiers.SimpleChange={name:"SimpleChange",moduleUrl:s,runtime:o.SimpleChange},Identifiers.UNINITIALIZED={name:"UNINITIALIZED",moduleUrl:s,runtime:r.o},Identifiers.ChangeDetectorStatus={name:"ChangeDetectorStatus",moduleUrl:s,runtime:r.p},Identifiers.checkBinding={name:"checkBinding",moduleUrl:a,runtime:r.b.checkBinding},Identifiers.devModeEqual={name:"devModeEqual",moduleUrl:s,runtime:r.q},Identifiers.inlineInterpolate={name:"inlineInterpolate",moduleUrl:a,runtime:r.b.inlineInterpolate},Identifiers.interpolate={name:"interpolate",moduleUrl:a,runtime:r.b.interpolate},Identifiers.castByValue={name:"castByValue",moduleUrl:a,runtime:r.b.castByValue},Identifiers.EMPTY_ARRAY={name:"EMPTY_ARRAY",moduleUrl:a,runtime:r.b.EMPTY_ARRAY},Identifiers.EMPTY_MAP={name:"EMPTY_MAP",moduleUrl:a,runtime:r.b.EMPTY_MAP},Identifiers.createRenderElement={name:"createRenderElement",moduleUrl:a,runtime:r.b.createRenderElement},Identifiers.selectOrCreateRenderHostElement={name:"selectOrCreateRenderHostElement",moduleUrl:a,runtime:r.b.selectOrCreateRenderHostElement},Identifiers.pureProxies=[null,{name:"pureProxy1",moduleUrl:a,runtime:r.b.pureProxy1},{name:"pureProxy2",moduleUrl:a,runtime:r.b.pureProxy2},{name:"pureProxy3",moduleUrl:a,runtime:r.b.pureProxy3},{name:"pureProxy4",moduleUrl:a,runtime:r.b.pureProxy4},{name:"pureProxy5",moduleUrl:a,runtime:r.b.pureProxy5},{name:"pureProxy6",moduleUrl:a,runtime:r.b.pureProxy6},{name:"pureProxy7",moduleUrl:a,runtime:r.b.pureProxy7},{name:"pureProxy8",moduleUrl:a,runtime:r.b.pureProxy8},{name:"pureProxy9",moduleUrl:a,runtime:r.b.pureProxy9},{name:"pureProxy10",moduleUrl:a,runtime:r.b.pureProxy10}],Identifiers.SecurityContext={name:"SecurityContext",moduleUrl:assetUrl("core","security"),runtime:o.SecurityContext},Identifiers.AnimationKeyframe={name:"AnimationKeyframe",moduleUrl:assetUrl("core","animation/animation_keyframe"),runtime:r.r},Identifiers.AnimationStyles={name:"AnimationStyles",moduleUrl:assetUrl("core","animation/animation_styles"),runtime:r.s},Identifiers.NoOpAnimationPlayer={name:"NoOpAnimationPlayer",moduleUrl:assetUrl("core","animation/animation_player"),runtime:r.t},Identifiers.AnimationGroupPlayer={name:"AnimationGroupPlayer",moduleUrl:assetUrl("core","animation/animation_group_player"),runtime:r.u},Identifiers.AnimationSequencePlayer={name:"AnimationSequencePlayer",moduleUrl:assetUrl("core","animation/animation_sequence_player"),runtime:r.v},Identifiers.prepareFinalAnimationStyles={name:"prepareFinalAnimationStyles",moduleUrl:u,runtime:r.w},Identifiers.balanceAnimationKeyframes={name:"balanceAnimationKeyframes",moduleUrl:u,runtime:r.x},Identifiers.clearStyles={name:"clearStyles",moduleUrl:u,runtime:r.y},Identifiers.renderStyles={name:"renderStyles",moduleUrl:u,runtime:r.z},Identifiers.collectAndResolveStyles={name:"collectAndResolveStyles",moduleUrl:u,runtime:r.A},Identifiers.LOCALE_ID={name:"LOCALE_ID",moduleUrl:assetUrl("core","i18n/tokens"),runtime:o.LOCALE_ID},Identifiers.TRANSLATIONS_FORMAT={name:"TRANSLATIONS_FORMAT",moduleUrl:assetUrl("core","i18n/tokens"),runtime:o.TRANSLATIONS_FORMAT},Identifiers.setBindingDebugInfo={name:"setBindingDebugInfo",moduleUrl:a,runtime:r.b.setBindingDebugInfo},Identifiers.setBindingDebugInfoForChanges={name:"setBindingDebugInfoForChanges",moduleUrl:a,runtime:r.b.setBindingDebugInfoForChanges},Identifiers.AnimationTransition={name:"AnimationTransition",moduleUrl:assetUrl("core","animation/animation_transition"),runtime:r.B},Identifiers.InlineArray={name:"InlineArray",moduleUrl:a,runtime:null},Identifiers.inlineArrays=[{name:"InlineArray2",moduleUrl:a,runtime:r.b.InlineArray2},{name:"InlineArray2",moduleUrl:a,runtime:r.b.InlineArray2},{name:"InlineArray4",moduleUrl:a,runtime:r.b.InlineArray4},{name:"InlineArray8",moduleUrl:a,runtime:r.b.InlineArray8},{name:"InlineArray16",moduleUrl:a,runtime:r.b.InlineArray16}],Identifiers.EMPTY_INLINE_ARRAY={
name:"EMPTY_INLINE_ARRAY",moduleUrl:a,runtime:r.b.EMPTY_INLINE_ARRAY},Identifiers.InlineArrayDynamic={name:"InlineArrayDynamic",moduleUrl:a,runtime:r.b.InlineArrayDynamic},Identifiers.subscribeToRenderElement={name:"subscribeToRenderElement",moduleUrl:a,runtime:r.b.subscribeToRenderElement},Identifiers.createRenderComponentType={name:"createRenderComponentType",moduleUrl:a,runtime:r.b.createRenderComponentType},Identifiers.noop={name:"noop",moduleUrl:a,runtime:r.b.noop},Identifiers}()},function(e,t,n){"use strict";function CompilerInjectable(){return function(e){return e}}t.a=CompilerInjectable},,function(e,t,n){"use strict";function flattenUnsubscriptionErrors(e){return e.reduce(function(e,t){return e.concat(t instanceof u.UnsubscriptionError?t.errors:t)},[])}var o=n(66),r=n(523),i=n(231),a=n(27),s=n(25),u=n(520),l=function(){function Subscription(e){this.closed=!1,this._parent=null,this._parents=null,this._subscriptions=null,e&&(this._unsubscribe=e)}return Subscription.prototype.unsubscribe=function(){var e,t=!1;if(!this.closed){var n=this,l=n._parent,c=n._parents,d=n._unsubscribe,p=n._subscriptions;this.closed=!0,this._parent=null,this._parents=null,this._subscriptions=null;for(var g=-1,f=c?c.length:0;l;)l.remove(this),l=++g<f&&c[g]||null;if(i.isFunction(d)){var h=a.tryCatch(d).call(this);h===s.errorObject&&(t=!0,e=e||(s.errorObject.e instanceof u.UnsubscriptionError?flattenUnsubscriptionErrors(s.errorObject.e.errors):[s.errorObject.e]))}if(o.isArray(p))for(g=-1,f=p.length;++g<f;){var m=p[g];if(r.isObject(m)){var h=a.tryCatch(m.unsubscribe).call(m);if(h===s.errorObject){t=!0,e=e||[];var y=s.errorObject.e;y instanceof u.UnsubscriptionError?e=e.concat(flattenUnsubscriptionErrors(y.errors)):e.push(y)}}}if(t)throw new u.UnsubscriptionError(e)}},Subscription.prototype.add=function(e){if(!e||e===Subscription.EMPTY)return Subscription.EMPTY;if(e===this)return this;var t=e;switch(typeof e){case"function":t=new Subscription(e);case"object":if(t.closed||"function"!=typeof t.unsubscribe)return t;if(this.closed)return t.unsubscribe(),t;if("function"!=typeof t._addParent){var n=t;t=new Subscription,t._subscriptions=[n]}break;default:throw new Error("unrecognized teardown "+e+" added to Subscription.")}var o=this._subscriptions||(this._subscriptions=[]);return o.push(t),t._addParent(this),t},Subscription.prototype.remove=function(e){var t=this._subscriptions;if(t){var n=t.indexOf(e);n!==-1&&t.splice(n,1)}},Subscription.prototype._addParent=function(e){var t=this,n=t._parent,o=t._parents;n&&n!==e?o?o.indexOf(e)===-1&&o.push(e):this._parents=[e]:this._parent=e},Subscription.EMPTY=function(e){return e.closed=!0,e}(new Subscription),Subscription}();t.Subscription=l},function(e,t,n){"use strict";function getDOM(){return o}function setRootDomAdapter(e){o||(o=e)}t.a=getDOM,t.c=setRootDomAdapter,n.d(t,"b",function(){return r});var o=null,r=function(){function DomAdapter(){this.resourceLoaderType=null}return DomAdapter.prototype.hasProperty=function(e,t){},DomAdapter.prototype.setProperty=function(e,t,n){},DomAdapter.prototype.getProperty=function(e,t){},DomAdapter.prototype.invoke=function(e,t,n){},DomAdapter.prototype.logError=function(e){},DomAdapter.prototype.log=function(e){},DomAdapter.prototype.logGroup=function(e){},DomAdapter.prototype.logGroupEnd=function(){},Object.defineProperty(DomAdapter.prototype,"attrToPropMap",{get:function(){return this._attrToPropMap},set:function(e){this._attrToPropMap=e},enumerable:!0,configurable:!0}),DomAdapter.prototype.parse=function(e){},DomAdapter.prototype.query=function(e){},DomAdapter.prototype.querySelector=function(e,t){},DomAdapter.prototype.querySelectorAll=function(e,t){},DomAdapter.prototype.on=function(e,t,n){},DomAdapter.prototype.onAndCancel=function(e,t,n){},DomAdapter.prototype.dispatchEvent=function(e,t){},DomAdapter.prototype.createMouseEvent=function(e){},DomAdapter.prototype.createEvent=function(e){},DomAdapter.prototype.preventDefault=function(e){},DomAdapter.prototype.isPrevented=function(e){},DomAdapter.prototype.getInnerHTML=function(e){},DomAdapter.prototype.getTemplateContent=function(e){},DomAdapter.prototype.getOuterHTML=function(e){},DomAdapter.prototype.nodeName=function(e){},DomAdapter.prototype.nodeValue=function(e){},DomAdapter.prototype.type=function(e){},DomAdapter.prototype.content=function(e){},DomAdapter.prototype.firstChild=function(e){},DomAdapter.prototype.nextSibling=function(e){},DomAdapter.prototype.parentElement=function(e){},DomAdapter.prototype.childNodes=function(e){},DomAdapter.prototype.childNodesAsList=function(e){},DomAdapter.prototype.clearNodes=function(e){},DomAdapter.prototype.appendChild=function(e,t){},DomAdapter.prototype.removeChild=function(e,t){},DomAdapter.prototype.replaceChild=function(e,t,n){},DomAdapter.prototype.remove=function(e){},DomAdapter.prototype.insertBefore=function(e,t){},DomAdapter.prototype.insertAllBefore=function(e,t){},DomAdapter.prototype.insertAfter=function(e,t){},DomAdapter.prototype.setInnerHTML=function(e,t){},DomAdapter.prototype.getText=function(e){},DomAdapter.prototype.setText=function(e,t){},DomAdapter.prototype.getValue=function(e){},DomAdapter.prototype.setValue=function(e,t){},DomAdapter.prototype.getChecked=function(e){},DomAdapter.prototype.setChecked=function(e,t){},DomAdapter.prototype.createComment=function(e){},DomAdapter.prototype.createTemplate=function(e){},DomAdapter.prototype.createElement=function(e,t){},DomAdapter.prototype.createElementNS=function(e,t,n){},DomAdapter.prototype.createTextNode=function(e,t){},DomAdapter.prototype.createScriptTag=function(e,t,n){},DomAdapter.prototype.createStyleElement=function(e,t){},DomAdapter.prototype.createShadowRoot=function(e){},DomAdapter.prototype.getShadowRoot=function(e){},DomAdapter.prototype.getHost=function(e){},DomAdapter.prototype.getDistributedNodes=function(e){},DomAdapter.prototype.clone=function(e){},DomAdapter.prototype.getElementsByClassName=function(e,t){},DomAdapter.prototype.getElementsByTagName=function(e,t){},DomAdapter.prototype.classList=function(e){},DomAdapter.prototype.addClass=function(e,t){},DomAdapter.prototype.removeClass=function(e,t){},DomAdapter.prototype.hasClass=function(e,t){},DomAdapter.prototype.setStyle=function(e,t,n){},DomAdapter.prototype.removeStyle=function(e,t){},DomAdapter.prototype.getStyle=function(e,t){},DomAdapter.prototype.hasStyle=function(e,t,n){},DomAdapter.prototype.tagName=function(e){},DomAdapter.prototype.attributeMap=function(e){},DomAdapter.prototype.hasAttribute=function(e,t){},DomAdapter.prototype.hasAttributeNS=function(e,t,n){},DomAdapter.prototype.getAttribute=function(e,t){},DomAdapter.prototype.getAttributeNS=function(e,t,n){},DomAdapter.prototype.setAttribute=function(e,t,n){},DomAdapter.prototype.setAttributeNS=function(e,t,n,o){},DomAdapter.prototype.removeAttribute=function(e,t){},DomAdapter.prototype.removeAttributeNS=function(e,t,n){},DomAdapter.prototype.templateAwareRoot=function(e){},DomAdapter.prototype.createHtmlDocument=function(){},DomAdapter.prototype.defaultDoc=function(){},DomAdapter.prototype.getBoundingClientRect=function(e){},DomAdapter.prototype.getTitle=function(){},DomAdapter.prototype.setTitle=function(e){},DomAdapter.prototype.elementMatches=function(e,t){},DomAdapter.prototype.isTemplateElement=function(e){},DomAdapter.prototype.isTextNode=function(e){},DomAdapter.prototype.isCommentNode=function(e){},DomAdapter.prototype.isElementNode=function(e){},DomAdapter.prototype.hasShadowRoot=function(e){},DomAdapter.prototype.isShadowRoot=function(e){},DomAdapter.prototype.importIntoDoc=function(e){},DomAdapter.prototype.adoptNode=function(e){},DomAdapter.prototype.getHref=function(e){},DomAdapter.prototype.getEventKey=function(e){},DomAdapter.prototype.resolveAndSetHref=function(e,t,n){},DomAdapter.prototype.supportsDOMEvents=function(){},DomAdapter.prototype.supportsNativeShadowDOM=function(){},DomAdapter.prototype.getGlobalEventTarget=function(e){},DomAdapter.prototype.getHistory=function(){},DomAdapter.prototype.getLocation=function(){},DomAdapter.prototype.getBaseHref=function(){},DomAdapter.prototype.resetBaseElement=function(){},DomAdapter.prototype.getUserAgent=function(){},DomAdapter.prototype.setData=function(e,t,n){},DomAdapter.prototype.getComputedStyle=function(e){},DomAdapter.prototype.getData=function(e,t){},DomAdapter.prototype.setGlobalVar=function(e,t){},DomAdapter.prototype.supportsWebAnimation=function(){},DomAdapter.prototype.performanceNow=function(){},DomAdapter.prototype.getAnimationPrefix=function(){},DomAdapter.prototype.getTransitionEnd=function(){},DomAdapter.prototype.supportsAnimation=function(){},DomAdapter.prototype.supportsCookies=function(){},DomAdapter.prototype.getCookie=function(e){},DomAdapter.prototype.setCookie=function(e,t){},DomAdapter}()},,function(e,t){"use strict";t.errorObject={e:{}}},function(e,t,n){"use strict";(function(e){var n="undefined"!=typeof window&&window,o="undefined"!=typeof self&&"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self,r="undefined"!=typeof e&&e,i=n||r||o;t.root=i,function(){if(!i)throw new Error("RxJS could not find any global context (window, self, global)")}()}).call(t,n(55))},function(e,t,n){"use strict";function tryCatcher(){try{return o.apply(this,arguments)}catch(e){return r.errorObject.e=e,r.errorObject}}function tryCatch(e){return o=e,tryCatcher}var o,r=n(25);t.tryCatch=tryCatch},function(e,t,n){"use strict";var o=n(696);n.d(t,"RouterLink",function(){return o.a}),n.d(t,"RouterLinkWithHref",function(){return o.b}),n.d(t,"RouterLinkActive",function(){return o.c}),n.d(t,"RouterOutlet",function(){return o.d}),n.d(t,"NavigationCancel",function(){return o.e}),n.d(t,"NavigationError",function(){return o.f}),n.d(t,"NavigationStart",function(){return o.g}),n.d(t,"Router",function(){return o.h}),n.d(t,"RoutesRecognized",function(){return o.i}),n.d(t,"NavigationEnd",function(){return o.j}),n.d(t,"RouterModule",function(){return o.k}),n.d(t,"provideRoutes",function(){return o.l}),n.d(t,"RouterOutletMap",function(){return o.m}),n.d(t,"ActivatedRoute",function(){return o.n}),n.d(t,"ActivatedRouteSnapshot",function(){return o.o}),n.d(t,"RouterState",function(){return o.p}),n.d(t,"RouterStateSnapshot",function(){return o.q}),n.d(t,"PRIMARY_OUTLET",function(){return o.r}),n.d(t,"DefaultUrlSerializer",function(){return o.s}),n.d(t,"UrlSegment",function(){return o.t}),n.d(t,"UrlSerializer",function(){return o.u}),n.d(t,"UrlTree",function(){return o.v}),n.d(t,"__router_private__",function(){return o.w})},,,,function(e,t,n){"use strict";function dashCaseToCamelCase(e){return e.replace(s,function(){for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];return e[1].toUpperCase()})}function splitAtColon(e,t){return _splitAt(e,":",t)}function splitAtPeriod(e,t){return _splitAt(e,".",t)}function _splitAt(e,t,n){var o=e.indexOf(t);return o==-1?n:[e.slice(0,o).trim(),e.slice(o+1).trim()]}function visitValue(e,t,o){return Array.isArray(e)?t.visitArray(e,o):n.i(r.c)(e)?t.visitStringMap(e,o):null==e||n.i(r.d)(e)?t.visitPrimitive(e,o):t.visitOther(e,o)}var o=n(617),r=n(7);n.d(t,"e",function(){return a}),t.h=dashCaseToCamelCase,t.a=splitAtColon,t.b=splitAtPeriod,t.f=visitValue,n.d(t,"g",function(){return u}),n.d(t,"d",function(){return l}),n.d(t,"c",function(){return c});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a="",s=/-+([a-z0-9])/g,u=function(){function ValueTransformer(){}return ValueTransformer.prototype.visitArray=function(e,t){var n=this;return e.map(function(e){return visitValue(e,n,t)})},ValueTransformer.prototype.visitStringMap=function(e,t){var n=this,o={};return Object.keys(e).forEach(function(r){o[r]=visitValue(e[r],n,t)}),o},ValueTransformer.prototype.visitPrimitive=function(e,t){return e},ValueTransformer.prototype.visitOther=function(e,t){return e},ValueTransformer}(),l=function(){function SyncAsyncResult(e,t){void 0===t&&(t=null),this.syncResult=e,this.asyncResult=t,t||(this.asyncResult=Promise.resolve(e))}return SyncAsyncResult}(),c=function(e){function SyntaxError(){e.apply(this,arguments)}return i(SyntaxError,e),SyntaxError}(o.a)},,,,,function(e,t,n){"use strict";function map(e,t){if("function"!=typeof e)throw new TypeError("argument is not a function. Are you looking for `mapTo()`?");return this.lift(new i(e,t))}var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(3);t.map=map;var i=function(){function MapOperator(e,t){this.project=e,this.thisArg=t}return MapOperator.prototype.call=function(e,t){return t.subscribe(new a(e,this.project,this.thisArg))},MapOperator}();t.MapOperator=i;var a=function(e){function MapSubscriber(t,n,o){e.call(this,t),this.project=n,this.count=0,this.thisArg=o||this}return o(MapSubscriber,e),MapSubscriber.prototype._next=function(e){var t;try{t=this.project.call(this.thisArg,e,this.count++)}catch(n){return void this.destination.error(n)}this.destination.next(t)},MapSubscriber}(r.Subscriber)},,,function(e,t,n){"use strict";var o=n(166),r=n(7);n.d(t,"c",function(){return i}),n.d(t,"b",function(){return a}),n.d(t,"d",function(){return s}),n.d(t,"e",function(){return u}),n.d(t,"a",function(){return l});var i=function(){function ParseLocation(e,t,n,o){this.file=e,this.offset=t,this.line=n,this.col=o}return ParseLocation.prototype.toString=function(){return n.i(r.f)(this.offset)?this.file.url+"@"+this.line+":"+this.col:this.file.url},ParseLocation.prototype.moveBy=function(e){for(var t=this.file.content,n=t.length,r=this.offset,i=this.line,a=this.col;r>0&&e<0;){r--,e++;var s=t.charCodeAt(r);if(s==o.S){i--;var u=t.substr(0,r-1).lastIndexOf(String.fromCharCode(o.S));a=u>0?r-u:r}else a--}for(;r<n&&e>0;){var s=t.charCodeAt(r);r++,e--,s==o.S?(i++,a=0):a++}return new ParseLocation(this.file,r,i,a)},ParseLocation.prototype.getContext=function(e,t){var o=this.file.content,i=this.offset;if(n.i(r.f)(i)){i>o.length-1&&(i=o.length-1);for(var a=i,s=0,u=0;s<e&&i>0&&(i--,s++,"\n"!=o[i]||++u!=t););for(s=0,u=0;s<e&&a<o.length-1&&(a++,s++,"\n"!=o[a]||++u!=t););return{before:o.substring(i,this.offset),after:o.substring(this.offset,a+1)}}return null},ParseLocation}(),a=function(){function ParseSourceFile(e,t){this.content=e,this.url=t}return ParseSourceFile}(),s=function(){function ParseSourceSpan(e,t,n){void 0===n&&(n=null),this.start=e,this.end=t,this.details=n}return ParseSourceSpan.prototype.toString=function(){return this.start.file.content.substring(this.start.offset,this.end.offset)},ParseSourceSpan}(),u={};u.WARNING=0,u.FATAL=1,u[u.WARNING]="WARNING",u[u.FATAL]="FATAL";var l=function(){function ParseError(e,t,n){void 0===n&&(n=u.FATAL),this.span=e,this.msg=t,this.level=n}return ParseError.prototype.toString=function(){var e=this.span.start.getContext(100,3),t=e?' ("'+e.before+"[ERROR ->]"+e.after+'")':"",n=this.span.details?", "+this.span.details:"";return""+this.msg+t+": "+this.span.start+n},ParseError}()},function(e,t,n){"use strict";var o=n(108),r=n(259),i=n(131),a=n(649),s=n(262),u=n(261),l=n(260);n.d(t,"d",function(){return o.c}),n.d(t,"b",function(){return o.a}),n.d(t,"j",function(){return o.d}),n.d(t,"e",function(){return o.e}),n.d(t,"i",function(){return o.f}),n.d(t,"c",function(){return o.b}),n.d(t,"k",function(){return r.b}),n.d(t,"h",function(){return r.a}),n.d(t,"g",function(){return i.b}),n.d(t,"f",function(){return a.a}),n.d(t,"l",function(){return s.c}),n.d(t,"m",function(){return u.a}),n.d(t,"a",function(){return l.a})},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r});var r=new o.OpaqueToken("NgValueAccessor")},,,function(e,t,n){"use strict";(function(e){function getTypeNameForDebugging(e){return e.name||typeof e}function isPresent(e){return null!=e}function isBlank(e){return null==e}function stringify(e){if("string"==typeof e)return e;if(null==e)return""+e;if(e.overriddenName)return""+e.overriddenName;if(e.name)return""+e.name;var t=e.toString(),n=t.indexOf("\n");return n===-1?t:t.substring(0,n)}function isJsObject(e){return null!==e&&("function"==typeof e||"object"==typeof e)}function getSymbolIterator(){if(!a)if(o.Symbol&&Symbol.iterator)a=Symbol.iterator;else for(var e=Object.getOwnPropertyNames(Map.prototype),t=0;t<e.length;++t){var n=e[t];"entries"!==n&&"size"!==n&&Map.prototype[n]===Map.prototype.entries&&(a=n)}return a}t.f=getTypeNameForDebugging,t.a=isPresent,t.b=isBlank,t.e=stringify,n.d(t,"g",function(){return i}),t.c=isJsObject,t.d=getSymbolIterator;var o;o="undefined"==typeof window?"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:e:window;var r=o;r.assert=function(e){};var i=(Object.getPrototypeOf({}),function(){function NumberWrapper(){}return NumberWrapper.parseIntAutoRadix=function(e){var t=parseInt(e);if(isNaN(t))throw new Error("Invalid integer literal when parsing "+e);return t},NumberWrapper.isNumeric=function(e){return!isNaN(e-parseFloat(e))},NumberWrapper}()),a=null}).call(t,n(55))},function(e,t,n){"use strict";function createDiTokenExpression(e){return n.i(o.f)(e.value)?i.f(e.value):i.d(e.identifier)}function createInlineArray(e){if(0===e.length)return i.d(n.i(r.e)(r.b.EMPTY_INLINE_ARRAY));var t=Math.log(e.length)/Math.log(2),o=Math.ceil(t),a=o<r.b.inlineArrays.length?r.b.inlineArrays[o]:r.b.InlineArrayDynamic,s=n.i(r.e)(a);return i.d(s).instantiate([i.f(e.length)].concat(e))}function createPureProxy(e,t,o,a){a.fields.push(new i.a(o.name,null));var s=t<r.b.pureProxies.length?r.b.pureProxies[t]:null;if(!s)throw new Error("Unsupported number of argument for pure functions: "+t);a.ctorStmts.push(i.c.prop(o.name).set(i.d(n.i(r.e)(s)).callFn([e])).toStmt())}function createEnumExpression(e,t){var o=Object.keys(e.runtime).find(function(n){return e.runtime[n]===t});if(!o)throw new Error("Unknown enum value "+t+" in "+e.name);return i.d(n.i(r.f)(e,o))}var o=n(7),r=n(19),i=n(10);t.c=createDiTokenExpression,t.d=createInlineArray,t.a=createPureProxy,t.b=createEnumExpression},function(e,t,n){"use strict";var o=n(351);n.d(t,"b",function(){return r}),n.d(t,"a",function(){return i});var r=function(){function InterpolationConfig(e,t){this.start=e,this.end=t}return InterpolationConfig.fromArray=function(e){return e?(n.i(o.a)("interpolation",e),new InterpolationConfig(e[0],e[1])):i},InterpolationConfig}(),i=new r("{{","}}")},function(e,t,n){"use strict";function templateVisitAll(e,t,n){void 0===n&&(n=null);var o=[],r=e.visit?function(t){return e.visit(t,n)||t.visit(e,n)}:function(t){return t.visit(e,n)};return t.forEach(function(e){var t=r(e);t&&o.push(t)}),o}n.d(t,"i",function(){return o}),n.d(t,"h",function(){return r}),n.d(t,"j",function(){return i}),n.d(t,"d",function(){return a}),n.d(t,"f",function(){return s}),n.d(t,"n",function(){return u}),n.d(t,"c",function(){return l}),n.d(t,"m",function(){return c}),n.d(t,"l",function(){return d}),n.d(t,"p",function(){return p}),n.d(t,"o",function(){return g}),n.d(t,"b",function(){return f}),n.d(t,"a",function(){return h}),n.d(t,"k",function(){return m}),n.d(t,"e",function(){return y}),t.g=templateVisitAll;var o=function(){function TextAst(e,t,n){this.value=e,this.ngContentIndex=t,this.sourceSpan=n}return TextAst.prototype.visit=function(e,t){return e.visitText(this,t)},TextAst}(),r=function(){function BoundTextAst(e,t,n){this.value=e,this.ngContentIndex=t,this.sourceSpan=n}return BoundTextAst.prototype.visit=function(e,t){return e.visitBoundText(this,t)},BoundTextAst}(),i=function(){function AttrAst(e,t,n){this.name=e,this.value=t,this.sourceSpan=n}return AttrAst.prototype.visit=function(e,t){return e.visitAttr(this,t)},AttrAst}(),a=function(){function BoundElementPropertyAst(e,t,n,o,r,i,a){this.name=e,this.type=t,this.securityContext=n,this.needsRuntimeSecurityContext=o,this.value=r,this.unit=i,this.sourceSpan=a}return BoundElementPropertyAst.prototype.visit=function(e,t){return e.visitElementProperty(this,t)},Object.defineProperty(BoundElementPropertyAst.prototype,"isAnimation",{get:function(){return this.type===y.Animation},enumerable:!0,configurable:!0}),BoundElementPropertyAst}(),s=function(){function BoundEventAst(e,t,n,o,r){this.name=e,this.target=t,this.phase=n,this.handler=o,this.sourceSpan=r}return BoundEventAst.calcFullName=function(e,t,n){return t?t+":"+e:n?"@"+e+"."+n:e},BoundEventAst.prototype.visit=function(e,t){return e.visitEvent(this,t)},Object.defineProperty(BoundEventAst.prototype,"fullName",{get:function(){return BoundEventAst.calcFullName(this.name,this.target,this.phase)},enumerable:!0,configurable:!0}),Object.defineProperty(BoundEventAst.prototype,"isAnimation",{get:function(){return!!this.phase},enumerable:!0,configurable:!0}),BoundEventAst}(),u=function(){function ReferenceAst(e,t,n){this.name=e,this.value=t,this.sourceSpan=n}return ReferenceAst.prototype.visit=function(e,t){return e.visitReference(this,t)},ReferenceAst}(),l=function(){function VariableAst(e,t,n){this.name=e,this.value=t,this.sourceSpan=n}return VariableAst.prototype.visit=function(e,t){return e.visitVariable(this,t)},VariableAst}(),c=function(){function ElementAst(e,t,n,o,r,i,a,s,u,l,c,d){this.name=e,this.attrs=t,this.inputs=n,this.outputs=o,this.references=r,this.directives=i,this.providers=a,this.hasViewContainer=s,this.children=u,this.ngContentIndex=l,this.sourceSpan=c,this.endSourceSpan=d}return ElementAst.prototype.visit=function(e,t){return e.visitElement(this,t)},ElementAst}(),d=function(){function EmbeddedTemplateAst(e,t,n,o,r,i,a,s,u,l){this.attrs=e,this.outputs=t,this.references=n,this.variables=o,this.directives=r,this.providers=i,this.hasViewContainer=a,this.children=s,this.ngContentIndex=u,this.sourceSpan=l}return EmbeddedTemplateAst.prototype.visit=function(e,t){return e.visitEmbeddedTemplate(this,t)},EmbeddedTemplateAst}(),p=function(){function BoundDirectivePropertyAst(e,t,n,o){this.directiveName=e,this.templateName=t,this.value=n,this.sourceSpan=o}return BoundDirectivePropertyAst.prototype.visit=function(e,t){return e.visitDirectiveProperty(this,t)},BoundDirectivePropertyAst}(),g=function(){function DirectiveAst(e,t,n,o,r){this.directive=e,this.inputs=t,this.hostProperties=n,this.hostEvents=o,this.sourceSpan=r}return DirectiveAst.prototype.visit=function(e,t){return e.visitDirective(this,t)},DirectiveAst}(),f=function(){function ProviderAst(e,t,n,o,r,i,a){this.token=e,this.multiProvider=t,this.eager=n,this.providers=o,this.providerType=r,this.lifecycleHooks=i,this.sourceSpan=a}return ProviderAst.prototype.visit=function(e,t){return null},ProviderAst}(),h={};h.PublicService=0,h.PrivateService=1,h.Component=2,h.Directive=3,h.Builtin=4,h[h.PublicService]="PublicService",h[h.PrivateService]="PrivateService",h[h.Component]="Component",h[h.Directive]="Directive",h[h.Builtin]="Builtin";var m=function(){function NgContentAst(e,t,n){this.index=e,this.ngContentIndex=t,this.sourceSpan=n}return NgContentAst.prototype.visit=function(e,t){return e.visitNgContent(this,t)},NgContentAst}(),y={};y.Property=0,y.Attribute=1,y.Class=2,y.Style=3,y.Animation=4,y[y.Property]="Property",y[y.Attribute]="Attribute",y[y.Class]="Class",y[y.Style]="Style",y[y.Animation]="Animation"},function(e,t,n){"use strict";function isEmptyInputValue(e){return null==e||0===e.length}function _convertToPromise(e){return n.i(s.a)(e)?e:r.toPromise.call(e)}function _executeValidators(e,t){return t.map(function(t){return t(e)})}function _executeAsyncValidators(e,t){return t.map(function(t){return t(e)})}function _mergeErrors(e){var t=e.reduce(function(e,t){return n.i(a.c)(t)?i.a.merge(e,t):e},{});return 0===Object.keys(t).length?null:t}var o=n(1),r=n(514),i=(n.n(r),n(404)),a=n(111),s=n(406);n.d(t,"b",function(){return u}),n.d(t,"c",function(){return l}),n.d(t,"a",function(){return c});var u=new o.OpaqueToken("NgValidators"),l=new o.OpaqueToken("NgAsyncValidators"),c=function(){function Validators(){}return Validators.required=function(e){return isEmptyInputValue(e.value)?{required:!0}:null},Validators.requiredTrue=function(e){return e.value===!0?null:{required:!0}},Validators.minLength=function(e){return function(t){if(isEmptyInputValue(t.value))return null;var n=t.value?t.value.length:0;return n<e?{minlength:{requiredLength:e,actualLength:n}}:null}},Validators.maxLength=function(e){return function(t){var n=t.value?t.value.length:0;return n>e?{maxlength:{requiredLength:e,actualLength:n}}:null}},Validators.pattern=function(e){if(!e)return Validators.nullValidator;var t,n;return"string"==typeof e?(n="^"+e+"$",t=new RegExp(n)):(n=e.toString(),t=e),function(e){if(isEmptyInputValue(e.value))return null;var o=e.value;return t.test(o)?null:{pattern:{requiredPattern:n,actualValue:o}}}},Validators.nullValidator=function(e){return null},Validators.compose=function(e){if(!e)return null;var t=e.filter(a.c);return 0==t.length?null:function(e){return _mergeErrors(_executeValidators(e,t))}},Validators.composeAsync=function(e){if(!e)return null;var t=e.filter(a.c);return 0==t.length?null:function(e){var n=_executeAsyncValidators(e,t).map(_convertToPromise);return Promise.all(n).then(_mergeErrors)}},Validators}()},function(e,t,n){"use strict";(function(e){function isPresent(e){return null!=e}function isBlank(e){return null==e}function stringify(e){if("string"==typeof e)return e;if(null==e)return""+e;if(e.overriddenName)return""+e.overriddenName;if(e.name)return""+e.name;var t=e.toString(),n=t.indexOf("\n");return n===-1?t:t.substring(0,n)}function isJsObject(e){return null!==e&&("function"==typeof e||"object"==typeof e)}function setValueOnPath(e,t,n){for(var o=t.split("."),r=e;o.length>1;){var i=o.shift();r=r.hasOwnProperty(i)&&null!=r[i]?r[i]:r[i]={}}void 0!==r&&null!==r||(r={}),r[o.shift()]=n}function getSymbolIterator(){if(!i)if(o.Symbol&&Symbol.iterator)i=Symbol.iterator;else for(var e=Object.getOwnPropertyNames(Map.prototype),t=0;t<e.length;++t){var n=e[t];"entries"!==n&&"size"!==n&&Map.prototype[n]===Map.prototype.entries&&(i=n)}return i}n.d(t,"d",function(){return r}),t.a=isPresent,t.b=isBlank,t.g=stringify,t.e=isJsObject,t.c=setValueOnPath,t.f=getSymbolIterator;var o;o="undefined"==typeof window?"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:e:window;var r=o;r.assert=function(e){};var i=(Object.getPrototypeOf({}),function(){function NumberWrapper(){}return NumberWrapper.parseIntAutoRadix=function(e){var t=parseInt(e);if(isNaN(t))throw new Error("Invalid integer literal when parsing "+e);return t},NumberWrapper.isNumeric=function(e){return!isNaN(e-parseFloat(e))},NumberWrapper}(),null)}).call(t,n(55))},,,,,,,function(e,t,n){"use strict";var o=n(271);n.d(t,"a",function(){return i});var r=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},i=function(e){function ControlContainer(){e.apply(this,arguments)}return r(ControlContainer,e),Object.defineProperty(ControlContainer.prototype,"formDirective",{get:function(){return null},enumerable:!0,configurable:!0}),Object.defineProperty(ControlContainer.prototype,"path",{get:function(){return null},enumerable:!0,configurable:!0}),ControlContainer}(o.a)},function(e,t,n){"use strict";n.d(t,"a",function(){return r}),n.d(t,"b",function(){return i});var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r="primary",i=function(e){function NavigationCancelingError(t){e.call(this,t),this.message=t,this.stack=new Error(t).stack}return o(NavigationCancelingError,e),NavigationCancelingError.prototype.toString=function(){return this.message},NavigationCancelingError}(Error)},function(e,t,n){"use strict";function shallowEqualArrays(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;++n)if(!shallowEqual(e[n],t[n]))return!1;return!0}function shallowEqual(e,t){var n=Object.keys(e),o=Object.keys(t);if(n.length!=o.length)return!1;for(var r,i=0;i<n.length;i++)if(r=n[i],e[r]!==t[r])return!1;return!0}function flatten(e){for(var t=[],n=0;n<e.length;++n)for(var o=0;o<e[n].length;++o)t.push(e[n][o]);return t}function last(e){return e.length>0?e[e.length-1]:null}function merge(e,t){var n={};for(var o in e)e.hasOwnProperty(o)&&(n[o]=e[o]);for(var o in t)t.hasOwnProperty(o)&&(n[o]=t[o]);return n}function forEach(e,t){for(var n in e)e.hasOwnProperty(n)&&t(e[n],n)}function waitForMap(e,t){var o=[],r={};if(forEach(e,function(e,n){n===d.a&&o.push(l.map.call(t(n,e),function(e){return r[n]=e,e}))}),forEach(e,function(e,n){n!==d.a&&o.push(l.map.call(t(n,e),function(e){return r[n]=e,e}))}),o.length>0){var s=a.concatAll.call(i.of.apply(void 0,o)),c=u.last.call(s);return l.map.call(c,function(){return r})}return n.i(i.of)(r)}function andObservables(e){var t=c.mergeAll.call(e);return s.every.call(t,function(e){return e===!0})}function wrapIntoObservable(e){return e instanceof o.Observable?e:e instanceof Promise?n.i(r.fromPromise)(e):n.i(i.of)(e)}var o=n(0),r=(n.n(o),n(222)),i=(n.n(r),n(117)),a=(n.n(i),n(323)),s=(n.n(a),n(324)),u=(n.n(s),n(502)),l=(n.n(u),n(37)),c=(n.n(l),n(118)),d=(n.n(c),n(58));t.h=shallowEqualArrays,t.d=shallowEqual,t.a=flatten,t.i=last,t.g=merge,t.c=forEach,t.e=waitForMap,t.f=andObservables,t.b=wrapIntoObservable},,,,,,function(e,t,n){"use strict";var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(0),i=n(319),a=n(84),s=n(67),u=function(e){function ArrayObservable(t,n){e.call(this),this.array=t,this.scheduler=n,n||1!==t.length||(this._isScalar=!0,this.value=t[0])}return o(ArrayObservable,e),ArrayObservable.create=function(e,t){return new ArrayObservable(e,t)},ArrayObservable.of=function(){for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];var n=e[e.length-1];s.isScheduler(n)?e.pop():n=null;var o=e.length;return o>1?new ArrayObservable(e,n):1===o?new i.ScalarObservable(e[0],n):new a.EmptyObservable(n)},ArrayObservable.dispatch=function(e){var t=e.array,n=e.index,o=e.count,r=e.subscriber;return n>=o?void r.complete():(r.next(t[n]),void(r.closed||(e.index=n+1,this.schedule(e))))},ArrayObservable.prototype._subscribe=function(e){var t=0,n=this.array,o=n.length,r=this.scheduler;if(r)return r.schedule(ArrayObservable.dispatch,0,{array:n,index:t,count:o,subscriber:e});for(var i=0;i<o&&!e.closed;i++)e.next(n[i]);e.complete()},ArrayObservable}(r.Observable);t.ArrayObservable=u},function(e,t){"use strict";t.isArray=Array.isArray||function(e){return e&&"number"==typeof e.length}},function(e,t){"use strict";function isScheduler(e){return e&&"function"==typeof e.schedule}t.isScheduler=isScheduler},function(e,t,n){"use strict";var o=n(590);n.d(t,"I18nSelectPipe",function(){return o.h}),n.d(t,"CommonModule",function(){return o.b}),n.d(t,"NgClass",function(){return o.i}),n.d(t,"NgFor",function(){return o.j}),n.d(t,"NgIf",function(){return o.k}),n.d(t,"NgPlural",function(){return o.l}),n.d(t,"NgPluralCase",function(){return o.m}),n.d(t,"NgStyle",function(){return o.n}),n.d(t,"NgSwitch",function(){return o.o}),n.d(t,"NgSwitchCase",function(){return o.p}),n.d(t,"NgSwitchDefault",function(){return o.q}),n.d(t,"NgTemplateOutlet",function(){return o.r}),n.d(t,"AsyncPipe",function(){return o.s}),n.d(t,"DatePipe",function(){return o.t}),n.d(t,"I18nPluralPipe",function(){return o.u}),n.d(t,"NgLocalization",function(){return o.v}),n.d(t,"JsonPipe",function(){return o.w}),n.d(t,"LowerCasePipe",function(){return o.x}),n.d(t,"CurrencyPipe",function(){return o.y}),n.d(t,"DecimalPipe",function(){return o.z}),n.d(t,"PercentPipe",function(){return o.A}),n.d(t,"SlicePipe",function(){return o.B}),n.d(t,"UpperCasePipe",function(){return o.C}),n.d(t,"VERSION",function(){return o.D}),n.d(t,"Version",function(){
return o.E}),n.d(t,"PlatformLocation",function(){return o.a}),n.d(t,"LOCATION_INITIALIZED",function(){return o.F}),n.d(t,"LocationStrategy",function(){return o.c}),n.d(t,"APP_BASE_HREF",function(){return o.g}),n.d(t,"HashLocationStrategy",function(){return o.e}),n.d(t,"PathLocationStrategy",function(){return o.d}),n.d(t,"Location",function(){return o.f})},function(e,t,n){"use strict";var o=n(0),r=n(37);o.Observable.prototype.map=r.map},function(e,t,n){"use strict";var o=n(599),r=n(45);n.d(t,"a",function(){return a});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=function(e){function InvalidPipeArgumentError(t,o){e.call(this,"Invalid argument '"+o+"' for pipe '"+n.i(r.e)(t)+"'")}return i(InvalidPipeArgumentError,e),InvalidPipeArgumentError}(o.a)},function(e,t,n){"use strict";n.d(t,"a",function(){return o}),n.d(t,"b",function(){return r});var o=function(){function StaticSymbol(e,t,n){this.filePath=e,this.name=t,this.members=n}return StaticSymbol}(),r=function(){function StaticSymbolCache(){this.cache=new Map}return StaticSymbolCache.prototype.get=function(e,t,n){n=n||[];var r=n.length?"."+n.join("."):"",i='"'+e+'".'+t+r,a=this.cache.get(i);return a||(a=new o(e,t,n),this.cache.set(i,a)),a},StaticSymbolCache}()},function(e,t,n){"use strict";var o=n(1),r=n(19);n.d(t,"a",function(){return i});var i=function(){function CompilerConfig(e){var t=void 0===e?{}:e,n=t.renderTypes,r=void 0===n?new a:n,i=t.defaultEncapsulation,s=void 0===i?o.ViewEncapsulation.Emulated:i,u=t.genDebugInfo,l=t.logBindingUpdate,c=t.useJit,d=void 0===c||c;this.renderTypes=r,this.defaultEncapsulation=s,this._genDebugInfo=u,this._logBindingUpdate=l,this.useJit=d}return Object.defineProperty(CompilerConfig.prototype,"genDebugInfo",{get:function(){return void 0===this._genDebugInfo?n.i(o.isDevMode)():this._genDebugInfo},enumerable:!0,configurable:!0}),Object.defineProperty(CompilerConfig.prototype,"logBindingUpdate",{get:function(){return void 0===this._logBindingUpdate?n.i(o.isDevMode)():this._logBindingUpdate},enumerable:!0,configurable:!0}),CompilerConfig}(),a=(function(){function RenderTypes(){}return RenderTypes.prototype.renderer=function(){},RenderTypes.prototype.renderText=function(){},RenderTypes.prototype.renderElement=function(){},RenderTypes.prototype.renderComment=function(){},RenderTypes.prototype.renderNode=function(){},RenderTypes.prototype.renderEvent=function(){},RenderTypes}(),function(){function DefaultRenderTypes(){this.renderText=null,this.renderElement=null,this.renderComment=null,this.renderNode=null,this.renderEvent=null}return Object.defineProperty(DefaultRenderTypes.prototype,"renderer",{get:function(){return n.i(r.e)(r.b.Renderer)},enumerable:!0,configurable:!0}),DefaultRenderTypes}())},function(e,t,n){"use strict";function addNgDoCheckMethod(e){var t=g.g("changed"),o=[t.set(g.c.prop(S)).toDeclStmt(),g.c.prop(S).set(g.f(!1)).toStmt()],r=[];if(e.genChanges){var i=[];e.ngOnChanges&&i.push(g.c.prop(E).callMethod("ngOnChanges",[g.c.prop(T)]).toStmt()),e.compilerConfig.logBindingUpdate&&i.push(g.d(n.i(l.e)(l.b.setBindingDebugInfoForChanges)).callFn([R.prop("renderer"),O,g.c.prop(T)]).toStmt()),i.push(w),r.push(new g.e(t,i))}e.ngOnInit&&r.push(new g.e(R.prop("numberOfChecks").identical(new g.E(0)),[g.c.prop(E).callMethod("ngOnInit",[]).toStmt()])),e.ngDoCheck&&r.push(g.c.prop(E).callMethod("ngDoCheck",[]).toStmt()),r.length>0&&o.push(new g.e(g.p(C),r)),o.push(new g.t(t)),e.methods.push(new g.z("ngDoCheck",[new g.r(R.name,g.B(n.i(l.e)(l.b.AppView),[g.h])),new g.r(O.name,g.h),new g.r(C.name,g.D)],o,g.D))}function addCheckInputMethod(e,t){var o=n.i(r.a)(t),i=[g.c.prop(S).set(g.f(!0)).toStmt(),g.c.prop(E).prop(e).set(M).toStmt()];t.genChanges&&i.push(g.c.prop(T).key(g.f(e)).set(g.d(n.i(l.e)(l.b.SimpleChange)).instantiate([o.expression,M])).toStmt());var a=n.i(r.b)({currValExpr:M,forceUpdate:k,stmts:[]},o.expression,C,i);t.methods.push(new g.z("check_"+e,[new g.r(M.name,g.h),new g.r(C.name,g.D),new g.r(k.name,g.D)],a))}function addCheckHostMethod(e,t,o){var s=[],u=[new g.r(R.name,g.B(n.i(l.e)(l.b.AppView),[g.h])),new g.r(N.name,g.B(n.i(l.e)(l.b.AppView),[g.h])),new g.r(O.name,g.h),new g.r(C.name,g.D)];e.forEach(function(e,c){var d=n.i(r.a)(o),p=n.i(i.a)(o,null,g.c.prop(E),e.value,d.bindingId);if(p){var f;e.needsRuntimeSecurityContext&&(f=g.g("secCtx_"+u.length),u.push(new g.r(f.name,g.B(n.i(l.e)(l.b.SecurityContext)))));var h;if(e.isAnimation){var m=n.i(a.a)(R,N,e,t,g.c.prop(A).or(g.d(n.i(l.e)(l.b.noop))),O,p.currValExpr,d.expression),y=m.updateStmts,b=m.detachStmts;h=y,(v=o.detachStmts).push.apply(v,b)}else h=n.i(a.b)(R,e,O,p.currValExpr,o.compilerConfig.logBindingUpdate,f);s.push.apply(s,n.i(r.b)(p,d.expression,C,h));var v}}),o.methods.push(new g.z("checkHost",u,s))}function addHandleEventMethod(e,t){var o=g.g("result"),r=[o.set(g.f(!0)).toDeclStmt(g.D)];e.forEach(function(e,a){var s=n.i(i.b)(t,null,g.c.prop(E),e.handler,"sub_"+a),u=s.stmts;s.preventDefault&&u.push(o.set(s.preventDefault.and(o)).toStmt()),r.push(new g.e(D.equals(g.f(e.fullName)),u))}),r.push(new g.t(o)),t.methods.push(new g.z("handleEvent",[new g.r(D.name,g.F),new g.r(i.c.event.name,g.h)],r,g.D))}function addSubscribeMethod(e,t){var o=[new g.r(R.name,g.B(n.i(l.e)(l.b.AppView),[g.h])),new g.r(A,g.h)],r=[g.c.prop(A).set(g.g(A)).toStmt()];Object.keys(e.outputs).forEach(function(n,i){var a=e.outputs[n],s="emit"+i;o.push(new g.r(s,g.D));var u="subscription"+i;t.fields.push(new g.a(u,g.h)),r.push(new g.e(g.g(s),[g.c.prop(u).set(g.c.prop(E).prop(n).callMethod(g.x.SubscribeObservable,[g.g(A).callMethod(g.x.Bind,[R,g.f(a)])])).toStmt()])),t.destroyStmts.push(g.c.prop(u).and(g.c.prop(u).callMethod("unsubscribe",[])).toStmt())}),t.methods.push(new g.z("subscribe",o,r))}function parseHostBindings(e,t,r){var i=[],a=new y.a(t,d.a,r,[],i),s=n.i(o.m)(e.type),u=s?"in Directive "+n.i(o.c)(e.type)+" in "+s:"in Directive "+n.i(o.c)(e.type),l=new f.b("",u),c=new f.d(new f.c(l,null,null,null),new f.c(l,null,null,null)),p=a.createDirectiveHostPropertyAsts(e.toSummary(),c),g=a.createDirectiveHostEventAsts(e.toSummary(),c);return new B(p,g,i)}function reportParseErrors(e,t){var n=e.filter(function(e){return e.level===f.e.WARNING}),o=e.filter(function(e){return e.level===f.e.FATAL});if(n.length>0&&this._console.warn("Directive parse warnings:\n"+n.join("\n")),o.length>0)throw new Error("Directive parse errors:\n"+o.join("\n"))}var o=n(14),r=n(352),i=n(122),a=n(353),s=n(72),u=n(106),l=n(19),c=n(20),d=n(47),p=n(248),g=n(10),f=n(40),h=n(17),m=n(75),y=n(366);n.d(t,"a",function(){return I}),n.d(t,"b",function(){return L});var b=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},v=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},_=function(){function DirectiveWrapperCompileResult(e,t){this.statements=e,this.dirWrapperClassVar=t}return DirectiveWrapperCompileResult}(),E="context",T="_changes",S="_changed",A="_eventHandler",M=g.g("currValue"),C=g.g("throwOnChange"),k=g.g("forceUpdate"),R=g.g("view"),N=g.g("componentView"),O=g.g("el"),D=g.g("eventName"),w=g.c.prop(T).set(g.o([])).toStmt(),I=function(){function DirectiveWrapperCompiler(e,t,n,o){this.compilerConfig=e,this._exprParser=t,this._schemaRegistry=n,this._console=o}return DirectiveWrapperCompiler.dirWrapperClassName=function(e){return"Wrapper_"+n.i(o.c)(e)},DirectiveWrapperCompiler.prototype.compile=function(e){var t=parseHostBindings(e,this._exprParser,this._schemaRegistry);reportParseErrors(t.errors,this._console);var n=new x(this.compilerConfig,e);Object.keys(e.inputs).forEach(function(e){addCheckInputMethod(e,n)}),addNgDoCheckMethod(n),addCheckHostMethod(t.hostProps,t.hostListeners,n),addHandleEventMethod(t.hostListeners,n),addSubscribeMethod(e,n);var o=n.build();return new _([o],o.name)},DirectiveWrapperCompiler=b([n.i(c.a)(),v("design:paramtypes",[s.a,u.a,m.a,h.C])],DirectiveWrapperCompiler)}(),x=function(){function DirectiveWrapperBuilder(e,t){this.compilerConfig=e,this.dirMeta=t,this.fields=[],this.getters=[],this.methods=[],this.ctorStmts=[],this.detachStmts=[],this.destroyStmts=[];var n=t.type.lifecycleHooks;this.genChanges=n.indexOf(h.H.OnChanges)!==-1||this.compilerConfig.logBindingUpdate,this.ngOnChanges=n.indexOf(h.H.OnChanges)!==-1,this.ngOnInit=n.indexOf(h.H.OnInit)!==-1,this.ngDoCheck=n.indexOf(h.H.DoCheck)!==-1,this.ngOnDestroy=n.indexOf(h.H.OnDestroy)!==-1,this.ngOnDestroy&&this.destroyStmts.push(g.c.prop(E).callMethod("ngOnDestroy",[]).toStmt())}return DirectiveWrapperBuilder.prototype.build=function(){for(var e=[],t=0;t<this.dirMeta.type.diDeps.length;t++)e.push("p"+t);var o=[new g.z("ngOnDetach",[new g.r(R.name,g.B(n.i(l.e)(l.b.AppView),[g.h])),new g.r(N.name,g.B(n.i(l.e)(l.b.AppView),[g.h])),new g.r(O.name,g.h)],this.detachStmts),new g.z("ngOnDestroy",[],this.destroyStmts)],r=[new g.a(A,g.C,[g.b.Private]),new g.a(E,g.B(this.dirMeta.type)),new g.a(S,g.D,[g.b.Private])],i=[g.c.prop(S).set(g.f(!1)).toStmt()];return this.genChanges&&(r.push(new g.a(T,new g.v(g.h),[g.b.Private])),i.push(w)),i.push(g.c.prop(E).set(g.d(this.dirMeta.type).instantiate(e.map(function(e){return g.g(e)}))).toStmt()),n.i(p.a)({name:I.dirWrapperClassName(this.dirMeta.type),ctorParams:e.map(function(e){return new g.r(e,g.h)}),builders:[{fields:r,ctorStmts:i,methods:o},this]})},DirectiveWrapperBuilder}(),B=function(){function ParseResult(e,t,n){this.hostProps=e,this.hostListeners=t,this.errors=n}return ParseResult}(),L=function(){function DirectiveWrapperExpressions(){}return DirectiveWrapperExpressions.create=function(e,t){return g.d(e).instantiate(t,g.B(e))},DirectiveWrapperExpressions.context=function(e){return e.prop(E)},DirectiveWrapperExpressions.ngDoCheck=function(e,t,n,o){return e.callMethod("ngDoCheck",[t,n,o])},DirectiveWrapperExpressions.checkHost=function(e,t,n,o,r,i,a){return e.length?[t.callMethod("checkHost",[n,o,r,i].concat(a)).toStmt()]:[]},DirectiveWrapperExpressions.ngOnDetach=function(e,t,n,o,r){return e.some(function(e){return e.isAnimation})?[t.callMethod("ngOnDetach",[n,o,r]).toStmt()]:[]},DirectiveWrapperExpressions.ngOnDestroy=function(e,t){return e.type.lifecycleHooks.indexOf(h.H.OnDestroy)!==-1||Object.keys(e.outputs).length>0?[t.callMethod("ngOnDestroy",[]).toStmt()]:[]},DirectiveWrapperExpressions.subscribe=function(e,t,n,o,r,i){var a=!1,s=[];return Object.keys(e.outputs).forEach(function(t){var o=e.outputs[t],r=n.indexOf(o)>-1;a=a||r,s.push(g.f(r))}),t.forEach(function(e){e.isAnimation&&n.length>0&&(a=!0)}),a?[o.callMethod("subscribe",[r,i].concat(s)).toStmt()]:[]},DirectiveWrapperExpressions.handleEvent=function(e,t,n,o){return t.callMethod("handleEvent",[n,o])},DirectiveWrapperExpressions}()},function(e,t,n){"use strict";function visitAll(e,t,n){void 0===n&&(n=null);var o=[],r=e.visit?function(t){return e.visit(t,n)||t.visit(e,n)}:function(t){return t.visit(e,n)};return t.forEach(function(e){var t=r(e);t&&o.push(t)}),o}n.d(t,"d",function(){return o}),n.d(t,"b",function(){return r}),n.d(t,"c",function(){return i}),n.d(t,"f",function(){return a}),n.d(t,"e",function(){return s}),n.d(t,"a",function(){return u}),t.g=visitAll;var o=function(){function Text(e,t){this.value=e,this.sourceSpan=t}return Text.prototype.visit=function(e,t){return e.visitText(this,t)},Text}(),r=function(){function Expansion(e,t,n,o,r){this.switchValue=e,this.type=t,this.cases=n,this.sourceSpan=o,this.switchValueSourceSpan=r}return Expansion.prototype.visit=function(e,t){return e.visitExpansion(this,t)},Expansion}(),i=function(){function ExpansionCase(e,t,n,o,r){this.value=e,this.expression=t,this.sourceSpan=n,this.valueSourceSpan=o,this.expSourceSpan=r}return ExpansionCase.prototype.visit=function(e,t){return e.visitExpansionCase(this,t)},ExpansionCase}(),a=function(){function Attribute(e,t,n,o){this.name=e,this.value=t,this.sourceSpan=n,this.valueSpan=o}return Attribute.prototype.visit=function(e,t){return e.visitAttribute(this,t)},Attribute}(),s=function(){function Element(e,t,n,o,r,i){this.name=e,this.attrs=t,this.children=n,this.sourceSpan=o,this.startSourceSpan=r,this.endSourceSpan=i}return Element.prototype.visit=function(e,t){return e.visitElement(this,t)},Element}(),u=function(){function Comment(e,t){this.value=e,this.sourceSpan=t}return Comment.prototype.visit=function(e,t){return e.visitComment(this,t)},Comment}()},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o=function(){function ElementSchemaRegistry(){}return ElementSchemaRegistry.prototype.hasProperty=function(e,t,n){},ElementSchemaRegistry.prototype.hasElement=function(e,t){},ElementSchemaRegistry.prototype.securityContext=function(e,t,n){},ElementSchemaRegistry.prototype.allKnownElementNames=function(){},ElementSchemaRegistry.prototype.getMappedPropName=function(e){},ElementSchemaRegistry.prototype.getDefaultComponentElementName=function(){},ElementSchemaRegistry.prototype.validateProperty=function(e){},ElementSchemaRegistry.prototype.validateAttribute=function(e){},ElementSchemaRegistry.prototype.normalizeAnimationStyleProperty=function(e){},ElementSchemaRegistry.prototype.normalizeAnimationStyleValue=function(e,t,n){},ElementSchemaRegistry}()},function(e,t,n){"use strict";function controlPath(e,t){return t.path.concat([e])}function setUpControl(e,t){e||_throwError(t,"Cannot find control with"),t.valueAccessor||_throwError(t,"No value accessor for form control with"),e.validator=r.a.compose([e.validator,t.validator]),e.asyncValidator=r.a.composeAsync([e.asyncValidator,t.asyncValidator]),t.valueAccessor.writeValue(e.value),t.valueAccessor.registerOnChange(function(n){t.viewToModelUpdate(n),e.markAsDirty(),e.setValue(n,{emitModelToViewChange:!1})}),t.valueAccessor.registerOnTouched(function(){return e.markAsTouched()}),e.registerOnChange(function(e,n){t.valueAccessor.writeValue(e),n&&t.viewToModelUpdate(e)}),t.valueAccessor.setDisabledState&&e.registerOnDisabledChange(function(e){t.valueAccessor.setDisabledState(e)}),t._rawValidators.forEach(function(t){t.registerOnValidatorChange&&t.registerOnValidatorChange(function(){return e.updateValueAndValidity()})}),t._rawAsyncValidators.forEach(function(t){t.registerOnValidatorChange&&t.registerOnValidatorChange(function(){return e.updateValueAndValidity()})})}function cleanUpControl(e,t){t.valueAccessor.registerOnChange(function(){return _noControlError(t)}),t.valueAccessor.registerOnTouched(function(){return _noControlError(t)}),t._rawValidators.forEach(function(e){e.registerOnValidatorChange&&e.registerOnValidatorChange(null)}),t._rawAsyncValidators.forEach(function(e){e.registerOnValidatorChange&&e.registerOnValidatorChange(null)}),e&&e._clearChangeFns()}function setUpFormContainer(e,t){n.i(o.f)(e)&&_throwError(t,"Cannot find control with"),e.validator=r.a.compose([e.validator,t.validator]),e.asyncValidator=r.a.composeAsync([e.asyncValidator,t.asyncValidator])}function _noControlError(e){return _throwError(e,"There is no FormControl instance attached to form control element with")}function _throwError(e,t){var n;throw n=e.path.length>1?"path: '"+e.path.join(" -> ")+"'":e.path[0]?"name: '"+e.path+"'":"unspecified name attribute",new Error(t+" "+n)}function composeValidators(e){return n.i(o.c)(e)?r.a.compose(e.map(s.a)):null}function composeAsyncValidators(e){return n.i(o.c)(e)?r.a.composeAsync(e.map(s.b)):null}function isPropertyUpdated(e,t){if(!e.hasOwnProperty("model"))return!1;var r=e.model;return!!r.isFirstChange()||!n.i(o.e)(t,r.currentValue)}function isBuiltInAccessor(e){return g.some(function(t){return e.constructor===t})}function selectValueAccessor(e,t){if(!t)return null;var n,o,r;return t.forEach(function(t){t.constructor===a.a?n=t:isBuiltInAccessor(t)?(o&&_throwError(e,"More than one built-in value accessor matches form control with"),o=t):(r&&_throwError(e,"More than one custom value accessor matches form control with"),r=t)}),r?r:o?o:n?n:(_throwError(e,"No valid value accessor for form control with"),null)}var o=n(111),r=n(49),i=n(187),a=n(188),s=n(666),u=n(274),l=n(136),c=n(275),d=n(191),p=n(192);t.a=controlPath,t.d=setUpControl,t.h=cleanUpControl,t.e=setUpFormContainer,t.b=composeValidators,t.c=composeAsyncValidators,t.g=isPropertyUpdated,t.f=selectValueAccessor;var g=[i.a,c.a,u.a,d.a,p.a,l.a]},function(e,t,n){"use strict";n.d(t,"b",function(){return o}),n.d(t,"c",function(){return r}),n.d(t,"a",function(){return i}),n.d(t,"e",function(){return a}),n.d(t,"d",function(){return s});var o={};o.Get=0,o.Post=1,o.Put=2,o.Delete=3,o.Options=4,o.Head=5,o.Patch=6,o[o.Get]="Get",o[o.Post]="Post",o[o.Put]="Put",o[o.Delete]="Delete",o[o.Options]="Options",o[o.Head]="Head",o[o.Patch]="Patch";var r={};r.Unsent=0,r.Open=1,r.HeadersReceived=2,r.Loading=3,r.Done=4,r.Cancelled=5,r[r.Unsent]="Unsent",r[r.Open]="Open",r[r.HeadersReceived]="HeadersReceived",r[r.Loading]="Loading",r[r.Done]="Done",r[r.Cancelled]="Cancelled";var i={};i.Basic=0,i.Cors=1,i.Default=2,i.Error=3,i.Opaque=4,i[i.Basic]="Basic",i[i.Cors]="Cors",i[i.Default]="Default",i[i.Error]="Error",i[i.Opaque]="Opaque";var a={};a.NONE=0,a.JSON=1,a.FORM=2,a.FORM_DATA=3,a.TEXT=4,a.BLOB=5,a.ARRAY_BUFFER=6,a[a.NONE]="NONE",a[a.JSON]="JSON",a[a.FORM]="FORM",a[a.FORM_DATA]="FORM_DATA",a[a.TEXT]="TEXT",a[a.BLOB]="BLOB",a[a.ARRAY_BUFFER]="ARRAY_BUFFER";var s={};s.Text=0,s.Json=1,s.ArrayBuffer=2,s.Blob=3,s[s.Text]="Text",s[s.Json]="Json",s[s.ArrayBuffer]="ArrayBuffer",s[s.Blob]="Blob"},,,,,,,function(e,t,n){"use strict";var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(0),i=function(e){function EmptyObservable(t){e.call(this),this.scheduler=t}return o(EmptyObservable,e),EmptyObservable.create=function(e){return new EmptyObservable(e)},EmptyObservable.dispatch=function(e){var t=e.subscriber;t.complete()},EmptyObservable.prototype._subscribe=function(e){var t=this.scheduler;return t?t.schedule(EmptyObservable.dispatch,0,{subscriber:e}):void e.complete()},EmptyObservable}(r.Observable);t.EmptyObservable=i},function(e,t,n){"use strict";n(7);n.d(t,"b",function(){return o}),n.d(t,"a",function(){return r});var o=function(){function StringMapWrapper(){}return StringMapWrapper.merge=function(e,t){for(var n={},o=0,r=Object.keys(e);o<r.length;o++){var i=r[o];n[i]=e[i]}for(var a=0,s=Object.keys(t);a<s.length;a++){var i=s[a];n[i]=t[i]}return n},StringMapWrapper.equals=function(e,t){var n=Object.keys(e),o=Object.keys(t);if(n.length!=o.length)return!1;for(var r=0;r<n.length;r++){var i=n[r];if(e[i]!==t[i])return!1}return!0},StringMapWrapper}(),r=function(){function ListWrapper(){}return ListWrapper.findLast=function(e,t){for(var n=e.length-1;n>=0;n--)if(t(e[n]))return e[n];return null},ListWrapper.removeAll=function(e,t){for(var n=0;n<t.length;++n){var o=e.indexOf(t[n]);o>-1&&e.splice(o,1)}},ListWrapper.remove=function(e,t){var n=e.indexOf(t);return n>-1&&(e.splice(n,1),!0)},ListWrapper.equals=function(e,t){if(e.length!=t.length)return!1;for(var n=0;n<e.length;++n)if(e[n]!==t[n])return!1;return!0},ListWrapper.flatten=function(e){return e.reduce(function(e,t){var n=Array.isArray(t)?ListWrapper.flatten(t):t;return e.concat(n)},[])},ListWrapper}()},function(e,t,n){"use strict";var o=n(20),r=n(246),i=n(47),a=n(107);n.d(t,"a",function(){return c}),n.d(t,"b",function(){return a.a});var s=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},u=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},l=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},c=function(e){function HtmlParser(){e.call(this,r.a)}return s(HtmlParser,e),HtmlParser.prototype.parse=function(t,n,o,r){return void 0===o&&(o=!1),void 0===r&&(r=i.a),e.prototype.parse.call(this,t,n,o,r)},HtmlParser=u([n.i(o.a)(),l("design:paramtypes",[])],HtmlParser)}(a.b)},function(e,t,n){"use strict";function splitNsName(e){if(":"!=e[0])return[null,e];var t=e.indexOf(":",1);if(t==-1)throw new Error('Unsupported format "'+e+'" expecting ":namespace:name"');return[e.slice(1,t),e.slice(t+1)]}function getNsPrefix(e){return null===e?null:splitNsName(e)[0]}function mergeNsAndName(e,t){return e?":"+e+":"+t:t}n.d(t,"a",function(){return o}),t.e=splitNsName,t.c=getNsPrefix,t.d=mergeNsAndName,n.d(t,"b",function(){return r});var o={};o.RAW_TEXT=0,o.ESCAPABLE_RAW_TEXT=1,o.PARSABLE_DATA=2,o[o.RAW_TEXT]="RAW_TEXT",o[o.ESCAPABLE_RAW_TEXT]="ESCAPABLE_RAW_TEXT",o[o.PARSABLE_DATA]="PARSABLE_DATA";var r={Aacute:"Á",aacute:"á",Acirc:"Â",acirc:"â",acute:"´",AElig:"Æ",aelig:"æ",Agrave:"À",agrave:"à",alefsym:"ℵ",Alpha:"Α",alpha:"α",amp:"&",and:"∧",ang:"∠",apos:"'",Aring:"Å",aring:"å",asymp:"≈",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",bdquo:"„",Beta:"Β",beta:"β",brvbar:"¦",bull:"•",cap:"∩",Ccedil:"Ç",ccedil:"ç",cedil:"¸",cent:"¢",Chi:"Χ",chi:"χ",circ:"ˆ",clubs:"♣",cong:"≅",copy:"©",crarr:"↵",cup:"∪",curren:"¤",dagger:"†",Dagger:"‡",darr:"↓",dArr:"⇓",deg:"°",Delta:"Δ",delta:"δ",diams:"♦",divide:"÷",Eacute:"É",eacute:"é",Ecirc:"Ê",ecirc:"ê",Egrave:"È",egrave:"è",empty:"∅",emsp:" ",ensp:" ",Epsilon:"Ε",epsilon:"ε",equiv:"≡",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",exist:"∃",fnof:"ƒ",forall:"∀",frac12:"½",frac14:"¼",frac34:"¾",frasl:"⁄",Gamma:"Γ",gamma:"γ",ge:"≥",gt:">",harr:"↔",hArr:"⇔",hearts:"♥",hellip:"…",Iacute:"Í",iacute:"í",Icirc:"Î",icirc:"î",iexcl:"¡",Igrave:"Ì",igrave:"ì",image:"ℑ",infin:"∞","int":"∫",Iota:"Ι",iota:"ι",iquest:"¿",isin:"∈",Iuml:"Ï",iuml:"ï",Kappa:"Κ",kappa:"κ",Lambda:"Λ",lambda:"λ",lang:"⟨",laquo:"«",larr:"←",lArr:"⇐",lceil:"⌈",ldquo:"“",le:"≤",lfloor:"⌊",lowast:"∗",loz:"◊",lrm:"‎",lsaquo:"‹",lsquo:"‘",lt:"<",macr:"¯",mdash:"—",micro:"µ",middot:"·",minus:"−",Mu:"Μ",mu:"μ",nabla:"∇",nbsp:" ",ndash:"–",ne:"≠",ni:"∋",not:"¬",notin:"∉",nsub:"⊄",Ntilde:"Ñ",ntilde:"ñ",Nu:"Ν",nu:"ν",Oacute:"Ó",oacute:"ó",Ocirc:"Ô",ocirc:"ô",OElig:"Œ",oelig:"œ",Ograve:"Ò",ograve:"ò",oline:"‾",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",oplus:"⊕",or:"∨",ordf:"ª",ordm:"º",Oslash:"Ø",oslash:"ø",Otilde:"Õ",otilde:"õ",otimes:"⊗",Ouml:"Ö",ouml:"ö",para:"¶",permil:"‰",perp:"⊥",Phi:"Φ",phi:"φ",Pi:"Π",pi:"π",piv:"ϖ",plusmn:"±",pound:"£",prime:"′",Prime:"″",prod:"∏",prop:"∝",Psi:"Ψ",psi:"ψ",quot:'"',radic:"√",rang:"⟩",raquo:"»",rarr:"→",rArr:"⇒",rceil:"⌉",rdquo:"”",real:"ℜ",reg:"®",rfloor:"⌋",Rho:"Ρ",rho:"ρ",rlm:"‏",rsaquo:"›",rsquo:"’",sbquo:"‚",Scaron:"Š",scaron:"š",sdot:"⋅",sect:"§",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sim:"∼",spades:"♠",sub:"⊂",sube:"⊆",sum:"∑",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supe:"⊇",szlig:"ß",Tau:"Τ",tau:"τ",there4:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thinsp:" ",THORN:"Þ",thorn:"þ",tilde:"˜",times:"×",trade:"™",Uacute:"Ú",uacute:"ú",uarr:"↑",uArr:"⇑",Ucirc:"Û",ucirc:"û",Ugrave:"Ù",ugrave:"ù",uml:"¨",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",Uuml:"Ü",uuml:"ü",weierp:"℘",Xi:"Ξ",xi:"ξ",Yacute:"Ý",yacute:"ý",yen:"¥",yuml:"ÿ",Yuml:"Ÿ",Zeta:"Ζ",zeta:"ζ",zwj:"‍",zwnj:"‌"}},function(e,t,n){"use strict";function createOfflineCompileUrlResolver(){return new l(".")}function getUrlScheme(e){var t=_split(e);return t&&t[d.Scheme]||""}function _buildFromEncodedParts(e,t,o,i,a,s,u){var l=[];return n.i(r.f)(e)&&l.push(e+":"),n.i(r.f)(o)&&(l.push("//"),n.i(r.f)(t)&&l.push(t+"@"),l.push(o),n.i(r.f)(i)&&l.push(":"+i)),n.i(r.f)(a)&&l.push(a),n.i(r.f)(s)&&l.push("?"+s),n.i(r.f)(u)&&l.push("#"+u),l.join("")}function _split(e){return e.match(c)}function _removeDotSegments(e){if("/"==e)return"/";for(var t="/"==e[0]?"/":"",n="/"===e[e.length-1]?"/":"",o=e.split("/"),r=[],i=0,a=0;a<o.length;a++){var s=o[a];switch(s){case"":case".":break;case"..":r.length>0?r.pop():i++;break;default:r.push(s)}}if(""==t){for(;i-- >0;)r.unshift("..");0===r.length&&r.push(".")}return t+r.join("/")+n}function _joinAndCanonicalizePath(e){var t=e[d.Path];return t=n.i(r.g)(t)?"":_removeDotSegments(t),e[d.Path]=t,_buildFromEncodedParts(e[d.Scheme],e[d.UserInfo],e[d.Domain],e[d.Port],t,e[d.QueryData],e[d.Fragment])}function _resolveUrl(e,t){var o=_split(encodeURI(t)),i=_split(e);if(n.i(r.f)(o[d.Scheme]))return _joinAndCanonicalizePath(o);o[d.Scheme]=i[d.Scheme];for(var a=d.Scheme;a<=d.Port;a++)n.i(r.g)(o[a])&&(o[a]=i[a]);if("/"==o[d.Path][0])return _joinAndCanonicalizePath(o);var s=i[d.Path];n.i(r.g)(s)&&(s="/");var u=s.lastIndexOf("/");return s=s.substring(0,u+1)+o[d.Path],o[d.Path]=s,_joinAndCanonicalizePath(o)}var o=n(1),r=n(7),i=n(20);t.c=createOfflineCompileUrlResolver,n.d(t,"d",function(){return u}),n.d(t,"a",function(){return l}),t.b=getUrlScheme;var a=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},s=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},u={provide:o.PACKAGE_ROOT_URL,useValue:"/"},l=function(){function UrlResolver(e){void 0===e&&(e=null),this._packagePrefix=e}return UrlResolver.prototype.resolve=function(e,t){var o=t;n.i(r.f)(e)&&e.length>0&&(o=_resolveUrl(e,o));var i=_split(o),a=this._packagePrefix;if(n.i(r.f)(a)&&n.i(r.f)(i)&&"package"==i[d.Scheme]){var s=i[d.Path];return a=a.replace(/\/+$/,""),s=s.replace(/^\/+/,""),a+"/"+s}return o},UrlResolver.ctorParameters=function(){return[{type:void 0,decorators:[{type:o.Inject,args:[o.PACKAGE_ROOT_URL]}]}]},UrlResolver=a([n.i(i.a)(),s("design:paramtypes",[String])],UrlResolver)}(),c=new RegExp("^(?:([^:/?#.]+):)?(?://(?:([^/?#]*)@)?([\\w\\d\\-\\u0100-\\uffff.%]*)(?::([0-9]+))?)?([^?#]+)?(?:\\?([^#]*))?(?:#(.*))?$"),d={};d.Scheme=1,d.UserInfo=2,d.Domain=3,d.Port=4,d.Path=5,d.QueryData=6,d.Fragment=7,d[d.Scheme]="Scheme",d[d.UserInfo]="UserInfo",d[d.Domain]="Domain",d[d.Port]="Port",d[d.Path]="Path",d[d.QueryData]="QueryData",d[d.Fragment]="Fragment"},function(e,t,n){"use strict";function getPropertyInView(e,t,n){if(t===n)return e;for(var o=i.c,r=t;r!==n&&r.declarationElement.view;)r=r.declarationElement.view,o=o.prop("parentView");if(r!==n)throw new Error("Internal error: Could not calculate a property in a parent view: "+e);return e.visitExpression(new u(o,n),null)}function injectFromViewParentInjector(e,t,o){var s;s=e.viewType===a.l.HOST?i.c:i.c.prop("parentView");var u=[n.i(r.c)(t),i.c.prop("parentIndex")];return o&&u.push(i.k),s.callMethod("injectorGet",u)}function getViewClassName(e,t){return"View_"+n.i(o.c)(e.type)+t}function getHandleEventMethodName(e){return"handleEvent_"+e}var o=n(14),r=n(46),i=n(10),a=n(17);t.a=getPropertyInView,t.b=injectFromViewParentInjector,t.c=getViewClassName,t.d=getHandleEventMethodName;var s=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},u=function(e){function _ReplaceViewTransformer(t,n){e.call(this),this._viewExpr=t,this._view=n}return s(_ReplaceViewTransformer,e),_ReplaceViewTransformer.prototype._isThis=function(e){return e instanceof i.q&&e.builtin===i.L.This},_ReplaceViewTransformer.prototype.visitReadVarExpr=function(e,t){return this._isThis(e)?this._viewExpr:e},_ReplaceViewTransformer.prototype.visitReadPropExpr=function(t,n){return this._isThis(t.receiver)&&(this._view.fields.some(function(e){return e.name==t.name})||this._view.getters.some(function(e){return e.name==t.name}))?this._viewExpr.cast(this._view.classType).prop(t.name):e.prototype.visitReadPropExpr.call(this,t,n)},_ReplaceViewTransformer}(i.R)},function(e,t,n){"use strict";function unimplemented(){throw new Error("unimplemented")}var o=n(271);n.d(t,"a",function(){return i});var r=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},i=function(e){function NgControl(){e.apply(this,arguments),this._parent=null,this.name=null,this.valueAccessor=null,this._rawValidators=[],this._rawAsyncValidators=[]}return r(NgControl,e),Object.defineProperty(NgControl.prototype,"validator",{get:function(){return unimplemented()},enumerable:!0,configurable:!0}),Object.defineProperty(NgControl.prototype,"asyncValidator",{get:function(){return unimplemented()},enumerable:!0,configurable:!0}),NgControl.prototype.viewToModelUpdate=function(e){},NgControl}(o.a)},function(e,t,n){"use strict";function createEmptyUrlTree(){return new i(new a([],{}),{},null)}function containsTree(e,t,n){return n?equalSegmentGroups(e.root,t.root):containsSegmentGroup(e.root,t.root)}function equalSegmentGroups(e,t){if(!equalPath(e.segments,t.segments))return!1;if(e.numberOfChildren!==t.numberOfChildren)return!1;for(var n in t.children){if(!e.children[n])return!1;if(!equalSegmentGroups(e.children[n],t.children[n]))return!1}return!0}function containsSegmentGroup(e,t){return containsSegmentGroupHelper(e,t,t.segments)}function containsSegmentGroupHelper(e,t,n){if(e.segments.length>n.length){var r=e.segments.slice(0,n.length);return!!equalPath(r,n)&&!t.hasChildren()}if(e.segments.length===n.length){if(!equalPath(e.segments,n))return!1;for(var i in t.children){if(!e.children[i])return!1;if(!containsSegmentGroup(e.children[i],t.children[i]))return!1}return!0}var r=n.slice(0,e.segments.length),a=n.slice(e.segments.length);return!!equalPath(e.segments,r)&&(!!e.children[o.a]&&containsSegmentGroupHelper(e.children[o.a],t,a))}function equalPath(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;++n)if(e[n].path!==t[n].path)return!1;return!0}function mapChildrenIntoArray(e,t){var i=[];return n.i(r.c)(e.children,function(e,n){n===o.a&&(i=i.concat(t(e,n)))}),n.i(r.c)(e.children,function(e,n){n!==o.a&&(i=i.concat(t(e,n)))}),i}function serializePaths(e){return e.segments.map(function(e){return serializePath(e)}).join("/")}function serializeSegment(e,t){if(e.hasChildren()&&t){var i=e.children[o.a]?serializeSegment(e.children[o.a],!1):"",a=[];return n.i(r.c)(e.children,function(e,t){t!==o.a&&a.push(t+":"+serializeSegment(e,!1))}),a.length>0?i+"("+a.join("//")+")":""+i}if(e.hasChildren()&&!t){var s=mapChildrenIntoArray(e,function(t,n){return n===o.a?[serializeSegment(e.children[o.a],!1)]:[n+":"+serializeSegment(t,!1)]});return serializePaths(e)+"/("+s.join("//")+")"}return serializePaths(e)}function encode(e){return encodeURIComponent(e)}function decode(e){return decodeURIComponent(e)}function serializePath(e){return""+encode(e.path)+serializeParams(e.parameters)}function serializeParams(e){return pairs(e).map(function(e){return";"+encode(e.first)+"="+encode(e.second)}).join("")}function serializeQueryParams(e){var t=pairs(e).map(function(e){return encode(e.first)+"="+encode(e.second)});return t.length>0?"?"+t.join("&"):""}function pairs(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(new c(n,e[n]));return t}function matchSegments(e){d.lastIndex=0;var t=e.match(d);return t?t[0]:""}function matchQueryParams(e){p.lastIndex=0;var t=e.match(d);return t?t[0]:""}function matchUrlQueryParamValue(e){g.lastIndex=0;var t=e.match(g);return t?t[0]:""}var o=n(58),r=n(59);
t.e=createEmptyUrlTree,t.f=containsTree,n.d(t,"b",function(){return i}),n.d(t,"a",function(){return a}),n.d(t,"c",function(){return s}),t.d=mapChildrenIntoArray,n.d(t,"g",function(){return u}),n.d(t,"h",function(){return l});var i=function(){function UrlTree(e,t,n){this.root=e,this.queryParams=t,this.fragment=n}return UrlTree.prototype.toString=function(){return(new l).serialize(this)},UrlTree}(),a=function(){function UrlSegmentGroup(e,t){var o=this;this.segments=e,this.children=t,this.parent=null,n.i(r.c)(t,function(e,t){return e.parent=o})}return UrlSegmentGroup.prototype.hasChildren=function(){return this.numberOfChildren>0},Object.defineProperty(UrlSegmentGroup.prototype,"numberOfChildren",{get:function(){return Object.keys(this.children).length},enumerable:!0,configurable:!0}),UrlSegmentGroup.prototype.toString=function(){return serializePaths(this)},UrlSegmentGroup}(),s=function(){function UrlSegment(e,t){this.path=e,this.parameters=t}return UrlSegment.prototype.toString=function(){return serializePath(this)},UrlSegment}(),u=function(){function UrlSerializer(){}return UrlSerializer}(),l=function(){function DefaultUrlSerializer(){}return DefaultUrlSerializer.prototype.parse=function(e){var t=new f(e);return new i(t.parseRootSegment(),t.parseQueryParams(),t.parseFragment())},DefaultUrlSerializer.prototype.serialize=function(e){var t="/"+serializeSegment(e.root,!0),n=serializeQueryParams(e.queryParams),o=null!==e.fragment&&void 0!==e.fragment?"#"+encodeURI(e.fragment):"";return""+t+n+o},DefaultUrlSerializer}(),c=function(){function Pair(e,t){this.first=e,this.second=t}return Pair}(),d=/^[^\/\(\)\?;=&#]+/,p=/^[^=\?&#]+/,g=/^[^\?&#]+/,f=function(){function UrlParser(e){this.url=e,this.remaining=e}return UrlParser.prototype.peekStartsWith=function(e){return this.remaining.startsWith(e)},UrlParser.prototype.capture=function(e){if(!this.remaining.startsWith(e))throw new Error('Expected "'+e+'".');this.remaining=this.remaining.substring(e.length)},UrlParser.prototype.parseRootSegment=function(){return this.remaining.startsWith("/")&&this.capture("/"),""===this.remaining||this.remaining.startsWith("?")||this.remaining.startsWith("#")?new a([],{}):new a([],this.parseChildren())},UrlParser.prototype.parseChildren=function(){if(0==this.remaining.length)return{};this.peekStartsWith("/")&&this.capture("/");var e=[];for(this.peekStartsWith("(")||e.push(this.parseSegments());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),e.push(this.parseSegments());var t={};this.peekStartsWith("/(")&&(this.capture("/"),t=this.parseParens(!0));var n={};return this.peekStartsWith("(")&&(n=this.parseParens(!1)),(e.length>0||Object.keys(t).length>0)&&(n[o.a]=new a(e,t)),n},UrlParser.prototype.parseSegments=function(){var e=matchSegments(this.remaining);if(""===e&&this.peekStartsWith(";"))throw new Error("Empty path url segment cannot have parameters: '"+this.remaining+"'.");this.capture(e);var t={};return this.peekStartsWith(";")&&(t=this.parseMatrixParams()),new s(decode(e),t)},UrlParser.prototype.parseQueryParams=function(){var e={};if(this.peekStartsWith("?"))for(this.capture("?"),this.parseQueryParam(e);this.remaining.length>0&&this.peekStartsWith("&");)this.capture("&"),this.parseQueryParam(e);return e},UrlParser.prototype.parseFragment=function(){return this.peekStartsWith("#")?decodeURI(this.remaining.substring(1)):null},UrlParser.prototype.parseMatrixParams=function(){for(var e={};this.remaining.length>0&&this.peekStartsWith(";");)this.capture(";"),this.parseParam(e);return e},UrlParser.prototype.parseParam=function(e){var t=matchSegments(this.remaining);if(t){this.capture(t);var n="";if(this.peekStartsWith("=")){this.capture("=");var o=matchSegments(this.remaining);o&&(n=o,this.capture(n))}e[decode(t)]=decode(n)}},UrlParser.prototype.parseQueryParam=function(e){var t=matchQueryParams(this.remaining);if(t){this.capture(t);var n="";if(this.peekStartsWith("=")){this.capture("=");var o=matchUrlQueryParamValue(this.remaining);o&&(n=o,this.capture(n))}e[decode(t)]=decode(n)}},UrlParser.prototype.parseParens=function(e){var t={};for(this.capture("(");!this.peekStartsWith(")")&&this.remaining.length>0;){var n=matchSegments(this.remaining),r=this.remaining[n.length];if("/"!==r&&")"!==r&&";"!==r)throw new Error("Cannot parse url '"+this.url+"'");var i=void 0;n.indexOf(":")>-1?(i=n.substr(0,n.indexOf(":")),this.capture(i),this.capture(":")):e&&(i=o.a);var s=this.parseChildren();t[i]=1===Object.keys(s).length?s[o.a]:new a([],s),this.peekStartsWith("//")&&this.capture("//")}return this.capture(")"),t},UrlParser}()},,,,,,,,,,function(e,t,n){"use strict";var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(13),i=n(229),a=function(e){function BehaviorSubject(t){e.call(this),this._value=t}return o(BehaviorSubject,e),Object.defineProperty(BehaviorSubject.prototype,"value",{get:function(){return this.getValue()},enumerable:!0,configurable:!0}),BehaviorSubject.prototype._subscribe=function(t){var n=e.prototype._subscribe.call(this,t);return n&&!n.closed&&t.next(this._value),n},BehaviorSubject.prototype.getValue=function(){if(this.hasError)throw this.thrownError;if(this.closed)throw new i.ObjectUnsubscribedError;return this._value},BehaviorSubject.prototype.next=function(t){e.prototype.next.call(this,this._value=t)},BehaviorSubject}(r.Subject);t.BehaviorSubject=a},,function(e,t,n){"use strict";var o=n(687);n.d(t,"NgProbeToken",function(){return o.b}),n.d(t,"platformBrowser",function(){return o.c}),n.d(t,"Title",function(){return o.d}),n.d(t,"disableDebugTools",function(){return o.e}),n.d(t,"enableDebugTools",function(){return o.f}),n.d(t,"AnimationDriver",function(){return o.g}),n.d(t,"By",function(){return o.h}),n.d(t,"BrowserModule",function(){return o.i}),n.d(t,"DOCUMENT",function(){return o.j}),n.d(t,"EVENT_MANAGER_PLUGINS",function(){return o.k}),n.d(t,"EventManager",function(){return o.l}),n.d(t,"HAMMER_GESTURE_CONFIG",function(){return o.m}),n.d(t,"HammerGestureConfig",function(){return o.n}),n.d(t,"DomSanitizer",function(){return o.o}),n.d(t,"VERSION",function(){return o.p}),n.d(t,"__platform_browser_private__",function(){return o.a})},,,function(e,t,n){"use strict";function _createInterpolateRegExp(e){var t=n.i(r.i)(e.start)+"([\\s\\S]*?)"+n.i(r.i)(e.end);return new RegExp(t,"g")}var o=n(166),r=n(7),i=n(20),a=n(47),s=n(244),u=n(125);n.d(t,"a",function(){return g});var l=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},d=function(){function SplitInterpolation(e,t,n){this.strings=e,this.expressions=t,this.offsets=n}return SplitInterpolation}(),p=function(){function TemplateBindingParseResult(e,t,n){this.templateBindings=e,this.warnings=t,this.errors=n}return TemplateBindingParseResult}(),g=function(){function Parser(e){this._lexer=e,this.errors=[]}return Parser.prototype.parseAction=function(e,t,n){void 0===n&&(n=a.a),this._checkNoInterpolation(e,t,n);var o=this._stripComments(e),r=this._lexer.tokenize(this._stripComments(e)),i=new f(e,t,r,o.length,(!0),this.errors,e.length-o.length).parseChain();return new s.a(i,e,t,this.errors)},Parser.prototype.parseBinding=function(e,t,n){void 0===n&&(n=a.a);var o=this._parseBindingAst(e,t,n);return new s.a(o,e,t,this.errors)},Parser.prototype.parseSimpleBinding=function(e,t,n){void 0===n&&(n=a.a);var o=this._parseBindingAst(e,t,n),r=h.check(o);return r.length>0&&this._reportError("Host binding expression cannot contain "+r.join(" "),e,t),new s.a(o,e,t,this.errors)},Parser.prototype._reportError=function(e,t,n,o){this.errors.push(new s.b(e,t,n,o))},Parser.prototype._parseBindingAst=function(e,t,o){var i=this._parseQuote(e,t);if(n.i(r.f)(i))return i;this._checkNoInterpolation(e,t,o);var a=this._stripComments(e),s=this._lexer.tokenize(a);return new f(e,t,s,a.length,(!1),this.errors,e.length-a.length).parseChain()},Parser.prototype._parseQuote=function(e,t){if(n.i(r.g)(e))return null;var o=e.indexOf(":");if(o==-1)return null;var i=e.substring(0,o).trim();if(!n.i(u.a)(i))return null;var a=e.substring(o+1);return new s.c(new s.d(0,e.length),i,a,t)},Parser.prototype.parseTemplateBindings=function(e,t,n){var o=this._lexer.tokenize(t);if(e){var r=this._lexer.tokenize(e).map(function(e){return e.index=0,e});o.unshift.apply(o,r)}return new f(t,n,o,t.length,(!1),this.errors,0).parseTemplateBindings()},Parser.prototype.parseInterpolation=function(e,t,o){void 0===o&&(o=a.a);var i=this.splitInterpolation(e,t,o);if(null==i)return null;for(var u=[],l=0;l<i.expressions.length;++l){var c=i.expressions[l],d=this._stripComments(c),p=this._lexer.tokenize(this._stripComments(i.expressions[l])),g=new f(e,t,p,d.length,(!1),this.errors,i.offsets[l]+(c.length-d.length)).parseChain();u.push(g)}return new s.a(new s.e(new s.d(0,n.i(r.g)(e)?0:e.length),i.strings,u),e,t,this.errors)},Parser.prototype.splitInterpolation=function(e,t,n){void 0===n&&(n=a.a);var o=_createInterpolateRegExp(n),r=e.split(o);if(r.length<=1)return null;for(var i=[],s=[],u=[],l=0,c=0;c<r.length;c++){var p=r[c];c%2===0?(i.push(p),l+=p.length):p.trim().length>0?(l+=n.start.length,s.push(p),u.push(l),l+=p.length+n.end.length):(this._reportError("Blank expressions are not allowed in interpolated strings",e,"at column "+this._findInterpolationErrorColumn(r,c,n)+" in",t),s.push("$implict"),u.push(l))}return new d(i,s,u)},Parser.prototype.wrapLiteralPrimitive=function(e,t){return new s.a(new s.f(new s.d(0,n.i(r.g)(e)?0:e.length),e),e,t,this.errors)},Parser.prototype._stripComments=function(e){var t=this._commentStart(e);return n.i(r.f)(t)?e.substring(0,t).trim():e},Parser.prototype._commentStart=function(e){for(var t=null,i=0;i<e.length-1;i++){var a=e.charCodeAt(i),s=e.charCodeAt(i+1);if(a===o.t&&s==o.t&&n.i(r.g)(t))return i;t===a?t=null:n.i(r.g)(t)&&n.i(u.b)(a)&&(t=a)}return null},Parser.prototype._checkNoInterpolation=function(e,t,n){var o=_createInterpolateRegExp(n),r=e.split(o);r.length>1&&this._reportError("Got interpolation ("+n.start+n.end+") where expression was expected",e,"at column "+this._findInterpolationErrorColumn(r,1,n)+" in",t)},Parser.prototype._findInterpolationErrorColumn=function(e,t,n){for(var o="",r=0;r<t;r++)o+=r%2===0?e[r]:""+n.start+e[r]+n.end;return o.length},Parser=l([n.i(i.a)(),c("design:paramtypes",[u.c])],Parser)}(),f=function(){function _ParseAST(e,t,n,o,r,i,a){this.input=e,this.location=t,this.tokens=n,this.inputLength=o,this.parseAction=r,this.errors=i,this.offset=a,this.rparensExpected=0,this.rbracketsExpected=0,this.rbracesExpected=0,this.index=0}return _ParseAST.prototype.peek=function(e){var t=this.index+e;return t<this.tokens.length?this.tokens[t]:u.d},Object.defineProperty(_ParseAST.prototype,"next",{get:function(){return this.peek(0)},enumerable:!0,configurable:!0}),Object.defineProperty(_ParseAST.prototype,"inputIndex",{get:function(){return this.index<this.tokens.length?this.next.index+this.offset:this.inputLength+this.offset},enumerable:!0,configurable:!0}),_ParseAST.prototype.span=function(e){return new s.d(e,this.inputIndex)},_ParseAST.prototype.advance=function(){this.index++},_ParseAST.prototype.optionalCharacter=function(e){return!!this.next.isCharacter(e)&&(this.advance(),!0)},_ParseAST.prototype.peekKeywordLet=function(){return this.next.isKeywordLet()},_ParseAST.prototype.expectCharacter=function(e){this.optionalCharacter(e)||this.error("Missing expected "+String.fromCharCode(e))},_ParseAST.prototype.optionalOperator=function(e){return!!this.next.isOperator(e)&&(this.advance(),!0)},_ParseAST.prototype.expectOperator=function(e){this.optionalOperator(e)||this.error("Missing expected operator "+e)},_ParseAST.prototype.expectIdentifierOrKeyword=function(){var e=this.next;return e.isIdentifier()||e.isKeyword()?(this.advance(),e.toString()):(this.error("Unexpected token "+e+", expected identifier or keyword"),"")},_ParseAST.prototype.expectIdentifierOrKeywordOrString=function(){var e=this.next;return e.isIdentifier()||e.isKeyword()||e.isString()?(this.advance(),e.toString()):(this.error("Unexpected token "+e+", expected identifier, keyword, or string"),"")},_ParseAST.prototype.parseChain=function(){for(var e=[],t=this.inputIndex;this.index<this.tokens.length;){var n=this.parsePipe();if(e.push(n),this.optionalCharacter(o.m))for(this.parseAction||this.error("Binding expression cannot contain chained expression");this.optionalCharacter(o.m););else this.index<this.tokens.length&&this.error("Unexpected token '"+this.next+"'")}return 0==e.length?new s.g(this.span(t)):1==e.length?e[0]:new s.h(this.span(t),e)},_ParseAST.prototype.parsePipe=function(){var e=this.parseExpression();if(this.optionalOperator("|")){this.parseAction&&this.error("Cannot have a pipe in an action expression");do{for(var t=this.expectIdentifierOrKeyword(),n=[];this.optionalCharacter(o.l);)n.push(this.parseExpression());e=new s.i(this.span(e.span.start),e,t,n)}while(this.optionalOperator("|"))}return e},_ParseAST.prototype.parseExpression=function(){return this.parseConditional()},_ParseAST.prototype.parseConditional=function(){var e=this.inputIndex,t=this.parseLogicalOr();if(this.optionalOperator("?")){var n=this.parsePipe(),r=void 0;if(this.optionalCharacter(o.l))r=this.parsePipe();else{var i=this.inputIndex,a=this.input.substring(e,i);this.error("Conditional expression "+a+" requires all 3 expressions"),r=new s.g(this.span(e))}return new s.j(this.span(e),t,n,r)}return t},_ParseAST.prototype.parseLogicalOr=function(){for(var e=this.parseLogicalAnd();this.optionalOperator("||");){var t=this.parseLogicalAnd();e=new s.k(this.span(e.span.start),"||",e,t)}return e},_ParseAST.prototype.parseLogicalAnd=function(){for(var e=this.parseEquality();this.optionalOperator("&&");){var t=this.parseEquality();e=new s.k(this.span(e.span.start),"&&",e,t)}return e},_ParseAST.prototype.parseEquality=function(){for(var e=this.parseRelational();this.next.type==u.e.Operator;){var t=this.next.strValue;switch(t){case"==":case"===":case"!=":case"!==":this.advance();var n=this.parseRelational();e=new s.k(this.span(e.span.start),t,e,n);continue}break}return e},_ParseAST.prototype.parseRelational=function(){for(var e=this.parseAdditive();this.next.type==u.e.Operator;){var t=this.next.strValue;switch(t){case"<":case">":case"<=":case">=":this.advance();var n=this.parseAdditive();e=new s.k(this.span(e.span.start),t,e,n);continue}break}return e},_ParseAST.prototype.parseAdditive=function(){for(var e=this.parseMultiplicative();this.next.type==u.e.Operator;){var t=this.next.strValue;switch(t){case"+":case"-":this.advance();var n=this.parseMultiplicative();e=new s.k(this.span(e.span.start),t,e,n);continue}break}return e},_ParseAST.prototype.parseMultiplicative=function(){for(var e=this.parsePrefix();this.next.type==u.e.Operator;){var t=this.next.strValue;switch(t){case"*":case"%":case"/":this.advance();var n=this.parsePrefix();e=new s.k(this.span(e.span.start),t,e,n);continue}break}return e},_ParseAST.prototype.parsePrefix=function(){if(this.next.type==u.e.Operator){var e=this.inputIndex,t=this.next.strValue,n=void 0;switch(t){case"+":return this.advance(),this.parsePrefix();case"-":return this.advance(),n=this.parsePrefix(),new s.k(this.span(e),t,new s.f(new s.d(e,e),0),n);case"!":return this.advance(),n=this.parsePrefix(),new s.l(this.span(e),n)}}return this.parseCallChain()},_ParseAST.prototype.parseCallChain=function(){for(var e=this.parsePrimary();;)if(this.optionalCharacter(o.d))e=this.parseAccessMemberOrMethodCall(e,!1);else if(this.optionalOperator("?."))e=this.parseAccessMemberOrMethodCall(e,!0);else if(this.optionalCharacter(o.i)){this.rbracketsExpected++;var t=this.parsePipe();if(this.rbracketsExpected--,this.expectCharacter(o.j),this.optionalOperator("=")){var n=this.parseConditional();e=new s.m(this.span(e.span.start),e,t,n)}else e=new s.n(this.span(e.span.start),e,t)}else{if(!this.optionalCharacter(o.e))return e;this.rparensExpected++;var r=this.parseCallArguments();this.rparensExpected--,this.expectCharacter(o.f),e=new s.o(this.span(e.span.start),e,r)}},_ParseAST.prototype.parsePrimary=function(){var e=this.inputIndex;if(this.optionalCharacter(o.e)){this.rparensExpected++;var t=this.parsePipe();return this.rparensExpected--,this.expectCharacter(o.f),t}if(this.next.isKeywordNull())return this.advance(),new s.f(this.span(e),null);if(this.next.isKeywordUndefined())return this.advance(),new s.f(this.span(e),(void 0));if(this.next.isKeywordTrue())return this.advance(),new s.f(this.span(e),(!0));if(this.next.isKeywordFalse())return this.advance(),new s.f(this.span(e),(!1));if(this.next.isKeywordThis())return this.advance(),new s.p(this.span(e));if(this.optionalCharacter(o.i)){this.rbracketsExpected++;var n=this.parseExpressionList(o.j);return this.rbracketsExpected--,this.expectCharacter(o.j),new s.q(this.span(e),n)}if(this.next.isCharacter(o.g))return this.parseLiteralMap();if(this.next.isIdentifier())return this.parseAccessMemberOrMethodCall(new s.p(this.span(e)),!1);if(this.next.isNumber()){var r=this.next.toNumber();return this.advance(),new s.f(this.span(e),r)}if(this.next.isString()){var i=this.next.toString();return this.advance(),new s.f(this.span(e),i)}return this.index>=this.tokens.length?(this.error("Unexpected end of expression: "+this.input),new s.g(this.span(e))):(this.error("Unexpected token "+this.next),new s.g(this.span(e)))},_ParseAST.prototype.parseExpressionList=function(e){var t=[];if(!this.next.isCharacter(e))do t.push(this.parsePipe());while(this.optionalCharacter(o.k));return t},_ParseAST.prototype.parseLiteralMap=function(){var e=[],t=[],n=this.inputIndex;if(this.expectCharacter(o.g),!this.optionalCharacter(o.h)){this.rbracesExpected++;do{var r=this.expectIdentifierOrKeywordOrString();e.push(r),this.expectCharacter(o.l),t.push(this.parsePipe())}while(this.optionalCharacter(o.k));this.rbracesExpected--,this.expectCharacter(o.h)}return new s.r(this.span(n),e,t)},_ParseAST.prototype.parseAccessMemberOrMethodCall=function(e,t){void 0===t&&(t=!1);var n=e.span.start,r=this.expectIdentifierOrKeyword();if(this.optionalCharacter(o.e)){this.rparensExpected++;var i=this.parseCallArguments();this.expectCharacter(o.f),this.rparensExpected--;var a=this.span(n);return t?new s.s(a,e,r,i):new s.t(a,e,r,i)}if(t)return this.optionalOperator("=")?(this.error("The '?.' operator cannot be used in the assignment"),new s.g(this.span(n))):new s.u(this.span(n),e,r);if(this.optionalOperator("=")){if(!this.parseAction)return this.error("Bindings cannot contain assignments"),new s.g(this.span(n));var u=this.parseConditional();return new s.v(this.span(n),e,r,u)}return new s.w(this.span(n),e,r)},_ParseAST.prototype.parseCallArguments=function(){if(this.next.isCharacter(o.f))return[];var e=[];do e.push(this.parsePipe());while(this.optionalCharacter(o.k));return e},_ParseAST.prototype.expectTemplateBindingKey=function(){var e="",t=!1;do e+=this.expectIdentifierOrKeywordOrString(),t=this.optionalOperator("-"),t&&(e+="-");while(t);return e.toString()},_ParseAST.prototype.parseTemplateBindings=function(){for(var e=[],t=null,n=[];this.index<this.tokens.length;){var r=this.inputIndex,i=this.peekKeywordLet();i&&this.advance();var a=this.expectTemplateBindingKey();i||(null==t?t=a:a=t+a[0].toUpperCase()+a.substring(1)),this.optionalCharacter(o.l);var l=null,c=null;if(i)l=this.optionalOperator("=")?this.expectTemplateBindingKey():"$implicit";else if(this.next!==u.d&&!this.peekKeywordLet()){var d=this.inputIndex,g=this.parsePipe(),f=this.input.substring(d-this.offset,this.inputIndex-this.offset);c=new s.a(g,f,this.location,this.errors)}e.push(new s.x(this.span(r),a,i,l,c)),this.optionalCharacter(o.m)||this.optionalCharacter(o.k)}return new p(e,n,this.errors)},_ParseAST.prototype.error=function(e,t){void 0===t&&(t=null),this.errors.push(new s.b(e,this.input,this.locationText(t),this.location)),this.skip()},_ParseAST.prototype.locationText=function(e){return void 0===e&&(e=null),n.i(r.g)(e)&&(e=this.index),e<this.tokens.length?"at column "+(this.tokens[e].index+1)+" in":"at the end of the expression"},_ParseAST.prototype.skip=function(){for(var e=this.next;this.index<this.tokens.length&&!e.isCharacter(o.m)&&(this.rparensExpected<=0||!e.isCharacter(o.f))&&(this.rbracesExpected<=0||!e.isCharacter(o.h))&&(this.rbracketsExpected<=0||!e.isCharacter(o.j));)this.next.isError()&&this.errors.push(new s.b(this.next.toString(),this.input,this.locationText(),this.location)),this.advance(),e=this.next},_ParseAST}(),h=function(){function SimpleExpressionChecker(){this.errors=[]}return SimpleExpressionChecker.check=function(e){var t=new SimpleExpressionChecker;return e.visit(t),t.errors},SimpleExpressionChecker.prototype.visitImplicitReceiver=function(e,t){},SimpleExpressionChecker.prototype.visitInterpolation=function(e,t){},SimpleExpressionChecker.prototype.visitLiteralPrimitive=function(e,t){},SimpleExpressionChecker.prototype.visitPropertyRead=function(e,t){},SimpleExpressionChecker.prototype.visitPropertyWrite=function(e,t){},SimpleExpressionChecker.prototype.visitSafePropertyRead=function(e,t){},SimpleExpressionChecker.prototype.visitMethodCall=function(e,t){},SimpleExpressionChecker.prototype.visitSafeMethodCall=function(e,t){},SimpleExpressionChecker.prototype.visitFunctionCall=function(e,t){},SimpleExpressionChecker.prototype.visitLiteralArray=function(e,t){this.visitAll(e.expressions)},SimpleExpressionChecker.prototype.visitLiteralMap=function(e,t){this.visitAll(e.values)},SimpleExpressionChecker.prototype.visitBinary=function(e,t){},SimpleExpressionChecker.prototype.visitPrefixNot=function(e,t){},SimpleExpressionChecker.prototype.visitConditional=function(e,t){},SimpleExpressionChecker.prototype.visitPipe=function(e,t){this.errors.push("pipes")},SimpleExpressionChecker.prototype.visitKeyedRead=function(e,t){},SimpleExpressionChecker.prototype.visitKeyedWrite=function(e,t){},SimpleExpressionChecker.prototype.visitAll=function(e){var t=this;return e.map(function(e){return e.visit(t)})},SimpleExpressionChecker.prototype.visitChain=function(e,t){},SimpleExpressionChecker.prototype.visitQuote=function(e,t){},SimpleExpressionChecker}()},function(e,t,n){"use strict";function lastOnStack(e,t){return e.length>0&&e[e.length-1]===t}var o=n(7),r=n(40),i=n(74),a=n(47),s=n(625),u=n(87);n.d(t,"a",function(){return d}),n.d(t,"b",function(){return p});var l=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},c=function(e){function TreeError(t,n,o){e.call(this,n,o),this.elementName=t}return l(TreeError,e),TreeError.create=function(e,t,n){return new TreeError(e,t,n)},TreeError}(r.a),d=function(){function ParseTreeResult(e,t){this.rootNodes=e,this.errors=t}return ParseTreeResult}(),p=function(){function Parser(e){this.getTagDefinition=e}return Parser.prototype.parse=function(e,t,n,o){void 0===n&&(n=!1),void 0===o&&(o=a.a);var r=s.a(e,t,this.getTagDefinition,n,o),i=new g(r.tokens,this.getTagDefinition).build();return new d(i.rootNodes,r.errors.concat(i.errors))},Parser}(),g=function(){function _TreeBuilder(e,t){this.tokens=e,this.getTagDefinition=t,this._index=-1,this._rootNodes=[],this._errors=[],this._elementStack=[],this._advance()}return _TreeBuilder.prototype.build=function(){for(;this._peek.type!==s.b.EOF;)this._peek.type===s.b.TAG_OPEN_START?this._consumeStartTag(this._advance()):this._peek.type===s.b.TAG_CLOSE?this._consumeEndTag(this._advance()):this._peek.type===s.b.CDATA_START?(this._closeVoidElement(),this._consumeCdata(this._advance())):this._peek.type===s.b.COMMENT_START?(this._closeVoidElement(),this._consumeComment(this._advance())):this._peek.type===s.b.TEXT||this._peek.type===s.b.RAW_TEXT||this._peek.type===s.b.ESCAPABLE_RAW_TEXT?(this._closeVoidElement(),this._consumeText(this._advance())):this._peek.type===s.b.EXPANSION_FORM_START?this._consumeExpansion(this._advance()):this._advance();return new d(this._rootNodes,this._errors)},_TreeBuilder.prototype._advance=function(){var e=this._peek;return this._index<this.tokens.length-1&&this._index++,this._peek=this.tokens[this._index],e},_TreeBuilder.prototype._advanceIf=function(e){return this._peek.type===e?this._advance():null},_TreeBuilder.prototype._consumeCdata=function(e){this._consumeText(this._advance()),this._advanceIf(s.b.CDATA_END)},_TreeBuilder.prototype._consumeComment=function(e){var t=this._advanceIf(s.b.RAW_TEXT);this._advanceIf(s.b.COMMENT_END);var r=n.i(o.f)(t)?t.parts[0].trim():null;this._addToParent(new i.a(r,e.sourceSpan))},_TreeBuilder.prototype._consumeExpansion=function(e){for(var t=this._advance(),n=this._advance(),o=[];this._peek.type===s.b.EXPANSION_CASE_VALUE;){var a=this._parseExpansionCase();if(!a)return;o.push(a)}if(this._peek.type!==s.b.EXPANSION_FORM_END)return void this._errors.push(c.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '}'."));var u=new r.d(e.sourceSpan.start,this._peek.sourceSpan.end);this._addToParent(new i.b(t.parts[0],n.parts[0],o,u,t.sourceSpan)),this._advance()},_TreeBuilder.prototype._parseExpansionCase=function(){var e=this._advance();if(this._peek.type!==s.b.EXPANSION_CASE_EXP_START)return this._errors.push(c.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '{'.")),null;var t=this._advance(),n=this._collectExpansionExpTokens(t);if(!n)return null;var o=this._advance();n.push(new s.c(s.b.EOF,[],o.sourceSpan));var a=new _TreeBuilder(n,this.getTagDefinition).build();if(a.errors.length>0)return this._errors=this._errors.concat(a.errors),null;var u=new r.d(e.sourceSpan.start,o.sourceSpan.end),l=new r.d(t.sourceSpan.start,o.sourceSpan.end);return new i.c(e.parts[0],a.rootNodes,u,e.sourceSpan,l)},_TreeBuilder.prototype._collectExpansionExpTokens=function(e){for(var t=[],n=[s.b.EXPANSION_CASE_EXP_START];;){if(this._peek.type!==s.b.EXPANSION_FORM_START&&this._peek.type!==s.b.EXPANSION_CASE_EXP_START||n.push(this._peek.type),this._peek.type===s.b.EXPANSION_CASE_EXP_END){if(!lastOnStack(n,s.b.EXPANSION_CASE_EXP_START))return this._errors.push(c.create(null,e.sourceSpan,"Invalid ICU message. Missing '}'.")),null;if(n.pop(),0==n.length)return t}if(this._peek.type===s.b.EXPANSION_FORM_END){if(!lastOnStack(n,s.b.EXPANSION_FORM_START))return this._errors.push(c.create(null,e.sourceSpan,"Invalid ICU message. Missing '}'.")),null;n.pop()}if(this._peek.type===s.b.EOF)return this._errors.push(c.create(null,e.sourceSpan,"Invalid ICU message. Missing '}'.")),null;t.push(this._advance())}},_TreeBuilder.prototype._consumeText=function(e){var t=e.parts[0];if(t.length>0&&"\n"==t[0]){var r=this._getParentElement();n.i(o.f)(r)&&0==r.children.length&&this.getTagDefinition(r.name).ignoreFirstLf&&(t=t.substring(1))}t.length>0&&this._addToParent(new i.d(t,e.sourceSpan))},_TreeBuilder.prototype._closeVoidElement=function(){if(this._elementStack.length>0){var e=this._elementStack[this._elementStack.length-1];this.getTagDefinition(e.name).isVoid&&this._elementStack.pop()}},_TreeBuilder.prototype._consumeStartTag=function(e){for(var t=e.parts[0],o=e.parts[1],a=[];this._peek.type===s.b.ATTR_NAME;)a.push(this._consumeAttr(this._advance()));var l=this._getElementFullName(t,o,this._getParentElement()),d=!1;if(this._peek.type===s.b.TAG_OPEN_END_VOID){this._advance(),d=!0;var p=this.getTagDefinition(l);p.canSelfClose||null!==n.i(u.c)(l)||p.isVoid||this._errors.push(c.create(l,e.sourceSpan,'Only void and foreign elements can be self closed "'+e.parts[1]+'"'))}else this._peek.type===s.b.TAG_OPEN_END&&(this._advance(),d=!1);var g=this._peek.sourceSpan.start,f=new r.d(e.sourceSpan.start,g),h=new i.e(l,a,[],f,f,null);this._pushElement(h),d&&(this._popElement(l),h.endSourceSpan=f)},_TreeBuilder.prototype._pushElement=function(e){if(this._elementStack.length>0){var t=this._elementStack[this._elementStack.length-1];this.getTagDefinition(t.name).isClosedByChild(e.name)&&this._elementStack.pop()}var n=this.getTagDefinition(e.name),o=this._getParentElementSkippingContainers(),r=o.parent,a=o.container;if(r&&n.requireExtraParent(r.name)){var s=new i.e(n.parentToAdd,[],[],e.sourceSpan,e.startSourceSpan,e.endSourceSpan);this._insertBeforeContainer(r,a,s)}this._addToParent(e),this._elementStack.push(e)},_TreeBuilder.prototype._consumeEndTag=function(e){var t=this._getElementFullName(e.parts[0],e.parts[1],this._getParentElement());this._getParentElement()&&(this._getParentElement().endSourceSpan=e.sourceSpan),this.getTagDefinition(t).isVoid?this._errors.push(c.create(t,e.sourceSpan,'Void elements do not have end tags "'+e.parts[1]+'"')):this._popElement(t)||this._errors.push(c.create(t,e.sourceSpan,'Unexpected closing tag "'+e.parts[1]+'"'))},_TreeBuilder.prototype._popElement=function(e){for(var t=this._elementStack.length-1;t>=0;t--){var n=this._elementStack[t];if(n.name==e)return this._elementStack.splice(t,this._elementStack.length-t),!0;if(!this.getTagDefinition(n.name).closedByParent)return!1}return!1},_TreeBuilder.prototype._consumeAttr=function(e){var t,o=n.i(u.d)(e.parts[0],e.parts[1]),a=e.sourceSpan.end,l="";if(this._peek.type===s.b.ATTR_VALUE){var c=this._advance();l=c.parts[0],a=c.sourceSpan.end,t=c.sourceSpan}return new i.f(o,l,new r.d(e.sourceSpan.start,a),t)},_TreeBuilder.prototype._getParentElement=function(){return this._elementStack.length>0?this._elementStack[this._elementStack.length-1]:null},_TreeBuilder.prototype._getParentElementSkippingContainers=function(){for(var e=null,t=this._elementStack.length-1;t>=0;t--){if("ng-container"!==this._elementStack[t].name)return{parent:this._elementStack[t],container:e};e=this._elementStack[t]}return{parent:this._elementStack[this._elementStack.length-1],container:e}},_TreeBuilder.prototype._addToParent=function(e){var t=this._getParentElement();n.i(o.f)(t)?t.children.push(e):this._rootNodes.push(e)},_TreeBuilder.prototype._insertBeforeContainer=function(e,t,n){if(t){if(e){var o=e.children.indexOf(t);e.children[o]=n}else this._rootNodes.push(n);n.children.push(t),this._elementStack.splice(this._elementStack.indexOf(t),0,n)}else this._addToParent(n),this._elementStack.push(n)},_TreeBuilder.prototype._getElementFullName=function(e,t,r){return n.i(o.g)(e)&&(e=this.getTagDefinition(t).implicitNamespacePrefix,n.i(o.g)(e)&&n.i(o.f)(r)&&(e=n.i(u.c)(r.name))),n.i(u.d)(e,t)},_TreeBuilder}()},function(e,t,n){"use strict";var o=n(109);n.d(t,"b",function(){return r}),n.d(t,"c",function(){return i}),n.d(t,"a",function(){return a}),n.d(t,"d",function(){return s}),n.d(t,"e",function(){return u}),n.d(t,"f",function(){return l});var r=n.i(o.a)("Inject",[["token",void 0]]),i=n.i(o.a)("Optional",[]),a=n.i(o.b)("Injectable",[]),s=n.i(o.a)("Self",[]),u=n.i(o.a)("SkipSelf",[]),l=n.i(o.a)("Host",[])},function(e,t,n){"use strict";function extractAnnotation(e){return"function"==typeof e&&e.hasOwnProperty("annotation")&&(e=e.annotation),e}function applyParams(e,t){if(e===Object||e===String||e===Function||e===Number||e===Array)throw new Error("Can not use native "+n.i(o.b)(e)+" as constructor");if("function"==typeof e)return e;if(Array.isArray(e)){var r=e,a=r.length-1,s=e[a];if("function"!=typeof s)throw new Error("Last position of Class method array must be Function in key "+t+" was '"+n.i(o.b)(s)+"'");if(a!=s.length)throw new Error("Number of annotations ("+a+") does not match number of arguments ("+s.length+") in the function: "+n.i(o.b)(s));for(var u=[],l=0,c=r.length-1;l<c;l++){var d=[];u.push(d);var p=r[l];if(Array.isArray(p))for(var g=0;g<p.length;g++)d.push(extractAnnotation(p[g]));else"function"==typeof p?d.push(extractAnnotation(p)):d.push(p);
}return i.defineMetadata("parameters",u,s),s}throw new Error("Only Function or Array is supported in Class definition for key '"+t+"' is '"+n.i(o.b)(e)+"'")}function Class(e){var t=applyParams(e.hasOwnProperty("constructor")?e.constructor:void 0,"constructor"),a=t.prototype;if(e.hasOwnProperty("extends")){if("function"!=typeof e.extends)throw new Error("Class definition 'extends' property must be a constructor function was: "+n.i(o.b)(e.extends));t.prototype=a=Object.create(e.extends.prototype)}for(var s in e)"extends"!==s&&"prototype"!==s&&e.hasOwnProperty(s)&&(a[s]=applyParams(e[s],s));this&&this.annotations instanceof Array&&i.defineMetadata("annotations",this.annotations,t);var u=t.name;return u&&"constructor"!==u||(t.overriddenName="class"+r++),t}function makeDecorator(e,t,n,o){function DecoratorFactory(e){if(!i||!i.getOwnMetadata)throw"reflect-metadata shim is required when using class decorators";if(this instanceof DecoratorFactory)return r.call(this,e),this;var t=new DecoratorFactory(e),n="function"==typeof this&&Array.isArray(this.annotations)?this.annotations:[];n.push(t);var a=function(e){var n=i.getOwnMetadata("annotations",e)||[];return n.push(t),i.defineMetadata("annotations",n,e),e};return a.annotations=n,a.Class=Class,o&&o(a),a}void 0===o&&(o=null);var r=makeMetadataCtor([t]);return n&&(DecoratorFactory.prototype=Object.create(n.prototype)),DecoratorFactory.prototype.toString=function(){return"@"+e},DecoratorFactory.annotationCls=DecoratorFactory,DecoratorFactory}function makeMetadataCtor(e){return function(){for(var t=this,n=[],o=0;o<arguments.length;o++)n[o-0]=arguments[o];e.forEach(function(e,o){var r=n[o];if(Array.isArray(e))t[e[0]]=void 0===r?e[1]:r;else for(var i in e)t[i]=r&&r.hasOwnProperty(i)?r[i]:e[i]})}}function makeParamDecorator(e,t,n){function ParamDecoratorFactory(){function ParamDecorator(e,t,o){for(var r=i.getOwnMetadata("parameters",e)||[];r.length<=o;)r.push(null);return r[o]=r[o]||[],r[o].push(n),i.defineMetadata("parameters",r,e),e}for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];if(this instanceof ParamDecoratorFactory)return o.apply(this,e),this;var n=new((r=ParamDecoratorFactory).bind.apply(r,[void 0].concat(e)));return ParamDecorator.annotation=n,ParamDecorator;var r}var o=makeMetadataCtor(t);return n&&(ParamDecoratorFactory.prototype=Object.create(n.prototype)),ParamDecoratorFactory.prototype.toString=function(){return"@"+e},ParamDecoratorFactory.annotationCls=ParamDecoratorFactory,ParamDecoratorFactory}function makePropDecorator(e,t,n){function PropDecoratorFactory(){for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];if(this instanceof PropDecoratorFactory)return o.apply(this,e),this;var n=new((r=PropDecoratorFactory).bind.apply(r,[void 0].concat(e)));return function(e,t){var o=i.getOwnMetadata("propMetadata",e.constructor)||{};o[t]=o.hasOwnProperty(t)&&o[t]||[],o[t].unshift(n),i.defineMetadata("propMetadata",o,e.constructor)};var r}var o=makeMetadataCtor(t);return n&&(PropDecoratorFactory.prototype=Object.create(n.prototype)),PropDecoratorFactory.prototype.toString=function(){return"@"+e},PropDecoratorFactory.annotationCls=PropDecoratorFactory,PropDecoratorFactory}var o=n(8);t.d=Class,t.b=makeDecorator,t.a=makeParamDecorator,t.c=makePropDecorator;var r=0,i=o.a.Reflect},function(e,t,n){"use strict";var o=n(13),r=(n.n(o),n(0));n.n(r);n.d(t,"a",function(){return a});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=function(e){function EventEmitter(t){void 0===t&&(t=!1),e.call(this),this.__isAsync=t}return i(EventEmitter,e),EventEmitter.prototype.emit=function(t){e.prototype.next.call(this,t)},EventEmitter.prototype.subscribe=function(t,n,o){var r,i=function(e){return null},a=function(){return null};return t&&"object"==typeof t?(r=this.__isAsync?function(e){setTimeout(function(){return t.next(e)})}:function(e){t.next(e)},t.error&&(i=this.__isAsync?function(e){setTimeout(function(){return t.error(e)})}:function(e){t.error(e)}),t.complete&&(a=this.__isAsync?function(){setTimeout(function(){return t.complete()})}:function(){t.complete()})):(r=this.__isAsync?function(e){setTimeout(function(){return t(e)})}:function(e){t(e)},n&&(i=this.__isAsync?function(e){setTimeout(function(){return n(e)})}:function(e){n(e)}),o&&(a=this.__isAsync?function(){setTimeout(function(){return o()})}:function(){o()})),e.prototype.subscribe.call(this,r,i,a)},EventEmitter}(o.Subject)},function(e,t,n){"use strict";(function(e){function isPresent(e){return null!=e}function isBlank(e){return null==e}function looseIdentical(e,t){return e===t||"number"==typeof e&&"number"==typeof t&&isNaN(e)&&isNaN(t)}function isJsObject(e){return null!==e&&("function"==typeof e||"object"==typeof e)}function getSymbolIterator(){if(!r)if(n.Symbol&&Symbol.iterator)r=Symbol.iterator;else for(var e=Object.getOwnPropertyNames(Map.prototype),t=0;t<e.length;++t){var o=e[t];"entries"!==o&&"size"!==o&&Map.prototype[o]===Map.prototype.entries&&(r=o)}return r}function isPrimitive(e){return!isJsObject(e)}t.c=isPresent,t.f=isBlank,t.e=looseIdentical,t.a=isJsObject,t.b=getSymbolIterator,t.d=isPrimitive;var n;n="undefined"==typeof window?"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:e:window;var o=n;o.assert=function(e){};var r=(Object.getPrototypeOf({}),function(){function NumberWrapper(){}return NumberWrapper.parseIntAutoRadix=function(e){var t=parseInt(e);if(isNaN(t))throw new Error("Invalid integer literal when parsing "+e);return t},NumberWrapper.isNumeric=function(e){return!isNaN(e-parseFloat(e))},NumberWrapper}(),null)}).call(t,n(55))},function(e,t,n){"use strict";var o=n(1),r=n(23);n.d(t,"c",function(){return i}),n.d(t,"a",function(){return a}),n.d(t,"b",function(){return s});var i=new o.OpaqueToken("EventManagerPlugins"),a=function(){function EventManager(e,t){var n=this;this._zone=t,this._eventNameToPlugin=new Map,e.forEach(function(e){return e.manager=n}),this._plugins=e.slice().reverse()}return EventManager.prototype.addEventListener=function(e,t,n){var o=this._findPluginFor(t);return o.addEventListener(e,t,n)},EventManager.prototype.addGlobalEventListener=function(e,t,n){var o=this._findPluginFor(t);return o.addGlobalEventListener(e,t,n)},EventManager.prototype.getZone=function(){return this._zone},EventManager.prototype._findPluginFor=function(e){var t=this._eventNameToPlugin.get(e);if(t)return t;for(var n=this._plugins,o=0;o<n.length;o++){var r=n[o];if(r.supports(e))return this._eventNameToPlugin.set(e,r),r}throw new Error("No event manager plugin found for event "+e)},EventManager.decorators=[{type:o.Injectable}],EventManager.ctorParameters=function(){return[{type:Array,decorators:[{type:o.Inject,args:[i]}]},{type:o.NgZone}]},EventManager}(),s=function(){function EventManagerPlugin(){}return EventManagerPlugin.prototype.supports=function(e){},EventManagerPlugin.prototype.addEventListener=function(e,t,n){},EventManagerPlugin.prototype.addGlobalEventListener=function(e,t,o){var i=n.i(r.a)().getGlobalEventTarget(e);if(!i)throw new Error("Unsupported event target "+i+" for event "+t);return this.addEventListener(i,t,o)},EventManagerPlugin}()},function(e,t,n){"use strict";function createEmptyState(e,t){var n=createEmptyStateSnapshot(e,t),a=new o.BehaviorSubject([new i.c("",{})]),u=new o.BehaviorSubject({}),d=new o.BehaviorSubject({}),p=new o.BehaviorSubject({}),g=new o.BehaviorSubject(""),f=new c(a,u,p,g,d,r.a,t,n.root);return f.snapshot=n.root,new l(new s.b(f,[]),n)}function createEmptyStateSnapshot(e,t){var n={},o={},i={},a="",u=new p([],n,i,a,o,r.a,t,null,e.root,(-1),d.empty);return new g("",new s.b(u,[]))}function setRouterStateSnapshot(e,t){t.value._routerState=e,t.children.forEach(function(t){return setRouterStateSnapshot(e,t)})}function serializeNode(e){var t=e.children.length>0?" { "+e.children.map(serializeNode).join(", ")+" } ":"";return""+e.value+t}function advanceActivatedRoute(e){e.snapshot?(n.i(a.d)(e.snapshot.queryParams,e._futureSnapshot.queryParams)||e.queryParams.next(e._futureSnapshot.queryParams),e.snapshot.fragment!==e._futureSnapshot.fragment&&e.fragment.next(e._futureSnapshot.fragment),n.i(a.d)(e.snapshot.params,e._futureSnapshot.params)||(e.params.next(e._futureSnapshot.params),e.data.next(e._futureSnapshot.data)),n.i(a.h)(e.snapshot.url,e._futureSnapshot.url)||e.url.next(e._futureSnapshot.url),e.snapshot=e._futureSnapshot):(e.snapshot=e._futureSnapshot,e.data.next(e._futureSnapshot.data))}var o=n(101),r=(n.n(o),n(58)),i=n(91),a=n(59),s=n(289);n.d(t,"a",function(){return l}),t.f=createEmptyState,n.d(t,"b",function(){return c}),n.d(t,"c",function(){return d}),n.d(t,"d",function(){return p}),n.d(t,"e",function(){return g}),t.g=advanceActivatedRoute;var u=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},l=function(e){function RouterState(t,n){e.call(this,t),this.snapshot=n,setRouterStateSnapshot(this,t)}return u(RouterState,e),RouterState.prototype.toString=function(){return this.snapshot.toString()},RouterState}(s.a),c=function(){function ActivatedRoute(e,t,n,o,r,i,a,s){this.url=e,this.params=t,this.queryParams=n,this.fragment=o,this.data=r,this.outlet=i,this.component=a,this._futureSnapshot=s}return Object.defineProperty(ActivatedRoute.prototype,"routeConfig",{get:function(){return this._futureSnapshot.routeConfig},enumerable:!0,configurable:!0}),Object.defineProperty(ActivatedRoute.prototype,"root",{get:function(){return this._routerState.root},enumerable:!0,configurable:!0}),Object.defineProperty(ActivatedRoute.prototype,"parent",{get:function(){return this._routerState.parent(this)},enumerable:!0,configurable:!0}),Object.defineProperty(ActivatedRoute.prototype,"firstChild",{get:function(){return this._routerState.firstChild(this)},enumerable:!0,configurable:!0}),Object.defineProperty(ActivatedRoute.prototype,"children",{get:function(){return this._routerState.children(this)},enumerable:!0,configurable:!0}),Object.defineProperty(ActivatedRoute.prototype,"pathFromRoot",{get:function(){return this._routerState.pathFromRoot(this)},enumerable:!0,configurable:!0}),ActivatedRoute.prototype.toString=function(){return this.snapshot?this.snapshot.toString():"Future("+this._futureSnapshot+")"},ActivatedRoute}(),d=function(){function InheritedResolve(e,t){this.parent=e,this.current=t,this.resolvedData={}}return Object.defineProperty(InheritedResolve.prototype,"flattenedResolvedData",{get:function(){return this.parent?n.i(a.g)(this.parent.flattenedResolvedData,this.resolvedData):this.resolvedData},enumerable:!0,configurable:!0}),Object.defineProperty(InheritedResolve,"empty",{get:function(){return new InheritedResolve(null,{})},enumerable:!0,configurable:!0}),InheritedResolve}(),p=function(){function ActivatedRouteSnapshot(e,t,n,o,r,i,a,s,u,l,c){this.url=e,this.params=t,this.queryParams=n,this.fragment=o,this.data=r,this.outlet=i,this.component=a,this._routeConfig=s,this._urlSegment=u,this._lastPathIndex=l,this._resolve=c}return Object.defineProperty(ActivatedRouteSnapshot.prototype,"routeConfig",{get:function(){return this._routeConfig},enumerable:!0,configurable:!0}),Object.defineProperty(ActivatedRouteSnapshot.prototype,"root",{get:function(){return this._routerState.root},enumerable:!0,configurable:!0}),Object.defineProperty(ActivatedRouteSnapshot.prototype,"parent",{get:function(){return this._routerState.parent(this)},enumerable:!0,configurable:!0}),Object.defineProperty(ActivatedRouteSnapshot.prototype,"firstChild",{get:function(){return this._routerState.firstChild(this)},enumerable:!0,configurable:!0}),Object.defineProperty(ActivatedRouteSnapshot.prototype,"children",{get:function(){return this._routerState.children(this)},enumerable:!0,configurable:!0}),Object.defineProperty(ActivatedRouteSnapshot.prototype,"pathFromRoot",{get:function(){return this._routerState.pathFromRoot(this)},enumerable:!0,configurable:!0}),ActivatedRouteSnapshot.prototype.toString=function(){var e=this.url.map(function(e){return e.toString()}).join("/"),t=this._routeConfig?this._routeConfig.path:"";return"Route(url:'"+e+"', path:'"+t+"')"},ActivatedRouteSnapshot}(),g=function(e){function RouterStateSnapshot(t,n){e.call(this,n),this.url=t,setRouterStateSnapshot(this,n)}return u(RouterStateSnapshot,e),RouterStateSnapshot.prototype.toString=function(){return serializeNode(this._root)},RouterStateSnapshot}(s.a)},,,,function(e,t,n){"use strict";var o=n(65);t.of=o.ArrayObservable.of},function(e,t,n){"use strict";function mergeAll(e){return void 0===e&&(e=Number.POSITIVE_INFINITY),this.lift(new a(e))}var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(4),i=n(5);t.mergeAll=mergeAll;var a=function(){function MergeAllOperator(e){this.concurrent=e}return MergeAllOperator.prototype.call=function(e,t){return t.subscribe(new s(e,this.concurrent))},MergeAllOperator}();t.MergeAllOperator=a;var s=function(e){function MergeAllSubscriber(t,n){e.call(this,t),this.concurrent=n,this.hasCompleted=!1,this.buffer=[],this.active=0}return o(MergeAllSubscriber,e),MergeAllSubscriber.prototype._next=function(e){this.active<this.concurrent?(this.active++,this.add(i.subscribeToResult(this,e))):this.buffer.push(e)},MergeAllSubscriber.prototype._complete=function(){this.hasCompleted=!0,0===this.active&&0===this.buffer.length&&this.destination.complete()},MergeAllSubscriber.prototype.notifyComplete=function(e){var t=this.buffer;this.remove(e),this.active--,t.length>0?this._next(t.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()},MergeAllSubscriber}(r.OuterSubscriber);t.MergeAllSubscriber=s},,,function(e,t){e.exports=function(e){"undefined"!=typeof execScript?execScript(e):eval.call(null,e)}},function(e,t,n){"use strict";function convertPropertyBinding(e,t,n,o,r){var i=createCurrValueExpr(r),s=[];t||(t=new f);var l=new g(e,t,n,u,r,(!1)),d=o.visit(l,p.Expression);if(!d)return null;if(l.temporaryCount)for(var h=0;h<l.temporaryCount;h++)s.push(temporaryDeclaration(r,h));if(l.needsValueUnwrapper){var m=u.callMethod("reset",[]).toStmt();s.push(m)}return s.push(i.set(d).toDeclStmt(null,[a.b.Final])),l.needsValueUnwrapper?new c(s,i,u.prop("hasWrappedValue")):new c(s,i,null)}function convertActionBinding(e,t,n,o,r){t||(t=new f);var i=new g(e,t,n,null,r,(!0)),s=[];flattenStatements(o.visit(i,p.Statement),s),prependTemporaryDecls(i.temporaryCount,r,s);var u=s.length-1,l=null;if(u>=0){var c=s[u],h=convertStmtIntoExpression(c);h&&(l=createPreventDefaultVar(r),s[u]=l.set(h.cast(a.h).notIdentical(a.f(!1))).toDeclStmt(null,[a.b.Final]))}return new d(s,l)}function createSharedBindingVariablesIfNeeded(e){var t=[],o=a.i(e);return o.has(u.name)&&t.push(u.set(a.d(n.i(i.e)(i.b.ValueUnwrapper)).instantiate([])).toDeclStmt(null,[a.b.Final])),t}function temporaryName(e,t){return"tmp_"+e+"_"+t}function temporaryDeclaration(e,t){return new a.j(temporaryName(e,t),a.k)}function prependTemporaryDecls(e,t,n){for(var o=e-1;o>=0;o--)n.unshift(temporaryDeclaration(t,o))}function ensureStatementMode(e,t){if(e!==p.Statement)throw new Error("Expected a statement, but saw "+t)}function ensureExpressionMode(e,t){if(e!==p.Expression)throw new Error("Expected an expression, but saw "+t)}function convertToStatementIfNeeded(e,t){return e===p.Statement?t.toStmt():t}function flattenStatements(e,t){Array.isArray(e)?e.forEach(function(e){return flattenStatements(e,t)}):t.push(e)}function createCachedLiteralArray(e,t){if(0===t.length)return a.d(n.i(i.e)(i.b.EMPTY_ARRAY));for(var o=a.c.prop("_arr_"+e.fields.length),r=[],u=[],l=0;l<t.length;l++){var c="p"+l;r.push(new a.r(c)),u.push(a.g(c))}return n.i(s.a)(a.s(r,[new a.t(a.n(u))],new a.u(a.h)),t.length,o,e),o.callFn(t)}function createCachedLiteralMap(e,t){if(0===t.length)return a.d(n.i(i.e)(i.b.EMPTY_MAP));for(var o=a.c.prop("_map_"+e.fields.length),r=[],u=[],l=[],c=0;c<t.length;c++){var d="p"+c;r.push(new a.r(d)),u.push([t[c][0],a.g(d)]),l.push(t[c][1])}return n.i(s.a)(a.s(r,[new a.t(a.o(u))],new a.v(a.h)),t.length,o,e),o.callFn(l)}function createCurrValueExpr(e){return a.g("currVal_"+e)}function createPreventDefaultVar(e){return a.g("pd_"+e)}function convertStmtIntoExpression(e){return e instanceof a.w?e.expr:e instanceof a.t?e.value:null}var o=n(244),r=n(7),i=n(19),a=n(10),s=n(46);n.d(t,"c",function(){return l}),t.a=convertPropertyBinding,t.b=convertActionBinding,t.d=createSharedBindingVariablesIfNeeded;var u=a.g("valUnwrapper"),l=function(){function EventHandlerVars(){}return EventHandlerVars.event=a.g("$event"),EventHandlerVars}(),c=function(){function ConvertPropertyBindingResult(e,t,n){this.stmts=e,this.currValExpr=t,this.forceUpdate=n}return ConvertPropertyBindingResult}(),d=function(){function ConvertActionBindingResult(e,t){this.stmts=e,this.preventDefault=t}return ConvertActionBindingResult}(),p={};p.Statement=0,p.Expression=1,p[p.Statement]="Statement",p[p.Expression]="Expression";var g=function(){function _AstToIrVisitor(e,t,n,o,r,i){this._builder=e,this._nameResolver=t,this._implicitReceiver=n,this._valueUnwrapper=o,this.bindingId=r,this.isAction=i,this._nodeMap=new Map,this._resultMap=new Map,this._currentTemporary=0,this.needsValueUnwrapper=!1,this.temporaryCount=0}return _AstToIrVisitor.prototype.visitBinary=function(e,t){var n;switch(e.operation){case"+":n=a.l.Plus;break;case"-":n=a.l.Minus;break;case"*":n=a.l.Multiply;break;case"/":n=a.l.Divide;break;case"%":n=a.l.Modulo;break;case"&&":n=a.l.And;break;case"||":n=a.l.Or;break;case"==":n=a.l.Equals;break;case"!=":n=a.l.NotEquals;break;case"===":n=a.l.Identical;break;case"!==":n=a.l.NotIdentical;break;case"<":n=a.l.Lower;break;case">":n=a.l.Bigger;break;case"<=":n=a.l.LowerEquals;break;case">=":n=a.l.BiggerEquals;break;default:throw new Error("Unsupported operation "+e.operation)}return convertToStatementIfNeeded(t,new a.m(n,this.visit(e.left,p.Expression),this.visit(e.right,p.Expression)))},_AstToIrVisitor.prototype.visitChain=function(e,t){return ensureStatementMode(t,e),this.visitAll(e.expressions,t)},_AstToIrVisitor.prototype.visitConditional=function(e,t){var n=this.visit(e.condition,p.Expression);return convertToStatementIfNeeded(t,n.conditional(this.visit(e.trueExp,p.Expression),this.visit(e.falseExp,p.Expression)))},_AstToIrVisitor.prototype.visitPipe=function(e,t){var n=this.visit(e.exp,p.Expression),o=this.visitAll(e.args,p.Expression),r=this._nameResolver.callPipe(e.name,n,o);if(!r)throw new Error("Illegal state: Pipe "+e.name+" is not allowed here!");return this.needsValueUnwrapper=!0,convertToStatementIfNeeded(t,this._valueUnwrapper.callMethod("unwrap",[r]))},_AstToIrVisitor.prototype.visitFunctionCall=function(e,t){return convertToStatementIfNeeded(t,this.visit(e.target,p.Expression).callFn(this.visitAll(e.args,p.Expression)))},_AstToIrVisitor.prototype.visitImplicitReceiver=function(e,t){return ensureExpressionMode(t,e),this._implicitReceiver},_AstToIrVisitor.prototype.visitInterpolation=function(e,t){ensureExpressionMode(t,e);for(var o=[a.f(e.expressions.length)],r=0;r<e.strings.length-1;r++)o.push(a.f(e.strings[r])),o.push(this.visit(e.expressions[r],p.Expression));return o.push(a.f(e.strings[e.strings.length-1])),e.expressions.length<=9?a.d(n.i(i.e)(i.b.inlineInterpolate)).callFn(o):a.d(n.i(i.e)(i.b.interpolate)).callFn([o[0],a.n(o.slice(1))])},_AstToIrVisitor.prototype.visitKeyedRead=function(e,t){var n=this.leftMostSafeNode(e);return n?this.convertSafeAccess(e,n,t):convertToStatementIfNeeded(t,this.visit(e.obj,p.Expression).key(this.visit(e.key,p.Expression)))},_AstToIrVisitor.prototype.visitKeyedWrite=function(e,t){var n=this.visit(e.obj,p.Expression),o=this.visit(e.key,p.Expression),r=this.visit(e.value,p.Expression);return convertToStatementIfNeeded(t,n.key(o).set(r))},_AstToIrVisitor.prototype.visitLiteralArray=function(e,t){var n=this.visitAll(e.expressions,t),o=this.isAction?a.n(n):createCachedLiteralArray(this._builder,n);return convertToStatementIfNeeded(t,o)},_AstToIrVisitor.prototype.visitLiteralMap=function(e,t){for(var n=[],o=0;o<e.keys.length;o++)n.push([e.keys[o],this.visit(e.values[o],p.Expression)]);var r=this.isAction?a.o(n):createCachedLiteralMap(this._builder,n);return convertToStatementIfNeeded(t,r)},_AstToIrVisitor.prototype.visitLiteralPrimitive=function(e,t){return convertToStatementIfNeeded(t,a.f(e.value))},_AstToIrVisitor.prototype._getLocal=function(e){return this.isAction&&e==l.event.name?l.event:this._nameResolver.getLocal(e)},_AstToIrVisitor.prototype.visitMethodCall=function(e,t){var o=this.leftMostSafeNode(e);if(o)return this.convertSafeAccess(e,o,t);var i=this.visitAll(e.args,p.Expression),a=null,s=this.visit(e.receiver,p.Expression);if(s===this._implicitReceiver){var u=this._getLocal(e.name);u&&(a=u.callFn(i))}return n.i(r.g)(a)&&(a=s.callMethod(e.name,i)),convertToStatementIfNeeded(t,a)},_AstToIrVisitor.prototype.visitPrefixNot=function(e,t){return convertToStatementIfNeeded(t,a.p(this.visit(e.expression,p.Expression)))},_AstToIrVisitor.prototype.visitPropertyRead=function(e,t){var o=this.leftMostSafeNode(e);if(o)return this.convertSafeAccess(e,o,t);var i=null,a=this.visit(e.receiver,p.Expression);return a===this._implicitReceiver&&(i=this._getLocal(e.name)),n.i(r.g)(i)&&(i=a.prop(e.name)),convertToStatementIfNeeded(t,i)},_AstToIrVisitor.prototype.visitPropertyWrite=function(e,t){var n=this.visit(e.receiver,p.Expression);if(n===this._implicitReceiver){var o=this._getLocal(e.name);if(o)throw new Error("Cannot assign to a reference or variable!")}return convertToStatementIfNeeded(t,n.prop(e.name).set(this.visit(e.value,p.Expression)))},_AstToIrVisitor.prototype.visitSafePropertyRead=function(e,t){return this.convertSafeAccess(e,this.leftMostSafeNode(e),t)},_AstToIrVisitor.prototype.visitSafeMethodCall=function(e,t){return this.convertSafeAccess(e,this.leftMostSafeNode(e),t)},_AstToIrVisitor.prototype.visitAll=function(e,t){var n=this;return e.map(function(e){return n.visit(e,t)})},_AstToIrVisitor.prototype.visitQuote=function(e,t){throw new Error("Quotes are not supported for evaluation!")},_AstToIrVisitor.prototype.visit=function(e,t){var n=this._resultMap.get(e);return n?n:(this._nodeMap.get(e)||e).visit(this,t)},_AstToIrVisitor.prototype.convertSafeAccess=function(e,t,n){var r,i=this.visit(t.receiver,p.Expression);this.needsTemporary(t.receiver)&&(r=this.allocateTemporary(),i=r.set(i),this._resultMap.set(t.receiver,r));var s=i.isBlank();t instanceof o.s?this._nodeMap.set(t,new o.t(t.span,t.receiver,t.name,t.args)):this._nodeMap.set(t,new o.w(t.span,t.receiver,t.name));var u=this.visit(e,p.Expression);return this._nodeMap.delete(t),r&&this.releaseTemporary(r),convertToStatementIfNeeded(n,s.conditional(a.f(null),u))},_AstToIrVisitor.prototype.leftMostSafeNode=function(e){var t=this,n=function(e,n){return(t._nodeMap.get(n)||n).visit(e)};return e.visit({visitBinary:function(e){return null},visitChain:function(e){return null},visitConditional:function(e){return null},visitFunctionCall:function(e){return null},visitImplicitReceiver:function(e){return null},visitInterpolation:function(e){return null},visitKeyedRead:function(e){return n(this,e.obj)},visitKeyedWrite:function(e){return null},visitLiteralArray:function(e){return null},visitLiteralMap:function(e){return null},visitLiteralPrimitive:function(e){return null},visitMethodCall:function(e){return n(this,e.receiver)},visitPipe:function(e){return null},visitPrefixNot:function(e){return null},visitPropertyRead:function(e){return n(this,e.receiver)},visitPropertyWrite:function(e){return null},visitQuote:function(e){return null},visitSafeMethodCall:function(e){return n(this,e.receiver)||e},visitSafePropertyRead:function(e){return n(this,e.receiver)||e}})},_AstToIrVisitor.prototype.needsTemporary=function(e){var t=this,n=function(e,n){return n&&(t._nodeMap.get(n)||n).visit(e)},o=function(e,t){return t.some(function(t){return n(e,t)})};return e.visit({visitBinary:function(e){return n(this,e.left)||n(this,e.right)},visitChain:function(e){return!1},visitConditional:function(e){return n(this,e.condition)||n(this,e.trueExp)||n(this,e.falseExp)},visitFunctionCall:function(e){return!0},visitImplicitReceiver:function(e){return!1},visitInterpolation:function(e){return o(this,e.expressions)},visitKeyedRead:function(e){return!1},visitKeyedWrite:function(e){return!1},visitLiteralArray:function(e){return!0},visitLiteralMap:function(e){return!0},visitLiteralPrimitive:function(e){return!1},visitMethodCall:function(e){return!0},visitPipe:function(e){return!0},visitPrefixNot:function(e){return n(this,e.expression)},visitPropertyRead:function(e){return!1},visitPropertyWrite:function(e){return!1},visitQuote:function(e){return!1},visitSafeMethodCall:function(e){return!0},visitSafePropertyRead:function(e){return!1}})},_AstToIrVisitor.prototype.allocateTemporary=function(){var e=this._currentTemporary++;return this.temporaryCount=Math.max(this._currentTemporary,this.temporaryCount),new a.q(temporaryName(this.bindingId,e))},_AstToIrVisitor.prototype.releaseTemporary=function(e){if(this._currentTemporary--,e.name!=temporaryName(this.bindingId,this._currentTemporary))throw new Error("Temporary "+e.name+" released out of order")},_AstToIrVisitor}(),f=function(){function DefaultNameResolver(){}return DefaultNameResolver.prototype.callPipe=function(e,t,n){return null},DefaultNameResolver.prototype.getLocal=function(e){return null},DefaultNameResolver}()},function(e,t,n){"use strict";var o=n(1),r=n(14),i=n(72),a=n(7),s=n(20),u=n(74),l=n(86),c=n(47),d=n(250),p=n(365),g=n(367),f=n(88),h=n(32);n.d(t,"a",function(){return b});var m=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},y=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},b=function(){function DirectiveNormalizer(e,t,n,o){this._resourceLoader=e,this._urlResolver=t,this._htmlParser=n,this._config=o,this._resourceLoaderCache=new Map}return DirectiveNormalizer.prototype.clearCache=function(){this._resourceLoaderCache.clear()},DirectiveNormalizer.prototype.clearCacheFor=function(e){var t=this;e.isComponent&&(this._resourceLoaderCache.delete(e.template.templateUrl),e.template.externalStylesheets.forEach(function(e){t._resourceLoaderCache.delete(e.moduleUrl)}))},DirectiveNormalizer.prototype._fetch=function(e){var t=this._resourceLoaderCache.get(e);return t||(t=this._resourceLoader.get(e),this._resourceLoaderCache.set(e,t)),t},DirectiveNormalizer.prototype.normalizeTemplate=function(e){var t,o=this,r=null;if(n.i(a.f)(e.template))r=this.normalizeTemplateSync(e),t=Promise.resolve(r);else{if(!e.templateUrl)throw new h.c("No template specified for component "+n.i(a.e)(e.componentType));t=this.normalizeTemplateAsync(e)}return r&&0===r.styleUrls.length?new h.d(r):new h.d(null,t.then(function(e){return o.normalizeExternalStylesheets(e)}))},DirectiveNormalizer.prototype.normalizeTemplateSync=function(e){return this.normalizeLoadedTemplate(e,e.template,e.moduleUrl)},DirectiveNormalizer.prototype.normalizeTemplateAsync=function(e){var t=this,n=this._urlResolver.resolve(e.moduleUrl,e.templateUrl);return this._fetch(n).then(function(o){return t.normalizeLoadedTemplate(e,o,n)})},DirectiveNormalizer.prototype.normalizeLoadedTemplate=function(e,t,i){var s=c.b.fromArray(e.interpolation),l=this._htmlParser.parse(t,n.i(a.e)(e.componentType),!0,s);if(l.errors.length>0){var d=l.errors.join("\n");throw new h.c("Template parse errors:\n"+d)}var p=this.normalizeStylesheet(new r.k({styles:e.styles,styleUrls:e.styleUrls,moduleUrl:e.moduleUrl})),g=new v;u.g(g,l.rootNodes);var f=this.normalizeStylesheet(new r.k({styles:g.styles,styleUrls:g.styleUrls,moduleUrl:i})),m=e.encapsulation;n.i(a.g)(m)&&(m=this._config.defaultEncapsulation);var y=p.styles.concat(f.styles),b=p.styleUrls.concat(f.styleUrls);return m===o.ViewEncapsulation.Emulated&&0===y.length&&0===b.length&&(m=o.ViewEncapsulation.None),new r.l({encapsulation:m,template:t,templateUrl:i,styles:y,styleUrls:b,ngContentSelectors:g.ngContentSelectors,animations:e.animations,interpolation:e.interpolation})},DirectiveNormalizer.prototype.normalizeExternalStylesheets=function(e){return this._loadMissingExternalStylesheets(e.styleUrls).then(function(t){return new r.l({encapsulation:e.encapsulation,template:e.template,templateUrl:e.templateUrl,styles:e.styles,styleUrls:e.styleUrls,externalStylesheets:t,ngContentSelectors:e.ngContentSelectors,animations:e.animations,interpolation:e.interpolation})})},DirectiveNormalizer.prototype._loadMissingExternalStylesheets=function(e,t){var n=this;return void 0===t&&(t=new Map),Promise.all(e.filter(function(e){return!t.has(e)}).map(function(e){return n._fetch(e).then(function(o){var i=n.normalizeStylesheet(new r.k({styles:[o],moduleUrl:e}));return t.set(e,i),n._loadMissingExternalStylesheets(i.styleUrls,t)})})).then(function(e){return Array.from(t.values())})},DirectiveNormalizer.prototype.normalizeStylesheet=function(e){var t=this,o=e.styleUrls.filter(p.a).map(function(n){return t._urlResolver.resolve(e.moduleUrl,n)}),i=e.styles.map(function(r){var i=n.i(p.b)(t._urlResolver,e.moduleUrl,r);return o.push.apply(o,i.styleUrls),i.style});return new r.k({styles:i,styleUrls:o,moduleUrl:e.moduleUrl})},DirectiveNormalizer=m([n.i(s.a)(),y("design:paramtypes",[d.a,f.a,l.a,i.a])],DirectiveNormalizer)}(),v=function(){function TemplatePreparseVisitor(){this.ngContentSelectors=[],this.styles=[],this.styleUrls=[],this.ngNonBindableStackCount=0}return TemplatePreparseVisitor.prototype.visitElement=function(e,t){var o=n.i(g.a)(e);switch(o.type){case g.b.NG_CONTENT:0===this.ngNonBindableStackCount&&this.ngContentSelectors.push(o.selectAttr);break;case g.b.STYLE:var r="";e.children.forEach(function(e){e instanceof u.d&&(r+=e.value)}),this.styles.push(r);break;case g.b.STYLESHEET:this.styleUrls.push(o.hrefAttr)}return o.nonBindable&&this.ngNonBindableStackCount++,u.g(this,e.children),o.nonBindable&&this.ngNonBindableStackCount--,null},TemplatePreparseVisitor.prototype.visitExpansion=function(e,t){u.g(this,e.cases)},TemplatePreparseVisitor.prototype.visitExpansionCase=function(e,t){u.g(this,e.expression)},TemplatePreparseVisitor.prototype.visitComment=function(e,t){return null},TemplatePreparseVisitor.prototype.visitAttribute=function(e,t){return null},TemplatePreparseVisitor.prototype.visitText=function(e,t){return null},TemplatePreparseVisitor}()},function(e,t,n){"use strict";function isDirectiveMetadata(e){return e instanceof o.Directive}var o=n(1),r=n(85),i=n(7),a=n(20),s=n(17),u=n(32);n.d(t,"a",function(){return d});var l=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},d=function(){function DirectiveResolver(e){void 0===e&&(e=s.a),this._reflector=e}return DirectiveResolver.prototype.isDirective=function(e){var t=this._reflector.annotations(n.i(o.resolveForwardRef)(e));return t&&t.some(isDirectiveMetadata)},DirectiveResolver.prototype.resolve=function(e,t){void 0===t&&(t=!0);var a=this._reflector.annotations(n.i(o.resolveForwardRef)(e));if(a){var s=r.a.findLast(a,isDirectiveMetadata);if(s){var u=this._reflector.propMetadata(e);
return this._mergeWithPropertyMetadata(s,u,e)}}if(t)throw new Error("No Directive annotation found on "+n.i(i.e)(e));return null},DirectiveResolver.prototype._mergeWithPropertyMetadata=function(e,t,n){var i=[],a=[],s={},u={};return Object.keys(t).forEach(function(e){var n=r.a.findLast(t[e],function(e){return e instanceof o.Input});n&&(n.bindingPropertyName?i.push(e+": "+n.bindingPropertyName):i.push(e));var l=r.a.findLast(t[e],function(e){return e instanceof o.Output});l&&(l.bindingPropertyName?a.push(e+": "+l.bindingPropertyName):a.push(e));var c=t[e].filter(function(e){return e&&e instanceof o.HostBinding});c.forEach(function(t){if(t.hostPropertyName){var n=t.hostPropertyName[0];if("("===n)throw new Error("@HostBinding can not bind to events. Use @HostListener instead.");if("["===n)throw new Error("@HostBinding parameter should be a property name, 'class.<name>', or 'attr.<name>'.");s["["+t.hostPropertyName+"]"]=e}else s["["+e+"]"]=e});var d=t[e].filter(function(e){return e&&e instanceof o.HostListener});d.forEach(function(t){var n=t.args||[];s["("+t.eventName+")"]=e+"("+n.join(",")+")"});var p=r.a.findLast(t[e],function(e){return e instanceof o.Query});p&&(u[e]=p)}),this._merge(e,i,a,s,u,n)},DirectiveResolver.prototype._extractPublicName=function(e){return n.i(u.a)(e,[null,e])[1].trim()},DirectiveResolver.prototype._dedupeBindings=function(e){for(var t=new Set,n=[],o=e.length-1;o>=0;o--){var r=e[o],i=this._extractPublicName(r);t.has(i)||(t.add(i),n.push(r))}return n.reverse()},DirectiveResolver.prototype._merge=function(e,t,n,i,a,s){var u=this._dedupeBindings(e.inputs?e.inputs.concat(t):t),l=this._dedupeBindings(e.outputs?e.outputs.concat(n):n),c=e.host?r.b.merge(e.host,i):i,d=e.queries?r.b.merge(e.queries,a):a;return e instanceof o.Component?new o.Component({selector:e.selector,inputs:u,outputs:l,host:c,exportAs:e.exportAs,moduleId:e.moduleId,queries:d,changeDetection:e.changeDetection,providers:e.providers,viewProviders:e.viewProviders,entryComponents:e.entryComponents,template:e.template,templateUrl:e.templateUrl,styles:e.styles,styleUrls:e.styleUrls,encapsulation:e.encapsulation,animations:e.animations,interpolation:e.interpolation}):new o.Directive({selector:e.selector,inputs:u,outputs:l,host:c,exportAs:e.exportAs,queries:d,providers:e.providers})},DirectiveResolver=l([n.i(a.a)(),c("design:paramtypes",[s.F])],DirectiveResolver)}()},function(e,t,n){"use strict";function newCharacterToken(e,t){return new d(e,u.Character,t,String.fromCharCode(t))}function newIdentifierToken(e,t){return new d(e,u.Identifier,0,t)}function newKeywordToken(e,t){return new d(e,u.Keyword,0,t)}function newOperatorToken(e,t){return new d(e,u.Operator,0,t)}function newStringToken(e,t){return new d(e,u.String,0,t)}function newNumberToken(e,t){return new d(e,u.Number,t,"")}function newErrorToken(e,t){return new d(e,u.Error,0,t)}function isIdentifierStart(e){return o.H<=e&&e<=o.I||o.J<=e&&e<=o.K||e==o.L||e==o.M}function isIdentifier(e){if(0==e.length)return!1;var t=new g(e);if(!isIdentifierStart(t.peek))return!1;for(t.advance();t.peek!==o.a;){if(!isIdentifierPart(t.peek))return!1;t.advance()}return!0}function isIdentifierPart(e){return o.N(e)||o.c(e)||e==o.L||e==o.M}function isExponentStart(e){return e==o.O||e==o.P}function isExponentSign(e){return e==o.r||e==o.q}function isQuote(e){return e===o.n||e===o.o||e===o.Q}function unescape(e){switch(e){case o.R:return o.S;case o.T:return o.U;case o.V:return o.W;case o.X:return o.Y;case o.Z:return o._0;default:return e}}var o=n(166),r=n(7),i=n(20);n.d(t,"e",function(){return u}),n.d(t,"c",function(){return c}),n.d(t,"d",function(){return p}),t.a=isIdentifier,t.b=isQuote;var a=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},s=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},u={};u.Character=0,u.Identifier=1,u.Keyword=2,u.String=3,u.Operator=4,u.Number=5,u.Error=6,u[u.Character]="Character",u[u.Identifier]="Identifier",u[u.Keyword]="Keyword",u[u.String]="String",u[u.Operator]="Operator",u[u.Number]="Number",u[u.Error]="Error";var l=["var","let","null","undefined","true","false","if","else","this"],c=function(){function Lexer(){}return Lexer.prototype.tokenize=function(e){for(var t=new g(e),n=[],o=t.scanToken();null!=o;)n.push(o),o=t.scanToken();return n},Lexer=a([n.i(i.a)(),s("design:paramtypes",[])],Lexer)}(),d=function(){function Token(e,t,n,o){this.index=e,this.type=t,this.numValue=n,this.strValue=o}return Token.prototype.isCharacter=function(e){return this.type==u.Character&&this.numValue==e},Token.prototype.isNumber=function(){return this.type==u.Number},Token.prototype.isString=function(){return this.type==u.String},Token.prototype.isOperator=function(e){return this.type==u.Operator&&this.strValue==e},Token.prototype.isIdentifier=function(){return this.type==u.Identifier},Token.prototype.isKeyword=function(){return this.type==u.Keyword},Token.prototype.isKeywordLet=function(){return this.type==u.Keyword&&"let"==this.strValue},Token.prototype.isKeywordNull=function(){return this.type==u.Keyword&&"null"==this.strValue},Token.prototype.isKeywordUndefined=function(){return this.type==u.Keyword&&"undefined"==this.strValue},Token.prototype.isKeywordTrue=function(){return this.type==u.Keyword&&"true"==this.strValue},Token.prototype.isKeywordFalse=function(){return this.type==u.Keyword&&"false"==this.strValue},Token.prototype.isKeywordThis=function(){return this.type==u.Keyword&&"this"==this.strValue},Token.prototype.isError=function(){return this.type==u.Error},Token.prototype.toNumber=function(){return this.type==u.Number?this.numValue:-1},Token.prototype.toString=function(){switch(this.type){case u.Character:case u.Identifier:case u.Keyword:case u.Operator:case u.String:case u.Error:return this.strValue;case u.Number:return this.numValue.toString();default:return null}},Token}(),p=new d((-1),u.Character,0,""),g=function(){function _Scanner(e){this.input=e,this.peek=0,this.index=-1,this.length=e.length,this.advance()}return _Scanner.prototype.advance=function(){this.peek=++this.index>=this.length?o.a:this.input.charCodeAt(this.index)},_Scanner.prototype.scanToken=function(){for(var e=this.input,t=this.length,n=this.peek,r=this.index;n<=o.b;){if(++r>=t){n=o.a;break}n=e.charCodeAt(r)}if(this.peek=n,this.index=r,r>=t)return null;if(isIdentifierStart(n))return this.scanIdentifier();if(o.c(n))return this.scanNumber(r);var i=r;switch(n){case o.d:return this.advance(),o.c(this.peek)?this.scanNumber(i):newCharacterToken(i,o.d);case o.e:case o.f:case o.g:case o.h:case o.i:case o.j:case o.k:case o.l:case o.m:return this.scanCharacter(i,n);case o.n:case o.o:return this.scanString();case o.p:case o.q:case o.r:case o.s:case o.t:case o.u:case o.v:return this.scanOperator(i,String.fromCharCode(n));case o.w:return this.scanComplexOperator(i,"?",o.d,".");case o.x:case o.y:return this.scanComplexOperator(i,String.fromCharCode(n),o.z,"=");case o.A:case o.z:return this.scanComplexOperator(i,String.fromCharCode(n),o.z,"=",o.z,"=");case o.B:return this.scanComplexOperator(i,"&",o.B,"&");case o.C:return this.scanComplexOperator(i,"|",o.C,"|");case o.D:for(;o.E(this.peek);)this.advance();return this.scanToken()}return this.advance(),this.error("Unexpected character ["+String.fromCharCode(n)+"]",0)},_Scanner.prototype.scanCharacter=function(e,t){return this.advance(),newCharacterToken(e,t)},_Scanner.prototype.scanOperator=function(e,t){return this.advance(),newOperatorToken(e,t)},_Scanner.prototype.scanComplexOperator=function(e,t,n,o,r,i){this.advance();var a=t;return this.peek==n&&(this.advance(),a+=o),null!=r&&this.peek==r&&(this.advance(),a+=i),newOperatorToken(e,a)},_Scanner.prototype.scanIdentifier=function(){var e=this.index;for(this.advance();isIdentifierPart(this.peek);)this.advance();var t=this.input.substring(e,this.index);return l.indexOf(t)>-1?newKeywordToken(e,t):newIdentifierToken(e,t)},_Scanner.prototype.scanNumber=function(e){var t=this.index===e;for(this.advance();;){if(o.c(this.peek));else if(this.peek==o.d)t=!1;else{if(!isExponentStart(this.peek))break;if(this.advance(),isExponentSign(this.peek)&&this.advance(),!o.c(this.peek))return this.error("Invalid exponent",-1);t=!1}this.advance()}var n=this.input.substring(e,this.index),i=t?r.h.parseIntAutoRadix(n):parseFloat(n);return newNumberToken(e,i)},_Scanner.prototype.scanString=function(){var e=this.index,t=this.peek;this.advance();for(var n="",r=this.index,i=this.input;this.peek!=t;)if(this.peek==o.F){n+=i.substring(r,this.index),this.advance();var a=void 0;if(this.peek==o.G){var s=i.substring(this.index+1,this.index+5);if(!/^[0-9a-f]+$/i.test(s))return this.error("Invalid unicode escape [\\u"+s+"]",0);a=parseInt(s,16);for(var u=0;u<5;u++)this.advance()}else a=unescape(this.peek),this.advance();n+=String.fromCharCode(a),r=this.index}else{if(this.peek==o.a)return this.error("Unterminated quote",0);this.advance()}var l=i.substring(r,this.index);return this.advance(),newStringToken(e,n+l)},_Scanner.prototype.error=function(e,t){var n=this.index+t;return newErrorToken(n,"Lexer Error: "+e+" at column "+n+" in expression ["+this.input+"]")},_Scanner}()},function(e,t,n){"use strict";function flattenArray(e,t){if(void 0===t&&(t=[]),e)for(var r=0;r<e.length;r++){var i=n.i(o.resolveForwardRef)(e[r]);Array.isArray(i)?flattenArray(i,t):t.push(i)}return t}function dedupeArray(e){return e?Array.from(new Set(e)):[]}function flattenAndDedupeArray(e){return dedupeArray(flattenArray(e))}function isValidType(e){return e instanceof r.a||e instanceof o.Type}function componentModuleUrl(e,t,o){if(t instanceof r.a)return t.filePath;var i=o.moduleId;if("string"==typeof i){var a=n.i(b.b)(i);return a?i:"package:"+i+v.e}if(null!==i&&void 0!==i)throw new v.c('moduleId should be a string in "'+stringifyType(t)+"\". See https://goo.gl/wIDDiL for more information.\nIf you're using Webpack you should inline the template and the styles, see https://goo.gl/X2J8zc.");return e.importUri(t)}function extractIdentifiers(e,t){n.i(v.f)(e,new M,t)}function stringifyType(e){return e instanceof r.a?e.name+" in "+e.filePath:n.i(l.e)(e)}var o=n(1),r=n(71),i=n(351),a=n(14),s=n(123),u=n(124),l=n(7),c=n(19),d=n(20),p=n(623),g=n(127),f=n(128),h=n(17),m=n(75),y=n(251),b=n(88),v=n(32);n.d(t,"a",function(){return A});var _=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},E=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},T=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},S=new o.OpaqueToken("ErrorCollector"),A=function(){function CompileMetadataResolver(e,t,n,o,r,i,a,s){void 0===a&&(a=h.a),this._ngModuleResolver=e,this._directiveResolver=t,this._pipeResolver=n,this._summaryResolver=o,this._schemaRegistry=r,this._directiveNormalizer=i,this._reflector=a,this._errorCollector=s,this._directiveCache=new Map,this._summaryCache=new Map,this._pipeCache=new Map,this._ngModuleCache=new Map,this._ngModuleOfTypes=new Map}return CompileMetadataResolver.prototype.clearCacheFor=function(e){var t=this._directiveCache.get(e);this._directiveCache.delete(e),this._summaryCache.delete(e),this._pipeCache.delete(e),this._ngModuleOfTypes.delete(e),this._ngModuleCache.clear(),t&&this._directiveNormalizer.clearCacheFor(t)},CompileMetadataResolver.prototype.clearCache=function(){this._directiveCache.clear(),this._summaryCache.clear(),this._pipeCache.clear(),this._ngModuleCache.clear(),this._ngModuleOfTypes.clear(),this._directiveNormalizer.clearCache()},CompileMetadataResolver.prototype.getAnimationEntryMetadata=function(e){var t=this,n=e.definitions.map(function(e){return t._getAnimationStateMetadata(e)});return new a.n(e.name,n)},CompileMetadataResolver.prototype._getAnimationStateMetadata=function(e){if(e instanceof o.AnimationStateDeclarationMetadata){var t=this._getAnimationStyleMetadata(e.styles);return new a.d(e.stateNameExpr,t)}return e instanceof o.AnimationStateTransitionMetadata?new a.o(e.stateChangeExpr,this._getAnimationMetadata(e.steps)):null},CompileMetadataResolver.prototype._getAnimationStyleMetadata=function(e){return new a.h(e.offset,e.styles)},CompileMetadataResolver.prototype._getAnimationMetadata=function(e){var t=this;if(e instanceof o.AnimationStyleMetadata)return this._getAnimationStyleMetadata(e);if(e instanceof o.AnimationKeyframesSequenceMetadata)return new a.j(e.steps.map(function(e){return t._getAnimationStyleMetadata(e)}));if(e instanceof o.AnimationAnimateMetadata){var n=this._getAnimationMetadata(e.styles);return new a.i(e.timings,n)}if(e instanceof o.AnimationWithStepsMetadata){var r=e.steps.map(function(e){return t._getAnimationMetadata(e)});return e instanceof o.AnimationGroupMetadata?new a.f(r):new a.e(r)}return null},CompileMetadataResolver.prototype._loadSummary=function(e,t){var n=this._summaryCache.get(e);if(!n){var o=this._summaryResolver.resolveSummary(e);n=o?o.type:null,this._summaryCache.set(e,n)}return n&&n.summaryKind===t?n:null},CompileMetadataResolver.prototype._loadDirectiveMetadata=function(e,t){var r=this;if(!this._directiveCache.has(e)){e=n.i(o.resolveForwardRef)(e);var i=this.getNonNormalizedDirectiveMetadata(e),s=i.annotation,u=i.metadata,l=function(t){var n=new a.p({type:u.type,isComponent:u.isComponent,selector:u.selector,exportAs:u.exportAs,changeDetection:u.changeDetection,inputs:u.inputs,outputs:u.outputs,hostListeners:u.hostListeners,hostProperties:u.hostProperties,hostAttributes:u.hostAttributes,providers:u.providers,viewProviders:u.viewProviders,queries:u.queries,viewQueries:u.viewQueries,entryComponents:u.entryComponents,template:t});return r._directiveCache.set(e,n),r._summaryCache.set(e,n.toSummary()),n};if(u.isComponent){var c=this._directiveNormalizer.normalizeTemplate({componentType:e,moduleUrl:componentModuleUrl(this._reflector,e,s),encapsulation:u.template.encapsulation,template:u.template.template,templateUrl:u.template.templateUrl,styles:u.template.styles,styleUrls:u.template.styleUrls,animations:u.template.animations,interpolation:u.template.interpolation});return c.syncResult?(l(c.syncResult),null):t?(this._reportError(new h.I(e),e),null):c.asyncResult.then(l)}return l(null),null}},CompileMetadataResolver.prototype.getNonNormalizedDirectiveMetadata=function(e){var t=this;e=n.i(o.resolveForwardRef)(e);var r=this._directiveResolver.resolve(e);if(!r)return null;var s;if(r instanceof o.Component){n.i(i.b)("styles",r.styles),n.i(i.b)("styleUrls",r.styleUrls),n.i(i.a)("interpolation",r.interpolation);var u=r.animations?r.animations.map(function(e){return t.getAnimationEntryMetadata(e)}):null;s=new a.l({encapsulation:r.encapsulation,template:r.template,templateUrl:r.templateUrl,styles:r.styles,styleUrls:r.styleUrls,animations:u,interpolation:r.interpolation})}var c=null,d=[],p=[],g=r.selector;r instanceof o.Component?(c=r.changeDetection,r.viewProviders&&(d=this._getProvidersMetadata(r.viewProviders,p,'viewProviders for "'+stringifyType(e)+'"',[],e)),r.entryComponents&&(p=flattenAndDedupeArray(r.entryComponents).map(function(e){return t._getIdentifierMetadata(e)}).concat(p)),g||(g=this._schemaRegistry.getDefaultComponentElementName())):g||(this._reportError(new v.c("Directive "+stringifyType(e)+" has no selector, please add it!"),e),g="error");var f=[];n.i(l.f)(r.providers)&&(f=this._getProvidersMetadata(r.providers,p,'providers for "'+stringifyType(e)+'"',[],e));var h=[],m=[];n.i(l.f)(r.queries)&&(h=this._getQueriesMetadata(r.queries,!1,e),m=this._getQueriesMetadata(r.queries,!0,e));var y=a.p.create({selector:g,exportAs:r.exportAs,isComponent:!!s,type:this._getTypeMetadata(e),template:s,changeDetection:c,inputs:r.inputs,outputs:r.outputs,host:r.host,providers:f,viewProviders:d,queries:h,viewQueries:m,entryComponents:p});return{metadata:y,annotation:r}},CompileMetadataResolver.prototype.getDirectiveMetadata=function(e){var t=this._directiveCache.get(e);return t||this._reportError(new v.c("Illegal state: getDirectiveMetadata can only be called after loadNgModuleDirectiveAndPipeMetadata for a module that declares it. Directive "+stringifyType(e)+"."),e),t},CompileMetadataResolver.prototype.getDirectiveSummary=function(e){var t=this._loadSummary(e,a.q.Directive);return t||this._reportError(new v.c("Illegal state: Could not load the summary for directive "+stringifyType(e)+"."),e),t},CompileMetadataResolver.prototype.isDirective=function(e){return this._directiveResolver.isDirective(e)},CompileMetadataResolver.prototype.isPipe=function(e){return this._pipeResolver.isPipe(e)},CompileMetadataResolver.prototype.getNgModuleSummary=function(e){var t=this._loadSummary(e,a.q.NgModule);if(!t){var n=this.getNgModuleMetadata(e,!1);t=n?n.toSummary():null,t&&this._summaryCache.set(e,t)}return t},CompileMetadataResolver.prototype.loadNgModuleDirectiveAndPipeMetadata=function(e,t,n){var o=this;void 0===n&&(n=!0);var r=this.getNgModuleMetadata(e,n),i=[];return r&&(r.declaredDirectives.forEach(function(e){var n=o._loadDirectiveMetadata(e.reference,t);n&&i.push(n)}),r.declaredPipes.forEach(function(e){return o._loadPipeMetadata(e.reference)})),Promise.all(i)},CompileMetadataResolver.prototype.getNgModuleMetadata=function(e,t){var r=this;void 0===t&&(t=!0),e=n.i(o.resolveForwardRef)(e);var i=this._ngModuleCache.get(e);if(i)return i;var s=this._ngModuleResolver.resolve(e,t);if(!s)return null;var u=[],l=[],c=[],d=[],p=[],g=[],f=[],h=[],m=[];s.imports&&flattenAndDedupeArray(s.imports).forEach(function(t){var n;if(isValidType(t))n=t;else if(t&&t.ngModule){var o=t;n=o.ngModule,o.providers&&g.push.apply(g,r._getProvidersMetadata(o.providers,f,"provider for the NgModule '"+stringifyType(n)+"'",[],t))}if(!n)return void r._reportError(new v.c("Unexpected value '"+stringifyType(t)+"' imported by the module '"+stringifyType(e)+"'"),e);var i=r.getNgModuleSummary(n);return i?void d.push(i):void r._reportError(new v.c("Unexpected "+r._getTypeDescriptor(t)+" '"+stringifyType(t)+"' imported by the module '"+stringifyType(e)+"'"),e)}),s.exports&&flattenAndDedupeArray(s.exports).forEach(function(t){if(!isValidType(t))return void r._reportError(new v.c("Unexpected value '"+stringifyType(t)+"' exported by the module '"+stringifyType(e)+"'"),e);var n=r.getNgModuleSummary(t);n?p.push(n):l.push(r._getIdentifierMetadata(t))});var y=this._getTransitiveNgModuleMetadata(d,p);s.declarations&&flattenAndDedupeArray(s.declarations).forEach(function(t){if(!isValidType(t))return void r._reportError(new v.c("Unexpected value '"+stringifyType(t)+"' declared by the module '"+stringifyType(e)+"'"),e);var n=r._getIdentifierMetadata(t);if(r._directiveResolver.isDirective(t))y.addDirective(n),u.push(n),r._addTypeToModule(t,e);else{if(!r._pipeResolver.isPipe(t))return void r._reportError(new v.c("Unexpected "+r._getTypeDescriptor(t)+" '"+stringifyType(t)+"' declared by the module '"+stringifyType(e)+"'"),e);y.addPipe(n),y.pipes.push(n),c.push(n),r._addTypeToModule(t,e)}});var b=[],_=[];return l.forEach(function(t){y.directivesSet.has(t.reference)?(b.push(t),y.addExportedDirective(t)):y.pipesSet.has(t.reference)?(_.push(t),y.addExportedPipe(t)):r._reportError(new v.c("Can't export "+r._getTypeDescriptor(t.reference)+" "+stringifyType(t.reference)+" from "+stringifyType(e)+" as it was neither declared nor imported!"),e)}),s.providers&&g.push.apply(g,this._getProvidersMetadata(s.providers,f,"provider for the NgModule '"+stringifyType(e)+"'",[],e)),s.entryComponents&&f.push.apply(f,flattenAndDedupeArray(s.entryComponents).map(function(e){return r._getIdentifierMetadata(e)})),s.bootstrap&&flattenAndDedupeArray(s.bootstrap).forEach(function(t){return isValidType(t)?void h.push(r._getIdentifierMetadata(t)):void r._reportError(new v.c("Unexpected value '"+stringifyType(t)+"' used in the bootstrap property of module '"+stringifyType(e)+"'"),e)}),f.push.apply(f,h),s.schemas&&m.push.apply(m,flattenAndDedupeArray(s.schemas)),i=new a.r({type:this._getTypeMetadata(e),providers:g,entryComponents:f,bootstrapComponents:h,schemas:m,declaredDirectives:u,exportedDirectives:b,declaredPipes:c,exportedPipes:_,importedModules:d,exportedModules:p,transitiveModule:y,id:s.id}),f.forEach(function(e){return y.addEntryComponent(e)}),g.forEach(function(e){return y.addProvider(e,i.type)}),y.addModule(i.type),this._ngModuleCache.set(e,i),i},CompileMetadataResolver.prototype._getTypeDescriptor=function(e){return this._directiveResolver.isDirective(e)?"directive":this._pipeResolver.isPipe(e)?"pipe":this._ngModuleResolver.isNgModule(e)?"module":e.provide?"provider":"value"},CompileMetadataResolver.prototype._addTypeToModule=function(e,t){var n=this._ngModuleOfTypes.get(e);n&&n!==t&&this._reportError(new v.c("Type "+stringifyType(e)+" is part of the declarations of 2 modules: "+stringifyType(n)+" and "+stringifyType(t)+"! "+("Please consider moving "+stringifyType(e)+" to a higher module that imports "+stringifyType(n)+" and "+stringifyType(t)+". ")+("You can also create a new NgModule that exports and includes "+stringifyType(e)+" then import that NgModule in "+stringifyType(n)+" and "+stringifyType(t)+".")),t),this._ngModuleOfTypes.set(e,t)},CompileMetadataResolver.prototype._getTransitiveNgModuleMetadata=function(e,t){var n=new a.s,o=new Map;return e.concat(t).forEach(function(e){e.modules.forEach(function(e){return n.addModule(e)}),e.entryComponents.forEach(function(e){return n.addEntryComponent(e)});var t=new Set;e.providers.forEach(function(e){var r=a.a(e.provider.token),i=o.get(r);i||(i=new Set,o.set(r,i));var s=e.module.reference;!t.has(r)&&i.has(s)||(i.add(s),t.add(r),n.addProvider(e.provider,e.module))})}),t.forEach(function(e){e.exportedDirectives.forEach(function(e){return n.addExportedDirective(e)}),e.exportedPipes.forEach(function(e){return n.addExportedPipe(e)})}),e.forEach(function(e){e.exportedDirectives.forEach(function(e){return n.addDirective(e)}),e.exportedPipes.forEach(function(e){return n.addPipe(e)})}),n},CompileMetadataResolver.prototype._getIdentifierMetadata=function(e){return e=n.i(o.resolveForwardRef)(e),{reference:e}},CompileMetadataResolver.prototype.isInjectable=function(e){var t=this._reflector.annotations(e);return t.some(function(e){return e.constructor===o.Injectable})},CompileMetadataResolver.prototype.getInjectableSummary=function(e){return{summaryKind:a.q.Injectable,type:this._getTypeMetadata(e)}},CompileMetadataResolver.prototype._getInjectableMetadata=function(e,t){void 0===t&&(t=null);var n=this._loadSummary(e,a.q.Injectable);return n?n.type:this._getTypeMetadata(e,t)},CompileMetadataResolver.prototype._getTypeMetadata=function(e,t){void 0===t&&(t=null);var o=this._getIdentifierMetadata(e);return{reference:o.reference,diDeps:this._getDependenciesMetadata(o.reference,t),lifecycleHooks:h.J.filter(function(e){return n.i(p.a)(e,o.reference)})}},CompileMetadataResolver.prototype._getFactoryMetadata=function(e,t){return void 0===t&&(t=null),e=n.i(o.resolveForwardRef)(e),{reference:e,diDeps:this._getDependenciesMetadata(e,t)}},CompileMetadataResolver.prototype.getPipeMetadata=function(e){var t=this._pipeCache.get(e);return t||this._reportError(new v.c("Illegal state: getPipeMetadata can only be called after loadNgModuleDirectiveAndPipeMetadata for a module that declares it. Pipe "+stringifyType(e)+"."),e),t},CompileMetadataResolver.prototype.getPipeSummary=function(e){var t=this._loadSummary(e,a.q.Pipe);return t||this._reportError(new v.c("Illegal state: Could not load the summary for pipe "+stringifyType(e)+"."),e),t},CompileMetadataResolver.prototype.getOrLoadPipeMetadata=function(e){var t=this._pipeCache.get(e);return t||(t=this._loadPipeMetadata(e)),t},CompileMetadataResolver.prototype._loadPipeMetadata=function(e){e=n.i(o.resolveForwardRef)(e);var t=this._pipeResolver.resolve(e),r=new a.t({type:this._getTypeMetadata(e),name:t.name,pure:t.pure});return this._pipeCache.set(e,r),this._summaryCache.set(e,r.toSummary()),r},CompileMetadataResolver.prototype._getDependenciesMetadata=function(e,t){var r=this,i=!1,a=t||this._reflector.parameters(e)||[],s=a.map(function(e){var t=!1,a=!1,s=!1,u=!1,c=!1,d=null;return Array.isArray(e)?e.forEach(function(e){e instanceof o.Host?a=!0:e instanceof o.Self?s=!0:e instanceof o.SkipSelf?u=!0:e instanceof o.Optional?c=!0:e instanceof o.Attribute?(t=!0,d=e.attributeName):e instanceof o.Inject?d=e.token:isValidType(e)&&n.i(l.g)(d)&&(d=e)}):d=e,n.i(l.g)(d)?(i=!0,null):{isAttribute:t,isHost:a,isSelf:s,isSkipSelf:u,isOptional:c,token:r._getTokenMetadata(d)}});if(i){var u=s.map(function(e){return e?stringifyType(e.token):"?"}).join(", ");this._reportError(new v.c("Can't resolve all parameters for "+stringifyType(e)+": ("+u+")."),e)}return s},CompileMetadataResolver.prototype._getTokenMetadata=function(e){e=n.i(o.resolveForwardRef)(e);var t;return t="string"==typeof e?{value:e}:{identifier:{reference:e}}},CompileMetadataResolver.prototype._getProvidersMetadata=function(e,t,r,i,s){var u=this;return void 0===i&&(i=[]),e.forEach(function(l,d){if(Array.isArray(l))u._getProvidersMetadata(l,t,r,i);else{l=n.i(o.resolveForwardRef)(l);var p=void 0;if(l&&"object"==typeof l&&l.hasOwnProperty("provide"))p=new a.u(l.provide,l);else if(isValidType(l))p=new a.u(l,{useClass:l});else{var g=e.reduce(function(e,t,n){return n<d?e.push(""+stringifyType(t)):n==d?e.push("?"+stringifyType(t)+"?"):n==d+1&&e.push("..."),e},[]).join(", ");u._reportError(new v.c("Invalid "+(r?r:"provider")+" - only instances of Provider and Type are allowed, got: ["+g+"]"),s)}p.token===n.i(c.a)(c.b.ANALYZE_FOR_ENTRY_COMPONENTS)?t.push.apply(t,u._getEntryComponentsFromProvider(p,s)):i.push(u.getProviderMetadata(p))}}),i},CompileMetadataResolver.prototype._getEntryComponentsFromProvider=function(e,t){var n=this,o=[],r=[];return e.useFactory||e.useExisting||e.useClass?(this._reportError(new v.c("The ANALYZE_FOR_ENTRY_COMPONENTS token only supports useValue!"),t),[]):e.multi?(extractIdentifiers(e.useValue,r),r.forEach(function(e){(n._directiveResolver.isDirective(e.reference)||n._loadSummary(e.reference,a.q.Directive))&&o.push(e)}),o):(this._reportError(new v.c("The ANALYZE_FOR_ENTRY_COMPONENTS token only supports 'multi = true'!"),t),[])},CompileMetadataResolver.prototype.getProviderMetadata=function(e){var t,n=null,o=null,r=this._getTokenMetadata(e.token);return e.useClass?(n=this._getInjectableMetadata(e.useClass,e.dependencies),t=n.diDeps,e.token===e.useClass&&(r={identifier:n})):e.useFactory&&(o=this._getFactoryMetadata(e.useFactory,e.dependencies),t=o.diDeps),{token:r,useClass:n,useValue:e.useValue,useFactory:o,useExisting:e.useExisting?this._getTokenMetadata(e.useExisting):null,deps:t,multi:e.multi}},CompileMetadataResolver.prototype._getQueriesMetadata=function(e,t,n){var o=this,r=[];return Object.keys(e).forEach(function(i){var a=e[i];a.isViewQuery===t&&r.push(o._getQueryMetadata(a,i,n))}),r},CompileMetadataResolver.prototype._queryVarBindings=function(e){return e.split(/\s*,\s*/)},CompileMetadataResolver.prototype._getQueryMetadata=function(e,t,n){var o,r=this;return"string"==typeof e.selector?o=this._queryVarBindings(e.selector).map(function(e){return r._getTokenMetadata(e)}):(e.selector||this._reportError(new v.c("Can't construct a query for the property \""+t+'" of "'+stringifyType(n)+"\" since the query selector wasn't defined."),n),o=[this._getTokenMetadata(e.selector)]),{selectors:o,first:e.first,descendants:e.descendants,propertyName:t,read:e.read?this._getTokenMetadata(e.read):null}},CompileMetadataResolver.prototype._reportError=function(e,t,n){if(!this._errorCollector)throw e;this._errorCollector(e,t),n&&this._errorCollector(e,n)},CompileMetadataResolver.ctorParameters=function(){return[{type:g.a},{type:u.a},{type:f.a},{type:y.a},{type:m.a},{type:s.a},{type:h.F},{type:void 0,decorators:[{type:o.Optional},{type:o.Inject,args:[S]}]}]},CompileMetadataResolver=E([n.i(d.a)(),T("design:paramtypes",[g.a,u.a,f.a,y.a,m.a,s.a,h.F,Function])],CompileMetadataResolver)}(),M=function(e){function _CompileValueConverter(){e.apply(this,arguments)}return _(_CompileValueConverter,e),_CompileValueConverter.prototype.visitOther=function(e,t){t.push({reference:e})},_CompileValueConverter}(v.g)},function(e,t,n){"use strict";function _isNgModuleMetadata(e){return e instanceof o.NgModule}var o=n(1),r=n(85),i=n(7),a=n(20),s=n(17);n.d(t,"a",function(){return c});var u=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},l=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},c=function(){function NgModuleResolver(e){void 0===e&&(e=s.a),this._reflector=e}return NgModuleResolver.prototype.isNgModule=function(e){return this._reflector.annotations(e).some(_isNgModuleMetadata)},NgModuleResolver.prototype.resolve=function(e,t){void 0===t&&(t=!0);var o=r.a.findLast(this._reflector.annotations(e),_isNgModuleMetadata);if(o)return o;if(t)throw new Error("No NgModule metadata found for '"+n.i(i.e)(e)+"'.");return null},NgModuleResolver=u([n.i(a.a)(),l("design:paramtypes",[s.F])],NgModuleResolver)}()},function(e,t,n){"use strict";function _isPipeMetadata(e){return e instanceof o.Pipe}var o=n(1),r=n(85),i=n(7),a=n(20),s=n(17);n.d(t,"a",function(){return c});var u=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},l=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},c=function(){function PipeResolver(e){void 0===e&&(e=s.a),this._reflector=e}return PipeResolver.prototype.isPipe=function(e){var t=this._reflector.annotations(n.i(o.resolveForwardRef)(e));return t&&t.some(_isPipeMetadata)},PipeResolver.prototype.resolve=function(e,t){void 0===t&&(t=!0);var a=this._reflector.annotations(n.i(o.resolveForwardRef)(e));if(a){var s=r.a.findLast(a,_isPipeMetadata);if(s)return s}if(t)throw new Error("No Pipe decorator found on "+n.i(i.e)(e));return null},PipeResolver=u([n.i(a.a)(),l("design:paramtypes",[s.F])],PipeResolver)}()},function(e,t,n){"use strict";function splitClasses(e){return e.trim().split(/\s+/g)}function createElementCssSelector(e,t){var o=new v.a,r=n.i(f.e)(e)[1];o.setElement(r);for(var i=0;i<t.length;i++){var a=t[i][0],s=n.i(f.e)(a)[1],u=t[i][1];if(o.addAttribute(s,u),a.toLowerCase()==W){var l=splitClasses(u);l.forEach(function(e){return o.addClassName(e)})}}return o}function _isEmptyTextNode(e){return e instanceof c.d&&0==e.value.trim().length}function removeSummaryDuplicates(e){var t=new Map;return e.forEach(function(e){t.get(e.type.reference)||t.set(e.type.reference,e)}),Array.from(t.values())}var o=n(1),r=n(14),i=n(106),a=n(7),s=n(168),u=n(19),l=n(20),c=n(74),d=n(86),p=n(624),g=n(47),f=n(87),h=n(40),m=n(17),y=n(364),b=n(75),v=n(173),_=n(365),E=n(32),T=n(366),S=n(48),A=n(367);n.d(t,"a",function(){return G});var M=this&&this.__extends||function(e,t){
function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},C=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},k=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},R=/^(?:(?:(?:(bind-)|(let-)|(ref-|#)|(on-)|(bindon-)|(@))(.+))|\[\(([^\)]+)\)\]|\[([^\]]+)\]|\(([^\)]+)\))$/,N=1,O=2,D=3,w=4,I=5,x=6,B=7,L=8,P=9,H=10,F="template",U="template",V="*",W="class",j=v.a.parse("*")[0],$=new o.OpaqueToken("TemplateTransforms"),Y=function(e){function TemplateParseError(t,n,o){e.call(this,n,t,o)}return M(TemplateParseError,e),TemplateParseError}(h.a),K=function(){function TemplateParseResult(e,t){this.templateAst=e,this.errors=t}return TemplateParseResult}(),G=function(){function TemplateParser(e,t,n,o,r){this._exprParser=e,this._schemaRegistry=t,this._htmlParser=n,this._console=o,this.transforms=r}return TemplateParser.prototype.parse=function(e,t,n,o,r,i){var a=this.tryParse(e,t,n,o,r,i),s=a.errors.filter(function(e){return e.level===h.e.WARNING}),u=a.errors.filter(function(e){return e.level===h.e.FATAL});if(s.length>0&&this._console.warn("Template parse warnings:\n"+s.join("\n")),u.length>0){var l=u.join("\n");throw new E.c("Template parse errors:\n"+l)}return a.templateAst},TemplateParser.prototype.tryParse=function(e,t,n,o,r,i){return this.tryParseHtml(this.expandHtml(this._htmlParser.parse(t,i,!0,this.getInterpolationConfig(e))),e,t,n,o,r,i)},TemplateParser.prototype.tryParseHtml=function(e,t,o,r,i,a,s){var u,l=e.errors;if(e.rootNodes.length>0){var d=removeSummaryDuplicates(r),p=removeSummaryDuplicates(i),g=new y.a(t,e.rootNodes[0].sourceSpan),f=void 0;t.template&&t.template.interpolation&&(f={start:t.template.interpolation[0],end:t.template.interpolation[1]});var h=new T.a(this._exprParser,f,this._schemaRegistry,p,l),m=new z(g,d,h,this._schemaRegistry,a,l);u=c.g(m,e.rootNodes,J),l.push.apply(l,g.errors)}else u=[];return this._assertNoReferenceDuplicationOnTemplate(u,l),l.length>0?new K(u,l):(this.transforms&&this.transforms.forEach(function(e){u=n.i(S.g)(e,u)}),new K(u,l))},TemplateParser.prototype.expandHtml=function(e,t){void 0===t&&(t=!1);var o=e.errors;if(0==o.length||t){var r=n.i(p.a)(e.rootNodes);o.push.apply(o,r.errors),e=new d.b(r.nodes,o)}return e},TemplateParser.prototype.getInterpolationConfig=function(e){if(e.template)return g.b.fromArray(e.template.interpolation)},TemplateParser.prototype._assertNoReferenceDuplicationOnTemplate=function(e,t){var n=[];e.filter(function(e){return!!e.references}).forEach(function(e){return e.references.forEach(function(e){var o=e.name;if(n.indexOf(o)<0)n.push(o);else{var r=new Y('Reference "#'+o+'" is defined several times',e.sourceSpan,h.e.FATAL);t.push(r)}})})},TemplateParser.ctorParameters=function(){return[{type:i.a},{type:b.a},{type:s.a},{type:m.C},{type:Array,decorators:[{type:o.Optional},{type:o.Inject,args:[$]}]}]},TemplateParser=C([n.i(l.a)(),k("design:paramtypes",[i.a,b.a,s.a,m.C,Array])],TemplateParser)}(),z=function(){function TemplateParseVisitor(e,t,n,o,r,i){var a=this;this.providerViewContext=e,this._bindingParser=n,this._schemaRegistry=o,this._schemas=r,this._targetErrors=i,this.selectorMatcher=new v.b,this.directivesIndex=new Map,this.ngContentCount=0,t.forEach(function(e,t){var n=v.a.parse(e.selector);a.selectorMatcher.addSelectables(n,e),a.directivesIndex.set(e,t)})}return TemplateParseVisitor.prototype.visitExpansion=function(e,t){return null},TemplateParseVisitor.prototype.visitExpansionCase=function(e,t){return null},TemplateParseVisitor.prototype.visitText=function(e,t){var n=t.findNgContentIndex(j),o=this._bindingParser.parseInterpolation(e.value,e.sourceSpan);return o?new S.h(o,n,e.sourceSpan):new S.i(e.value,n,e.sourceSpan)},TemplateParseVisitor.prototype.visitAttribute=function(e,t){return new S.j(e.name,e.value,e.sourceSpan)},TemplateParseVisitor.prototype.visitComment=function(e,t){return null},TemplateParseVisitor.prototype.visitElement=function(e,t){var o=this,r=e.name,i=n.i(A.a)(e);if(i.type===A.b.SCRIPT||i.type===A.b.STYLE)return null;if(i.type===A.b.STYLESHEET&&n.i(_.a)(i.hrefAttr))return null;var s=[],u=[],l=[],d=[],p=[],g=[],h=[],m=[],b=!1,E=[],T=n.i(f.e)(r.toLowerCase())[1],M=T==F;e.attrs.forEach(function(e){var t,r,i=o._parseAttr(M,e,s,u,p,l,d),c=o._normalizeAttributeName(e.name);c==U?t=e.value:c.startsWith(V)&&(t=e.value,r=c.substring(V.length)+":");var f=n.i(a.f)(t);f&&(b&&o._reportError("Can't have multiple template bindings on one element. Use only one attribute named 'template' or prefixed with *",e.sourceSpan),b=!0,o._bindingParser.parseInlineTemplateBinding(r,t,e.sourceSpan,h,g,m)),i||f||(E.push(o.visitAttribute(e,null)),s.push([e.name,e.value]))});var C=createElementCssSelector(r,s),k=this._parseDirectives(this.selectorMatcher,C),R=k.directives,N=k.matchElement,O=[],D=this._createDirectiveAsts(M,e.name,R,u,l,e.sourceSpan,O),w=this._createElementPropertyAsts(e.name,u,D),I=t.isTemplateElement||b,x=new y.b(this.providerViewContext,t.providerContext,I,D,E,O,e.sourceSpan),B=c.g(i.nonBindable?Z:this,e.children,X.create(M,D,M?t.providerContext:x));x.afterElement();var L,P=n.i(a.f)(i.projectAs)?v.a.parse(i.projectAs)[0]:C,H=t.findNgContentIndex(P);if(i.type===A.b.NG_CONTENT)e.children&&!e.children.every(_isEmptyTextNode)&&this._reportError("<ng-content> element cannot have content.",e.sourceSpan),L=new S.k((this.ngContentCount++),b?null:H,e.sourceSpan);else if(M)this._assertAllEventsPublishedByDirectives(D,p),this._assertNoComponentsNorElementBindingsOnTemplate(D,w,e.sourceSpan),L=new S.l(E,p,O,d,x.transformedDirectiveAsts,x.transformProviders,x.transformedHasViewContainer,B,b?null:H,e.sourceSpan);else{this._assertElementExists(N,e),this._assertOnlyOneComponent(D,e.sourceSpan);var W=b?null:t.findNgContentIndex(P);L=new S.m(r,E,w,p,O,x.transformedDirectiveAsts,x.transformProviders,x.transformedHasViewContainer,B,b?null:W,e.sourceSpan,e.endSourceSpan),this._findComponentDirectives(D).forEach(function(e){return o._validateElementAnimationInputOutputs(e.hostProperties,e.hostEvents,e.directive.template)});var j=x.viewContext.component.template;this._validateElementAnimationInputOutputs(w,p,j.toSummary())}if(b){var $=createElementCssSelector(F,h),Y=this._parseDirectives(this.selectorMatcher,$).directives,K=this._createDirectiveAsts(!0,e.name,Y,g,[],e.sourceSpan,[]),G=this._createElementPropertyAsts(e.name,g,K);this._assertNoComponentsNorElementBindingsOnTemplate(K,G,e.sourceSpan);var z=new y.b(this.providerViewContext,t.providerContext,t.isTemplateElement,K,[],[],e.sourceSpan);z.afterElement(),L=new S.l([],[],[],m,z.transformedDirectiveAsts,z.transformProviders,z.transformedHasViewContainer,[L],H,e.sourceSpan)}return L},TemplateParseVisitor.prototype._validateElementAnimationInputOutputs=function(e,t,n){var o=this,r=new Set;n.animations.forEach(function(e){r.add(e)});var i=e.filter(function(e){return e.isAnimation});i.forEach(function(e){var t=e.name;r.has(t)||o._reportError("Couldn't find an animation entry for \""+t+'"',e.sourceSpan)}),t.forEach(function(e){if(e.isAnimation){var t=i.find(function(t){return t.name==e.name});t||o._reportError("Unable to listen on (@"+e.name+"."+e.phase+") because the animation trigger [@"+e.name+"] isn't being used on the same element",e.sourceSpan)}})},TemplateParseVisitor.prototype._parseAttr=function(e,t,o,r,i,s,u){var l=this._normalizeAttributeName(t.name),c=t.value,d=t.sourceSpan,p=l.match(R),g=!1;if(null!==p)if(g=!0,n.i(a.f)(p[N]))this._bindingParser.parsePropertyBinding(p[B],c,!1,d,o,r);else if(p[O])if(e){var f=p[B];this._parseVariable(f,c,d,u)}else this._reportError('"let-" is only supported on template elements.',d);else if(p[D]){var f=p[B];this._parseReference(f,c,d,s)}else p[w]?this._bindingParser.parseEvent(p[B],c,d,o,i):p[I]?(this._bindingParser.parsePropertyBinding(p[B],c,!1,d,o,r),this._parseAssignmentEvent(p[B],c,d,o,i)):p[x]?this._bindingParser.parseLiteralAttr(l,c,d,o,r):p[L]?(this._bindingParser.parsePropertyBinding(p[L],c,!1,d,o,r),this._parseAssignmentEvent(p[L],c,d,o,i)):p[P]?this._bindingParser.parsePropertyBinding(p[P],c,!1,d,o,r):p[H]&&this._bindingParser.parseEvent(p[H],c,d,o,i);else g=this._bindingParser.parsePropertyInterpolation(l,c,d,o,r);return g||this._bindingParser.parseLiteralAttr(l,c,d,o,r),g},TemplateParseVisitor.prototype._normalizeAttributeName=function(e){return/^data-/i.test(e)?e.substring(5):e},TemplateParseVisitor.prototype._parseVariable=function(e,t,n,o){e.indexOf("-")>-1&&this._reportError('"-" is not allowed in variable names',n),o.push(new S.c(e,t,n))},TemplateParseVisitor.prototype._parseReference=function(e,t,n,o){e.indexOf("-")>-1&&this._reportError('"-" is not allowed in reference names',n),o.push(new Q(e,t,n))},TemplateParseVisitor.prototype._parseAssignmentEvent=function(e,t,n,o,r){this._bindingParser.parseEvent(e+"Change",t+"=$event",n,o,r)},TemplateParseVisitor.prototype._parseDirectives=function(e,t){var n=this,o=new Array(this.directivesIndex.size),r=!1;return e.match(t,function(e,t){o[n.directivesIndex.get(t)]=t,r=r||e.hasElementSelector()}),{directives:o.filter(function(e){return!!e}),matchElement:r}},TemplateParseVisitor.prototype._createDirectiveAsts=function(e,t,o,i,a,s,l){var c=this,d=new Set,p=null,g=o.map(function(e){var o=new h.d(s.start,s.end,"Directive "+n.i(r.c)(e.type));e.isComponent&&(p=e);var g=[],f=c._bindingParser.createDirectiveHostPropertyAsts(e,o);c._checkPropertiesInSchema(t,f);var m=c._bindingParser.createDirectiveHostEventAsts(e,o);return c._createDirectivePropertyAsts(e.inputs,i,g),a.forEach(function(t){(0===t.value.length&&e.isComponent||e.exportAs==t.value)&&(l.push(new S.n(t.name,n.i(u.c)(e.type),t.sourceSpan)),d.add(t.name))}),new S.o(e,g,f,m,o)});return a.forEach(function(t){if(t.value.length>0)d.has(t.name)||c._reportError('There is no directive with "exportAs" set to "'+t.value+'"',t.sourceSpan);else if(!p){var o=null;e&&(o=n.i(u.d)(u.b.TemplateRef)),l.push(new S.n(t.name,o,t.sourceSpan))}}),g},TemplateParseVisitor.prototype._createDirectivePropertyAsts=function(e,t,n){if(e){var o=new Map;t.forEach(function(e){var t=o.get(e.name);t&&!t.isLiteral||o.set(e.name,e)}),Object.keys(e).forEach(function(t){var r=e[t],i=o.get(r);i&&n.push(new S.p(t,i.name,i.expression,i.sourceSpan))})}},TemplateParseVisitor.prototype._createElementPropertyAsts=function(e,t,n){var o=this,r=[],i=new Map;return n.forEach(function(e){e.inputs.forEach(function(e){i.set(e.templateName,e)})}),t.forEach(function(t){t.isLiteral||i.get(t.name)||r.push(o._bindingParser.createElementPropertyAst(e,t))}),this._checkPropertiesInSchema(e,r),r},TemplateParseVisitor.prototype._findComponentDirectives=function(e){return e.filter(function(e){return e.directive.isComponent})},TemplateParseVisitor.prototype._findComponentDirectiveNames=function(e){return this._findComponentDirectives(e).map(function(e){return n.i(r.c)(e.directive.type)})},TemplateParseVisitor.prototype._assertOnlyOneComponent=function(e,t){var n=this._findComponentDirectiveNames(e);n.length>1&&this._reportError("More than one component matched on this element.\nMake sure that only one component's selector can match a given element.\nConflicting components: "+n.join(","),t)},TemplateParseVisitor.prototype._assertElementExists=function(e,t){var n=t.name.replace(/^:xhtml:/,"");if(!e&&!this._schemaRegistry.hasElement(n,this._schemas)){var o="'"+n+"' is not a known element:\n"+("1. If '"+n+"' is an Angular component, then verify that it is part of this module.\n")+("2. If '"+n+"' is a Web Component then add \"CUSTOM_ELEMENTS_SCHEMA\" to the '@NgModule.schemas' of this component to suppress this message.");this._reportError(o,t.sourceSpan)}},TemplateParseVisitor.prototype._assertNoComponentsNorElementBindingsOnTemplate=function(e,t,n){var o=this,r=this._findComponentDirectiveNames(e);r.length>0&&this._reportError("Components on an embedded template: "+r.join(","),n),t.forEach(function(e){o._reportError("Property binding "+e.name+' not used by any directive on an embedded template. Make sure that the property name is spelled correctly and all directives are listed in the "@NgModule.declarations".',n)})},TemplateParseVisitor.prototype._assertAllEventsPublishedByDirectives=function(e,t){var o=this,r=new Set;e.forEach(function(e){Object.keys(e.directive.outputs).forEach(function(t){var n=e.directive.outputs[t];r.add(n)})}),t.forEach(function(e){!n.i(a.f)(e.target)&&r.has(e.name)||o._reportError("Event binding "+e.fullName+' not emitted by any directive on an embedded template. Make sure that the event name is spelled correctly and all directives are listed in the "@NgModule.declarations".',e.sourceSpan)})},TemplateParseVisitor.prototype._checkPropertiesInSchema=function(e,t){var n=this;t.forEach(function(t){if(t.type===S.e.Property&&!n._schemaRegistry.hasProperty(e,t.name,n._schemas)){var o="Can't bind to '"+t.name+"' since it isn't a known property of '"+e+"'.";e.indexOf("-")>-1&&(o+="\n1. If '"+e+"' is an Angular component and it has '"+t.name+"' input, then verify that it is part of this module."+("\n2. If '"+e+"' is a Web Component then add \"CUSTOM_ELEMENTS_SCHEMA\" to the '@NgModule.schemas' of this component to suppress this message.\n")),n._reportError(o,t.sourceSpan)}})},TemplateParseVisitor.prototype._reportError=function(e,t,n){void 0===n&&(n=h.e.FATAL),this._targetErrors.push(new h.a(t,e,n))},TemplateParseVisitor}(),q=function(){function NonBindableVisitor(){}return NonBindableVisitor.prototype.visitElement=function(e,t){var o=n.i(A.a)(e);if(o.type===A.b.SCRIPT||o.type===A.b.STYLE||o.type===A.b.STYLESHEET)return null;var r=e.attrs.map(function(e){return[e.name,e.value]}),i=createElementCssSelector(e.name,r),a=t.findNgContentIndex(i),s=c.g(this,e.children,J);return new S.m(e.name,c.g(this,e.attrs),[],[],[],[],[],(!1),s,a,e.sourceSpan,e.endSourceSpan)},NonBindableVisitor.prototype.visitComment=function(e,t){return null},NonBindableVisitor.prototype.visitAttribute=function(e,t){return new S.j(e.name,e.value,e.sourceSpan)},NonBindableVisitor.prototype.visitText=function(e,t){var n=t.findNgContentIndex(j);return new S.i(e.value,n,e.sourceSpan)},NonBindableVisitor.prototype.visitExpansion=function(e,t){return e},NonBindableVisitor.prototype.visitExpansionCase=function(e,t){return e},NonBindableVisitor}(),Q=function(){function ElementOrDirectiveRef(e,t,n){this.name=e,this.value=t,this.sourceSpan=n}return ElementOrDirectiveRef}(),X=function(){function ElementContext(e,t,n,o){this.isTemplateElement=e,this._ngContentIndexMatcher=t,this._wildcardNgContentIndex=n,this.providerContext=o}return ElementContext.create=function(e,t,n){var o=new v.b,r=null,i=t.find(function(e){return e.directive.isComponent});if(i)for(var a=i.directive.template.ngContentSelectors,s=0;s<a.length;s++){var u=a[s];"*"===u?r=s:o.addSelectables(v.a.parse(a[s]),s)}return new ElementContext(e,o,r,n)},ElementContext.prototype.findNgContentIndex=function(e){var t=[];return this._ngContentIndexMatcher.match(e,function(e,n){t.push(n)}),t.sort(),n.i(a.f)(this._wildcardNgContentIndex)&&t.push(this._wildcardNgContentIndex),t.length>0?t[0]:null},ElementContext}(),J=new X((!0),new v.b,null,null),Z=new q},function(e,t,n){"use strict";var o=n(72),r=n(20),i=n(75),a=n(368),s=n(370),u=n(639),l=n(640),c=n(253);n.d(t,"d",function(){return f}),n.d(t,"b",function(){return c.a}),n.d(t,"c",function(){return c.b}),n.d(t,"a",function(){return c.c});var d=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},p=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},g=function(){function ViewCompileResult(e,t,n){this.statements=e,this.viewClassVar=t,this.dependencies=n}return ViewCompileResult}(),f=function(){function ViewCompiler(e,t){this._genConfig=e,this._schemaRegistry=t}return ViewCompiler.prototype.compileComponent=function(e,t,o,r,i){var c=[],d=new s.c(e,this._genConfig,r,o,i,0,a.a.createNull(),[],c),p=[];return n.i(l.a)(d,t,c),n.i(u.a)(d,t,this._schemaRegistry),n.i(l.b)(d,p),new g(p,d.classExpr.name,c)},ViewCompiler=d([n.i(r.a)(),p("design:paramtypes",[o.a,i.a])],ViewCompiler)}()},function(e,t,n){"use strict";var o=n(8);n.d(t,"a",function(){return i}),n.d(t,"b",function(){return s});var r=new Object,i=r,a=function(){function _NullInjector(){}return _NullInjector.prototype.get=function(e,t){if(void 0===t&&(t=r),t===r)throw new Error("No provider for "+n.i(o.b)(e)+"!");return t},_NullInjector}(),s=function(){function Injector(){}return Injector.prototype.get=function(e,t){},Injector.THROW_IF_NOT_FOUND=r,Injector.NULL=new a,Injector}()},function(e,t,n){"use strict";function isListLikeIterable(e){return!!n.i(o.e)(e)&&(Array.isArray(e)||!(e instanceof Map)&&n.i(o.f)()in e)}function areIterablesEqual(e,t,r){for(var i=e[n.i(o.f)()](),a=t[n.i(o.f)()]();;){var s=i.next(),u=a.next();if(s.done&&u.done)return!0;if(s.done||u.done)return!1;if(!r(s.value,u.value))return!1}}function iterateListLike(e,t){if(Array.isArray(e))for(var r=0;r<e.length;r++)t(e[r]);else for(var i=e[n.i(o.f)()](),a=void 0;!(a=i.next()).done;)t(a.value)}var o=n(8);n.d(t,"e",function(){return r}),n.d(t,"d",function(){return i}),t.a=isListLikeIterable,t.c=areIterablesEqual,t.b=iterateListLike;var r=function(){function StringMapWrapper(){}return StringMapWrapper.merge=function(e,t){for(var n={},o=0,r=Object.keys(e);o<r.length;o++){var i=r[o];n[i]=e[i]}for(var a=0,s=Object.keys(t);a<s.length;a++){var i=s[a];n[i]=t[i]}return n},StringMapWrapper.equals=function(e,t){var n=Object.keys(e),o=Object.keys(t);if(n.length!=o.length)return!1;for(var r=0;r<n.length;r++){var i=n[r];if(e[i]!==t[i])return!1}return!0},StringMapWrapper}(),i=function(){function ListWrapper(){}return ListWrapper.findLast=function(e,t){for(var n=e.length-1;n>=0;n--)if(t(e[n]))return e[n];return null},ListWrapper.removeAll=function(e,t){for(var n=0;n<t.length;++n){var o=e.indexOf(t[n]);o>-1&&e.splice(o,1)}},ListWrapper.remove=function(e,t){var n=e.indexOf(t);return n>-1&&(e.splice(n,1),!0)},ListWrapper.equals=function(e,t){if(e.length!=t.length)return!1;for(var n=0;n<e.length;++n)if(e[n]!==t[n])return!1;return!0},ListWrapper.flatten=function(e){return e.reduce(function(e,t){var n=Array.isArray(t)?ListWrapper.flatten(t):t;return e.concat(n)},[])},ListWrapper}()},function(e,t,n){"use strict";function _throwError(){throw new Error("Runtime compiler is not loaded")}var o=n(41),r=n(180),i=n(8);n.d(t,"c",function(){return s}),n.d(t,"d",function(){return u}),n.d(t,"b",function(){return l}),n.d(t,"e",function(){return c}),n.d(t,"a",function(){return d});var a=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},s=function(e){function ComponentStillLoadingError(t){e.call(this,"Can't compile synchronously as "+n.i(i.b)(t)+" is still being loaded!"),this.compType=t}return a(ComponentStillLoadingError,e),ComponentStillLoadingError}(r.a),u=function(){function ModuleWithComponentFactories(e,t){this.ngModuleFactory=e,this.componentFactories=t}return ModuleWithComponentFactories}(),l=function(){function Compiler(){}return Compiler.prototype.compileModuleSync=function(e){throw _throwError()},Compiler.prototype.compileModuleAsync=function(e){throw _throwError()},Compiler.prototype.compileModuleAndAllComponentsSync=function(e){throw _throwError()},Compiler.prototype.compileModuleAndAllComponentsAsync=function(e){throw _throwError()},Compiler.prototype.getNgContentSelectors=function(e){throw _throwError()},Compiler.prototype.clearCache=function(){},Compiler.prototype.clearCacheFor=function(e){},Compiler.decorators=[{type:o.b}],Compiler.ctorParameters=function(){return[]},Compiler}(),c=new o.a("compilerOptions"),d=function(){function CompilerFactory(){}return CompilerFactory.prototype.createCompiler=function(e){},CompilerFactory}()},function(e,t,n){"use strict";var o=n(57),r=n(76);n.d(t,"a",function(){return a});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=function(e){function AbstractFormGroupDirective(){e.apply(this,arguments)}return i(AbstractFormGroupDirective,e),AbstractFormGroupDirective.prototype.ngOnInit=function(){this._checkParentType(),this.formDirective.addFormGroup(this)},AbstractFormGroupDirective.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeFormGroup(this)},Object.defineProperty(AbstractFormGroupDirective.prototype,"control",{get:function(){return this.formDirective.getFormGroup(this)},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractFormGroupDirective.prototype,"path",{get:function(){return n.i(r.a)(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractFormGroupDirective.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractFormGroupDirective.prototype,"validator",{get:function(){return n.i(r.b)(this._validators)},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractFormGroupDirective.prototype,"asyncValidator",{get:function(){return n.i(r.c)(this._asyncValidators)},enumerable:!0,configurable:!0}),AbstractFormGroupDirective.prototype._checkParentType=function(){},AbstractFormGroupDirective}(o.a)},function(e,t,n){"use strict";var o=n(1),r=n(110),i=n(193),a=n(49),s=n(57),u=n(76);n.d(t,"a",function(){return p});var l=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},c={provide:s.a,useExisting:n.i(o.forwardRef)(function(){return p})},d=Promise.resolve(null),p=function(e){function NgForm(t,o){e.call(this),this._submitted=!1,this.ngSubmit=new r.a,this.form=new i.a({},n.i(u.b)(t),n.i(u.c)(o))}return l(NgForm,e),Object.defineProperty(NgForm.prototype,"submitted",{get:function(){return this._submitted},enumerable:!0,configurable:!0}),Object.defineProperty(NgForm.prototype,"formDirective",{get:function(){return this},enumerable:!0,configurable:!0}),Object.defineProperty(NgForm.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),Object.defineProperty(NgForm.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),Object.defineProperty(NgForm.prototype,"controls",{get:function(){return this.form.controls},enumerable:!0,configurable:!0}),NgForm.prototype.addControl=function(e){var t=this;d.then(function(){var o=t._findContainer(e.path);e._control=o.registerControl(e.name,e.control),n.i(u.d)(e.control,e),e.control.updateValueAndValidity({emitEvent:!1})})},NgForm.prototype.getControl=function(e){return this.form.get(e.path)},NgForm.prototype.removeControl=function(e){var t=this;d.then(function(){var n=t._findContainer(e.path);n&&n.removeControl(e.name)})},NgForm.prototype.addFormGroup=function(e){var t=this;d.then(function(){var o=t._findContainer(e.path),r=new i.a({});n.i(u.e)(r,e),o.registerControl(e.name,r),r.updateValueAndValidity({emitEvent:!1})})},NgForm.prototype.removeFormGroup=function(e){var t=this;d.then(function(){var n=t._findContainer(e.path);n&&n.removeControl(e.name)})},NgForm.prototype.getFormGroup=function(e){return this.form.get(e.path)},NgForm.prototype.updateModel=function(e,t){var n=this;d.then(function(){var o=n.form.get(e.path);o.setValue(t)})},NgForm.prototype.setValue=function(e){this.control.setValue(e)},NgForm.prototype.onSubmit=function(e){return this._submitted=!0,this.ngSubmit.emit(e),!1},NgForm.prototype.onReset=function(){this.resetForm()},NgForm.prototype.resetForm=function(e){void 0===e&&(e=void 0),this.form.reset(e),this._submitted=!1},NgForm.prototype._findContainer=function(e){return e.pop(),e.length?this.form.get(e):this.form},NgForm.decorators=[{type:o.Directive,args:[{selector:"form:not([ngNoForm]):not([formGroup]),ngForm,[ngForm]",providers:[c],host:{"(submit)":"onSubmit($event)","(reset)":"onReset()"},outputs:["ngSubmit"],exportAs:"ngForm"}]}],NgForm.ctorParameters=function(){return[{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[a.b]}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[a.c]}]}]},NgForm}(s.a)},function(e,t,n){"use strict";var o=n(1),r=n(42),i=n(90);n.d(t,"b",function(){return s}),n.d(t,"a",function(){return u});var a={provide:r.a,useExisting:n.i(o.forwardRef)(function(){return u}),multi:!0},s=function(){function RadioControlRegistry(){this._accessors=[]}return RadioControlRegistry.prototype.add=function(e,t){this._accessors.push([e,t])},RadioControlRegistry.prototype.remove=function(e){for(var t=this._accessors.length-1;t>=0;--t)if(this._accessors[t][1]===e)return void this._accessors.splice(t,1)},RadioControlRegistry.prototype.select=function(e){var t=this;this._accessors.forEach(function(n){t._isSameGroup(n,e)&&n[1]!==e&&n[1].fireUncheck(e.value)})},RadioControlRegistry.prototype._isSameGroup=function(e,t){return!!e[0].control&&(e[0]._parent===t._control._parent&&e[1].name===t.name)},RadioControlRegistry.decorators=[{type:o.Injectable}],RadioControlRegistry.ctorParameters=function(){return[]},RadioControlRegistry}(),u=function(){function RadioControlValueAccessor(e,t,n,o){this._renderer=e,this._elementRef=t,this._registry=n,this._injector=o,this.onChange=function(){},this.onTouched=function(){}}return RadioControlValueAccessor.prototype.ngOnInit=function(){this._control=this._injector.get(i.a),this._checkName(),this._registry.add(this._control,this)},RadioControlValueAccessor.prototype.ngOnDestroy=function(){this._registry.remove(this)},RadioControlValueAccessor.prototype.writeValue=function(e){this._state=e===this.value,this._renderer.setElementProperty(this._elementRef.nativeElement,"checked",this._state)},RadioControlValueAccessor.prototype.registerOnChange=function(e){var t=this;this._fn=e,this.onChange=function(){e(t.value),t._registry.select(t)}},RadioControlValueAccessor.prototype.fireUncheck=function(e){this.writeValue(e)},RadioControlValueAccessor.prototype.registerOnTouched=function(e){this.onTouched=e},RadioControlValueAccessor.prototype.setDisabledState=function(e){this._renderer.setElementProperty(this._elementRef.nativeElement,"disabled",e)},RadioControlValueAccessor.prototype._checkName=function(){this.name&&this.formControlName&&this.name!==this.formControlName&&this._throwNameError(),!this.name&&this.formControlName&&(this.name=this.formControlName)},RadioControlValueAccessor.prototype._throwNameError=function(){throw new Error('\n      If you define both a name and a formControlName attribute on your radio button, their values\n      must match. Ex: <input type="radio" formControlName="food" name="food">\n    ')},RadioControlValueAccessor.decorators=[{type:o.Directive,args:[{selector:"input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]",host:{"(change)":"onChange()","(blur)":"onTouched()"},providers:[a]}]}],RadioControlValueAccessor.ctorParameters=function(){return[{type:o.Renderer},{type:o.ElementRef},{type:s},{type:o.Injector}]},RadioControlValueAccessor.propDecorators={name:[{type:o.Input}],formControlName:[{type:o.Input}],value:[{type:o.Input}]},RadioControlValueAccessor}()},function(e,t,n){"use strict";var o=n(1),r=n(110),i=n(404),a=n(49),s=n(57),u=n(190),l=n(76);n.d(t,"a",function(){return p});var c=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},d={provide:s.a,useExisting:n.i(o.forwardRef)(function(){return p})},p=function(e){function FormGroupDirective(t,n){e.call(this),this._validators=t,this._asyncValidators=n,this._submitted=!1,this.directives=[],this.form=null,this.ngSubmit=new r.a}return c(FormGroupDirective,e),FormGroupDirective.prototype.ngOnChanges=function(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations())},Object.defineProperty(FormGroupDirective.prototype,"submitted",{get:function(){return this._submitted},enumerable:!0,configurable:!0}),Object.defineProperty(FormGroupDirective.prototype,"formDirective",{get:function(){return this},enumerable:!0,configurable:!0}),Object.defineProperty(FormGroupDirective.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),Object.defineProperty(FormGroupDirective.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),FormGroupDirective.prototype.addControl=function(e){var t=this.form.get(e.path);return n.i(l.d)(t,e),t.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),t},FormGroupDirective.prototype.getControl=function(e){return this.form.get(e.path)},FormGroupDirective.prototype.removeControl=function(e){i.b.remove(this.directives,e)},FormGroupDirective.prototype.addFormGroup=function(e){var t=this.form.get(e.path);n.i(l.e)(t,e),t.updateValueAndValidity({emitEvent:!1})},FormGroupDirective.prototype.removeFormGroup=function(e){},FormGroupDirective.prototype.getFormGroup=function(e){return this.form.get(e.path)},FormGroupDirective.prototype.addFormArray=function(e){var t=this.form.get(e.path);n.i(l.e)(t,e),t.updateValueAndValidity({emitEvent:!1})},FormGroupDirective.prototype.removeFormArray=function(e){},FormGroupDirective.prototype.getFormArray=function(e){return this.form.get(e.path)},FormGroupDirective.prototype.updateModel=function(e,t){var n=this.form.get(e.path);n.setValue(t)},FormGroupDirective.prototype.onSubmit=function(e){return this._submitted=!0,this.ngSubmit.emit(e),!1},FormGroupDirective.prototype.onReset=function(){this.resetForm()},FormGroupDirective.prototype.resetForm=function(e){void 0===e&&(e=void 0),this.form.reset(e),this._submitted=!1},FormGroupDirective.prototype._updateDomValue=function(){var e=this;this.directives.forEach(function(t){var o=e.form.get(t.path);t._control!==o&&(n.i(l.h)(t._control,t),o&&n.i(l.d)(o,t),t._control=o)}),this.form._updateTreeValidity({emitEvent:!1})},FormGroupDirective.prototype._updateRegistrations=function(){var e=this;this.form._registerOnCollectionChange(function(){return e._updateDomValue()}),this._oldForm&&this._oldForm._registerOnCollectionChange(function(){}),this._oldForm=this.form},FormGroupDirective.prototype._updateValidators=function(){var e=n.i(l.b)(this._validators);this.form.validator=a.a.compose([this.form.validator,e]);var t=n.i(l.c)(this._asyncValidators);this.form.asyncValidator=a.a.composeAsync([this.form.asyncValidator,t])},FormGroupDirective.prototype._checkFormPresent=function(){this.form||u.a.missingFormException()},FormGroupDirective.decorators=[{type:o.Directive,args:[{selector:"[formGroup]",providers:[d],host:{"(submit)":"onSubmit($event)","(reset)":"onReset()"},exportAs:"ngForm"}]}],FormGroupDirective.ctorParameters=function(){return[{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[a.b]}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[a.c]}]}]},FormGroupDirective.propDecorators={form:[{type:o.Input,args:["formGroup"]}],ngSubmit:[{type:o.Output}]},FormGroupDirective}(s.a)},function(e,t,n){"use strict";
function _hasInvalidParent(e){return!(e instanceof p||e instanceof l.a||e instanceof f)}var o=n(1),r=n(49),i=n(134),a=n(57),s=n(190),u=n(76),l=n(137);n.d(t,"a",function(){return p}),n.d(t,"b",function(){return f});var c=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},d={provide:a.a,useExisting:n.i(o.forwardRef)(function(){return p})},p=function(e){function FormGroupName(t,n,o){e.call(this),this._parent=t,this._validators=n,this._asyncValidators=o}return c(FormGroupName,e),FormGroupName.prototype._checkParentType=function(){_hasInvalidParent(this._parent)&&s.a.groupParentException()},FormGroupName.decorators=[{type:o.Directive,args:[{selector:"[formGroupName]",providers:[d]}]}],FormGroupName.ctorParameters=function(){return[{type:a.a,decorators:[{type:o.Optional},{type:o.Host},{type:o.SkipSelf}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[r.b]}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[r.c]}]}]},FormGroupName.propDecorators={name:[{type:o.Input,args:["formGroupName"]}]},FormGroupName}(i.a),g={provide:a.a,useExisting:n.i(o.forwardRef)(function(){return f})},f=function(e){function FormArrayName(t,n,o){e.call(this),this._parent=t,this._validators=n,this._asyncValidators=o}return c(FormArrayName,e),FormArrayName.prototype.ngOnInit=function(){this._checkParentType(),this.formDirective.addFormArray(this)},FormArrayName.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeFormArray(this)},Object.defineProperty(FormArrayName.prototype,"control",{get:function(){return this.formDirective.getFormArray(this)},enumerable:!0,configurable:!0}),Object.defineProperty(FormArrayName.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(FormArrayName.prototype,"path",{get:function(){return n.i(u.a)(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(FormArrayName.prototype,"validator",{get:function(){return n.i(u.b)(this._validators)},enumerable:!0,configurable:!0}),Object.defineProperty(FormArrayName.prototype,"asyncValidator",{get:function(){return n.i(u.c)(this._asyncValidators)},enumerable:!0,configurable:!0}),FormArrayName.prototype._checkParentType=function(){_hasInvalidParent(this._parent)&&s.a.arrayParentException()},FormArrayName.decorators=[{type:o.Directive,args:[{selector:"[formArrayName]",providers:[g]}]}],FormArrayName.ctorParameters=function(){return[{type:a.a,decorators:[{type:o.Optional},{type:o.Host},{type:o.SkipSelf}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[r.b]}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[r.c]}]}]},FormArrayName.propDecorators={name:[{type:o.Input,args:["formArrayName"]}]},FormArrayName}(a.a)},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o=function(){function Headers(e){var t=this;if(this._headers=new Map,this._normalizedNames=new Map,e)return e instanceof Headers?void e.forEach(function(e,n){e.forEach(function(e){return t.append(n,e)})}):void Object.keys(e).forEach(function(n){var o=Array.isArray(e[n])?e[n]:[e[n]];t.delete(n),o.forEach(function(e){return t.append(n,e)})})}return Headers.fromResponseHeaderString=function(e){var t=new Headers;return e.split("\n").forEach(function(e){var n=e.indexOf(":");if(n>0){var o=e.slice(0,n),r=e.slice(n+1).trim();t.set(o,r)}}),t},Headers.prototype.append=function(e,t){var n=this.getAll(e);null===n?this.set(e,t):n.push(t)},Headers.prototype.delete=function(e){var t=e.toLowerCase();this._normalizedNames.delete(t),this._headers.delete(t)},Headers.prototype.forEach=function(e){var t=this;this._headers.forEach(function(n,o){return e(n,t._normalizedNames.get(o),t._headers)})},Headers.prototype.get=function(e){var t=this.getAll(e);return null===t?null:t.length>0?t[0]:null},Headers.prototype.has=function(e){return this._headers.has(e.toLowerCase())},Headers.prototype.keys=function(){return Array.from(this._normalizedNames.values())},Headers.prototype.set=function(e,t){Array.isArray(t)?t.length&&this._headers.set(e.toLowerCase(),[t.join(",")]):this._headers.set(e.toLowerCase(),[t]),this.mayBeSetNormalizedName(e)},Headers.prototype.values=function(){return Array.from(this._headers.values())},Headers.prototype.toJSON=function(){var e=this,t={};return this._headers.forEach(function(n,o){var r=[];n.forEach(function(e){return r.push.apply(r,e.split(","))}),t[e._normalizedNames.get(o)]=r}),t},Headers.prototype.getAll=function(e){return this.has(e)?this._headers.get(e.toLowerCase()):null},Headers.prototype.entries=function(){throw new Error('"entries" method is not implemented on Headers class')},Headers.prototype.mayBeSetNormalizedName=function(e){var t=e.toLowerCase();this._normalizedNames.has(t)||this._normalizedNames.set(t,e)},Headers}()},function(e,t,n){"use strict";n.d(t,"a",function(){return o}),n.d(t,"c",function(){return r}),n.d(t,"b",function(){return i});var o=function(){function ConnectionBackend(){}return ConnectionBackend.prototype.createConnection=function(e){},ConnectionBackend}(),r=function(){function Connection(){}return Connection}(),i=function(){function XSRFStrategy(){}return XSRFStrategy.prototype.configureRequest=function(e){},XSRFStrategy}()},,,,,,,,,,function(e,t,n){"use strict";var o=n(0),r=function(){function Notification(e,t,n){this.kind=e,this.value=t,this.error=n,this.hasValue="N"===e}return Notification.prototype.observe=function(e){switch(this.kind){case"N":return e.next&&e.next(this.value);case"E":return e.error&&e.error(this.error);case"C":return e.complete&&e.complete()}},Notification.prototype.do=function(e,t,n){var o=this.kind;switch(o){case"N":return e&&e(this.value);case"E":return t&&t(this.error);case"C":return n&&n()}},Notification.prototype.accept=function(e,t,n){return e&&"function"==typeof e.next?this.observe(e):this.do(e,t,n)},Notification.prototype.toObservable=function(){var e=this.kind;switch(e){case"N":return o.Observable.of(this.value);case"E":return o.Observable.throw(this.error);case"C":return o.Observable.empty()}throw new Error("unexpected notification kind value")},Notification.createNext=function(e){return"undefined"!=typeof e?new Notification("N",e):Notification.undefinedValueNotification},Notification.createError=function(e){return new Notification("E",(void 0),e)},Notification.createComplete=function(){return Notification.completeNotification},Notification.completeNotification=new Notification("C"),Notification.undefinedValueNotification=new Notification("N",(void 0)),Notification}();t.Notification=r},function(e,t,n){"use strict";function mergeMap(e,t,n){return void 0===n&&(n=Number.POSITIVE_INFINITY),"number"==typeof t&&(n=t,t=null),this.lift(new a(e,t,n))}var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(5),i=n(4);t.mergeMap=mergeMap;var a=function(){function MergeMapOperator(e,t,n){void 0===n&&(n=Number.POSITIVE_INFINITY),this.project=e,this.resultSelector=t,this.concurrent=n}return MergeMapOperator.prototype.call=function(e,t){return t.subscribe(new s(e,this.project,this.resultSelector,this.concurrent))},MergeMapOperator}();t.MergeMapOperator=a;var s=function(e){function MergeMapSubscriber(t,n,o,r){void 0===r&&(r=Number.POSITIVE_INFINITY),e.call(this,t),this.project=n,this.resultSelector=o,this.concurrent=r,this.hasCompleted=!1,this.buffer=[],this.active=0,this.index=0}return o(MergeMapSubscriber,e),MergeMapSubscriber.prototype._next=function(e){this.active<this.concurrent?this._tryNext(e):this.buffer.push(e)},MergeMapSubscriber.prototype._tryNext=function(e){var t,n=this.index++;try{t=this.project(e,n)}catch(o){return void this.destination.error(o)}this.active++,this._innerSub(t,e,n)},MergeMapSubscriber.prototype._innerSub=function(e,t,n){this.add(r.subscribeToResult(this,e,t,n))},MergeMapSubscriber.prototype._complete=function(){this.hasCompleted=!0,0===this.active&&0===this.buffer.length&&this.destination.complete()},MergeMapSubscriber.prototype.notifyNext=function(e,t,n,o,r){this.resultSelector?this._notifyResultSelector(e,t,n,o):this.destination.next(t)},MergeMapSubscriber.prototype._notifyResultSelector=function(e,t,n,o){var r;try{r=this.resultSelector(e,t,n,o)}catch(i){return void this.destination.error(i)}this.destination.next(r)},MergeMapSubscriber.prototype.notifyComplete=function(e){var t=this.buffer;this.remove(e),this.active--,t.length>0?this._next(t.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()},MergeMapSubscriber}(i.OuterSubscriber);t.MergeMapSubscriber=s},function(e,t,n){"use strict";function observeOn(e,t){return void 0===t&&(t=0),this.lift(new a(e,t))}var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(3),i=n(150);t.observeOn=observeOn;var a=function(){function ObserveOnOperator(e,t){void 0===t&&(t=0),this.scheduler=e,this.delay=t}return ObserveOnOperator.prototype.call=function(e,t){return t.subscribe(new s(e,this.scheduler,this.delay))},ObserveOnOperator}();t.ObserveOnOperator=a;var s=function(e){function ObserveOnSubscriber(t,n,o){void 0===o&&(o=0),e.call(this,t),this.scheduler=n,this.delay=o}return o(ObserveOnSubscriber,e),ObserveOnSubscriber.dispatch=function(e){var t=e.notification,n=e.destination;t.observe(n),this.unsubscribe()},ObserveOnSubscriber.prototype.scheduleMessage=function(e){this.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch,this.delay,new u(e,this.destination)))},ObserveOnSubscriber.prototype._next=function(e){this.scheduleMessage(i.Notification.createNext(e))},ObserveOnSubscriber.prototype._error=function(e){this.scheduleMessage(i.Notification.createError(e))},ObserveOnSubscriber.prototype._complete=function(){this.scheduleMessage(i.Notification.createComplete())},ObserveOnSubscriber}(r.Subscriber);t.ObserveOnSubscriber=s;var u=function(){function ObserveOnMessage(e,t){this.notification=e,this.destination=t}return ObserveOnMessage}();t.ObserveOnMessage=u},,,function(e,t,n){"use strict";function symbolIteratorPonyfill(e){var t=e.Symbol;if("function"==typeof t)return t.iterator||(t.iterator=t("iterator polyfill")),t.iterator;var n=e.Set;if(n&&"function"==typeof(new n)["@@iterator"])return"@@iterator";var o=e.Map;if(o)for(var r=Object.getOwnPropertyNames(o.prototype),i=0;i<r.length;++i){var a=r[i];if("entries"!==a&&"size"!==a&&o.prototype[a]===o.prototype.entries)return a}return"@@iterator"}var o=n(26);t.symbolIteratorPonyfill=symbolIteratorPonyfill,t.iterator=symbolIteratorPonyfill(o.root),t.$$iterator=t.iterator},function(e,t,n){"use strict";function getSymbolObservable(e){var t,n=e.Symbol;return"function"==typeof n?n.observable?t=n.observable:(t=n("observable"),n.observable=t):t="@@observable",t}var o=n(26);t.getSymbolObservable=getSymbolObservable,t.observable=getSymbolObservable(o.root),t.$$observable=t.observable},,function(e,t){"use strict";var n=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},o=function(e){function EmptyError(){var t=e.call(this,"no elements in sequence");this.name=t.name="EmptyError",this.stack=t.stack,this.message=t.message}return n(EmptyError,e),EmptyError}(Error);t.EmptyError=o},function(e,t,n){"use strict";function __export(e){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])}__export(n(699))},,,function(e,t,n){"use strict";function getPluralCategory(e,t,n){var o="="+e;if(t.indexOf(o)>-1)return o;if(o=n.getPluralCategory(e),t.indexOf(o)>-1)return o;if(t.indexOf("other")>-1)return"other";throw new Error('No plural message found for value "'+e+'"')}function getPluralCase(e,t){"string"==typeof t&&(t=parseInt(t,10));var n=t,o=n.toString().replace(/^[^.]*\.?/,""),r=Math.floor(Math.abs(n)),i=o.length,a=parseInt(o,10),u=parseInt(n.toString().replace(/^[^.]*\.?|0+$/g,""),10)||0,l=e.split("-")[0].toLowerCase();switch(l){case"af":case"asa":case"az":case"bem":case"bez":case"bg":case"brx":case"ce":case"cgg":case"chr":case"ckb":case"ee":case"el":case"eo":case"es":case"eu":case"fo":case"fur":case"gsw":case"ha":case"haw":case"hu":case"jgo":case"jmc":case"ka":case"kk":case"kkj":case"kl":case"ks":case"ksb":case"ky":case"lb":case"lg":case"mas":case"mgo":case"ml":case"mn":case"nb":case"nd":case"ne":case"nn":case"nnh":case"nyn":case"om":case"or":case"os":case"ps":case"rm":case"rof":case"rwk":case"saq":case"seh":case"sn":case"so":case"sq":case"ta":case"te":case"teo":case"tk":case"tr":case"ug":case"uz":case"vo":case"vun":case"wae":case"xog":return 1===n?s.One:s.Other;case"agq":case"bas":case"cu":case"dav":case"dje":case"dua":case"dyo":case"ebu":case"ewo":case"guz":case"kam":case"khq":case"ki":case"kln":case"kok":case"ksf":case"lrc":case"lu":case"luo":case"luy":case"mer":case"mfe":case"mgh":case"mua":case"mzn":case"nmg":case"nus":case"qu":case"rn":case"rw":case"sbp":case"twq":case"vai":case"yav":case"yue":case"zgh":case"ak":case"ln":case"mg":case"pa":case"ti":return n===Math.floor(n)&&n>=0&&n<=1?s.One:s.Other;case"am":case"as":case"bn":case"fa":case"gu":case"hi":case"kn":case"mr":case"zu":return 0===r||1===n?s.One:s.Other;case"ar":return 0===n?s.Zero:1===n?s.One:2===n?s.Two:n%100===Math.floor(n%100)&&n%100>=3&&n%100<=10?s.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=99?s.Many:s.Other;case"ast":case"ca":case"de":case"en":case"et":case"fi":case"fy":case"gl":case"it":case"nl":case"sv":case"sw":case"ur":case"yi":return 1===r&&0===i?s.One:s.Other;case"be":return n%10===1&&n%100!==11?s.One:n%10===Math.floor(n%10)&&n%10>=2&&n%10<=4&&!(n%100>=12&&n%100<=14)?s.Few:n%10===0||n%10===Math.floor(n%10)&&n%10>=5&&n%10<=9||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=14?s.Many:s.Other;case"br":return n%10===1&&n%100!==11&&n%100!==71&&n%100!==91?s.One:n%10===2&&n%100!==12&&n%100!==72&&n%100!==92?s.Two:n%10===Math.floor(n%10)&&(n%10>=3&&n%10<=4||n%10===9)&&!(n%100>=10&&n%100<=19||n%100>=70&&n%100<=79||n%100>=90&&n%100<=99)?s.Few:0!==n&&n%1e6===0?s.Many:s.Other;case"bs":case"hr":case"sr":return 0===i&&r%10===1&&r%100!==11||a%10===1&&a%100!==11?s.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)||a%10===Math.floor(a%10)&&a%10>=2&&a%10<=4&&!(a%100>=12&&a%100<=14)?s.Few:s.Other;case"cs":case"sk":return 1===r&&0===i?s.One:r===Math.floor(r)&&r>=2&&r<=4&&0===i?s.Few:0!==i?s.Many:s.Other;case"cy":return 0===n?s.Zero:1===n?s.One:2===n?s.Two:3===n?s.Few:6===n?s.Many:s.Other;case"da":return 1===n||0!==u&&(0===r||1===r)?s.One:s.Other;case"dsb":case"hsb":return 0===i&&r%100===1||a%100===1?s.One:0===i&&r%100===2||a%100===2?s.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||a%100===Math.floor(a%100)&&a%100>=3&&a%100<=4?s.Few:s.Other;case"ff":case"fr":case"hy":case"kab":return 0===r||1===r?s.One:s.Other;case"fil":return 0===i&&(1===r||2===r||3===r)||0===i&&r%10!==4&&r%10!==6&&r%10!==9||0!==i&&a%10!==4&&a%10!==6&&a%10!==9?s.One:s.Other;case"ga":return 1===n?s.One:2===n?s.Two:n===Math.floor(n)&&n>=3&&n<=6?s.Few:n===Math.floor(n)&&n>=7&&n<=10?s.Many:s.Other;case"gd":return 1===n||11===n?s.One:2===n||12===n?s.Two:n===Math.floor(n)&&(n>=3&&n<=10||n>=13&&n<=19)?s.Few:s.Other;case"gv":return 0===i&&r%10===1?s.One:0===i&&r%10===2?s.Two:0!==i||r%100!==0&&r%100!==20&&r%100!==40&&r%100!==60&&r%100!==80?0!==i?s.Many:s.Other:s.Few;case"he":return 1===r&&0===i?s.One:2===r&&0===i?s.Two:0!==i||n>=0&&n<=10||n%10!==0?s.Other:s.Many;case"is":return 0===u&&r%10===1&&r%100!==11||0!==u?s.One:s.Other;case"ksh":return 0===n?s.Zero:1===n?s.One:s.Other;case"kw":case"naq":case"se":case"smn":return 1===n?s.One:2===n?s.Two:s.Other;case"lag":return 0===n?s.Zero:0!==r&&1!==r||0===n?s.Other:s.One;case"lt":return n%10!==1||n%100>=11&&n%100<=19?n%10===Math.floor(n%10)&&n%10>=2&&n%10<=9&&!(n%100>=11&&n%100<=19)?s.Few:0!==a?s.Many:s.Other:s.One;case"lv":case"prg":return n%10===0||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19||2===i&&a%100===Math.floor(a%100)&&a%100>=11&&a%100<=19?s.Zero:n%10===1&&n%100!==11||2===i&&a%10===1&&a%100!==11||2!==i&&a%10===1?s.One:s.Other;case"mk":return 0===i&&r%10===1||a%10===1?s.One:s.Other;case"mt":return 1===n?s.One:0===n||n%100===Math.floor(n%100)&&n%100>=2&&n%100<=10?s.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19?s.Many:s.Other;case"pl":return 1===r&&0===i?s.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?s.Few:0===i&&1!==r&&r%10===Math.floor(r%10)&&r%10>=0&&r%10<=1||0===i&&r%10===Math.floor(r%10)&&r%10>=5&&r%10<=9||0===i&&r%100===Math.floor(r%100)&&r%100>=12&&r%100<=14?s.Many:s.Other;case"pt":return n===Math.floor(n)&&n>=0&&n<=2&&2!==n?s.One:s.Other;case"ro":return 1===r&&0===i?s.One:0!==i||0===n||1!==n&&n%100===Math.floor(n%100)&&n%100>=1&&n%100<=19?s.Few:s.Other;case"ru":case"uk":return 0===i&&r%10===1&&r%100!==11?s.One:0===i&&r%10===Math.floor(r%10)&&r%10>=2&&r%10<=4&&!(r%100>=12&&r%100<=14)?s.Few:0===i&&r%10===0||0===i&&r%10===Math.floor(r%10)&&r%10>=5&&r%10<=9||0===i&&r%100===Math.floor(r%100)&&r%100>=11&&r%100<=14?s.Many:s.Other;case"shi":return 0===r||1===n?s.One:n===Math.floor(n)&&n>=2&&n<=10?s.Few:s.Other;case"si":return 0===n||1===n||0===r&&1===a?s.One:s.Other;case"sl":return 0===i&&r%100===1?s.One:0===i&&r%100===2?s.Two:0===i&&r%100===Math.floor(r%100)&&r%100>=3&&r%100<=4||0!==i?s.Few:s.Other;case"tzm":return n===Math.floor(n)&&n>=0&&n<=1||n===Math.floor(n)&&n>=11&&n<=99?s.One:s.Other;default:return s.Other}}var o=n(1);n.d(t,"b",function(){return i}),t.a=getPluralCategory,n.d(t,"c",function(){return a});var r=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},i=function(){function NgLocalization(){}return NgLocalization.prototype.getPluralCategory=function(e){},NgLocalization}(),a=function(e){function NgLocaleLocalization(t){e.call(this),this._locale=t}return r(NgLocaleLocalization,e),NgLocaleLocalization.prototype.getPluralCategory=function(e){var t=getPluralCase(this._locale,e);switch(t){case s.Zero:return"zero";case s.One:return"one";case s.Two:return"two";case s.Few:return"few";case s.Many:return"many";default:return"other"}},NgLocaleLocalization.decorators=[{type:o.Injectable}],NgLocaleLocalization.ctorParameters=function(){return[{type:void 0,decorators:[{type:o.Inject,args:[o.LOCALE_ID]}]}]},NgLocaleLocalization}(i),s={};s.Zero=0,s.One=1,s.Two=2,s.Few=3,s.Many=4,s.Other=5,s[s.Zero]="Zero",s[s.One]="One",s[s.Two]="Two",s[s.Few]="Few",s[s.Many]="Many",s[s.Other]="Other"},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r}),n.d(t,"b",function(){return i});var r=function(){function LocationStrategy(){}return LocationStrategy.prototype.path=function(e){},LocationStrategy.prototype.prepareExternalUrl=function(e){},LocationStrategy.prototype.pushState=function(e,t,n,o){},LocationStrategy.prototype.replaceState=function(e,t,n,o){},LocationStrategy.prototype.forward=function(){},LocationStrategy.prototype.back=function(){},LocationStrategy.prototype.onPopState=function(e){},LocationStrategy.prototype.getBaseHref=function(){},LocationStrategy}(),i=new o.OpaqueToken("appBaseHref")},function(e,t,n){"use strict";var o=(n(633),n(48),n(129),n(72),n(14),n(615),n(239),n(241),n(240),n(71),n(242),n(243),n(251),n(361),n(622)),r=(n(88),n(250));n(124),n(128),n(127),n(47),n(75),n(356),n(123),n(125),n(106),n(126),n(86),n(171),n(73),n(630),n(249),n(40),n(172),n(173),n(174),n(130),n(165),n(32);n.d(t,"b",function(){return o.a}),n.d(t,"a",function(){return r.a})},function(e,t,n){"use strict";function _parseAnimationDeclarationStates(e,t,n){var o=_normalizeStyleMetadata(e.styles,{},t,n,!1),r=new c.b(o),i=e.stateNameExpr.split(/\s*,\s*/);return i.map(function(e){return new c.c(e,r)})}function _parseAnimationStateTransition(e,t,n,o){var r=new d.a,i=[],a=e.stateChangeExpr.split(/\s*,\s*/);a.forEach(function(e){i.push.apply(i,_parseAnimationTransitionExpr(e,o))});var s=_normalizeAnimationEntry(e.steps),u=_normalizeStyleSteps(s,t,n,o),l=_parseTransitionAnimation(u,0,r,t,o);0==o.length&&_fillAnimationAstStartingKeyframes(l,r,o);var p=l instanceof c.d?l:new c.e([l]);return new c.f(i,p)}function _parseAnimationAlias(e,t){switch(e){case":enter":return"void => *";case":leave":return"* => void";default:return t.push(new b('the transition alias value "'+e+'" is not supported')),"* => *"}}function _parseAnimationTransitionExpr(e,t){var o=[];":"==e[0]&&(e=_parseAnimationAlias(e,t));var r=e.match(/^(\*|[-\w]+)\s*(<?[=-]>)\s*(\*|[-\w]+)$/);if(!n.i(i.f)(r)||r.length<4)return t.push(new b("the provided "+e+" is not of a supported format")),o;var a=r[1],s=r[2],l=r[3];o.push(new c.g(a,l));var d=a==u.D&&l==u.D;return"<"!=s[0]||d||o.push(new c.g(l,a)),o}function _normalizeAnimationEntry(e){return Array.isArray(e)?new o.e(e):e}function _normalizeStyleMetadata(e,t,n,o,r){var i=e.offset;(i>1||i<0)&&o.push(new b("Offset values for animations must be between 0 and 1"));var a=[];return e.styles.forEach(function(e){if("string"==typeof e)r?a.push.apply(a,_resolveStylesFromState(e,t,o)):o.push(new b("State based animations cannot contain references to other states"));else{var i=e,s={};Object.keys(i).forEach(function(e){var t=n.normalizeAnimationStyleProperty(e),r=n.normalizeAnimationStyleValue(t,e,i[e]),a=r.error;a&&o.push(new b(a)),s[t]=r.value}),a.push(s)}}),a}function _normalizeStyleSteps(e,t,n,r){var i=_normalizeStyleStepEntry(e,t,n,r);return e instanceof o.f?new o.f(i):new o.e(i)}function _mergeAnimationStyles(e,t){if("object"==typeof t&&null!==t&&e.length>0){var n=e.length-1,o=e[n];if("object"==typeof o&&null!==o)return void(e[n]=r.b.merge(o,t))}e.push(t)}function _normalizeStyleStepEntry(e,t,r,a){var s;if(!(e instanceof o.g))return[e];s=e.steps;var u,l=[];return s.forEach(function(e){if(e instanceof o.h)n.i(i.f)(u)||(u=[]),_normalizeStyleMetadata(e,t,r,a,!0).forEach(function(e){_mergeAnimationStyles(u,e)});else{if(n.i(i.f)(u)&&(l.push(new o.h(0,u)),u=null),e instanceof o.i){var s=e.styles;s instanceof o.h?s.styles=_normalizeStyleMetadata(s,t,r,a,!0):s instanceof o.j&&s.steps.forEach(function(e){e.styles=_normalizeStyleMetadata(e,t,r,a,!0)})}else if(e instanceof o.g){var c=_normalizeStyleStepEntry(e,t,r,a);e=e instanceof o.f?new o.f(c):new o.e(c)}l.push(e)}}),n.i(i.f)(u)&&l.push(new o.h(0,u)),l}function _resolveStylesFromState(e,t,o){var r=[];if(":"!=e[0])o.push(new b('Animation states via styles must be prefixed with a ":"'));else{var a=e.substring(1),s=t[a];n.i(i.f)(s)?s.styles.forEach(function(e){"object"==typeof e&&null!==e&&r.push(e)}):o.push(new b('Unable to apply styles due to missing a state: "'+a+'"'))}return r}function _parseAnimationKeyframes(e,t,o,r,a){var s=e.steps.length,l=0;e.steps.forEach(function(e){return l+=n.i(i.f)(e.offset)?1:0}),l>0&&l<s&&(a.push(new b("Not all style() entries contain an offset for the provided keyframe()")),l=s);var d=s-1,p=0==l?1/d:0,g=[],f=0,y=!1,v=0;e.steps.forEach(function(e){var t=e.offset,o={};e.styles.forEach(function(e){Object.keys(e).forEach(function(t){"offset"!=t&&(o[t]=e[t])})}),n.i(i.f)(t)?y=y||t<v:t=f==d?m:p*f,g.push([t,o]),v=t,f++}),y&&g.sort(function(e,t){return e[0]<=t[0]?-1:1});var _=g[0];_[0]!=h&&g.splice(0,0,_=[h,{}]);var E=_[1];d=g.length-1;var T=g[d];T[0]!=m&&(g.push(T=[m,{}]),d++);for(var S=T[1],A=1;A<=d;A++){var M=g[A],C=M[1];Object.keys(C).forEach(function(e){n.i(i.f)(E[e])||(E[e]=u.E)})}for(var k=function(e){var t=g[e],o=t[1];Object.keys(o).forEach(function(e){n.i(i.f)(S[e])||(S[e]=o[e])})},A=d-1;A>=0;A--)k(A);return g.map(function(e){return new c.h(e[0],new c.b([e[1]]))})}function _parseTransitionAnimation(e,t,r,a,s){var u,l=0,d=t;if(e instanceof o.g){var p,g=0,f=[],h=e instanceof o.f;if(e.steps.forEach(function(e){var u=h?d:t;if(e instanceof o.h)return e.styles.forEach(function(e){var t=e;Object.keys(t).forEach(function(e){r.insertAtTime(e,u,t[e])})}),void(p=e.styles);var m=_parseTransitionAnimation(e,u,r,a,s);if(n.i(i.f)(p)){if(e instanceof o.g){var y=new c.b(p);f.push(new c.i(y,[],0,0,""))}else{var b=m;(_=b.startingStyles.styles).push.apply(_,p)}p=null}var v=m.playTime;t+=v,l+=v,g=Math.max(v,g),f.push(m);var _}),n.i(i.f)(p)){var y=new c.b(p);f.push(new c.i(y,[],0,0,""))}h?(u=new c.j(f),l=g,t=d+l):u=new c.e(f)}else if(e instanceof o.i){var b=_parseTimeExpression(e.timings,s),v=e.styles,_=void 0;if(v instanceof o.j)_=_parseAnimationKeyframes(v,t,r,a,s);else{var E=v,T=m,S=new c.b(E.styles),A=new c.h(T,S);_=[A]}u=new c.i(new c.b([]),_,b.duration,b.delay,b.easing),l=b.duration+b.delay,t+=l,_.forEach(function(e){return e.styles.styles.forEach(function(e){return Object.keys(e).forEach(function(n){r.insertAtTime(n,t,e[n])})})})}else u=new c.i(null,[],0,0,"");return u.playTime=l,u.startTime=d,u}function _fillAnimationAstStartingKeyframes(e,t,n){if(e instanceof c.i&&e.keyframes.length>0){var o=e.keyframes;if(1==o.length){var r=o[0],i=_createStartKeyframeFromEndKeyframe(r,e.startTime,e.playTime,t,n);e.keyframes=[i,r]}}else e instanceof c.d&&e.steps.forEach(function(e){return _fillAnimationAstStartingKeyframes(e,t,n)})}function _parseTimeExpression(e,t){var o,r=/^([\.\d]+)(m?s)(?:\s+([\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?/i,a=0,s=null;if("string"==typeof e){var u=e.match(r);if(null===u)return t.push(new b('The provided timing value "'+e+'" is invalid.')),new E(0,0,null);var l=parseFloat(u[1]),c=u[2];"s"==c&&(l*=y),o=Math.floor(l);var d=u[3],p=u[4];if(n.i(i.f)(d)){var g=parseFloat(d);n.i(i.f)(p)&&"s"==p&&(g*=y),a=Math.floor(g)}var f=u[5];n.i(i.g)(f)||(s=f)}else o=e;return new E(o,a,s)}function _createStartKeyframeFromEndKeyframe(e,t,o,r,a){var s={},l=t+o;return e.styles.styles.forEach(function(e){Object.keys(e).forEach(function(o){var c=e[o];if("offset"!=o){var d,p,g,f=r.indexOfAtOrBeforeTime(o,t);n.i(i.f)(f)?(d=r.getByIndex(o,f),g=d.value,p=r.getByIndex(o,f+1)):g=u.E,n.i(i.f)(p)&&!p.matches(l,c)&&a.push(new b('The animated CSS property "'+o+'" unexpectedly changes between steps "'+d.time+'ms" and "'+l+'ms" at "'+p.time+'ms"')),s[o]=g}})}),new c.h(h,new c.b([s]))}var o=n(14),r=n(85),i=n(7),a=n(20),s=n(40),u=n(17),l=n(75),c=n(348),d=n(614);n.d(t,"a",function(){return _});var p=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},g=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},f=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},h=0,m=1,y=1e3,b=function(e){function AnimationParseError(t){e.call(this,null,t)}return p(AnimationParseError,e),AnimationParseError.prototype.toString=function(){return""+this.msg},AnimationParseError}(s.a),v=function(){function AnimationEntryParseResult(e,t){this.ast=e,this.errors=t}return AnimationEntryParseResult}(),_=function(){function AnimationParser(e){this._schema=e}return AnimationParser.prototype.parseComponent=function(e){var t=this,r=[],i=n.i(o.c)(e.type),a=new Set,s=e.template.animations.map(function(e){var n=t.parseEntry(e),o=n.ast,s=o.name;if(a.has(s)?n.errors.push(new b('The animation trigger "'+s+'" has already been registered for the '+i+" component")):a.add(s),n.errors.length>0){var u='- Unable to parse the animation sequence for "'+s+'" on the '+i+" component due to the following errors:";n.errors.forEach(function(e){u+="\n-- "+e.msg}),r.push(u)}return o});if(r.length>0){var u=r.join("\n");throw new Error("Animation parse errors:\n"+u)}return s},AnimationParser.prototype.parseEntry=function(e){var t=this,n=[],r={},i=[],a=[];e.definitions.forEach(function(e){e instanceof o.d?_parseAnimationDeclarationStates(e,t._schema,n).forEach(function(e){a.push(e),r[e.stateName]=e.styles}):i.push(e)});var s=i.map(function(e){return _parseAnimationStateTransition(e,r,t._schema,n)}),u=new c.a(e.name,a,s);return new v(u,n)},AnimationParser=g([n.i(a.a)(),f("design:paramtypes",[l.a])],AnimationParser)}(),E=function(){function _AnimationTimings(e,t,n){this.duration=e,this.delay=t,this.easing=n}return _AnimationTimings}()},function(e,t,n){"use strict";function isWhitespace(e){return e>=r&&e<=l||e==ne}function isDigit(e){return D<=e&&e<=w}function isAsciiLetter(e){return e>=j&&e<=J||e>=I&&e<=P}function isAsciiHexDigit(e){return e>=j&&e<=Y||e>=I&&e<=B||isDigit(e)}n.d(t,"a",function(){return o}),n.d(t,"Y",function(){return r}),n.d(t,"S",function(){return i}),n.d(t,"_0",function(){return a}),n.d(t,"U",function(){return s}),n.d(t,"W",function(){return u}),n.d(t,"b",function(){return l}),n.d(t,"A",function(){return c}),n.d(t,"o",function(){return d}),n.d(t,"p",function(){return p}),n.d(t,"M",function(){return g}),n.d(t,"u",function(){return f}),n.d(t,"B",function(){return h}),n.d(t,"n",function(){return m}),n.d(t,"e",function(){return y}),n.d(t,"f",function(){return b}),n.d(t,"s",function(){return v}),n.d(t,"q",function(){return _}),n.d(t,"k",function(){return E}),n.d(t,"r",function(){return T}),n.d(t,"d",function(){return S}),n.d(t,"t",function(){return A}),n.d(t,"l",function(){return M}),n.d(t,"m",function(){return C}),n.d(t,"x",function(){return k}),n.d(t,"z",function(){return R}),n.d(t,"y",function(){return N}),n.d(t,"w",function(){return O}),n.d(t,"_3",function(){return D}),n.d(t,"_4",function(){return w}),n.d(t,"J",function(){return I}),n.d(t,"P",function(){return x}),n.d(t,"_2",function(){return L}),n.d(t,"K",function(){return P}),n.d(t,"i",function(){return H}),n.d(t,"F",function(){return F}),n.d(t,"j",function(){return U}),n.d(t,"v",function(){return V}),n.d(t,"L",function(){return W}),n.d(t,"H",function(){return j}),n.d(t,"O",function(){return $}),n.d(t,"T",function(){return Y}),n.d(t,"R",function(){return K}),n.d(t,"V",function(){return G}),n.d(t,"X",function(){return z}),n.d(t,"G",function(){return q}),n.d(t,"Z",function(){return Q}),n.d(t,"_1",function(){return X}),n.d(t,"I",function(){return J}),n.d(t,"g",function(){return Z}),n.d(t,"C",function(){return ee}),n.d(t,"h",function(){return te}),n.d(t,"D",function(){return ne}),n.d(t,"Q",function(){return oe}),t.E=isWhitespace,t.c=isDigit,t.N=isAsciiLetter,t._5=isAsciiHexDigit;var o=0,r=9,i=10,a=11,s=12,u=13,l=32,c=33,d=34,p=35,g=36,f=37,h=38,m=39,y=40,b=41,v=42,_=43,E=44,T=45,S=46,A=47,M=58,C=59,k=60,R=61,N=62,O=63,D=48,w=57,I=65,x=69,B=70,L=88,P=90,H=91,F=92,U=93,V=94,W=95,j=97,$=101,Y=102,K=110,G=114,z=116,q=117,Q=118,X=120,J=122,Z=123,ee=124,te=125,ne=160,oe=96},function(e,t,n){"use strict";n.d(t,"a",function(){return o}),n.d(t,"f",function(){return r}),n.d(t,"d",function(){return i}),n.d(t,"c",function(){return a}),n.d(t,"b",function(){return s}),n.d(t,"g",function(){return u}),n.d(t,"e",function(){return l});var o=function(){function Message(e,t,n,o,r){this.nodes=e,this.placeholders=t,this.placeholderToMessage=n,this.meaning=o,this.description=r}return Message}(),r=function(){function Text(e,t){this.value=e,this.sourceSpan=t}return Text.prototype.visit=function(e,t){return e.visitText(this,t)},Text}(),i=function(){function Container(e,t){this.children=e,this.sourceSpan=t}return Container.prototype.visit=function(e,t){return e.visitContainer(this,t)},Container}(),a=function(){function Icu(e,t,n,o){this.expression=e,this.type=t,this.cases=n,this.sourceSpan=o}return Icu.prototype.visit=function(e,t){return e.visitIcu(this,t)},Icu}(),s=function(){function TagPlaceholder(e,t,n,o,r,i,a){this.tag=e,this.attrs=t,this.startName=n,
this.closeName=o,this.children=r,this.isVoid=i,this.sourceSpan=a}return TagPlaceholder.prototype.visit=function(e,t){return e.visitTagPlaceholder(this,t)},TagPlaceholder}(),u=function(){function Placeholder(e,t,n){this.value=e,this.name=t,this.sourceSpan=n}return Placeholder.prototype.visit=function(e,t){return e.visitPlaceholder(this,t)},Placeholder}(),l=function(){function IcuPlaceholder(e,t,n){this.value=e,this.name=t,this.sourceSpan=n}return IcuPlaceholder.prototype.visit=function(e,t){return e.visitIcuPlaceholder(this,t)},IcuPlaceholder}()},function(e,t,n){"use strict";var o=n(47),r=n(107),i=n(355),a=n(358),s=n(245),u=n(360),l=n(621);n.d(t,"a",function(){return c});var c=function(){function I18NHtmlParser(e,t,n){this._htmlParser=e,this._translations=t,this._translationsFormat=n}return I18NHtmlParser.prototype.parse=function(e,t,a,s){void 0===a&&(a=!1),void 0===s&&(s=o.a);var u=this._htmlParser.parse(e,t,a,s);if(!this._translations||""===this._translations)return u;if(u.errors.length)return new r.a(u.rootNodes,u.errors);var c=this._createSerializer(),d=l.a.load(this._translations,t,c);return n.i(i.a)(u.rootNodes,d,s,[],{})},I18NHtmlParser.prototype._createSerializer=function(){var e=(this._translationsFormat||"xlf").toLowerCase();switch(e){case"xmb":return new s.c;case"xtb":return new u.a;case"xliff":case"xlf":default:return new a.a}},I18NHtmlParser}()},function(e,t,n){"use strict";var o=n(40);n.d(t,"a",function(){return i});var r=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},i=function(e){function I18nError(t,n){e.call(this,t,n)}return r(I18nError,e),I18nError}(o.a)},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o=function(){function Serializer(){}return Serializer.prototype.write=function(e){},Serializer.prototype.load=function(e,t){},Serializer.prototype.digest=function(e){},Serializer.prototype.createNameMapper=function(e){return null},Serializer}()},function(e,t,n){"use strict";var o=n(14),r=n(46),i=n(7),a=n(19),s=n(20),u=n(248),l=n(10),c=n(363),d=n(40),p=n(17),g=n(364);n.d(t,"a",function(){return b});var f=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},h=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},m=function(){function ComponentFactoryDependency(e,t){this.comp=e,this.placeholder=t}return ComponentFactoryDependency}(),y=function(){function NgModuleCompileResult(e,t,n){this.statements=e,this.ngModuleFactoryVar=t,this.dependencies=n}return NgModuleCompileResult}(),b=function(){function NgModuleCompiler(){}return NgModuleCompiler.prototype.compile=function(e,t){var r=n.i(o.m)(e.type),s=n.i(i.f)(r)?"in NgModule "+n.i(o.c)(e.type)+" in "+r:"in NgModule "+n.i(o.c)(e.type),u=new d.b("",s),c=new d.d(new d.c(u,null,null,null),new d.c(u,null,null,null)),p=[],f=[],h=e.transitiveModule.entryComponents.map(function(t){var n={reference:null};return e.bootstrapComponents.some(function(e){return e.reference===t.reference})&&f.push(n),p.push(new m(t,n)),n}),b=new v(e,h,f,c),_=new g.c(e,t,c);_.parse().forEach(function(e){return b.addProvider(e)});var E=b.build(),T=n.i(o.c)(e.type)+"NgFactory",S=l.g(T).set(l.d(n.i(a.e)(a.b.NgModuleFactory)).instantiate([l.g(E.name),l.d(e.type)],l.B(n.i(a.e)(a.b.NgModuleFactory),[l.B(e.type)],[l.J.Const]))).toDeclStmt(null,[l.b.Final]),A=[E,S];if(e.id){var M=l.d(n.i(a.e)(a.b.RegisterModuleFactoryFn)).callFn([l.f(e.id),l.g(T)]).toStmt();A.push(M)}return new y(A,T,p)},NgModuleCompiler=f([n.i(s.a)(),h("design:paramtypes",[])],NgModuleCompiler)}(),v=function(){function _InjectorBuilder(e,t,n,o){this._ngModuleMeta=e,this._entryComponentFactories=t,this._bootstrapComponentFactories=n,this._sourceSpan=o,this.fields=[],this.getters=[],this.methods=[],this.ctorStmts=[],this._tokens=[],this._instances=new Map,this._createStmts=[],this._destroyStmts=[]}return _InjectorBuilder.prototype.addProvider=function(e){var t=this,r=e.providers.map(function(e){return t._getProviderValue(e)}),i="_"+n.i(o.b)(e.token)+"_"+this._instances.size,a=this._createProviderProperty(i,e,r,e.multiProvider,e.eager);e.lifecycleHooks.indexOf(p.H.OnDestroy)!==-1&&this._destroyStmts.push(a.callMethod("ngOnDestroy",[]).toStmt()),this._tokens.push(e.token),this._instances.set(n.i(o.a)(e.token),a)},_InjectorBuilder.prototype.build=function(){var e=this,t=this._tokens.map(function(t){var i=e._instances.get(n.i(o.a)(t));return new l.e(E.token.identical(n.i(r.c)(t)),[new l.t(i)])}),i=[new l.z("createInternal",[],this._createStmts.concat(new l.t(this._instances.get(this._ngModuleMeta.type.reference))),l.B(this._ngModuleMeta.type)),new l.z("getInternal",[new l.r(E.token.name,l.h),new l.r(E.notFoundResult.name,l.h)],t.concat([new l.t(E.notFoundResult)]),l.h),new l.z("destroyInternal",[],this._destroyStmts)],s=[l.g(_.parent.name),l.n(this._entryComponentFactories.map(function(e){return l.d(e)})),l.n(this._bootstrapComponentFactories.map(function(e){return l.d(e)}))],c=n.i(o.c)(this._ngModuleMeta.type)+"Injector";return n.i(u.a)({name:c,ctorParams:[new l.r(_.parent.name,l.B(n.i(a.e)(a.b.Injector)))],parent:l.d(n.i(a.e)(a.b.NgModuleInjector),[l.B(this._ngModuleMeta.type)]),parentArgs:s,builders:[{methods:i},this]})},_InjectorBuilder.prototype._getProviderValue=function(e){var t,o=this;if(n.i(i.f)(e.useExisting))t=this._getDependency({token:e.useExisting});else if(n.i(i.f)(e.useFactory)){var r=e.deps||e.useFactory.diDeps,a=r.map(function(e){return o._getDependency(e)});t=l.d(e.useFactory).callFn(a)}else if(n.i(i.f)(e.useClass)){var r=e.deps||e.useClass.diDeps,a=r.map(function(e){return o._getDependency(e)});t=l.d(e.useClass).instantiate(a,l.B(e.useClass))}else t=n.i(c.a)(e.useValue);return t},_InjectorBuilder.prototype._createProviderProperty=function(e,t,n,o,r){var i,a;if(o?(i=l.n(n),a=new l.u(l.h)):(i=n[0],a=n[0].type),a||(a=l.h),r)this.fields.push(new l.a(e,a)),this._createStmts.push(l.c.prop(e).set(i).toStmt());else{var s="_"+e;this.fields.push(new l.a(s,a));var u=[new l.e(l.c.prop(s).isBlank(),[l.c.prop(s).set(i).toStmt()]),new l.t(l.c.prop(s))];this.getters.push(new l.K(e,u,a))}return l.c.prop(e)},_InjectorBuilder.prototype._getDependency=function(e){var t=null;if(e.isValue&&(t=l.f(e.value)),e.isSkipSelf||(!e.token||n.i(o.a)(e.token)!==n.i(a.a)(a.b.Injector)&&n.i(o.a)(e.token)!==n.i(a.a)(a.b.ComponentFactoryResolver)||(t=l.c),t||(t=this._instances.get(n.i(o.a)(e.token)))),!t){var i=[n.i(r.c)(e.token)];e.isOptional&&i.push(l.k),t=_.parent.callMethod("get",i)}return t},_InjectorBuilder}(),_=function(){function InjectorProps(){}return InjectorProps.parent=l.c.prop("parent"),InjectorProps}(),E=function(){function InjectMethodVars(){}return InjectMethodVars.token=l.g("token"),InjectMethodVars.notFoundResult=l.g("notFoundResult"),InjectMethodVars}()},function(e,t,n){"use strict";function _isPixelDimensionStyle(e){switch(e){case"width":case"height":case"minWidth":case"minHeight":case"maxWidth":case"maxHeight":case"left":case"top":case"bottom":case"right":case"fontSize":case"outlineWidth":case"outlineOffset":case"paddingTop":case"paddingLeft":case"paddingBottom":case"paddingRight":case"marginTop":case"marginLeft":case"marginBottom":case"marginRight":case"borderRadius":case"borderWidth":case"borderTopWidth":case"borderLeftWidth":case"borderRightWidth":case"borderBottomWidth":case"textIndent":return!0;default:return!1}}var o=n(1),r=n(20),i=n(32),a=n(631),s=n(75);n.d(t,"a",function(){return y});var u=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},l=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},d="boolean",p="number",g="string",f="object",h=["[Element]|textContent,%classList,className,id,innerHTML,*beforecopy,*beforecut,*beforepaste,*copy,*cut,*paste,*search,*selectstart,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerHTML,#scrollLeft,#scrollTop","[HTMLElement]^[Element]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*beforecopy,*beforecut,*beforepaste,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*message,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*paste,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*search,*seeked,*seeking,*select,*selectstart,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate","abbr,address,article,aside,b,bdi,bdo,cite,code,dd,dfn,dt,em,figcaption,figure,footer,header,i,kbd,main,mark,nav,noscript,rb,rp,rt,rtc,ruby,s,samp,section,small,strong,sub,sup,u,var,wbr^[HTMLElement]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*beforecopy,*beforecut,*beforepaste,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*message,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*paste,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*search,*seeked,*seeking,*select,*selectstart,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate","media^[HTMLElement]|!autoplay,!controls,%crossOrigin,#currentTime,!defaultMuted,#defaultPlaybackRate,!disableRemotePlayback,!loop,!muted,*encrypted,#playbackRate,preload,src,%srcObject,#volume",":svg:^[HTMLElement]|*abort,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,%style,#tabIndex",":svg:graphics^:svg:|",":svg:animation^:svg:|*begin,*end,*repeat",":svg:geometry^:svg:|",":svg:componentTransferFunction^:svg:|",":svg:gradient^:svg:|",":svg:textContent^:svg:graphics|",":svg:textPositioning^:svg:textContent|","a^[HTMLElement]|charset,coords,download,hash,host,hostname,href,hreflang,name,password,pathname,ping,port,protocol,referrerPolicy,rel,rev,search,shape,target,text,type,username","area^[HTMLElement]|alt,coords,hash,host,hostname,href,!noHref,password,pathname,ping,port,protocol,referrerPolicy,search,shape,target,username","audio^media|","br^[HTMLElement]|clear","base^[HTMLElement]|href,target","body^[HTMLElement]|aLink,background,bgColor,link,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,text,vLink","button^[HTMLElement]|!autofocus,!disabled,formAction,formEnctype,formMethod,!formNoValidate,formTarget,name,type,value","canvas^[HTMLElement]|#height,#width","content^[HTMLElement]|select","dl^[HTMLElement]|!compact","datalist^[HTMLElement]|","details^[HTMLElement]|!open","dialog^[HTMLElement]|!open,returnValue","dir^[HTMLElement]|!compact","div^[HTMLElement]|align","embed^[HTMLElement]|align,height,name,src,type,width","fieldset^[HTMLElement]|!disabled,name","font^[HTMLElement]|color,face,size","form^[HTMLElement]|acceptCharset,action,autocomplete,encoding,enctype,method,name,!noValidate,target","frame^[HTMLElement]|frameBorder,longDesc,marginHeight,marginWidth,name,!noResize,scrolling,src","frameset^[HTMLElement]|cols,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,rows","hr^[HTMLElement]|align,color,!noShade,size,width","head^[HTMLElement]|","h1,h2,h3,h4,h5,h6^[HTMLElement]|align","html^[HTMLElement]|version","iframe^[HTMLElement]|align,!allowFullscreen,frameBorder,height,longDesc,marginHeight,marginWidth,name,referrerPolicy,%sandbox,scrolling,src,srcdoc,width","img^[HTMLElement]|align,alt,border,%crossOrigin,#height,#hspace,!isMap,longDesc,lowsrc,name,referrerPolicy,sizes,src,srcset,useMap,#vspace,#width","input^[HTMLElement]|accept,align,alt,autocapitalize,autocomplete,!autofocus,!checked,!defaultChecked,defaultValue,dirName,!disabled,%files,formAction,formEnctype,formMethod,!formNoValidate,formTarget,#height,!incremental,!indeterminate,max,#maxLength,min,#minLength,!multiple,name,pattern,placeholder,!readOnly,!required,selectionDirection,#selectionEnd,#selectionStart,#size,src,step,type,useMap,value,%valueAsDate,#valueAsNumber,#width","keygen^[HTMLElement]|!autofocus,challenge,!disabled,keytype,name","li^[HTMLElement]|type,#value","label^[HTMLElement]|htmlFor","legend^[HTMLElement]|align","link^[HTMLElement]|as,charset,%crossOrigin,!disabled,href,hreflang,integrity,media,rel,%relList,rev,%sizes,target,type","map^[HTMLElement]|name","marquee^[HTMLElement]|behavior,bgColor,direction,height,#hspace,#loop,#scrollAmount,#scrollDelay,!trueSpeed,#vspace,width","menu^[HTMLElement]|!compact","meta^[HTMLElement]|content,httpEquiv,name,scheme","meter^[HTMLElement]|#high,#low,#max,#min,#optimum,#value","ins,del^[HTMLElement]|cite,dateTime","ol^[HTMLElement]|!compact,!reversed,#start,type","object^[HTMLElement]|align,archive,border,code,codeBase,codeType,data,!declare,height,#hspace,name,standby,type,useMap,#vspace,width","optgroup^[HTMLElement]|!disabled,label","option^[HTMLElement]|!defaultSelected,!disabled,label,!selected,text,value","output^[HTMLElement]|defaultValue,%htmlFor,name,value","p^[HTMLElement]|align","param^[HTMLElement]|name,type,value,valueType","picture^[HTMLElement]|","pre^[HTMLElement]|#width","progress^[HTMLElement]|#max,#value","q,blockquote,cite^[HTMLElement]|","script^[HTMLElement]|!async,charset,%crossOrigin,!defer,event,htmlFor,integrity,src,text,type","select^[HTMLElement]|!autofocus,!disabled,#length,!multiple,name,!required,#selectedIndex,#size,value","shadow^[HTMLElement]|","source^[HTMLElement]|media,sizes,src,srcset,type","span^[HTMLElement]|","style^[HTMLElement]|!disabled,media,type","caption^[HTMLElement]|align","th,td^[HTMLElement]|abbr,align,axis,bgColor,ch,chOff,#colSpan,headers,height,!noWrap,#rowSpan,scope,vAlign,width","col,colgroup^[HTMLElement]|align,ch,chOff,#span,vAlign,width","table^[HTMLElement]|align,bgColor,border,%caption,cellPadding,cellSpacing,frame,rules,summary,%tFoot,%tHead,width","tr^[HTMLElement]|align,bgColor,ch,chOff,vAlign","tfoot,thead,tbody^[HTMLElement]|align,ch,chOff,vAlign","template^[HTMLElement]|","textarea^[HTMLElement]|autocapitalize,!autofocus,#cols,defaultValue,dirName,!disabled,#maxLength,#minLength,name,placeholder,!readOnly,!required,#rows,selectionDirection,#selectionEnd,#selectionStart,value,wrap","title^[HTMLElement]|text","track^[HTMLElement]|!default,kind,label,src,srclang","ul^[HTMLElement]|!compact,type","unknown^[HTMLElement]|","video^media|#height,poster,#width",":svg:a^:svg:graphics|",":svg:animate^:svg:animation|",":svg:animateMotion^:svg:animation|",":svg:animateTransform^:svg:animation|",":svg:circle^:svg:geometry|",":svg:clipPath^:svg:graphics|",":svg:cursor^:svg:|",":svg:defs^:svg:graphics|",":svg:desc^:svg:|",":svg:discard^:svg:|",":svg:ellipse^:svg:geometry|",":svg:feBlend^:svg:|",":svg:feColorMatrix^:svg:|",":svg:feComponentTransfer^:svg:|",":svg:feComposite^:svg:|",":svg:feConvolveMatrix^:svg:|",":svg:feDiffuseLighting^:svg:|",":svg:feDisplacementMap^:svg:|",":svg:feDistantLight^:svg:|",":svg:feDropShadow^:svg:|",":svg:feFlood^:svg:|",":svg:feFuncA^:svg:componentTransferFunction|",":svg:feFuncB^:svg:componentTransferFunction|",":svg:feFuncG^:svg:componentTransferFunction|",":svg:feFuncR^:svg:componentTransferFunction|",":svg:feGaussianBlur^:svg:|",":svg:feImage^:svg:|",":svg:feMerge^:svg:|",":svg:feMergeNode^:svg:|",":svg:feMorphology^:svg:|",":svg:feOffset^:svg:|",":svg:fePointLight^:svg:|",":svg:feSpecularLighting^:svg:|",":svg:feSpotLight^:svg:|",":svg:feTile^:svg:|",":svg:feTurbulence^:svg:|",":svg:filter^:svg:|",":svg:foreignObject^:svg:graphics|",":svg:g^:svg:graphics|",":svg:image^:svg:graphics|",":svg:line^:svg:geometry|",":svg:linearGradient^:svg:gradient|",":svg:mpath^:svg:|",":svg:marker^:svg:|",":svg:mask^:svg:|",":svg:metadata^:svg:|",":svg:path^:svg:geometry|",":svg:pattern^:svg:|",":svg:polygon^:svg:geometry|",":svg:polyline^:svg:geometry|",":svg:radialGradient^:svg:gradient|",":svg:rect^:svg:geometry|",":svg:svg^:svg:graphics|#currentScale,#zoomAndPan",":svg:script^:svg:|type",":svg:set^:svg:animation|",":svg:stop^:svg:|",":svg:style^:svg:|!disabled,media,title,type",":svg:switch^:svg:graphics|",":svg:symbol^:svg:|",":svg:tspan^:svg:textPositioning|",":svg:text^:svg:textPositioning|",":svg:textPath^:svg:textContent|",":svg:title^:svg:|",":svg:use^:svg:graphics|",":svg:view^:svg:|#zoomAndPan","data^[HTMLElement]|value","menuitem^[HTMLElement]|type,label,icon,!disabled,!checked,radiogroup,!default","summary^[HTMLElement]|","time^[HTMLElement]|dateTime"],m={"class":"className","for":"htmlFor",formaction:"formAction",innerHtml:"innerHTML",readonly:"readOnly",tabindex:"tabIndex"},y=function(e){function DomElementSchemaRegistry(){var t=this;e.call(this),this._schema={},h.forEach(function(e){var n={},o=e.split("|"),r=o[0],i=o[1],a=i.split(","),s=r.split("^"),u=s[0],l=s[1];u.split(",").forEach(function(e){return t._schema[e.toLowerCase()]=n});var c=l&&t._schema[l.toLowerCase()];c&&Object.keys(c).forEach(function(e){n[e]=c[e]}),a.forEach(function(e){if(e.length>0)switch(e[0]){case"*":break;case"!":n[e.substring(1)]=d;break;case"#":n[e.substring(1)]=p;break;case"%":n[e.substring(1)]=f;break;default:n[e]=g}})})}return u(DomElementSchemaRegistry,e),DomElementSchemaRegistry.prototype.hasProperty=function(e,t,n){if(n.some(function(e){return e.name===o.NO_ERRORS_SCHEMA.name}))return!0;if(e.indexOf("-")>-1){if("ng-container"===e||"ng-content"===e)return!1;if(n.some(function(e){return e.name===o.CUSTOM_ELEMENTS_SCHEMA.name}))return!0}var r=this._schema[e.toLowerCase()]||this._schema.unknown;return!!r[t]},DomElementSchemaRegistry.prototype.hasElement=function(e,t){if(t.some(function(e){return e.name===o.NO_ERRORS_SCHEMA.name}))return!0;if(e.indexOf("-")>-1){if("ng-container"===e||"ng-content"===e)return!0;if(t.some(function(e){return e.name===o.CUSTOM_ELEMENTS_SCHEMA.name}))return!0}return!!this._schema[e.toLowerCase()]},DomElementSchemaRegistry.prototype.securityContext=function(e,t,n){n&&(t=this.getMappedPropName(t)),e=e.toLowerCase(),t=t.toLowerCase();var r=a.a[e+"|"+t];return r?r:(r=a.a["*|"+t],r?r:o.SecurityContext.NONE)},DomElementSchemaRegistry.prototype.getMappedPropName=function(e){return m[e]||e},DomElementSchemaRegistry.prototype.getDefaultComponentElementName=function(){return"ng-component"},DomElementSchemaRegistry.prototype.validateProperty=function(e){if(e.toLowerCase().startsWith("on")){var t="Binding to event property '"+e+"' is disallowed for security reasons, "+("please use ("+e.slice(2)+")=...")+("\nIf '"+e+"' is a directive input, make sure the directive is imported by the")+" current module.";return{error:!0,msg:t}}return{error:!1}},DomElementSchemaRegistry.prototype.validateAttribute=function(e){if(e.toLowerCase().startsWith("on")){var t="Binding to event attribute '"+e+"' is disallowed for security reasons, "+("please use ("+e.slice(2)+")=...");return{error:!0,msg:t}}return{error:!1}},DomElementSchemaRegistry.prototype.allKnownElementNames=function(){return Object.keys(this._schema)},DomElementSchemaRegistry.prototype.normalizeAnimationStyleProperty=function(e){return n.i(i.h)(e)},DomElementSchemaRegistry.prototype.normalizeAnimationStyleValue=function(e,t,n){var o="",r=n.toString().trim(),i=null;if(_isPixelDimensionStyle(e)&&0!==n&&"0"!==n)if("number"==typeof n)o="px";else{var a=n.match(/^[+-]?[\d\.]+([a-z]*)$/);a&&0==a[1].length&&(i="Please provide a CSS unit value for "+t+":"+n)}return{error:i,value:r+o}},DomElementSchemaRegistry=l([n.i(r.a)(),c("design:paramtypes",[])],DomElementSchemaRegistry)}(s.a)},function(e,t,n){"use strict";var o=n(246);n.d(t,"a",function(){return i}),n.d(t,"b",function(){return a});var r=new RegExp("(\\:not\\()|([-\\w]+)|(?:\\.([-\\w]+))|(?:\\[([-.\\w*]+)(?:=([^\\]]*))?\\])|(\\))|(\\s*,\\s*)","g"),i=function(){function CssSelector(){this.element=null,this.classNames=[],this.attrs=[],this.notSelectors=[]}return CssSelector.parse=function(e){var t,n=[],o=function(e,t){t.notSelectors.length>0&&!t.element&&0==t.classNames.length&&0==t.attrs.length&&(t.element="*"),e.push(t)},i=new CssSelector,a=i,s=!1;for(r.lastIndex=0;t=r.exec(e);){if(t[1]){if(s)throw new Error("Nesting :not is not allowed in a selector");s=!0,a=new CssSelector,i.notSelectors.push(a)}if(t[2]&&a.setElement(t[2]),t[3]&&a.addClassName(t[3]),t[4]&&a.addAttribute(t[4],t[5]),t[6]&&(s=!1,a=i),t[7]){if(s)throw new Error("Multiple selectors in :not are not supported");o(n,i),i=a=new CssSelector}}return o(n,i),n},CssSelector.prototype.isElementSelector=function(){return this.hasElementSelector()&&0==this.classNames.length&&0==this.attrs.length&&0===this.notSelectors.length},CssSelector.prototype.hasElementSelector=function(){return!!this.element},CssSelector.prototype.setElement=function(e){void 0===e&&(e=null),this.element=e},CssSelector.prototype.getMatchingElementTemplate=function(){for(var e=this.element||"div",t=this.classNames.length>0?' class="'+this.classNames.join(" ")+'"':"",r="",i=0;i<this.attrs.length;i+=2){var a=this.attrs[i],s=""!==this.attrs[i+1]?'="'+this.attrs[i+1]+'"':"";r+=" "+a+s}return n.i(o.a)(e).isVoid?"<"+e+t+r+"/>":"<"+e+t+r+"></"+e+">"},CssSelector.prototype.addAttribute=function(e,t){void 0===t&&(t=""),this.attrs.push(e,t&&t.toLowerCase()||"")},CssSelector.prototype.addClassName=function(e){this.classNames.push(e.toLowerCase())},CssSelector.prototype.toString=function(){var e=this.element||"";if(this.classNames&&this.classNames.forEach(function(t){return e+="."+t}),this.attrs)for(var t=0;t<this.attrs.length;t+=2){var n=this.attrs[t],o=this.attrs[t+1];e+="["+n+(o?"="+o:"")+"]"}return this.notSelectors.forEach(function(t){return e+=":not("+t+")"}),e},CssSelector}(),a=function(){function SelectorMatcher(){this._elementMap=new Map,this._elementPartialMap=new Map,this._classMap=new Map,this._classPartialMap=new Map,this._attrValueMap=new Map,this._attrValuePartialMap=new Map,this._listContexts=[]}return SelectorMatcher.createNotMatcher=function(e){var t=new SelectorMatcher;return t.addSelectables(e,null),t},SelectorMatcher.prototype.addSelectables=function(e,t){var n=null;e.length>1&&(n=new s(e),this._listContexts.push(n));for(var o=0;o<e.length;o++)this._addSelectable(e[o],t,n)},SelectorMatcher.prototype._addSelectable=function(e,t,n){var o=this,r=e.element,i=e.classNames,a=e.attrs,s=new u(e,t,n);if(r){var l=0===a.length&&0===i.length;l?this._addTerminal(o._elementMap,r,s):o=this._addPartial(o._elementPartialMap,r)}if(i)for(var c=0;c<i.length;c++){var l=0===a.length&&c===i.length-1,d=i[c];l?this._addTerminal(o._classMap,d,s):o=this._addPartial(o._classPartialMap,d)}if(a)for(var c=0;c<a.length;c+=2){var l=c===a.length-2,p=a[c],g=a[c+1];if(l){var f=o._attrValueMap,h=f.get(p);h||(h=new Map,f.set(p,h)),this._addTerminal(h,g,s)}else{var m=o._attrValuePartialMap,y=m.get(p);y||(y=new Map,m.set(p,y)),o=this._addPartial(y,g)}}},SelectorMatcher.prototype._addTerminal=function(e,t,n){var o=e.get(t);o||(o=[],e.set(t,o)),o.push(n)},SelectorMatcher.prototype._addPartial=function(e,t){var n=e.get(t);return n||(n=new SelectorMatcher,e.set(t,n)),n},SelectorMatcher.prototype.match=function(e,t){for(var n=!1,o=e.element,r=e.classNames,i=e.attrs,a=0;a<this._listContexts.length;a++)this._listContexts[a].alreadyMatched=!1;if(n=this._matchTerminal(this._elementMap,o,e,t)||n,n=this._matchPartial(this._elementPartialMap,o,e,t)||n,r)for(var a=0;a<r.length;a++){var s=r[a];n=this._matchTerminal(this._classMap,s,e,t)||n,n=this._matchPartial(this._classPartialMap,s,e,t)||n}if(i)for(var a=0;a<i.length;a+=2){var u=i[a],l=i[a+1],c=this._attrValueMap.get(u);l&&(n=this._matchTerminal(c,"",e,t)||n),n=this._matchTerminal(c,l,e,t)||n;var d=this._attrValuePartialMap.get(u);l&&(n=this._matchPartial(d,"",e,t)||n),n=this._matchPartial(d,l,e,t)||n}return n},SelectorMatcher.prototype._matchTerminal=function(e,t,n,o){if(!e||"string"!=typeof t)return!1;var r=e.get(t)||[],i=e.get("*");if(i&&(r=r.concat(i)),0===r.length)return!1;for(var a,s=!1,u=0;u<r.length;u++)a=r[u],s=a.finalize(n,o)||s;return s},SelectorMatcher.prototype._matchPartial=function(e,t,n,o){if(!e||"string"!=typeof t)return!1;var r=e.get(t);return!!r&&r.match(n,o)},SelectorMatcher}(),s=function(){function SelectorListContext(e){this.selectors=e,this.alreadyMatched=!1}return SelectorListContext}(),u=function(){function SelectorContext(e,t,n){this.selector=e,this.cbContext=t,this.listContext=n,this.notSelectors=e.notSelectors}return SelectorContext.prototype.finalize=function(e,t){var n=!0;if(this.notSelectors.length>0&&(!this.listContext||!this.listContext.alreadyMatched)){var o=a.createNotMatcher(this.notSelectors);n=!o.match(e,null)}return!n||!t||this.listContext&&this.listContext.alreadyMatched||(this.listContext&&(this.listContext.alreadyMatched=!0),t(this.selector,this.cbContext)),n},SelectorContext}()},function(e,t,n){"use strict";function getStylesVarName(e){var t="styles";return e&&(t+="_"+n.i(r.c)(e.type)),t}var o=n(1),r=n(14),i=n(20),a=n(10),s=n(632),u=n(88);n.d(t,"a",function(){return y});var l=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},c=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},d="%COMP%",p="_nghost-"+d,g="_ngcontent-"+d,f=function(){function StylesCompileDependency(e,t,n,o){this.name=e,this.moduleUrl=t,this.isShimmed=n,this.valuePlaceholder=o}return StylesCompileDependency}(),h=function(){function StylesCompileResult(e,t){this.componentStylesheet=e,this.externalStylesheets=t}return StylesCompileResult}(),m=function(){function CompiledStylesheet(e,t,n,o,r){this.statements=e,this.stylesVar=t,this.dependencies=n,this.isShimmed=o,this.meta=r}return CompiledStylesheet}(),y=function(){function StyleCompiler(e){this._urlResolver=e,this._shadowCss=new s.a}return StyleCompiler.prototype.compileComponent=function(e){var t=this,o=[],i=this._compileStyles(e,new r.k({styles:e.template.styles,styleUrls:e.template.styleUrls,moduleUrl:n.i(r.m)(e.type)}),!0);return e.template.externalStylesheets.forEach(function(n){var r=t._compileStyles(e,n,!1);o.push(r)}),new h(i,o)},StyleCompiler.prototype._compileStyles=function(e,t,n){for(var r=this,i=e.template.encapsulation===o.ViewEncapsulation.Emulated,s=t.styles.map(function(e){return a.f(r._shimIfNeeded(e,i))}),u=[],l=0;l<t.styleUrls.length;l++){var c={reference:null};u.push(new f(getStylesVarName(null),t.styleUrls[l],i,c)),s.push(new a.Q(c))}var d=getStylesVarName(n?e:null),p=a.g(d).set(a.n(s,new a.u(a.h,[a.J.Const]))).toDeclStmt(null,[a.b.Final]);return new m([p],d,u,i,t)},StyleCompiler.prototype._shimIfNeeded=function(e,t){return t?this._shadowCss.shimCssText(e,g,p):e},StyleCompiler=l([n.i(i.a)(),c("design:paramtypes",[u.a])],StyleCompiler)}()},function(e,t,n){"use strict";var o=n(46),r=n(19),i=n(10);n.d(t,"f",function(){return a}),n.d(t,"d",function(){return s}),n.d(t,"g",function(){return u}),n.d(t,"e",function(){return l}),n.d(t,"c",function(){return c}),n.d(t,"a",function(){return d}),n.d(t,"b",function(){return p});var a=function(){function ViewTypeEnum(){}return ViewTypeEnum.fromValue=function(e){return n.i(o.b)(r.b.ViewType,e)},ViewTypeEnum}(),s=function(){function ViewEncapsulationEnum(){}return ViewEncapsulationEnum.fromValue=function(e){return n.i(o.b)(r.b.ViewEncapsulation,e)},ViewEncapsulationEnum}(),u=function(){function ChangeDetectorStatusEnum(){}return ChangeDetectorStatusEnum.fromValue=function(e){return n.i(o.b)(r.b.ChangeDetectorStatus,e)},ChangeDetectorStatusEnum}(),l=function(){function ViewConstructorVars(){}return ViewConstructorVars.viewUtils=i.g("viewUtils"),ViewConstructorVars.parentView=i.g("parentView"),ViewConstructorVars.parentIndex=i.g("parentIndex"),ViewConstructorVars.parentElement=i.g("parentElement"),ViewConstructorVars}(),c=function(){function ViewProperties(){}return ViewProperties.renderer=i.c.prop("renderer"),ViewProperties.viewUtils=i.c.prop("viewUtils"),ViewProperties}(),d=function(){function InjectMethodVars(){}return InjectMethodVars.token=i.g("token"),InjectMethodVars.requestNodeIndex=i.g("requestNodeIndex"),InjectMethodVars.notFoundResult=i.g("notFoundResult"),InjectMethodVars}(),p=function(){function DetectChangesVars(){}return DetectChangesVars.throwOnChange=i.g("throwOnChange"),DetectChangesVars.changes=i.g("changes"),DetectChangesVars.changed=i.g("changed"),DetectChangesVars}()},function(e,t,n){"use strict";function _appIdRandomProviderFactory(){return""+_randomChar()+_randomChar()+_randomChar()}function _randomChar(){return String.fromCharCode(97+Math.floor(25*Math.random()))}var o=n(41);n.d(t,"e",function(){return r}),n.d(t,"c",function(){return i}),n.d(t,"a",function(){return a}),n.d(t,"b",function(){return s}),n.d(t,"d",function(){return u});var r=new o.a("AppId"),i={provide:r,useFactory:_appIdRandomProviderFactory,deps:[]},a=new o.a("Platform Initializer"),s=new o.a("appBootstrapListener"),u=new o.a("Application Packages Root URL")},function(e,t,n){"use strict";var o=n(257),r=n(380),i=n(381),a=n(382),s=n(178),u=n(379),l=n(179);n.d(t,"b",function(){return p}),n.d(t,"c",function(){return g}),n.d(t,"i",function(){return s.d}),n.d(t,"j",function(){return s.e}),n.d(t,"a",function(){return s.b}),n.d(t,"h",function(){return u.a}),n.d(t,"g",function(){return l.a}),n.d(t,"f",function(){return l.b}),n.d(t,"k",function(){return o.b}),n.d(t,"l",function(){return o.c}),n.d(t,"m",function(){return r.b}),n.d(t,"d",function(){return i.a}),n.d(t,"e",function(){return a.a;
});var c=[new r.a],d=[new o.a],p=new i.a(d),g=new a.a(c)},function(e,t,n){"use strict";function devModeEqual(e,t){return n.i(o.a)(e)&&n.i(o.a)(t)?n.i(o.c)(e,t,devModeEqual):!(n.i(o.a)(e)||n.i(r.k)(e)||n.i(o.a)(t)||n.i(r.k)(t))||n.i(r.i)(e,t)}var o=n(132),r=n(8);n.d(t,"a",function(){return i}),t.b=devModeEqual,n.d(t,"e",function(){return a}),n.d(t,"c",function(){return s}),n.d(t,"d",function(){return u});var i={toString:function(){return"CD_INIT_VALUE"}},a=function(){function WrappedValue(e){this.wrapped=e}return WrappedValue.wrap=function(e){return new WrappedValue(e)},WrappedValue}(),s=function(){function ValueUnwrapper(){this.hasWrappedValue=!1}return ValueUnwrapper.prototype.unwrap=function(e){return e instanceof a?(this.hasWrappedValue=!0,e.wrapped):e},ValueUnwrapper.prototype.reset=function(){this.hasWrappedValue=!1},ValueUnwrapper}(),u=function(){function SimpleChange(e,t){this.previousValue=e,this.currentValue=t}return SimpleChange.prototype.isFirstChange=function(){return this.previousValue===i},SimpleChange}()},function(e,t,n){"use strict";function isDefaultChangeDetectionStrategy(e){return n.i(o.c)(e)||e===r.Default}var o=n(8);n.d(t,"a",function(){return r}),n.d(t,"b",function(){return i}),t.c=isDefaultChangeDetectionStrategy;var r={};r.OnPush=0,r.Default=1,r[r.OnPush]="OnPush",r[r.Default]="Default";var i={};i.CheckOnce=0,i.Checked=1,i.CheckAlways=2,i.Detached=3,i.Errored=4,i.Destroyed=5,i[i.CheckOnce]="CheckOnce",i[i.Checked]="Checked",i[i.CheckAlways]="CheckAlways",i[i.Detached]="Detached",i[i.Errored]="Errored",i[i.Destroyed]="Destroyed"},function(e,t,n){"use strict";n.d(t,"a",function(){return r}),n.d(t,"b",function(){return i});var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=function(e){function BaseError(t){e.call(this,t);var n=new Error(t);this._nativeError=n}return o(BaseError,e),Object.defineProperty(BaseError.prototype,"message",{get:function(){return this._nativeError.message},set:function(e){this._nativeError.message=e},enumerable:!0,configurable:!0}),Object.defineProperty(BaseError.prototype,"name",{get:function(){return this._nativeError.name},enumerable:!0,configurable:!0}),Object.defineProperty(BaseError.prototype,"stack",{get:function(){return this._nativeError.stack},set:function(e){this._nativeError.stack=e},enumerable:!0,configurable:!0}),BaseError.prototype.toString=function(){return this._nativeError.toString()},BaseError}(Error),i=function(e){function WrappedError(t,n){e.call(this,t+" caused by: "+(n instanceof Error?n.message:n)),this.originalError=n}return o(WrappedError,e),Object.defineProperty(WrappedError.prototype,"stack",{get:function(){return(this.originalError instanceof Error?this.originalError:this._nativeError).stack},enumerable:!0,configurable:!0}),WrappedError}(r)},function(e,t,n){"use strict";var o=n(180),r=n(8);n.d(t,"a",function(){return u}),n.d(t,"b",function(){return l});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=function(e){function NoComponentFactoryError(t){e.call(this,"No component factory found for "+n.i(r.b)(t)+". Did you add it to @NgModule.entryComponents?"),this.component=t}return i(NoComponentFactoryError,e),NoComponentFactoryError}(o.a),s=function(){function _NullComponentFactoryResolver(){}return _NullComponentFactoryResolver.prototype.resolveComponentFactory=function(e){throw new a(e)},_NullComponentFactoryResolver}(),u=function(){function ComponentFactoryResolver(){}return ComponentFactoryResolver.prototype.resolveComponentFactory=function(e){},ComponentFactoryResolver.NULL=new s,ComponentFactoryResolver}(),l=function(){function CodegenComponentFactoryResolver(e,t){this._parent=t,this._factories=new Map;for(var n=0;n<e.length;n++){var o=e[n];this._factories.set(o.componentType,o)}}return CodegenComponentFactoryResolver.prototype.resolveComponentFactory=function(e){var t=this._factories.get(e);return t||(t=this._parent.resolveComponentFactory(e)),t},CodegenComponentFactoryResolver}()},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o=function(){function ElementRef(e){this.nativeElement=e}return ElementRef}()},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o={};o.HOST=0,o.COMPONENT=1,o.EMBEDDED=2,o[o.HOST]="HOST",o[o.COMPONENT]="COMPONENT",o[o.EMBEDDED]="EMBEDDED"},function(e,t,n){"use strict";function createRenderComponentType(e,t,n,o,r){return new u.b(""+g++,e,t,n,o,r)}function addToArray(e,t){t.push(e)}function interpolate(e,t){for(var n="",o=0;o<2*e;o+=2)n=n+t[o]+_toStringWithNull(t[o+1]);return n+t[2*e]}function inlineInterpolate(e,t,n,o,r,i,a,s,u,l,c,d,p,g,f,h,m,y,b,v){switch(e){case 1:return t+_toStringWithNull(n)+o;case 2:return t+_toStringWithNull(n)+o+_toStringWithNull(r)+i;case 3:return t+_toStringWithNull(n)+o+_toStringWithNull(r)+i+_toStringWithNull(a)+s;case 4:return t+_toStringWithNull(n)+o+_toStringWithNull(r)+i+_toStringWithNull(a)+s+_toStringWithNull(u)+l;case 5:return t+_toStringWithNull(n)+o+_toStringWithNull(r)+i+_toStringWithNull(a)+s+_toStringWithNull(u)+l+_toStringWithNull(c)+d;case 6:return t+_toStringWithNull(n)+o+_toStringWithNull(r)+i+_toStringWithNull(a)+s+_toStringWithNull(u)+l+_toStringWithNull(c)+d+_toStringWithNull(p)+g;case 7:return t+_toStringWithNull(n)+o+_toStringWithNull(r)+i+_toStringWithNull(a)+s+_toStringWithNull(u)+l+_toStringWithNull(c)+d+_toStringWithNull(p)+g+_toStringWithNull(f)+h;case 8:return t+_toStringWithNull(n)+o+_toStringWithNull(r)+i+_toStringWithNull(a)+s+_toStringWithNull(u)+l+_toStringWithNull(c)+d+_toStringWithNull(p)+g+_toStringWithNull(f)+h+_toStringWithNull(m)+y;case 9:return t+_toStringWithNull(n)+o+_toStringWithNull(r)+i+_toStringWithNull(a)+s+_toStringWithNull(u)+l+_toStringWithNull(c)+d+_toStringWithNull(p)+g+_toStringWithNull(f)+h+_toStringWithNull(m)+y+_toStringWithNull(b)+v;default:throw new Error("Does not support more than 9 expressions")}}function _toStringWithNull(e){return null!=e?e.toString():""}function checkBinding(e,t,o){if(e){if(!n.i(r.a)(t,o))throw new d.a(t,o);return!1}return!n.i(s.i)(t,o)}function castByValue(e,t){return e}function pureProxy1(e){var t,o=i.a;return function(r){return n.i(s.i)(o,r)||(o=r,t=e(r)),t}}function pureProxy2(e){var t,o=i.a,r=i.a;return function(i,a){return n.i(s.i)(o,i)&&n.i(s.i)(r,a)||(o=i,r=a,t=e(i,a)),t}}function pureProxy3(e){var t,o=i.a,r=i.a,a=i.a;return function(i,u,l){return n.i(s.i)(o,i)&&n.i(s.i)(r,u)&&n.i(s.i)(a,l)||(o=i,r=u,a=l,t=e(i,u,l)),t}}function pureProxy4(e){var t,o,r,a,u;return o=r=a=u=i.a,function(i,l,c,d){return n.i(s.i)(o,i)&&n.i(s.i)(r,l)&&n.i(s.i)(a,c)&&n.i(s.i)(u,d)||(o=i,r=l,a=c,u=d,t=e(i,l,c,d)),t}}function pureProxy5(e){var t,o,r,a,u,l;return o=r=a=u=l=i.a,function(i,c,d,p,g){return n.i(s.i)(o,i)&&n.i(s.i)(r,c)&&n.i(s.i)(a,d)&&n.i(s.i)(u,p)&&n.i(s.i)(l,g)||(o=i,r=c,a=d,u=p,l=g,t=e(i,c,d,p,g)),t}}function pureProxy6(e){var t,o,r,a,u,l,c;return o=r=a=u=l=c=i.a,function(i,d,p,g,f,h){return n.i(s.i)(o,i)&&n.i(s.i)(r,d)&&n.i(s.i)(a,p)&&n.i(s.i)(u,g)&&n.i(s.i)(l,f)&&n.i(s.i)(c,h)||(o=i,r=d,a=p,u=g,l=f,c=h,t=e(i,d,p,g,f,h)),t}}function pureProxy7(e){var t,o,r,a,u,l,c,d;return o=r=a=u=l=c=d=i.a,function(i,p,g,f,h,m,y){return n.i(s.i)(o,i)&&n.i(s.i)(r,p)&&n.i(s.i)(a,g)&&n.i(s.i)(u,f)&&n.i(s.i)(l,h)&&n.i(s.i)(c,m)&&n.i(s.i)(d,y)||(o=i,r=p,a=g,u=f,l=h,c=m,d=y,t=e(i,p,g,f,h,m,y)),t}}function pureProxy8(e){var t,o,r,a,u,l,c,d,p;return o=r=a=u=l=c=d=p=i.a,function(i,g,f,h,m,y,b,v){return n.i(s.i)(o,i)&&n.i(s.i)(r,g)&&n.i(s.i)(a,f)&&n.i(s.i)(u,h)&&n.i(s.i)(l,m)&&n.i(s.i)(c,y)&&n.i(s.i)(d,b)&&n.i(s.i)(p,v)||(o=i,r=g,a=f,u=h,l=m,c=y,d=b,p=v,t=e(i,g,f,h,m,y,b,v)),t}}function pureProxy9(e){var t,o,r,a,u,l,c,d,p,g;return o=r=a=u=l=c=d=p=g=i.a,function(i,f,h,m,y,b,v,_,E){return n.i(s.i)(o,i)&&n.i(s.i)(r,f)&&n.i(s.i)(a,h)&&n.i(s.i)(u,m)&&n.i(s.i)(l,y)&&n.i(s.i)(c,b)&&n.i(s.i)(d,v)&&n.i(s.i)(p,_)&&n.i(s.i)(g,E)||(o=i,r=f,a=h,u=m,l=y,c=b,d=v,p=_,g=E,t=e(i,f,h,m,y,b,v,_,E)),t}}function pureProxy10(e){var t,o,r,a,u,l,c,d,p,g,f;return o=r=a=u=l=c=d=p=g=f=i.a,function(i,h,m,y,b,v,_,E,T,S){return n.i(s.i)(o,i)&&n.i(s.i)(r,h)&&n.i(s.i)(a,m)&&n.i(s.i)(u,y)&&n.i(s.i)(l,b)&&n.i(s.i)(c,v)&&n.i(s.i)(d,_)&&n.i(s.i)(p,E)&&n.i(s.i)(g,T)&&n.i(s.i)(f,S)||(o=i,r=h,a=m,u=y,l=b,c=v,d=_,p=E,g=T,f=S,t=e(i,h,m,y,b,v,_,E,T,S)),t}}function setBindingDebugInfoForChanges(e,t,n){Object.keys(n).forEach(function(o){setBindingDebugInfo(e,t,o,n[o].currentValue)})}function setBindingDebugInfo(e,t,n,o){try{e.setBindingDebugInfo(t,"ng-reflect-"+camelCaseToDashCase(n),o?o.toString():null)}catch(r){e.setBindingDebugInfo(t,"ng-reflect-"+camelCaseToDashCase(n),"[ERROR] Exception while trying to serialize the value")}}function camelCaseToDashCase(e){return e.replace(m,function(){for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];return"-"+e[1].toLowerCase()})}function createRenderElement(e,t,n,o,r){for(var i=e.createElement(t,n,r),a=0;a<o.length;a+=2)e.setElementAttribute(i,o.get(a),o.get(a+1));return i}function selectOrCreateRenderHostElement(e,t,o,r,i){var a;if(n.i(s.d)(r)){a=e.selectRootElement(r,i);for(var u=0;u<o.length;u+=2)e.setElementAttribute(a,o.get(u),o.get(u+1));e.setElementAttribute(a,"ng-version",c.a.full)}else a=createRenderElement(e,null,t,o,i);return a}function subscribeToRenderElement(e,t,n,o){for(var r=createEmptyInlineArray(n.length/2),i=0;i<n.length;i+=2){var a=n.get(i),s=n.get(i+1),u=void 0;u=s?e.renderer.listenGlobal(s,a,o.bind(e,s+":"+a)):e.renderer.listen(t,a,o.bind(e,a)),r.set(i/2,u)}return disposeInlineArray.bind(null,r)}function disposeInlineArray(e){for(var t=0;t<e.length;t++)e.get(t)()}function noop(){}function createEmptyInlineArray(e){var t;return new(t=e<=2?b:e<=4?v:e<=8?_:e<=16?E:T)(e)}var o=n(374),r=n(177),i=n(178),a=n(41),s=n(8),u=n(267),l=n(399),c=n(400),d=n(388);n.d(t,"ViewUtils",function(){return p}),t.createRenderComponentType=createRenderComponentType,t.addToArray=addToArray,t.interpolate=interpolate,t.inlineInterpolate=inlineInterpolate,t.checkBinding=checkBinding,t.castByValue=castByValue,n.d(t,"EMPTY_ARRAY",function(){return f}),n.d(t,"EMPTY_MAP",function(){return h}),t.pureProxy1=pureProxy1,t.pureProxy2=pureProxy2,t.pureProxy3=pureProxy3,t.pureProxy4=pureProxy4,t.pureProxy5=pureProxy5,t.pureProxy6=pureProxy6,t.pureProxy7=pureProxy7,t.pureProxy8=pureProxy8,t.pureProxy9=pureProxy9,t.pureProxy10=pureProxy10,t.setBindingDebugInfoForChanges=setBindingDebugInfoForChanges,t.setBindingDebugInfo=setBindingDebugInfo,t.createRenderElement=createRenderElement,t.selectOrCreateRenderHostElement=selectOrCreateRenderHostElement,t.subscribeToRenderElement=subscribeToRenderElement,t.noop=noop,n.d(t,"InlineArray2",function(){return b}),n.d(t,"InlineArray4",function(){return v}),n.d(t,"InlineArray8",function(){return _}),n.d(t,"InlineArray16",function(){return E}),n.d(t,"InlineArrayDynamic",function(){return T}),n.d(t,"EMPTY_INLINE_ARRAY",function(){return S});var p=function(){function ViewUtils(e,t,n){this._renderer=e,this.animationQueue=n,this.sanitizer=t}return ViewUtils.prototype.renderComponent=function(e){return this._renderer.renderComponent(e)},ViewUtils.decorators=[{type:a.b}],ViewUtils.ctorParameters=function(){return[{type:u.a},{type:l.a},{type:o.a}]},ViewUtils}(),g=0,f=[],h={},m=/([A-Z])/g,y=function(){function InlineArray0(){this.length=0}return InlineArray0.prototype.get=function(e){},InlineArray0.prototype.set=function(e,t){},InlineArray0}(),b=function(){function InlineArray2(e,t,n){this.length=e,this._v0=t,this._v1=n}return InlineArray2.prototype.get=function(e){switch(e){case 0:return this._v0;case 1:return this._v1;default:return}},InlineArray2.prototype.set=function(e,t){switch(e){case 0:this._v0=t;break;case 1:this._v1=t}},InlineArray2}(),v=function(){function InlineArray4(e,t,n,o,r){this.length=e,this._v0=t,this._v1=n,this._v2=o,this._v3=r}return InlineArray4.prototype.get=function(e){switch(e){case 0:return this._v0;case 1:return this._v1;case 2:return this._v2;case 3:return this._v3;default:return}},InlineArray4.prototype.set=function(e,t){switch(e){case 0:this._v0=t;break;case 1:this._v1=t;break;case 2:this._v2=t;break;case 3:this._v3=t}},InlineArray4}(),_=function(){function InlineArray8(e,t,n,o,r,i,a,s,u){this.length=e,this._v0=t,this._v1=n,this._v2=o,this._v3=r,this._v4=i,this._v5=a,this._v6=s,this._v7=u}return InlineArray8.prototype.get=function(e){switch(e){case 0:return this._v0;case 1:return this._v1;case 2:return this._v2;case 3:return this._v3;case 4:return this._v4;case 5:return this._v5;case 6:return this._v6;case 7:return this._v7;default:return}},InlineArray8.prototype.set=function(e,t){switch(e){case 0:this._v0=t;break;case 1:this._v1=t;break;case 2:this._v2=t;break;case 3:this._v3=t;break;case 4:this._v4=t;break;case 5:this._v5=t;break;case 6:this._v6=t;break;case 7:this._v7=t}},InlineArray8}(),E=function(){function InlineArray16(e,t,n,o,r,i,a,s,u,l,c,d,p,g,f,h,m){this.length=e,this._v0=t,this._v1=n,this._v2=o,this._v3=r,this._v4=i,this._v5=a,this._v6=s,this._v7=u,this._v8=l,this._v9=c,this._v10=d,this._v11=p,this._v12=g,this._v13=f,this._v14=h,this._v15=m}return InlineArray16.prototype.get=function(e){switch(e){case 0:return this._v0;case 1:return this._v1;case 2:return this._v2;case 3:return this._v3;case 4:return this._v4;case 5:return this._v5;case 6:return this._v6;case 7:return this._v7;case 8:return this._v8;case 9:return this._v9;case 10:return this._v10;case 11:return this._v11;case 12:return this._v12;case 13:return this._v13;case 14:return this._v14;case 15:return this._v15;default:return}},InlineArray16.prototype.set=function(e,t){switch(e){case 0:this._v0=t;break;case 1:this._v1=t;break;case 2:this._v2=t;break;case 3:this._v3=t;break;case 4:this._v4=t;break;case 5:this._v5=t;break;case 6:this._v6=t;break;case 7:this._v7=t;break;case 8:this._v8=t;break;case 9:this._v9=t;break;case 10:this._v10=t;break;case 11:this._v11=t;break;case 12:this._v12=t;break;case 13:this._v13=t;break;case 14:this._v14=t;break;case 15:this._v15=t}},InlineArray16}(),T=function(){function InlineArrayDynamic(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];this.length=e,this._values=t}return InlineArrayDynamic.prototype.get=function(e){return this._values[e]},InlineArrayDynamic.prototype.set=function(e,t){this._values[e]=t},InlineArrayDynamic}(),S=new y},function(e,t,n){"use strict";function noopScope(e,t){return null}var o=n(661);n.d(t,"b",function(){return i}),n.d(t,"a",function(){return a}),n.d(t,"c",function(){return s}),n.d(t,"d",function(){return u});var r=n.i(o.a)(),i=r?o.b:function(e,t){return noopScope},a=r?o.c:function(e,t){return t},s=r?o.d:function(e,t){return null},u=r?o.e:function(e){return null}},function(e,t,n){"use strict";var o=n(263);n.d(t,"a",function(){return r});var r=function(){function NgZone(e){var t=e.enableLongStackTrace,n=void 0!==t&&t;if(this._hasPendingMicrotasks=!1,this._hasPendingMacrotasks=!1,this._isStable=!0,this._nesting=0,this._onUnstable=new o.a((!1)),this._onMicrotaskEmpty=new o.a((!1)),this._onStable=new o.a((!1)),this._onErrorEvents=new o.a((!1)),"undefined"==typeof Zone)throw new Error("Angular requires Zone.js prolyfill.");Zone.assertZonePatched(),this.outer=this.inner=Zone.current,Zone.wtfZoneSpec&&(this.inner=this.inner.fork(Zone.wtfZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(this.inner=this.inner.fork(Zone.longStackTraceZoneSpec)),this.forkInnerZoneWithAngularBehavior()}return NgZone.isInAngularZone=function(){return Zone.current.get("isAngularZone")===!0},NgZone.assertInAngularZone=function(){if(!NgZone.isInAngularZone())throw new Error("Expected to be in Angular Zone, but it is not!")},NgZone.assertNotInAngularZone=function(){if(NgZone.isInAngularZone())throw new Error("Expected to not be in Angular Zone, but it is!")},NgZone.prototype.run=function(e){return this.inner.run(e)},NgZone.prototype.runGuarded=function(e){return this.inner.runGuarded(e)},NgZone.prototype.runOutsideAngular=function(e){return this.outer.run(e)},Object.defineProperty(NgZone.prototype,"onUnstable",{get:function(){return this._onUnstable},enumerable:!0,configurable:!0}),Object.defineProperty(NgZone.prototype,"onMicrotaskEmpty",{get:function(){return this._onMicrotaskEmpty},enumerable:!0,configurable:!0}),Object.defineProperty(NgZone.prototype,"onStable",{get:function(){return this._onStable},enumerable:!0,configurable:!0}),Object.defineProperty(NgZone.prototype,"onError",{get:function(){return this._onErrorEvents},enumerable:!0,configurable:!0}),Object.defineProperty(NgZone.prototype,"isStable",{get:function(){return this._isStable},enumerable:!0,configurable:!0}),Object.defineProperty(NgZone.prototype,"hasPendingMicrotasks",{get:function(){return this._hasPendingMicrotasks},enumerable:!0,configurable:!0}),Object.defineProperty(NgZone.prototype,"hasPendingMacrotasks",{get:function(){return this._hasPendingMacrotasks},enumerable:!0,configurable:!0}),NgZone.prototype.checkStable=function(){var e=this;if(0==this._nesting&&!this._hasPendingMicrotasks&&!this._isStable)try{this._nesting++,this._onMicrotaskEmpty.emit(null)}finally{if(this._nesting--,!this._hasPendingMicrotasks)try{this.runOutsideAngular(function(){return e._onStable.emit(null)})}finally{this._isStable=!0}}},NgZone.prototype.forkInnerZoneWithAngularBehavior=function(){var e=this;this.inner=this.inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:function(t,n,o,r,i,a){try{return e.onEnter(),t.invokeTask(o,r,i,a)}finally{e.onLeave()}},onInvoke:function(t,n,o,r,i,a,s){try{return e.onEnter(),t.invoke(o,r,i,a,s)}finally{e.onLeave()}},onHasTask:function(t,n,o,r){t.hasTask(o,r),n===o&&("microTask"==r.change?e.setHasMicrotask(r.microTask):"macroTask"==r.change&&e.setHasMacrotask(r.macroTask))},onHandleError:function(t,n,o,r){return t.handleError(o,r),e.triggerError(r),!1}})},NgZone.prototype.onEnter=function(){this._nesting++,this._isStable&&(this._isStable=!1,this._onUnstable.emit(null))},NgZone.prototype.onLeave=function(){this._nesting--,this.checkStable()},NgZone.prototype.setHasMicrotask=function(e){this._hasPendingMicrotasks=e,this.checkStable()},NgZone.prototype.setHasMacrotask=function(e){this._hasPendingMacrotasks=e},NgZone.prototype.triggerError=function(e){this._onErrorEvents.emit(e)},NgZone}()},function(e,t,n){"use strict";var o=n(1),r=n(42);n.d(t,"a",function(){return a});var i={provide:r.a,useExisting:n.i(o.forwardRef)(function(){return a}),multi:!0},a=function(){function CheckboxControlValueAccessor(e,t){this._renderer=e,this._elementRef=t,this.onChange=function(e){},this.onTouched=function(){}}return CheckboxControlValueAccessor.prototype.writeValue=function(e){this._renderer.setElementProperty(this._elementRef.nativeElement,"checked",e)},CheckboxControlValueAccessor.prototype.registerOnChange=function(e){this.onChange=e},CheckboxControlValueAccessor.prototype.registerOnTouched=function(e){this.onTouched=e},CheckboxControlValueAccessor.prototype.setDisabledState=function(e){this._renderer.setElementProperty(this._elementRef.nativeElement,"disabled",e)},CheckboxControlValueAccessor.decorators=[{type:o.Directive,args:[{selector:"input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]",host:{"(change)":"onChange($event.target.checked)","(blur)":"onTouched()"},providers:[i]}]}],CheckboxControlValueAccessor.ctorParameters=function(){return[{type:o.Renderer},{type:o.ElementRef}]},CheckboxControlValueAccessor}()},function(e,t,n){"use strict";var o=n(1),r=n(42);n.d(t,"a",function(){return a});var i={provide:r.a,useExisting:n.i(o.forwardRef)(function(){return a}),multi:!0},a=function(){function DefaultValueAccessor(e,t){this._renderer=e,this._elementRef=t,this.onChange=function(e){},this.onTouched=function(){}}return DefaultValueAccessor.prototype.writeValue=function(e){var t=null==e?"":e;this._renderer.setElementProperty(this._elementRef.nativeElement,"value",t)},DefaultValueAccessor.prototype.registerOnChange=function(e){this.onChange=e},DefaultValueAccessor.prototype.registerOnTouched=function(e){this.onTouched=e},DefaultValueAccessor.prototype.setDisabledState=function(e){this._renderer.setElementProperty(this._elementRef.nativeElement,"disabled",e)},DefaultValueAccessor.decorators=[{type:o.Directive,args:[{selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]",host:{"(input)":"onChange($event.target.value)","(blur)":"onTouched()"},providers:[i]}]}],DefaultValueAccessor.ctorParameters=function(){return[{type:o.Renderer},{type:o.ElementRef}]},DefaultValueAccessor}()},function(e,t,n){"use strict";var o=n(1),r=n(49),i=n(134),a=n(57),s=n(135),u=n(402);n.d(t,"a",function(){return d});var l=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},c={provide:a.a,useExisting:n.i(o.forwardRef)(function(){return d})},d=function(e){function NgModelGroup(t,n,o){e.call(this),this._parent=t,this._validators=n,this._asyncValidators=o}return l(NgModelGroup,e),NgModelGroup.prototype._checkParentType=function(){this._parent instanceof NgModelGroup||this._parent instanceof s.a||u.a.modelGroupParentException()},NgModelGroup.decorators=[{type:o.Directive,args:[{selector:"[ngModelGroup]",providers:[c],exportAs:"ngModelGroup"}]}],NgModelGroup.ctorParameters=function(){return[{type:a.a,decorators:[{type:o.Host},{type:o.SkipSelf}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[r.b]}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[r.c]}]}]},NgModelGroup.propDecorators={name:[{type:o.Input,args:["ngModelGroup"]}]},NgModelGroup}(i.a)},function(e,t,n){"use strict";var o=n(401);n.d(t,"a",function(){return r});var r=function(){function ReactiveErrors(){}return ReactiveErrors.controlParentException=function(){throw new Error("formControlName must be used with a parent formGroup directive.  You'll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      "+o.a.formControlName)},ReactiveErrors.ngModelGroupException=function(){throw new Error('formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents\n       that also have a "form" prefix: formGroupName, formArrayName, or formGroup.\n\n       Option 1:  Update the parent to be formGroupName (reactive form strategy)\n\n        '+o.a.formGroupName+"\n\n        Option 2: Use ngModel instead of formControlName (template-driven strategy)\n\n        "+o.a.ngModelGroup)},ReactiveErrors.missingFormException=function(){throw new Error("formGroup expects a FormGroup instance. Please pass one in.\n\n       Example:\n\n       "+o.a.formControlName)},ReactiveErrors.groupParentException=function(){throw new Error("formGroupName must be used with a parent formGroup directive.  You'll want to add a formGroup\n      directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      "+o.a.formGroupName)},ReactiveErrors.arrayParentException=function(){throw new Error("formArrayName must be used with a parent formGroup directive.  You'll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n        Example:\n\n        "+o.a.formArrayName)},ReactiveErrors.disabledAttrWarning=function(){console.warn("\n      It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true\n      when you set up this control in your component class, the disabled attribute will actually be set in the DOM for\n      you. We recommend using this approach to avoid 'changed after checked' errors.\n       \n      Example: \n      form = new FormGroup({\n        first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),\n        last: new FormControl('Drew', Validators.required)\n      });\n    ")},ReactiveErrors}()},function(e,t,n){"use strict";function _buildValueString(e,t){return null==e?""+t:(n.i(r.d)(t)||(t="Object"),(e+": "+t).slice(0,50))}function _extractId(e){return e.split(":")[0]}var o=n(1),r=n(111),i=n(42);n.d(t,"a",function(){return s}),n.d(t,"b",function(){return u});var a={provide:i.a,useExisting:n.i(o.forwardRef)(function(){return s}),multi:!0},s=function(){function SelectControlValueAccessor(e,t){this._renderer=e,this._elementRef=t,this._optionMap=new Map,this._idCounter=0,this.onChange=function(e){},this.onTouched=function(){}}return SelectControlValueAccessor.prototype.writeValue=function(e){this.value=e;var t=this._getOptionId(e);null==t&&this._renderer.setElementProperty(this._elementRef.nativeElement,"selectedIndex",-1);var n=_buildValueString(t,e);this._renderer.setElementProperty(this._elementRef.nativeElement,"value",n)},SelectControlValueAccessor.prototype.registerOnChange=function(e){var t=this;this.onChange=function(n){t.value=n,e(t._getOptionValue(n))}},SelectControlValueAccessor.prototype.registerOnTouched=function(e){this.onTouched=e},SelectControlValueAccessor.prototype.setDisabledState=function(e){this._renderer.setElementProperty(this._elementRef.nativeElement,"disabled",e)},SelectControlValueAccessor.prototype._registerOption=function(){return(this._idCounter++).toString()},SelectControlValueAccessor.prototype._getOptionId=function(e){for(var t=0,o=Array.from(this._optionMap.keys());t<o.length;t++){var i=o[t];if(n.i(r.e)(this._optionMap.get(i),e))return i}return null},SelectControlValueAccessor.prototype._getOptionValue=function(e){var t=_extractId(e);return this._optionMap.has(t)?this._optionMap.get(t):e},SelectControlValueAccessor.decorators=[{type:o.Directive,args:[{selector:"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]",host:{"(change)":"onChange($event.target.value)","(blur)":"onTouched()"},providers:[a]}]}],SelectControlValueAccessor.ctorParameters=function(){return[{type:o.Renderer},{type:o.ElementRef}]},SelectControlValueAccessor}(),u=function(){function NgSelectOption(e,t,n){this._element=e,this._renderer=t,this._select=n,this._select&&(this.id=this._select._registerOption())}return Object.defineProperty(NgSelectOption.prototype,"ngValue",{set:function(e){null!=this._select&&(this._select._optionMap.set(this.id,e),this._setElementValue(_buildValueString(this.id,e)),this._select.writeValue(this._select.value))},enumerable:!0,configurable:!0}),Object.defineProperty(NgSelectOption.prototype,"value",{set:function(e){this._setElementValue(e),this._select&&this._select.writeValue(this._select.value)},enumerable:!0,configurable:!0}),NgSelectOption.prototype._setElementValue=function(e){this._renderer.setElementProperty(this._element.nativeElement,"value",e)},NgSelectOption.prototype.ngOnDestroy=function(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))},NgSelectOption.decorators=[{type:o.Directive,args:[{selector:"option"}]}],NgSelectOption.ctorParameters=function(){return[{type:o.ElementRef},{type:o.Renderer},{type:s,decorators:[{type:o.Optional},{type:o.Host}]}]},NgSelectOption.propDecorators={ngValue:[{type:o.Input,args:["ngValue"]}],value:[{type:o.Input,args:["value"]}]},NgSelectOption}()},function(e,t,n){"use strict";function _buildValueString(e,t){return null==e?""+t:("string"==typeof t&&(t="'"+t+"'"),n.i(r.d)(t)||(t="Object"),(e+": "+t).slice(0,50))}function _extractId(e){return e.split(":")[0]}var o=n(1),r=n(111),i=n(42);n.d(t,"a",function(){return s}),n.d(t,"b",function(){return u});var a={provide:i.a,useExisting:n.i(o.forwardRef)(function(){return s}),multi:!0},s=(function(){function HTMLCollection(){}return HTMLCollection.prototype.item=function(e){},HTMLCollection}(),function(){function SelectMultipleControlValueAccessor(e,t){this._renderer=e,this._elementRef=t,this._optionMap=new Map,this._idCounter=0,this.onChange=function(e){},this.onTouched=function(){}}return SelectMultipleControlValueAccessor.prototype.writeValue=function(e){var t=this;this.value=e;var n;if(Array.isArray(e)){var o=e.map(function(e){return t._getOptionId(e)});n=function(e,t){e._setSelected(o.indexOf(t.toString())>-1)}}else n=function(e,t){e._setSelected(!1)};this._optionMap.forEach(n)},SelectMultipleControlValueAccessor.prototype.registerOnChange=function(e){var t=this;this.onChange=function(n){var o=[];if(n.hasOwnProperty("selectedOptions"))for(var r=n.selectedOptions,i=0;i<r.length;i++){var a=r.item(i),s=t._getOptionValue(a.value);o.push(s)}else for(var r=n.options,i=0;i<r.length;i++){var a=r.item(i);if(a.selected){var s=t._getOptionValue(a.value);o.push(s)}}t.value=o,e(o)}},SelectMultipleControlValueAccessor.prototype.registerOnTouched=function(e){this.onTouched=e},SelectMultipleControlValueAccessor.prototype.setDisabledState=function(e){this._renderer.setElementProperty(this._elementRef.nativeElement,"disabled",e)},SelectMultipleControlValueAccessor.prototype._registerOption=function(e){var t=(this._idCounter++).toString();return this._optionMap.set(t,e),t},SelectMultipleControlValueAccessor.prototype._getOptionId=function(e){for(var t=0,o=Array.from(this._optionMap.keys());t<o.length;t++){var i=o[t];if(n.i(r.e)(this._optionMap.get(i)._value,e))return i}return null},SelectMultipleControlValueAccessor.prototype._getOptionValue=function(e){var t=_extractId(e);return this._optionMap.has(t)?this._optionMap.get(t)._value:e},SelectMultipleControlValueAccessor.decorators=[{type:o.Directive,args:[{selector:"select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]",host:{"(change)":"onChange($event.target)","(blur)":"onTouched()"},providers:[a]}]}],SelectMultipleControlValueAccessor.ctorParameters=function(){return[{type:o.Renderer},{type:o.ElementRef}]},SelectMultipleControlValueAccessor}()),u=function(){function NgSelectMultipleOption(e,t,n){this._element=e,this._renderer=t,this._select=n,this._select&&(this.id=this._select._registerOption(this))}return Object.defineProperty(NgSelectMultipleOption.prototype,"ngValue",{set:function(e){null!=this._select&&(this._value=e,this._setElementValue(_buildValueString(this.id,e)),this._select.writeValue(this._select.value))},enumerable:!0,configurable:!0}),Object.defineProperty(NgSelectMultipleOption.prototype,"value",{set:function(e){this._select?(this._value=e,this._setElementValue(_buildValueString(this.id,e)),this._select.writeValue(this._select.value)):this._setElementValue(e)},enumerable:!0,configurable:!0}),NgSelectMultipleOption.prototype._setElementValue=function(e){this._renderer.setElementProperty(this._element.nativeElement,"value",e)},NgSelectMultipleOption.prototype._setSelected=function(e){this._renderer.setElementProperty(this._element.nativeElement,"selected",e)},NgSelectMultipleOption.prototype.ngOnDestroy=function(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))},NgSelectMultipleOption.decorators=[{type:o.Directive,args:[{selector:"option"}]}],NgSelectMultipleOption.ctorParameters=function(){return[{type:o.ElementRef},{type:o.Renderer},{type:s,decorators:[{type:o.Optional},{type:o.Host}]}]},NgSelectMultipleOption.propDecorators={ngValue:[{type:o.Input,args:["ngValue"]}],value:[{type:o.Input,args:["value"]}]},NgSelectMultipleOption}()},function(e,t,n){"use strict";function _find(e,t,n){return null==t?null:(t instanceof Array||(t=t.split(n)),t instanceof Array&&0===t.length?null:t.reduce(function(e,t){return e instanceof f?e.controls[t]||null:e instanceof h?e.at(t)||null:null},e))}function toObservable(e){return n.i(a.a)(e)?n.i(o.fromPromise)(e):e}function coerceToValidator(e){return Array.isArray(e)?n.i(r.b)(e):e;
}function coerceToAsyncValidator(e){return Array.isArray(e)?n.i(r.c)(e):e}var o=n(222),r=(n.n(o),n(76)),i=n(110),a=n(406);n.d(t,"d",function(){return p}),n.d(t,"b",function(){return g}),n.d(t,"a",function(){return f}),n.d(t,"c",function(){return h});var s=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},u="VALID",l="INVALID",c="PENDING",d="DISABLED",p=function(){function AbstractControl(e,t){this.validator=e,this.asyncValidator=t,this._onCollectionChange=function(){},this._pristine=!0,this._touched=!1,this._onDisabledChange=[]}return Object.defineProperty(AbstractControl.prototype,"value",{get:function(){return this._value},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControl.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControl.prototype,"status",{get:function(){return this._status},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControl.prototype,"valid",{get:function(){return this._status===u},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControl.prototype,"invalid",{get:function(){return this._status===l},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControl.prototype,"pending",{get:function(){return this._status==c},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControl.prototype,"disabled",{get:function(){return this._status===d},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControl.prototype,"enabled",{get:function(){return this._status!==d},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControl.prototype,"errors",{get:function(){return this._errors},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControl.prototype,"pristine",{get:function(){return this._pristine},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControl.prototype,"dirty",{get:function(){return!this.pristine},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControl.prototype,"touched",{get:function(){return this._touched},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControl.prototype,"untouched",{get:function(){return!this._touched},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControl.prototype,"valueChanges",{get:function(){return this._valueChanges},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControl.prototype,"statusChanges",{get:function(){return this._statusChanges},enumerable:!0,configurable:!0}),AbstractControl.prototype.setValidators=function(e){this.validator=coerceToValidator(e)},AbstractControl.prototype.setAsyncValidators=function(e){this.asyncValidator=coerceToAsyncValidator(e)},AbstractControl.prototype.clearValidators=function(){this.validator=null},AbstractControl.prototype.clearAsyncValidators=function(){this.asyncValidator=null},AbstractControl.prototype.markAsTouched=function(e){var t=(void 0===e?{}:e).onlySelf;this._touched=!0,this._parent&&!t&&this._parent.markAsTouched({onlySelf:t})},AbstractControl.prototype.markAsUntouched=function(e){var t=(void 0===e?{}:e).onlySelf;this._touched=!1,this._forEachChild(function(e){e.markAsUntouched({onlySelf:!0})}),this._parent&&!t&&this._parent._updateTouched({onlySelf:t})},AbstractControl.prototype.markAsDirty=function(e){var t=(void 0===e?{}:e).onlySelf;this._pristine=!1,this._parent&&!t&&this._parent.markAsDirty({onlySelf:t})},AbstractControl.prototype.markAsPristine=function(e){var t=(void 0===e?{}:e).onlySelf;this._pristine=!0,this._forEachChild(function(e){e.markAsPristine({onlySelf:!0})}),this._parent&&!t&&this._parent._updatePristine({onlySelf:t})},AbstractControl.prototype.markAsPending=function(e){var t=(void 0===e?{}:e).onlySelf;this._status=c,this._parent&&!t&&this._parent.markAsPending({onlySelf:t})},AbstractControl.prototype.disable=function(e){var t=void 0===e?{}:e,n=t.onlySelf,o=t.emitEvent;this._status=d,this._errors=null,this._forEachChild(function(e){e.disable({onlySelf:!0})}),this._updateValue(),o!==!1&&(this._valueChanges.emit(this._value),this._statusChanges.emit(this._status)),this._updateAncestors(n),this._onDisabledChange.forEach(function(e){return e(!0)})},AbstractControl.prototype.enable=function(e){var t=void 0===e?{}:e,n=t.onlySelf,o=t.emitEvent;this._status=u,this._forEachChild(function(e){e.enable({onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:o}),this._updateAncestors(n),this._onDisabledChange.forEach(function(e){return e(!1)})},AbstractControl.prototype._updateAncestors=function(e){this._parent&&!e&&(this._parent.updateValueAndValidity(),this._parent._updatePristine(),this._parent._updateTouched())},AbstractControl.prototype.setParent=function(e){this._parent=e},AbstractControl.prototype.setValue=function(e,t){},AbstractControl.prototype.patchValue=function(e,t){},AbstractControl.prototype.reset=function(e,t){},AbstractControl.prototype.updateValueAndValidity=function(e){var t=void 0===e?{}:e,n=t.onlySelf,o=t.emitEvent;this._setInitialStatus(),this._updateValue(),this.enabled&&(this._errors=this._runValidator(),this._status=this._calculateStatus(),this._status!==u&&this._status!==c||this._runAsyncValidator(o)),o!==!1&&(this._valueChanges.emit(this._value),this._statusChanges.emit(this._status)),this._parent&&!n&&this._parent.updateValueAndValidity({onlySelf:n,emitEvent:o})},AbstractControl.prototype._updateTreeValidity=function(e){var t=(void 0===e?{emitEvent:!0}:e).emitEvent;this._forEachChild(function(e){return e._updateTreeValidity({emitEvent:t})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t})},AbstractControl.prototype._setInitialStatus=function(){this._status=this._allControlsDisabled()?d:u},AbstractControl.prototype._runValidator=function(){return this.validator?this.validator(this):null},AbstractControl.prototype._runAsyncValidator=function(e){var t=this;if(this.asyncValidator){this._status=c,this._cancelExistingSubscription();var o=toObservable(this.asyncValidator(this));if(!n.i(a.b)(o))throw new Error("expected the following validator to return Promise or Observable: "+this.asyncValidator+". If you are using FormBuilder; did you forget to brace your validators in an array?");this._asyncValidationSubscription=o.subscribe({next:function(n){return t.setErrors(n,{emitEvent:e})}})}},AbstractControl.prototype._cancelExistingSubscription=function(){this._asyncValidationSubscription&&this._asyncValidationSubscription.unsubscribe()},AbstractControl.prototype.setErrors=function(e,t){var n=(void 0===t?{}:t).emitEvent;this._errors=e,this._updateControlsErrors(n!==!1)},AbstractControl.prototype.get=function(e){return _find(this,e,".")},AbstractControl.prototype.getError=function(e,t){void 0===t&&(t=null);var n=t?this.get(t):this;return n&&n._errors?n._errors[e]:null},AbstractControl.prototype.hasError=function(e,t){return void 0===t&&(t=null),!!this.getError(e,t)},Object.defineProperty(AbstractControl.prototype,"root",{get:function(){for(var e=this;e._parent;)e=e._parent;return e},enumerable:!0,configurable:!0}),AbstractControl.prototype._updateControlsErrors=function(e){this._status=this._calculateStatus(),e&&this._statusChanges.emit(this._status),this._parent&&this._parent._updateControlsErrors(e)},AbstractControl.prototype._initObservables=function(){this._valueChanges=new i.a,this._statusChanges=new i.a},AbstractControl.prototype._calculateStatus=function(){return this._allControlsDisabled()?d:this._errors?l:this._anyControlsHaveStatus(c)?c:this._anyControlsHaveStatus(l)?l:u},AbstractControl.prototype._updateValue=function(){},AbstractControl.prototype._forEachChild=function(e){},AbstractControl.prototype._anyControls=function(e){},AbstractControl.prototype._allControlsDisabled=function(){},AbstractControl.prototype._anyControlsHaveStatus=function(e){return this._anyControls(function(t){return t.status===e})},AbstractControl.prototype._anyControlsDirty=function(){return this._anyControls(function(e){return e.dirty})},AbstractControl.prototype._anyControlsTouched=function(){return this._anyControls(function(e){return e.touched})},AbstractControl.prototype._updatePristine=function(e){var t=(void 0===e?{}:e).onlySelf;this._pristine=!this._anyControlsDirty(),this._parent&&!t&&this._parent._updatePristine({onlySelf:t})},AbstractControl.prototype._updateTouched=function(e){var t=(void 0===e?{}:e).onlySelf;this._touched=this._anyControlsTouched(),this._parent&&!t&&this._parent._updateTouched({onlySelf:t})},AbstractControl.prototype._isBoxedValue=function(e){return"object"==typeof e&&null!==e&&2===Object.keys(e).length&&"value"in e&&"disabled"in e},AbstractControl.prototype._registerOnCollectionChange=function(e){this._onCollectionChange=e},AbstractControl}(),g=function(e){function FormControl(t,n,o){void 0===t&&(t=null),void 0===n&&(n=null),void 0===o&&(o=null),e.call(this,coerceToValidator(n),coerceToAsyncValidator(o)),this._onChange=[],this._applyFormState(t),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),this._initObservables()}return s(FormControl,e),FormControl.prototype.setValue=function(e,t){var n=this,o=void 0===t?{}:t,r=o.onlySelf,i=o.emitEvent,a=o.emitModelToViewChange,s=o.emitViewToModelChange;this._value=e,this._onChange.length&&a!==!1&&this._onChange.forEach(function(e){return e(n._value,s!==!1)}),this.updateValueAndValidity({onlySelf:r,emitEvent:i})},FormControl.prototype.patchValue=function(e,t){void 0===t&&(t={}),this.setValue(e,t)},FormControl.prototype.reset=function(e,t){void 0===e&&(e=null);var n=void 0===t?{}:t,o=n.onlySelf,r=n.emitEvent;this._applyFormState(e),this.markAsPristine({onlySelf:o}),this.markAsUntouched({onlySelf:o}),this.setValue(this._value,{onlySelf:o,emitEvent:r})},FormControl.prototype._updateValue=function(){},FormControl.prototype._anyControls=function(e){return!1},FormControl.prototype._allControlsDisabled=function(){return this.disabled},FormControl.prototype.registerOnChange=function(e){this._onChange.push(e)},FormControl.prototype._clearChangeFns=function(){this._onChange=[],this._onDisabledChange=[],this._onCollectionChange=function(){}},FormControl.prototype.registerOnDisabledChange=function(e){this._onDisabledChange.push(e)},FormControl.prototype._forEachChild=function(e){},FormControl.prototype._applyFormState=function(e){this._isBoxedValue(e)?(this._value=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this._value=e},FormControl}(p),f=function(e){function FormGroup(t,n,o){void 0===n&&(n=null),void 0===o&&(o=null),e.call(this,n,o),this.controls=t,this._initObservables(),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1})}return s(FormGroup,e),FormGroup.prototype.registerControl=function(e,t){return this.controls[e]?this.controls[e]:(this.controls[e]=t,t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange),t)},FormGroup.prototype.addControl=function(e,t){this.registerControl(e,t),this.updateValueAndValidity(),this._onCollectionChange()},FormGroup.prototype.removeControl=function(e){this.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),delete this.controls[e],this.updateValueAndValidity(),this._onCollectionChange()},FormGroup.prototype.setControl=function(e,t){this.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),delete this.controls[e],t&&this.registerControl(e,t),this.updateValueAndValidity(),this._onCollectionChange()},FormGroup.prototype.contains=function(e){return this.controls.hasOwnProperty(e)&&this.controls[e].enabled},FormGroup.prototype.setValue=function(e,t){var n=this,o=void 0===t?{}:t,r=o.onlySelf,i=o.emitEvent;this._checkAllValuesPresent(e),Object.keys(e).forEach(function(t){n._throwIfControlMissing(t),n.controls[t].setValue(e[t],{onlySelf:!0,emitEvent:i})}),this.updateValueAndValidity({onlySelf:r,emitEvent:i})},FormGroup.prototype.patchValue=function(e,t){var n=this,o=void 0===t?{}:t,r=o.onlySelf,i=o.emitEvent;Object.keys(e).forEach(function(t){n.controls[t]&&n.controls[t].patchValue(e[t],{onlySelf:!0,emitEvent:i})}),this.updateValueAndValidity({onlySelf:r,emitEvent:i})},FormGroup.prototype.reset=function(e,t){void 0===e&&(e={});var n=void 0===t?{}:t,o=n.onlySelf,r=n.emitEvent;this._forEachChild(function(t,n){t.reset(e[n],{onlySelf:!0,emitEvent:r})}),this.updateValueAndValidity({onlySelf:o,emitEvent:r}),this._updatePristine({onlySelf:o}),this._updateTouched({onlySelf:o})},FormGroup.prototype.getRawValue=function(){return this._reduceChildren({},function(e,t,n){return e[n]=t instanceof g?t.value:t.getRawValue(),e})},FormGroup.prototype._throwIfControlMissing=function(e){if(!Object.keys(this.controls).length)throw new Error("\n        There are no form controls registered with this group yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.controls[e])throw new Error("Cannot find form control with name: "+e+".")},FormGroup.prototype._forEachChild=function(e){var t=this;Object.keys(this.controls).forEach(function(n){return e(t.controls[n],n)})},FormGroup.prototype._setUpControls=function(){var e=this;this._forEachChild(function(t){t.setParent(e),t._registerOnCollectionChange(e._onCollectionChange)})},FormGroup.prototype._updateValue=function(){this._value=this._reduceValue()},FormGroup.prototype._anyControls=function(e){var t=this,n=!1;return this._forEachChild(function(o,r){n=n||t.contains(r)&&e(o)}),n},FormGroup.prototype._reduceValue=function(){var e=this;return this._reduceChildren({},function(t,n,o){return(n.enabled||e.disabled)&&(t[o]=n.value),t})},FormGroup.prototype._reduceChildren=function(e,t){var n=e;return this._forEachChild(function(e,o){n=t(n,e,o)}),n},FormGroup.prototype._allControlsDisabled=function(){for(var e=0,t=Object.keys(this.controls);e<t.length;e++){var n=t[e];if(this.controls[n].enabled)return!1}return Object.keys(this.controls).length>0||this.disabled},FormGroup.prototype._checkAllValuesPresent=function(e){this._forEachChild(function(t,n){if(void 0===e[n])throw new Error("Must supply a value for form control with name: '"+n+"'.")})},FormGroup}(p),h=function(e){function FormArray(t,n,o){void 0===n&&(n=null),void 0===o&&(o=null),e.call(this,n,o),this.controls=t,this._initObservables(),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!1})}return s(FormArray,e),FormArray.prototype.at=function(e){return this.controls[e]},FormArray.prototype.push=function(e){this.controls.push(e),this._registerControl(e),this.updateValueAndValidity(),this._onCollectionChange()},FormArray.prototype.insert=function(e,t){this.controls.splice(e,0,t),this._registerControl(t),this.updateValueAndValidity(),this._onCollectionChange()},FormArray.prototype.removeAt=function(e){this.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),this.controls.splice(e,1),this.updateValueAndValidity(),this._onCollectionChange()},FormArray.prototype.setControl=function(e,t){this.controls[e]&&this.controls[e]._registerOnCollectionChange(function(){}),this.controls.splice(e,1),t&&(this.controls.splice(e,0,t),this._registerControl(t)),this.updateValueAndValidity(),this._onCollectionChange()},Object.defineProperty(FormArray.prototype,"length",{get:function(){return this.controls.length},enumerable:!0,configurable:!0}),FormArray.prototype.setValue=function(e,t){var n=this,o=void 0===t?{}:t,r=o.onlySelf,i=o.emitEvent;this._checkAllValuesPresent(e),e.forEach(function(e,t){n._throwIfControlMissing(t),n.at(t).setValue(e,{onlySelf:!0,emitEvent:i})}),this.updateValueAndValidity({onlySelf:r,emitEvent:i})},FormArray.prototype.patchValue=function(e,t){var n=this,o=void 0===t?{}:t,r=o.onlySelf,i=o.emitEvent;e.forEach(function(e,t){n.at(t)&&n.at(t).patchValue(e,{onlySelf:!0,emitEvent:i})}),this.updateValueAndValidity({onlySelf:r,emitEvent:i})},FormArray.prototype.reset=function(e,t){void 0===e&&(e=[]);var n=void 0===t?{}:t,o=n.onlySelf,r=n.emitEvent;this._forEachChild(function(t,n){t.reset(e[n],{onlySelf:!0,emitEvent:r})}),this.updateValueAndValidity({onlySelf:o,emitEvent:r}),this._updatePristine({onlySelf:o}),this._updateTouched({onlySelf:o})},FormArray.prototype.getRawValue=function(){return this.controls.map(function(e){return e instanceof g?e.value:e.getRawValue()})},FormArray.prototype._throwIfControlMissing=function(e){if(!this.controls.length)throw new Error("\n        There are no form controls registered with this array yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");if(!this.at(e))throw new Error("Cannot find form control at index "+e)},FormArray.prototype._forEachChild=function(e){this.controls.forEach(function(t,n){e(t,n)})},FormArray.prototype._updateValue=function(){var e=this;this._value=this.controls.filter(function(t){return t.enabled||e.disabled}).map(function(e){return e.value})},FormArray.prototype._anyControls=function(e){return this.controls.some(function(t){return t.enabled&&e(t)})},FormArray.prototype._setUpControls=function(){var e=this;this._forEachChild(function(t){return e._registerControl(t)})},FormArray.prototype._checkAllValuesPresent=function(e){this._forEachChild(function(t,n){if(void 0===e[n])throw new Error("Must supply a value for form control at index: "+n+".")})},FormArray.prototype._allControlsDisabled=function(){for(var e=0,t=this.controls;e<t.length;e++){var n=t[e];if(n.enabled)return!1}return this.controls.length>0||this.disabled},FormArray.prototype._registerControl=function(e){e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange)},FormArray}(p)},function(e,t,n){"use strict";var o=n(1),r=n(77),i=n(139);n.d(t,"a",function(){return s}),n.d(t,"b",function(){return u});var a=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},s=function(){function ResponseOptions(e){var t=void 0===e?{}:e,n=t.body,o=t.status,r=t.headers,i=t.statusText,a=t.type,s=t.url;this.body=null!=n?n:null,this.status=null!=o?o:null,this.headers=null!=r?r:null,this.statusText=null!=i?i:null,this.type=null!=a?a:null,this.url=null!=s?s:null}return ResponseOptions.prototype.merge=function(e){return new ResponseOptions({body:e&&null!=e.body?e.body:this.body,status:e&&null!=e.status?e.status:this.status,headers:e&&null!=e.headers?e.headers:this.headers,statusText:e&&null!=e.statusText?e.statusText:this.statusText,type:e&&null!=e.type?e.type:this.type,url:e&&null!=e.url?e.url:this.url})},ResponseOptions}(),u=function(e){function BaseResponseOptions(){e.call(this,{status:200,statusText:"Ok",type:r.a.Default,headers:new i.a})}return a(BaseResponseOptions,e),BaseResponseOptions.decorators=[{type:o.Injectable}],BaseResponseOptions.ctorParameters=function(){return[]},BaseResponseOptions}(s)},function(e,t,n){"use strict";function normalizeMethodName(e){if("string"!=typeof e)return e;switch(e.toUpperCase()){case"GET":return o.b.Get;case"POST":return o.b.Post;case"PUT":return o.b.Put;case"DELETE":return o.b.Delete;case"OPTIONS":return o.b.Options;case"HEAD":return o.b.Head;case"PATCH":return o.b.Patch}throw new Error('Invalid request method. The method "'+e+'" is not supported.')}function getResponseURL(e){return"responseURL"in e?e.responseURL:/^X-Request-URL:/m.test(e.getAllResponseHeaders())?e.getResponseHeader("X-Request-URL"):void 0}function stringToArrayBuffer(e){for(var t=new Uint16Array(e.length),n=0,o=e.length;n<o;n++)t[n]=e.charCodeAt(n);return t.buffer}var o=n(77);t.d=normalizeMethodName,n.d(t,"c",function(){return r}),t.b=getResponseURL,t.a=stringToArrayBuffer;var r=function(e){return e>=200&&e<300}},function(e,t,n){"use strict";function paramParser(e){void 0===e&&(e="");var t=new Map;if(e.length>0){var n=e.split("&");n.forEach(function(e){var n=e.indexOf("="),o=n==-1?[e,""]:[e.slice(0,n),e.slice(n+1)],r=o[0],i=o[1],a=t.get(r)||[];a.push(i),t.set(r,a)})}return t}function standardEncoding(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/gi,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%2B/gi,"+").replace(/%3D/gi,"=").replace(/%3F/gi,"?").replace(/%2F/gi,"/")}n.d(t,"b",function(){return o}),n.d(t,"a",function(){return r});var o=function(){function QueryEncoder(){}return QueryEncoder.prototype.encodeKey=function(e){return standardEncoding(e)},QueryEncoder.prototype.encodeValue=function(e){return standardEncoding(e)},QueryEncoder}(),r=function(){function URLSearchParams(e,t){void 0===e&&(e=""),void 0===t&&(t=new o),this.rawParams=e,this.queryEncoder=t,this.paramsMap=paramParser(e)}return URLSearchParams.prototype.clone=function(){var e=new URLSearchParams("",this.queryEncoder);return e.appendAll(this),e},URLSearchParams.prototype.has=function(e){return this.paramsMap.has(e)},URLSearchParams.prototype.get=function(e){var t=this.paramsMap.get(e);return Array.isArray(t)?t[0]:null},URLSearchParams.prototype.getAll=function(e){return this.paramsMap.get(e)||[]},URLSearchParams.prototype.set=function(e,t){if(void 0===t||null===t)return void this.delete(e);var n=this.paramsMap.get(e)||[];n.length=0,n.push(t),this.paramsMap.set(e,n)},URLSearchParams.prototype.setAll=function(e){var t=this;e.paramsMap.forEach(function(e,n){var o=t.paramsMap.get(n)||[];o.length=0,o.push(e[0]),t.paramsMap.set(n,o)})},URLSearchParams.prototype.append=function(e,t){if(void 0!==t&&null!==t){var n=this.paramsMap.get(e)||[];n.push(t),this.paramsMap.set(e,n)}},URLSearchParams.prototype.appendAll=function(e){var t=this;e.paramsMap.forEach(function(e,n){for(var o=t.paramsMap.get(n)||[],r=0;r<e.length;++r)o.push(e[r]);t.paramsMap.set(n,o)})},URLSearchParams.prototype.replaceAll=function(e){var t=this;e.paramsMap.forEach(function(e,n){var o=t.paramsMap.get(n)||[];o.length=0;for(var r=0;r<e.length;++r)o.push(e[r]);t.paramsMap.set(n,o)})},URLSearchParams.prototype.toString=function(){var e=this,t=[];return this.paramsMap.forEach(function(n,o){n.forEach(function(n){return t.push(e.queryEncoder.encodeKey(o)+"="+e.queryEncoder.encodeValue(n))})}),t.join("&")},URLSearchParams.prototype.delete=function(e){this.paramsMap.delete(e)},URLSearchParams}()},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r});var r=new o.OpaqueToken("DocumentToken")},function(e,t,n){"use strict";function defaultErrorHandler(e){throw e}function parentLoadedConfig(e){for(var t=e.parent;t;){var n=t._routeConfig;if(n&&n._loadedConfig)return n._loadedConfig;if(n&&n.component)return null;t=t.parent}return null}function closestLoadedConfig(e){if(!e)return null;for(var t=e.parent;t;){var n=t._routeConfig;if(n&&n._loadedConfig)return n._loadedConfig;t=t.parent}return null}function nodeChildrenAsMap(e){return e?e.children.reduce(function(e,t){return e[t.value.outlet]=t,e},{}):{}}function getOutlet(e,t){var n=e._outlets[t.outlet];if(!n){var o=t.component.name;throw t.outlet===_.a?new Error("Cannot find primary outlet to load '"+o+"'"):new Error("Cannot find the outlet "+t.outlet+" to load '"+o+"'")}return n}var o=n(1),r=n(13),i=(n.n(r),n(320)),a=(n.n(i),n(117)),s=(n.n(a),n(324)),u=(n.n(s),n(37)),l=(n.n(u),n(118)),c=(n.n(l),n(151)),d=(n.n(c),n(225)),p=(n.n(d),n(692)),g=n(693),f=n(694),h=n(695),m=n(698),y=n(199),b=n(200),v=n(113),_=n(58),E=n(91),T=n(59);n.d(t,"e",function(){return S}),n.d(t,"b",function(){return A}),n.d(t,"c",function(){return M}),n.d(t,"d",function(){return C}),n.d(t,"f",function(){return k}),n.d(t,"a",function(){return R});var S=function(){function NavigationStart(e,t){this.id=e,this.url=t}return NavigationStart.prototype.toString=function(){return"NavigationStart(id: "+this.id+", url: '"+this.url+"')"},NavigationStart}(),A=function(){function NavigationEnd(e,t,n){this.id=e,this.url=t,this.urlAfterRedirects=n}return NavigationEnd.prototype.toString=function(){return"NavigationEnd(id: "+this.id+", url: '"+this.url+"', urlAfterRedirects: '"+this.urlAfterRedirects+"')"},NavigationEnd}(),M=function(){function NavigationCancel(e,t,n){this.id=e,this.url=t,this.reason=n}return NavigationCancel.prototype.toString=function(){return"NavigationCancel(id: "+this.id+", url: '"+this.url+"')"},NavigationCancel}(),C=function(){function NavigationError(e,t,n){this.id=e,this.url=t,this.error=n}return NavigationError.prototype.toString=function(){return"NavigationError(id: "+this.id+", url: '"+this.url+"', error: "+this.error+")"},NavigationError}(),k=function(){function RoutesRecognized(e,t,n,o){this.id=e,this.url=t,this.urlAfterRedirects=n,this.state=o}return RoutesRecognized.prototype.toString=function(){return"RoutesRecognized(id: "+this.id+", url: '"+this.url+"', urlAfterRedirects: '"+this.urlAfterRedirects+"', state: "+this.state+")"},RoutesRecognized}(),R=function(){function Router(e,t,o,i,a,s,u,l){this.rootComponentType=e,this.urlSerializer=t,this.outletMap=o,this.location=i,this.injector=a,this.config=l,this.navigationId=0,this.errorHandler=defaultErrorHandler,this.navigated=!1,this.resetConfig(l),this.routerEvents=new r.Subject,this.currentUrlTree=n.i(E.e)(),this.configLoader=new y.b(s,u),this.currentRouterState=n.i(v.f)(this.currentUrlTree,this.rootComponentType)}return Router.prototype.initialNavigation=function(){this.setUpLocationChangeListener(),this.navigateByUrl(this.location.path(!0),{replaceUrl:!0})},Router.prototype.setUpLocationChangeListener=function(){var e=this;this.locationSubscription=this.location.subscribe(Zone.current.wrap(function(t){var n=e.urlSerializer.parse(t.url);return e.currentUrlTree.toString()!==n.toString()?e.scheduleNavigation(n,{skipLocationChange:t.pop,replaceUrl:!0}):null}))},Object.defineProperty(Router.prototype,"routerState",{get:function(){return this.currentRouterState},enumerable:!0,configurable:!0}),Object.defineProperty(Router.prototype,"url",{get:function(){return this.serializeUrl(this.currentUrlTree)},enumerable:!0,configurable:!0}),Object.defineProperty(Router.prototype,"events",{get:function(){return this.routerEvents},enumerable:!0,configurable:!0}),Router.prototype.resetConfig=function(e){n.i(g.a)(e),this.config=e},Router.prototype.ngOnDestroy=function(){this.dispose()},Router.prototype.dispose=function(){this.locationSubscription.unsubscribe()},Router.prototype.createUrlTree=function(e,t){var o=void 0===t?{}:t,r=o.relativeTo,i=o.queryParams,a=o.fragment,s=o.preserveQueryParams,u=o.preserveFragment,l=r?r:this.routerState.root,c=s?this.currentUrlTree.queryParams:i,d=u?this.currentUrlTree.fragment:a;return n.i(h.a)(l,this.currentUrlTree,e,c,d)},Router.prototype.navigateByUrl=function(e,t){if(void 0===t&&(t={skipLocationChange:!1}),e instanceof E.b)return this.scheduleNavigation(e,t);var n=this.urlSerializer.parse(e);return this.scheduleNavigation(n,t)},Router.prototype.navigate=function(e,t){return void 0===t&&(t={skipLocationChange:!1}),this.scheduleNavigation(this.createUrlTree(e,t),t)},Router.prototype.serializeUrl=function(e){return this.urlSerializer.serialize(e)},Router.prototype.parseUrl=function(e){return this.urlSerializer.parse(e)},Router.prototype.isActive=function(e,t){if(e instanceof E.b)return n.i(E.f)(this.currentUrlTree,e,t);var o=this.urlSerializer.parse(e);return n.i(E.f)(this.currentUrlTree,o,t)},Router.prototype.scheduleNavigation=function(e,t){var n=this,o=++this.navigationId;return this.routerEvents.next(new S(o,this.serializeUrl(e))),Promise.resolve().then(function(r){return n.runNavigate(e,t.skipLocationChange,t.replaceUrl,o)})},Router.prototype.runNavigate=function(e,t,o,r){var i=this;return r!==this.navigationId?(this.location.go(this.urlSerializer.serialize(this.currentUrlTree)),this.routerEvents.next(new M(r,this.serializeUrl(e),"Navigation ID "+r+" is not equal to the current navigation id "+this.navigationId)),Promise.resolve(!1)):new Promise(function(s,l){var d,g,h,y,b=i.currentRouterState,v=i.currentUrlTree,E=n.i(p.a)(i.injector,i.configLoader,e,i.config),T=c.mergeMap.call(E,function(e){return y=e,n.i(m.a)(i.rootComponentType,i.config,y,i.serializeUrl(y))}),S=u.map.call(T,function(t){return i.routerEvents.next(new k(r,i.serializeUrl(e),i.serializeUrl(y),t)),t}),R=u.map.call(S,function(e){return n.i(f.a)(e,i.currentRouterState)}),N=u.map.call(R,function(e){d=e,h=new D(d.snapshot,i.currentRouterState.snapshot,i.injector),h.traverse(i.outletMap)}),O=c.mergeMap.call(N,function(){return h.checkGuards()}),I=c.mergeMap.call(O,function(e){return e?u.map.call(h.resolveData(),function(){return e}):n.i(a.of)(e)});I.forEach(function(e){if(!e||r!==i.navigationId)return void(g=!1);if(i.currentUrlTree=y,i.currentRouterState=d,!t){var n=i.urlSerializer.serialize(y);i.location.isCurrentPathEqualTo(n)||o?i.location.replaceState(n):i.location.go(n)}new w(d,b).activate(i.outletMap),g=!0}).then(function(){i.navigated=!0,g?(i.routerEvents.next(new A(r,i.serializeUrl(e),i.serializeUrl(y))),s(!0)):(i.routerEvents.next(new M(r,i.serializeUrl(e),"")),s(!1))},function(t){if(t instanceof _.b)i.navigated=!0,i.routerEvents.next(new M(r,i.serializeUrl(e),t.message)),s(!1);else{i.routerEvents.next(new C(r,i.serializeUrl(e),t));try{s(i.errorHandler(t))}catch(n){l(n)}}r===i.navigationId&&(i.currentRouterState=b,i.currentUrlTree=v,i.location.replaceState(i.serializeUrl(v)))})})},Router}(),N=function(){function CanActivate(e){this.path=e}return Object.defineProperty(CanActivate.prototype,"route",{get:function(){return this.path[this.path.length-1]},enumerable:!0,configurable:!0}),CanActivate}(),O=function(){function CanDeactivate(e,t){this.component=e,this.route=t}return CanDeactivate}(),D=function(){function PreActivation(e,t,n){this.future=e,this.curr=t,this.injector=n,this.checks=[]}return PreActivation.prototype.traverse=function(e){var t=this.future._root,n=this.curr?this.curr._root:null;this.traverseChildRoutes(t,n,e,[t.value])},PreActivation.prototype.checkGuards=function(){var e=this;if(0===this.checks.length)return n.i(a.of)(!0);var t=n.i(i.from)(this.checks),o=u.map.call(t,function(t){if(t instanceof N)return n.i(T.f)(n.i(i.from)([e.runCanActivateChild(t.path),e.runCanActivate(t.route)]));if(t instanceof O){var o=t;return e.runCanDeactivate(o.component,o.route)}throw new Error("Cannot be reached")}),r=l.mergeAll.call(o);return s.every.call(r,function(e){return e===!0})},PreActivation.prototype.resolveData=function(){var e=this;if(0===this.checks.length)return n.i(a.of)(null);var t=n.i(i.from)(this.checks),o=c.mergeMap.call(t,function(t){return t instanceof N?e.runResolve(t.route):n.i(a.of)(null)});return d.reduce.call(o,function(e,t){return e})},PreActivation.prototype.traverseChildRoutes=function(e,t,o,r){var i=this,a=nodeChildrenAsMap(t);e.children.forEach(function(e){i.traverseRoutes(e,a[e.value.outlet],o,r.concat([e.value])),delete a[e.value.outlet]}),n.i(T.c)(a,function(e,t){return i.deactivateOutletAndItChildren(e,o._outlets[t])})},PreActivation.prototype.traverseRoutes=function(e,t,o,r){var i=e.value,a=t?t.value:null,s=o?o._outlets[e.value.outlet]:null;a&&i._routeConfig===a._routeConfig?(n.i(T.d)(i.params,a.params)?i.data=a.data:this.checks.push(new O(s.component,a),new N(r)),i.component?this.traverseChildRoutes(e,t,s?s.outletMap:null,r):this.traverseChildRoutes(e,t,o,r)):(a&&(a.component?this.deactivateOutletAndItChildren(a,s):this.deactivateOutletMap(o)),this.checks.push(new N(r)),i.component?this.traverseChildRoutes(e,null,s?s.outletMap:null,r):this.traverseChildRoutes(e,null,o,r))},PreActivation.prototype.deactivateOutletAndItChildren=function(e,t){t&&t.isActivated&&(this.deactivateOutletMap(t.outletMap),this.checks.push(new O(t.component,e)))},PreActivation.prototype.deactivateOutletMap=function(e){var t=this;n.i(T.c)(e._outlets,function(e){e.isActivated&&t.deactivateOutletAndItChildren(e.activatedRoute.snapshot,e)})},PreActivation.prototype.runCanActivate=function(e){var t=this,o=e._routeConfig?e._routeConfig.canActivate:null;if(!o||0===o.length)return n.i(a.of)(!0);var r=u.map.call(n.i(i.from)(o),function(o){var r=t.getToken(o,e);return r.canActivate?n.i(T.b)(r.canActivate(e,t.future)):n.i(T.b)(r(e,t.future));
});return n.i(T.f)(r)},PreActivation.prototype.runCanActivateChild=function(e){var t=this,o=e[e.length-1],r=e.slice(0,e.length-1).reverse().map(function(e){return t.extractCanActivateChild(e)}).filter(function(e){return null!==e});return n.i(T.f)(u.map.call(n.i(i.from)(r),function(e){var r=u.map.call(n.i(i.from)(e.guards),function(e){var r=t.getToken(e,e.node);return r.canActivateChild?n.i(T.b)(r.canActivateChild(o,t.future)):n.i(T.b)(r(o,t.future))});return n.i(T.f)(r)}))},PreActivation.prototype.extractCanActivateChild=function(e){var t=e._routeConfig?e._routeConfig.canActivateChild:null;return t&&0!==t.length?{node:e,guards:t}:null},PreActivation.prototype.runCanDeactivate=function(e,t){var o=this,r=t&&t._routeConfig?t._routeConfig.canDeactivate:null;if(!r||0===r.length)return n.i(a.of)(!0);var c=u.map.call(n.i(i.from)(r),function(r){var i=o.getToken(r,t);return i.canDeactivate?n.i(T.b)(i.canDeactivate(e,t,o.curr)):n.i(T.b)(i(e,t,o.curr))}),d=l.mergeAll.call(c);return s.every.call(d,function(e){return e===!0})},PreActivation.prototype.runResolve=function(e){var t=e._resolve;return u.map.call(this.resolveNode(t.current,e),function(o){return t.resolvedData=o,e.data=n.i(T.g)(e.data,t.flattenedResolvedData),null})},PreActivation.prototype.resolveNode=function(e,t){var o=this;return n.i(T.e)(e,function(e,r){var i=o.getToken(r,t);return i.resolve?n.i(T.b)(i.resolve(t,o.future)):n.i(T.b)(i(t,o.future))})},PreActivation.prototype.getToken=function(e,t){var n=closestLoadedConfig(t),o=n?n.injector:this.injector;return o.get(e)},PreActivation}(),w=function(){function ActivateRoutes(e,t){this.futureState=e,this.currState=t}return ActivateRoutes.prototype.activate=function(e){var t=this.futureState._root,o=this.currState?this.currState._root:null;n.i(v.g)(this.futureState.root),this.activateChildRoutes(t,o,e)},ActivateRoutes.prototype.activateChildRoutes=function(e,t,o){var r=this,i=nodeChildrenAsMap(t);e.children.forEach(function(e){r.activateRoutes(e,i[e.value.outlet],o),delete i[e.value.outlet]}),n.i(T.c)(i,function(e,t){return r.deactivateOutletAndItChildren(o._outlets[t])})},ActivateRoutes.prototype.activateRoutes=function(e,t,o){var r=e.value,i=t?t.value:null;if(r===i)if(n.i(v.g)(r),r.component){var a=getOutlet(o,e.value);this.activateChildRoutes(e,t,a.outletMap)}else this.activateChildRoutes(e,t,o);else{if(i)if(i.component){var a=getOutlet(o,e.value);this.deactivateOutletAndItChildren(a)}else this.deactivateOutletMap(o);if(r.component){n.i(v.g)(r);var a=getOutlet(o,e.value),s=new b.a;this.placeComponentIntoOutlet(s,r,a),this.activateChildRoutes(e,null,s)}else n.i(v.g)(r),this.activateChildRoutes(e,null,o)}},ActivateRoutes.prototype.placeComponentIntoOutlet=function(e,t,n){var r=[{provide:v.b,useValue:t},{provide:b.a,useValue:e}],i=parentLoadedConfig(t.snapshot),a=null,s=null;i&&(a=i.factoryResolver,s=i.injector,r.push({provide:o.ComponentFactoryResolver,useValue:a})),n.activate(t,a,s,o.ReflectiveInjector.resolve(r),e)},ActivateRoutes.prototype.deactivateOutletAndItChildren=function(e){e&&e.isActivated&&(this.deactivateOutletMap(e.outletMap),e.deactivate())},ActivateRoutes.prototype.deactivateOutletMap=function(e){var t=this;n.i(T.c)(e._outlets,function(e){return t.deactivateOutletAndItChildren(e)})},ActivateRoutes}()},function(e,t,n){"use strict";var o=n(1),r=n(222),i=(n.n(r),n(117)),a=(n.n(i),n(37)),s=(n.n(a),n(151)),u=(n.n(s),n(59));n.d(t,"c",function(){return l}),n.d(t,"a",function(){return c}),n.d(t,"b",function(){return d});var l=new o.OpaqueToken("ROUTES"),c=function(){function LoadedRouterConfig(e,t,n){this.routes=e,this.injector=t,this.factoryResolver=n}return LoadedRouterConfig}(),d=function(){function RouterConfigLoader(e,t){this.loader=e,this.compiler=t}return RouterConfigLoader.prototype.load=function(e,t){return a.map.call(this.loadModuleFactory(t),function(t){var o=t.create(e);return new c(n.i(u.a)(o.injector.get(l)),o.injector,o.componentFactoryResolver)})},RouterConfigLoader.prototype.loadModuleFactory=function(e){var t=this;if("string"==typeof e)return n.i(r.fromPromise)(this.loader.load(e));var a=this.compiler instanceof o.Compiler;return s.mergeMap.call(n.i(u.b)(e()),function(e){return a?n.i(i.of)(e):n.i(r.fromPromise)(t.compiler.compileModuleAsync(e))})},RouterConfigLoader}()},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o=function(){function RouterOutletMap(){this._outlets={}}return RouterOutletMap.prototype.registerOutlet=function(e,t){this._outlets[e]=t},RouterOutletMap.prototype.removeOutlet=function(e){this._outlets[e]=void 0},RouterOutletMap}()},,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var o=n(496);t.fromPromise=o.PromiseObservable.create},,,function(e,t,n){"use strict";function reduce(e,t){var n=!1;return arguments.length>=2&&(n=!0),this.lift(new i(e,t,n))}var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(3);t.reduce=reduce;var i=function(){function ReduceOperator(e,t,n){void 0===n&&(n=!1),this.accumulator=e,this.seed=t,this.hasSeed=n}return ReduceOperator.prototype.call=function(e,t){return t.subscribe(new a(e,this.accumulator,this.seed,this.hasSeed))},ReduceOperator}();t.ReduceOperator=i;var a=function(e){function ReduceSubscriber(t,n,o,r){e.call(this,t),this.accumulator=n,this.hasSeed=r,this.index=0,this.hasValue=!1,this.acc=o,this.hasSeed||this.index++}return o(ReduceSubscriber,e),ReduceSubscriber.prototype._next=function(e){this.hasValue||(this.hasValue=this.hasSeed)?this._tryReduce(e):(this.acc=e,this.hasValue=!0)},ReduceSubscriber.prototype._tryReduce=function(e){var t;try{t=this.accumulator(this.acc,e,this.index++)}catch(n){return void this.destination.error(n)}this.acc=t},ReduceSubscriber.prototype._complete=function(){(this.hasValue||this.hasSeed)&&this.destination.next(this.acc),this.destination.complete()},ReduceSubscriber}(r.Subscriber);t.ReduceSubscriber=a},,,function(e,t,n){"use strict";var o=n(26),r=o.root.Symbol;t.rxSubscriber="function"==typeof r&&"function"==typeof r.for?r.for("rxSubscriber"):"@@rxSubscriber",t.$$rxSubscriber=t.rxSubscriber},function(e,t){"use strict";var n=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},o=function(e){function ObjectUnsubscribedError(){var t=e.call(this,"object unsubscribed");this.name=t.name="ObjectUnsubscribedError",this.stack=t.stack,this.message=t.message}return n(ObjectUnsubscribedError,e),ObjectUnsubscribedError}(Error);t.ObjectUnsubscribedError=o},,function(e,t){"use strict";function isFunction(e){return"function"==typeof e}t.isFunction=isFunction},,function(e,t,n){"use strict";var o=n(671);n.d(t,"ResponseType",function(){return o.a}),n.d(t,"JSONPBackend",function(){return o.b}),n.d(t,"JSONPConnection",function(){return o.c}),n.d(t,"CookieXSRFStrategy",function(){return o.d}),n.d(t,"XHRBackend",function(){return o.e}),n.d(t,"XHRConnection",function(){return o.f}),n.d(t,"BaseRequestOptions",function(){return o.g}),n.d(t,"RequestOptions",function(){return o.h}),n.d(t,"BaseResponseOptions",function(){return o.i}),n.d(t,"ResponseOptions",function(){return o.j}),n.d(t,"ReadyState",function(){return o.k}),n.d(t,"RequestMethod",function(){return o.l}),n.d(t,"ResponseContentType",function(){return o.m}),n.d(t,"BrowserXhr",function(){return o.n}),n.d(t,"Headers",function(){return o.o}),n.d(t,"Http",function(){return o.p}),n.d(t,"Jsonp",function(){return o.q}),n.d(t,"HttpModule",function(){return o.r}),n.d(t,"JsonpModule",function(){return o.s}),n.d(t,"Connection",function(){return o.t}),n.d(t,"ConnectionBackend",function(){return o.u}),n.d(t,"XSRFStrategy",function(){return o.v}),n.d(t,"Request",function(){return o.w}),n.d(t,"Response",function(){return o.x}),n.d(t,"QueryEncoder",function(){return o.y}),n.d(t,"URLSearchParams",function(){return o.z}),n.d(t,"VERSION",function(){return o.A})},function(e,t,n){"use strict";var o=n(674);n.d(t,"VERSION",function(){return o.a}),n.d(t,"RESOURCE_CACHE_PROVIDER",function(){return o.b}),n.d(t,"platformBrowserDynamic",function(){return o.c}),n.d(t,"__platform_browser_dynamic_private__",function(){return o.d})},,,function(e,t,n){"use strict";function _stripBaseHref(e,t){return e&&t.startsWith(e)?t.substring(e.length):t}function _stripIndexHtml(e){return e.replace(/\/index.html$/,"")}var o=n(1),r=n(163);n.d(t,"a",function(){return i});var i=function(){function Location(e){var t=this;this._subject=new o.EventEmitter,this._platformStrategy=e;var n=this._platformStrategy.getBaseHref();this._baseHref=Location.stripTrailingSlash(_stripIndexHtml(n)),this._platformStrategy.onPopState(function(e){t._subject.emit({url:t.path(!0),pop:!0,type:e.type})})}return Location.prototype.path=function(e){return void 0===e&&(e=!1),this.normalize(this._platformStrategy.path(e))},Location.prototype.isCurrentPathEqualTo=function(e,t){return void 0===t&&(t=""),this.path()==this.normalize(e+Location.normalizeQueryParams(t))},Location.prototype.normalize=function(e){return Location.stripTrailingSlash(_stripBaseHref(this._baseHref,_stripIndexHtml(e)))},Location.prototype.prepareExternalUrl=function(e){return e&&"/"!==e[0]&&(e="/"+e),this._platformStrategy.prepareExternalUrl(e)},Location.prototype.go=function(e,t){void 0===t&&(t=""),this._platformStrategy.pushState(null,"",e,t)},Location.prototype.replaceState=function(e,t){void 0===t&&(t=""),this._platformStrategy.replaceState(null,"",e,t)},Location.prototype.forward=function(){this._platformStrategy.forward()},Location.prototype.back=function(){this._platformStrategy.back()},Location.prototype.subscribe=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),this._subject.subscribe({next:e,error:t,complete:n})},Location.normalizeQueryParams=function(e){return e&&"?"!==e[0]?"?"+e:e},Location.joinWithSlash=function(e,t){if(0==e.length)return t;if(0==t.length)return e;var n=0;return e.endsWith("/")&&n++,t.startsWith("/")&&n++,2==n?e+t.substring(1):1==n?e+t:e+"/"+t},Location.stripTrailingSlash=function(e){return e.replace(/\/$/,"")},Location.decorators=[{type:o.Injectable}],Location.ctorParameters=function(){return[{type:r.a}]},Location}()},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r}),n.d(t,"b",function(){return i});var r=function(){function PlatformLocation(){}return PlatformLocation.prototype.getBaseHrefFromDOM=function(){},PlatformLocation.prototype.onPopState=function(e){},PlatformLocation.prototype.onHashChange=function(e){},Object.defineProperty(PlatformLocation.prototype,"pathname",{get:function(){return null},enumerable:!0,configurable:!0}),Object.defineProperty(PlatformLocation.prototype,"search",{get:function(){return null},enumerable:!0,configurable:!0}),Object.defineProperty(PlatformLocation.prototype,"hash",{get:function(){return null},enumerable:!0,configurable:!0}),PlatformLocation.prototype.replaceState=function(e,t,n){},PlatformLocation.prototype.pushState=function(e,t,n){},PlatformLocation.prototype.forward=function(){},PlatformLocation.prototype.back=function(){},PlatformLocation}(),i=new o.OpaqueToken("Location Initialized")},function(e,t,n){"use strict";function _resolveViewStatements(e,t){return t.dependencies.forEach(function(t){if(t instanceof u.a){var o=t;o.placeholder.reference=e.getStaticSymbol(_ngfactoryModuleUrl(n.i(r.m)(o.comp)),t.name)}else if(t instanceof u.b){var i=t;i.placeholder.reference=e.getStaticSymbol(_ngfactoryModuleUrl(n.i(r.m)(i.comp)),_componentFactoryName(i.comp))}else if(t instanceof u.c){var a=t;a.placeholder.reference=e.getStaticSymbol(_ngfactoryModuleUrl(n.i(r.m)(a.dir)),a.name)}}),t.statements}function _resolveStyleStatements(e,t,n){return t.dependencies.forEach(function(t){t.valuePlaceholder.reference=e.getStaticSymbol(_stylesModuleUrl(t.moduleUrl,t.isShimmed,n),t.name)}),t.statements}function _ngfactoryModuleUrl(e){var t=_splitTypescriptSuffix(e);return t[0]+".ngfactory"+t[1]}function _componentFactoryName(e){return n.i(r.c)(e)+"NgFactory"}function _stylesModuleUrl(e,t,n){return""+e+(t?".shim":"")+".ngstyle"+n}function _assertComponent(e){if(!e.isComponent)throw new Error("Could not compile '"+n.i(r.c)(e.type)+"' because it is not a component.")}function _splitTypescriptSuffix(e){if(e.endsWith(".d.ts"))return[e.slice(0,-5),".ts"];var t=e.lastIndexOf(".");return t!==-1?[e.substring(0,t),e.substring(t)]:[e,""]}function analyzeNgModules(e,t,n){var o=_createNgModules(e,t,n),r=o.ngModules,i=o.symbolsMissingModule;return _analyzeNgModules(e,r,i,n)}function analyzeAndValidateNgModules(e,t,n){var o=analyzeNgModules(e,t,n);if(o.symbolsMissingModule&&o.symbolsMissingModule.length){var r=o.symbolsMissingModule.map(function(e){return"Cannot determine the module for class "+e.name+" in "+e.filePath+"!"});throw new Error(r.join("\n"))}return o}function _analyzeNgModules(e,t,n,o){var r=new Map;t.forEach(function(e){return r.set(e.type.reference,e)});var i=new Map,a=new Map,s=new Map,u=new Map,l=new Map,c=new Set;e.forEach(function(e){var t=e.filePath;c.add(t),o.isInjectable(e)&&l.set(t,(l.get(t)||[]).concat(e))}),t.forEach(function(e){var t=e.type.reference.filePath;c.add(t),a.set(t,(a.get(t)||[]).concat(e.type.reference)),e.declaredDirectives.forEach(function(t){var n=t.reference.filePath;c.add(n),s.set(n,(s.get(n)||[]).concat(t.reference)),i.set(t.reference,e)}),e.declaredPipes.forEach(function(t){var n=t.reference.filePath;c.add(n),u.set(n,(u.get(n)||[]).concat(t.reference)),i.set(t.reference,e)})});var d=[];return c.forEach(function(e){var t=s.get(e)||[],n=u.get(e)||[],o=a.get(e)||[],r=l.get(e)||[];d.push({srcUrl:e,directives:t,pipes:n,ngModules:o,injectables:r})}),{ngModuleByPipeOrDirective:i,files:d,ngModules:t,symbolsMissingModule:n}}function extractProgramSymbols(e,t,n){var o=[];return t.filter(function(e){return n.isSourceFile(e)}).forEach(function(t){e.getSymbolsOf(t).forEach(function(t){var n=e.resolveSymbol(t),r=n.metadata;r&&"error"!=r.__symbolic&&o.push(n.symbol)})}),o}function _createNgModules(e,t,n){var o=new Map,r=[],i=new Set,a=function(e){if(o.has(e)||!t.isSourceFile(e.filePath))return!1;var r=n.getNgModuleMetadata(e,!1);return r&&(o.set(r.type.reference,r),r.declaredDirectives.forEach(function(e){return i.add(e.reference)}),r.declaredPipes.forEach(function(e){return i.add(e.reference)}),r.transitiveModule.modules.forEach(function(e){return a(e.reference)})),!!r};e.forEach(function(e){a(e)||!n.isDirective(e)&&!n.isPipe(e)||r.push(e)});var s=r.filter(function(e){return!i.has(e)});return{ngModules:Array.from(o.values()),symbolsMissingModule:s}}var o=n(349),r=n(14),i=n(85),a=n(19),s=n(10),u=n(130),l=n(616),c=n(350);n.d(t,"a",function(){return d}),t.c=analyzeAndValidateNgModules,t.b=extractProgramSymbols;var d=function(){function AotCompiler(e,t,n,r,i,a,s,u,l,c,d,p,g){this._host=e,this._metadataResolver=t,this._templateParser=n,this._styleCompiler=r,this._viewCompiler=i,this._dirWrapperCompiler=a,this._ngModuleCompiler=s,this._outputEmitter=u,this._summaryResolver=l,this._localeId=c,this._translationFormat=d,this._animationParser=p,this._symbolResolver=g,this._animationCompiler=new o.a}return AotCompiler.prototype.clearCache=function(){this._metadataResolver.clearCache()},AotCompiler.prototype.compileAll=function(e){var t=this,n=extractProgramSymbols(this._symbolResolver,e,this._host),o=analyzeAndValidateNgModules(n,this._host,this._metadataResolver),r=o.ngModuleByPipeOrDirective,a=o.files,s=o.ngModules;return Promise.all(s.map(function(e){return t._metadataResolver.loadNgModuleDirectiveAndPipeMetadata(e.type.reference,!1)})).then(function(){var e=a.map(function(e){return t._compileSrcFile(e.srcUrl,r,e.directives,e.pipes,e.ngModules,e.injectables)});return i.a.flatten(e)})},AotCompiler.prototype._compileSrcFile=function(e,t,o,i,a,s){var u=this,l=_splitTypescriptSuffix(e)[1],c=[],d=[],p=[];if(p.push(this._createSummary(e,o,i,a,s)),d.push.apply(d,a.map(function(e){return u._compileModule(e,c)})),d.push.apply(d,o.map(function(e){return u._compileDirectiveWrapper(e,c)})),o.forEach(function(o){var i=u._metadataResolver.getDirectiveMetadata(o);if(!i.isComponent)return Promise.resolve(null);var a=t.get(o);if(!a)throw new Error("Internal Error: cannot determine the module for component "+n.i(r.c)(i.type)+"!");_assertComponent(i);var s=u._styleCompiler.compileComponent(i);s.externalStylesheets.forEach(function(t){p.push(u._codgenStyles(e,t,l))}),d.push(u._compileComponentFactory(i,a,l,c),u._compileComponent(i,a,a.transitiveModule.directives,s.componentStylesheet,l,c))}),c.length>0){var g=this._codegenSourceModule(e,_ngfactoryModuleUrl(e),c,d);p.unshift(g)}return p},AotCompiler.prototype._createSummary=function(e,t,o,r,i){var a=this,s=this._symbolResolver.getSymbolsOf(e).map(function(e){return a._symbolResolver.resolveSymbol(e)}),u=r.map(function(e){return a._metadataResolver.getNgModuleSummary(e)}).concat(t.map(function(e){return a._metadataResolver.getDirectiveSummary(e)}),o.map(function(e){return a._metadataResolver.getPipeSummary(e)}),i.map(function(e){return a._metadataResolver.getInjectableSummary(e)})),d=n.i(c.a)(this._host,this._summaryResolver,this._symbolResolver,s,u);return new l.a(e,n.i(c.b)(e),d)},AotCompiler.prototype._compileModule=function(e,t){var o=this,i=this._metadataResolver.getNgModuleMetadata(e),s=[];this._localeId&&s.push({token:n.i(a.d)(a.b.LOCALE_ID),useValue:this._localeId}),this._translationFormat&&s.push({token:n.i(a.d)(a.b.TRANSLATIONS_FORMAT),useValue:this._translationFormat});var u=this._ngModuleCompiler.compile(i,s);return u.dependencies.forEach(function(e){e.placeholder.reference=o._symbolResolver.getStaticSymbol(_ngfactoryModuleUrl(n.i(r.m)(e.comp)),_componentFactoryName(e.comp))}),t.push.apply(t,u.statements),u.ngModuleFactoryVar},AotCompiler.prototype._compileDirectiveWrapper=function(e,t){var n=this._metadataResolver.getDirectiveMetadata(e),o=this._dirWrapperCompiler.compile(n);return t.push.apply(t,o.statements),o.dirWrapperClassVar},AotCompiler.prototype._compileComponentFactory=function(e,t,o,i){var u=n.i(r.v)(this._symbolResolver.getStaticSymbol(n.i(r.m)(e.type),n.i(r.c)(e.type)+"_Host"),e),l=this._compileComponent(u,t,[e.type],null,o,i),c=_componentFactoryName(e.type);return i.push(s.g(c).set(s.d(n.i(a.e)(a.b.ComponentFactory),[s.B(e.type)]).instantiate([s.f(e.selector),s.g(l),s.d(e.type)],s.B(n.i(a.e)(a.b.ComponentFactory),[s.B(e.type)],[s.J.Const]))).toDeclStmt(null,[s.b.Final])),c},AotCompiler.prototype._compileComponent=function(e,t,o,i,a,u){var l=this,c=this._animationParser.parseComponent(e),d=o.map(function(e){return l._metadataResolver.getDirectiveSummary(e.reference)}),p=t.transitiveModule.pipes.map(function(e){return l._metadataResolver.getPipeSummary(e.reference)}),g=this._templateParser.parse(e,e.template.template,d,p,t.schemas,n.i(r.c)(e.type)),f=i?s.g(i.stylesVar):s.n([]),h=this._animationCompiler.compile(n.i(r.c)(e.type),c),m=this._viewCompiler.compileComponent(e,g,f,p,h);return i&&u.push.apply(u,_resolveStyleStatements(this._symbolResolver,i,a)),h.forEach(function(e){return u.push.apply(u,e.statements)}),u.push.apply(u,_resolveViewStatements(this._symbolResolver,m)),m.viewClassVar},AotCompiler.prototype._codgenStyles=function(e,t,n){return _resolveStyleStatements(this._symbolResolver,t,n),this._codegenSourceModule(e,_stylesModuleUrl(t.meta.moduleUrl,t.isShimmed,n),t.statements,[t.stylesVar])},AotCompiler.prototype._codegenSourceModule=function(e,t,n,o){return new l.a(e,t,this._outputEmitter.emitStatements(t,n,o))},AotCompiler}()},function(e,t,n){"use strict";function isStaticType(e){return"object"==typeof e&&e.name&&e.filePath}var o=n(17);n.d(t,"a",function(){return r});var r=function(){function StaticAndDynamicReflectionCapabilities(e){this.staticDelegate=e,this.dynamicDelegate=new o.M}return StaticAndDynamicReflectionCapabilities.install=function(e){o.a.updateCapabilities(new StaticAndDynamicReflectionCapabilities(e))},StaticAndDynamicReflectionCapabilities.prototype.isReflectionEnabled=function(){return!0},StaticAndDynamicReflectionCapabilities.prototype.factory=function(e){return this.dynamicDelegate.factory(e)},StaticAndDynamicReflectionCapabilities.prototype.hasLifecycleHook=function(e,t){return isStaticType(e)?this.staticDelegate.hasLifecycleHook(e,t):this.dynamicDelegate.hasLifecycleHook(e,t)},StaticAndDynamicReflectionCapabilities.prototype.parameters=function(e){return isStaticType(e)?this.staticDelegate.parameters(e):this.dynamicDelegate.parameters(e)},StaticAndDynamicReflectionCapabilities.prototype.annotations=function(e){return isStaticType(e)?this.staticDelegate.annotations(e):this.dynamicDelegate.annotations(e)},StaticAndDynamicReflectionCapabilities.prototype.propMetadata=function(e){return isStaticType(e)?this.staticDelegate.propMetadata(e):this.dynamicDelegate.propMetadata(e)},StaticAndDynamicReflectionCapabilities.prototype.getter=function(e){return this.dynamicDelegate.getter(e)},StaticAndDynamicReflectionCapabilities.prototype.setter=function(e){return this.dynamicDelegate.setter(e)},StaticAndDynamicReflectionCapabilities.prototype.method=function(e){return this.dynamicDelegate.method(e)},StaticAndDynamicReflectionCapabilities.prototype.importUri=function(e){return this.staticDelegate.importUri(e)},StaticAndDynamicReflectionCapabilities.prototype.resolveIdentifier=function(e,t,n){return this.staticDelegate.resolveIdentifier(e,t)},StaticAndDynamicReflectionCapabilities.prototype.resolveEnum=function(e,t){return isStaticType(e)?this.staticDelegate.resolveEnum(e,t):null},StaticAndDynamicReflectionCapabilities}()},function(e,t,n){"use strict";function expandedMessage(e){switch(e.message){case"Reference to non-exported class":if(e.context&&e.context.className)return"Reference to a non-exported class "+e.context.className+". Consider exporting the class";break;case"Variable not initialized":return"Only initialized variables and constants can be referenced because the value of this variable is needed by the template compiler";case"Destructuring not supported":return"Referencing an exported destructured variable or constant is not supported by the template compiler. Consider simplifying this to avoid destructuring";case"Could not resolve type":if(e.context&&e.context.typeName)return"Could not resolve type "+e.context.typeName;break;case"Function call not supported":var t=e.context&&e.context.name?"Calling function '"+e.context.name+"', f":"F";return t+"unction calls are not supported. Consider replacing the function or lambda with a reference to an exported function";case"Reference to a local symbol":if(e.context&&e.context.name)return"Reference to a local (non-exported) symbol '"+e.context.name+"'. Consider exporting the symbol"}return e.message}function produceErrorMessage(e){return"Error encountered resolving symbol values statically. "+expandedMessage(e)}function mapStringMap(e,t){if(!e)return{};var n={};return Object.keys(e).forEach(function(o){var r=t(e[o],o);shouldIgnore(r)||(u.test(o)?Object.defineProperty(n,o,{enumerable:!1,configurable:!0,value:r}):n[o]=r)}),n}function isPrimitive(e){return null===e||"function"!=typeof e&&"object"!=typeof e}function shouldIgnore(e){return e&&"ignore"==e.__symbolic}function positionalError(e,t,n,o){var r=new Error(e);return r.fileName=t,r.line=n,r.column=o,r}var o=n(1),r=n(32),i=n(71);n.d(t,"a",function(){return l});var a=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},s={coreDecorators:"@angular/core/src/metadata",diDecorators:"@angular/core/src/di/metadata",diMetadata:"@angular/core/src/di/metadata",diOpaqueToken:"@angular/core/src/di/opaque_token",animationMetadata:"@angular/core/src/animation/metadata",provider:"@angular/core/src/di/provider"},u=/^\$.*\$$/,l=function(){function StaticReflector(e,t,n,o){var r=this;void 0===t&&(t=[]),void 0===n&&(n=[]),this.symbolResolver=e,this.errorRecorder=o,this.annotationCache=new Map,this.propertyCache=new Map,this.parameterCache=new Map,this.methodCache=new Map,this.conversionMap=new Map,this.initializeConversionMap(),t.forEach(function(e){return r._registerDecoratorOrConstructor(r.getStaticSymbol(e.filePath,e.name),e.ctor)}),n.forEach(function(e){return r._registerFunction(r.getStaticSymbol(e.filePath,e.name),e.fn)})}return StaticReflector.prototype.importUri=function(e){var t=this.findSymbolDeclaration(e);return t?t.filePath:null},StaticReflector.prototype.resolveIdentifier=function(e,t){return this.findDeclaration(t,e)},StaticReflector.prototype.findDeclaration=function(e,t,n){return this.findSymbolDeclaration(this.symbolResolver.getSymbolByModule(e,t,n))},StaticReflector.prototype.findSymbolDeclaration=function(e){var t=this.symbolResolver.resolveSymbol(e);return t&&t.metadata instanceof i.a?this.findSymbolDeclaration(t.metadata):e},StaticReflector.prototype.resolveEnum=function(e,t){var n=e;return this.getStaticSymbol(n.filePath,n.name,[t])},StaticReflector.prototype.annotations=function(e){var t=this.annotationCache.get(e);if(!t){t=[];var n=this.getTypeMetadata(e);if(n.extends){var o=this.annotations(this.simplify(e,n.extends));t.push.apply(t,o)}if(n.decorators){var r=this.simplify(e,n.decorators);t.push.apply(t,r)}this.annotationCache.set(e,t.filter(function(e){return!!e}))}return t},StaticReflector.prototype.propMetadata=function(e){var t=this,n=this.propertyCache.get(e);if(!n){var o=this.getTypeMetadata(e);if(n={},o.extends){var r=this.propMetadata(this.simplify(e,o.extends));Object.keys(r).forEach(function(e){n[e]=r[e]})}var i=o.members||{};Object.keys(i).forEach(function(o){var r=i[o],a=r.find(function(e){return"property"==e.__symbolic||"method"==e.__symbolic}),s=[];n[o]&&s.push.apply(s,n[o]),n[o]=s,a&&a.decorators&&s.push.apply(s,t.simplify(e,a.decorators))}),this.propertyCache.set(e,n)}return n},StaticReflector.prototype.parameters=function(e){if(!(e instanceof i.a))return this.reportError(new Error("parameters received "+JSON.stringify(e)+" which is not a StaticSymbol"),e),[];try{var t=this.parameterCache.get(e);if(!t){var n=this.getTypeMetadata(e),o=n?n.members:null,r=o?o.__ctor__:null;if(r){var a=r.find(function(e){return"constructor"==e.__symbolic}),s=this.simplify(e,a.parameters||[]),u=this.simplify(e,a.parameterDecorators||[]);t=[],s.forEach(function(e,n){var o=[];e&&o.push(e);var r=u?u[n]:null;r&&o.push.apply(o,r),t.push(o)})}else n.extends&&(t=this.parameters(this.simplify(e,n.extends)));t||(t=[]),this.parameterCache.set(e,t)}return t}catch(l){throw console.error("Failed on type "+JSON.stringify(e)+" with error "+l),l}},StaticReflector.prototype._methodNames=function(e){var t=this.methodCache.get(e);if(!t){var n=this.getTypeMetadata(e);if(t={},n.extends){var o=this._methodNames(this.simplify(e,n.extends));Object.keys(o).forEach(function(e){t[e]=o[e]})}var r=n.members||{};Object.keys(r).forEach(function(e){var n=r[e],o=n.some(function(e){return"method"==e.__symbolic});t[e]=t[e]||o}),this.methodCache.set(e,t)}return t},StaticReflector.prototype.hasLifecycleHook=function(e,t){e instanceof i.a||this.reportError(new Error("hasLifecycleHook received "+JSON.stringify(e)+" which is not a StaticSymbol"),e);try{return!!this._methodNames(e)[t]}catch(n){throw console.error("Failed on type "+JSON.stringify(e)+" with error "+n),n}},StaticReflector.prototype._registerDecoratorOrConstructor=function(e,t){this.conversionMap.set(e,function(e,n){return new(t.bind.apply(t,[void 0].concat(n)))})},StaticReflector.prototype._registerFunction=function(e,t){this.conversionMap.set(e,function(e,n){return t.apply(void 0,n)})},StaticReflector.prototype.initializeConversionMap=function(){var e=s.coreDecorators,t=s.diDecorators,n=s.diMetadata,r=s.diOpaqueToken,i=s.animationMetadata;s.provider;this.opaqueToken=this.findDeclaration(r,"OpaqueToken"),this._registerDecoratorOrConstructor(this.findDeclaration(t,"Host"),o.Host),this._registerDecoratorOrConstructor(this.findDeclaration(t,"Injectable"),o.Injectable),this._registerDecoratorOrConstructor(this.findDeclaration(t,"Self"),o.Self),this._registerDecoratorOrConstructor(this.findDeclaration(t,"SkipSelf"),o.SkipSelf),this._registerDecoratorOrConstructor(this.findDeclaration(t,"Inject"),o.Inject),this._registerDecoratorOrConstructor(this.findDeclaration(t,"Optional"),o.Optional),this._registerDecoratorOrConstructor(this.findDeclaration(e,"Attribute"),o.Attribute),this._registerDecoratorOrConstructor(this.findDeclaration(e,"ContentChild"),o.ContentChild),this._registerDecoratorOrConstructor(this.findDeclaration(e,"ContentChildren"),o.ContentChildren),this._registerDecoratorOrConstructor(this.findDeclaration(e,"ViewChild"),o.ViewChild),this._registerDecoratorOrConstructor(this.findDeclaration(e,"ViewChildren"),o.ViewChildren),this._registerDecoratorOrConstructor(this.findDeclaration(e,"Input"),o.Input),this._registerDecoratorOrConstructor(this.findDeclaration(e,"Output"),o.Output),this._registerDecoratorOrConstructor(this.findDeclaration(e,"Pipe"),o.Pipe),this._registerDecoratorOrConstructor(this.findDeclaration(e,"HostBinding"),o.HostBinding),this._registerDecoratorOrConstructor(this.findDeclaration(e,"HostListener"),o.HostListener),this._registerDecoratorOrConstructor(this.findDeclaration(e,"Directive"),o.Directive),this._registerDecoratorOrConstructor(this.findDeclaration(e,"Component"),o.Component),this._registerDecoratorOrConstructor(this.findDeclaration(e,"NgModule"),o.NgModule),this._registerDecoratorOrConstructor(this.findDeclaration(n,"Host"),o.Host),this._registerDecoratorOrConstructor(this.findDeclaration(n,"Self"),o.Self),this._registerDecoratorOrConstructor(this.findDeclaration(n,"SkipSelf"),o.SkipSelf),this._registerDecoratorOrConstructor(this.findDeclaration(n,"Optional"),o.Optional),this._registerFunction(this.findDeclaration(i,"trigger"),o.trigger),this._registerFunction(this.findDeclaration(i,"state"),o.state),this._registerFunction(this.findDeclaration(i,"transition"),o.transition),this._registerFunction(this.findDeclaration(i,"style"),o.style),this._registerFunction(this.findDeclaration(i,"animate"),o.animate),this._registerFunction(this.findDeclaration(i,"keyframes"),o.keyframes),this._registerFunction(this.findDeclaration(i,"sequence"),o.sequence),this._registerFunction(this.findDeclaration(i,"group"),o.group)},StaticReflector.prototype.getStaticSymbol=function(e,t,n){return this.symbolResolver.getStaticSymbol(e,t,n)},StaticReflector.prototype.reportError=function(e,t,n){if(!this.errorRecorder)throw e;this.errorRecorder(e,t&&t.filePath||n)},StaticReflector.prototype.simplify=function(e,t){function simplifyInContext(e,t,n){function resolveReferenceValue(e){var t=o.symbolResolver.resolveSymbol(e);return t?t.metadata:null}function simplifyCall(t,o,r){if(o&&"function"==o.__symbolic){if(s.get(t))throw new Error("Recursion not supported");s.set(t,!0);try{var i=o.value;if(i&&(0!=n||"error"!=i.__symbolic)){var u=o.parameters,l=o.defaults;r=r.map(function(t){return simplifyInContext(e,t,n+1)}),l&&l.length>r.length&&r.push.apply(r,l.slice(r.length).map(function(e){return simplify(e)}));for(var d=c.build(),p=0;p<u.length;p++)d.define(u[p],r[p]);var g,f=a;try{a=d.done(),g=simplifyInContext(t,i,n+1)}finally{a=f}return g}}finally{s.delete(t)}}return 0===n?{__symbolic:"ignore"}:simplify({__symbolic:"error",message:"Function call not supported",context:t})}function simplify(t){if(isPrimitive(t))return t;if(t instanceof Array){for(var r=[],s=0,u=t;s<u.length;s++){var l=u[s];if(l&&"spread"===l.__symbolic){var d=simplify(l.expression);if(Array.isArray(d)){for(var p=0,g=d;p<g.length;p++){var f=g[p];r.push(f)}continue}}var h=simplify(l);shouldIgnore(h)||r.push(h)}return r}if(t instanceof i.a){if(t===o.opaqueToken||o.conversionMap.has(t))return t;var m=t,y=resolveReferenceValue(m);return y?simplifyInContext(m,y,n+1):m}if(t){if(t.__symbolic){var m=void 0;switch(t.__symbolic){case"binop":var b=simplify(t.left);if(shouldIgnore(b))return b;
var v=simplify(t.right);if(shouldIgnore(v))return v;switch(t.operator){case"&&":return b&&v;case"||":return b||v;case"|":return b|v;case"^":return b^v;case"&":return b&v;case"==":return b==v;case"!=":return b!=v;case"===":return b===v;case"!==":return b!==v;case"<":return b<v;case">":return b>v;case"<=":return b<=v;case">=":return b>=v;case"<<":return b<<v;case">>":return b>>v;case"+":return b+v;case"-":return b-v;case"*":return b*v;case"/":return b/v;case"%":return b%v}return null;case"if":var _=simplify(t.condition);return simplify(_?t.thenExpression:t.elseExpression);case"pre":var E=simplify(t.operand);if(shouldIgnore(E))return E;switch(t.operator){case"+":return E;case"-":return-E;case"!":return!E;case"~":return~E}return null;case"index":var T=simplify(t.expression),S=simplify(t.index);return T&&isPrimitive(S)?T[S]:null;case"select":var A=t.member,M=e,C=simplify(t.expression);if(C instanceof i.a){var k=C.members.concat(A);M=o.getStaticSymbol(C.filePath,C.name,k);var y=resolveReferenceValue(M);return y?simplifyInContext(M,y,n+1):M}return C&&isPrimitive(A)?simplifyInContext(M,C[A],n+1):null;case"reference":var R=t.name,N=a.resolve(R);if(N!=c.missing)return N;break;case"class":return e;case"function":return e;case"new":case"call":if(m=simplifyInContext(e,t.expression,n+1),m instanceof i.a){if(m===o.opaqueToken)return e;var O=t.arguments||[],D=o.conversionMap.get(m);if(D){var w=O.map(function(t){return simplifyInContext(e,t,n+1)});return D(e,w)}var I=resolveReferenceValue(m);return simplifyCall(m,I,O)}break;case"error":var x=produceErrorMessage(t);if(t.line)throw x=x+" (position "+(t.line+1)+":"+(t.character+1)+" in the original .ts file)",positionalError(x,e.filePath,t.line,t.character);throw new Error(x)}return null}return mapStringMap(t,function(e,t){return simplify(e)})}return null}try{return simplify(t)}catch(u){var l=e.members.length?"."+e.members.join("."):"",d=u.message+", resolving symbol "+e.name+l+" in "+e.filePath;if(u.fileName)throw positionalError(d,u.fileName,u.line,u.column);throw new r.c(d)}}var n=this,o=this,a=c.empty,s=new Map,u=function(e,t,o){try{return simplifyInContext(e,t,o)}catch(r){n.reportError(r,e)}},l=this.errorRecorder?u(e,t,0):simplifyInContext(e,t,0);if(!shouldIgnore(l))return l},StaticReflector.prototype.getTypeMetadata=function(e){var t=this.symbolResolver.resolveSymbol(e);return t&&t.metadata?t.metadata:{__symbolic:"class"}},StaticReflector}(),c=function(){function BindingScope(){}return BindingScope.prototype.resolve=function(e){},BindingScope.build=function(){var e=new Map;return{define:function(t,n){return e.set(t,n),this},done:function(){return e.size>0?new d(e):BindingScope.empty}}},BindingScope.missing={},BindingScope.empty={resolve:function(e){return BindingScope.missing}},BindingScope}(),d=function(e){function PopulatedScope(t){e.call(this),this.bindings=t}return a(PopulatedScope,e),PopulatedScope.prototype.resolve=function(e){return this.bindings.has(e)?this.bindings.get(e):c.missing},PopulatedScope}(c)},function(e,t,n){"use strict";var o=n(32),r=n(71);n.d(t,"a",function(){return u});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=function(){function ResolvedStaticSymbol(e,t){this.symbol=e,this.metadata=t}return ResolvedStaticSymbol}(),s=3,u=function(){function StaticSymbolResolver(e,t,n,o){this.host=e,this.staticSymbolCache=t,this.summaryResolver=n,this.errorRecorder=o,this.metadataCache=new Map,this.resolvedSymbols=new Map,this.resolvedFilePaths=new Set}return StaticSymbolResolver.prototype.resolveSymbol=function(e){if(e.members.length>0)return this._resolveSymbolMembers(e);var t=this._resolveSymbolFromSummary(e);return t||(this._createSymbolsOf(e.filePath),t=this.resolvedSymbols.get(e)),t},StaticSymbolResolver.prototype._resolveSymbolMembers=function(e){var t=e.members,n=this.resolveSymbol(this.getStaticSymbol(e.filePath,e.name));if(!n)return null;var o=n.metadata;if(o instanceof r.a)return new a(e,this.getStaticSymbol(o.filePath,o.name,t));if(!o||"class"!==o.__symbolic){for(var i=o,s=0;s<t.length&&i;s++)i=i[t[s]];return new a(e,i)}return o.statics&&1===t.length?new a(e,o.statics[t[0]]):null},StaticSymbolResolver.prototype._resolveSymbolFromSummary=function(e){var t=this.summaryResolver.resolveSummary(e);return t?new a(e,t.metadata):null},StaticSymbolResolver.prototype.getStaticSymbol=function(e,t,n){return this.staticSymbolCache.get(e,t,n)},StaticSymbolResolver.prototype.getSymbolsOf=function(e){var t=new Set(this.summaryResolver.getSymbolsOf(e));return this._createSymbolsOf(e),this.resolvedSymbols.forEach(function(n){n.symbol.filePath===e&&t.add(n.symbol)}),Array.from(t)},StaticSymbolResolver.prototype._createSymbolsOf=function(e){var t=this;if(!this.resolvedFilePaths.has(e)){this.resolvedFilePaths.add(e);var n=[],o=this.getModuleMetadata(e);if(o.metadata&&Object.keys(o.metadata).forEach(function(r){var i=o.metadata[r];n.push(t.createResolvedSymbol(t.getStaticSymbol(e,r),i))}),o.exports)for(var r=function(o){if(o.export)o.export.forEach(function(r){var i;i="string"==typeof r?r:r.as;var s=i;"string"!=typeof r&&(s=r.name);var u=t.resolveModule(o.from,e);if(u){var l=t.getStaticSymbol(u,s),c=t.getStaticSymbol(e,i);n.push(new a(c,l))}});else{var r=i.resolveModule(o.from,e);if(r){var s=i.getSymbolsOf(r);s.forEach(function(o){var r=t.getStaticSymbol(e,o.name);n.push(new a(r,o))})}}},i=this,s=0,u=o.exports;s<u.length;s++){var l=u[s];r(l)}n.forEach(function(e){return t.resolvedSymbols.set(e.symbol,e)})}},StaticSymbolResolver.prototype.createResolvedSymbol=function(e,t){var r=this,s=function(t){function ReferenceTransformer(){t.apply(this,arguments)}return i(ReferenceTransformer,t),ReferenceTransformer.prototype.visitStringMap=function(n,o){var i=n.__symbolic;if("function"===i){var a=o.length;o.push.apply(o,n.parameters||[]);var s=t.prototype.visitStringMap.call(this,n,o);return o.length=a,s}if("reference"===i){var u=n.module,l=n.name;if(!l)return null;var c=void 0;if(u){if(c=r.resolveModule(u,e.filePath),!c)return{__symbolic:"error",message:"Could not resolve "+u+" relative to "+e.filePath+"."}}else{var d=o.indexOf(l)>=0;d||(c=e.filePath)}return c?r.getStaticSymbol(c,l):{__symbolic:"reference",name:l}}return t.prototype.visitStringMap.call(this,n,o)},ReferenceTransformer}(o.g),u=n.i(o.f)(t,new s,[]);return new a(e,u)},StaticSymbolResolver.prototype.reportError=function(e,t,n){if(!this.errorRecorder)throw e;this.errorRecorder(e,t&&t.filePath||n)},StaticSymbolResolver.prototype.getModuleMetadata=function(e){var t=this.metadataCache.get(e);if(!t){var n=this.host.getMetadataFor(e);if(n){var o=-1;n.forEach(function(e){e.version>o&&(o=e.version,t=e)})}if(t||(t={__symbolic:"module",version:s,module:e,metadata:{}}),t.version!=s){var r=2==t.version?"Unsupported metadata version "+t.version+" for module "+e+". This module should be compiled with a newer version of ngc":"Metadata version mismatch for module "+e+", found version "+t.version+", expected "+s;this.reportError(new Error(r),null)}this.metadataCache.set(e,t)}return t},StaticSymbolResolver.prototype.getSymbolByModule=function(e,t,n){var o=this.resolveModule(e,n);return o?this.getStaticSymbol(o,t):(this.reportError(new Error("Could not resolve module "+e+(n?" relative to $ {\n            containingFile\n          } ":"")),null),this.getStaticSymbol("ERROR:"+e,t))},StaticSymbolResolver.prototype.resolveModule=function(e,t){try{return this.host.moduleNameToFileName(e,t)}catch(n){console.error("Could not resolve module '"+e+"' relative to file "+t),this.reportError(new n,null,t)}},StaticSymbolResolver}()},function(e,t,n){"use strict";var o=n(350);n.d(t,"a",function(){return r});var r=function(){function AotSummaryResolver(e,t){this.host=e,this.staticSymbolCache=t,this.summaryCache=new Map,this.loadedFilePaths=new Set}return AotSummaryResolver.prototype._assertNoMembers=function(e){if(e.members.length)throw new Error("Internal state: StaticSymbols in summaries can't have members! "+JSON.stringify(e))},AotSummaryResolver.prototype.resolveSummary=function(e){this._assertNoMembers(e);var t=this.summaryCache.get(e);return t||(this._loadSummaryFile(e.filePath),t=this.summaryCache.get(e)),t},AotSummaryResolver.prototype.getSymbolsOf=function(e){return this._loadSummaryFile(e),Array.from(this.summaryCache.keys()).filter(function(t){return t.filePath===e})},AotSummaryResolver.prototype._loadSummaryFile=function(e){var t=this;if(!this.loadedFilePaths.has(e)&&(this.loadedFilePaths.add(e),!this.host.isSourceFile(e))){var r=n.i(o.b)(e),i=void 0;try{i=this.host.loadSummary(r)}catch(a){throw console.error("Error loading summary file "+r),a}if(i){var s=n.i(o.c)(this.staticSymbolCache,i);s.forEach(function(e){t.summaryCache.set(e.symbol,e)})}}},AotSummaryResolver}()},function(e,t,n){"use strict";var o=n(7);n.d(t,"b",function(){return i}),n.d(t,"d",function(){return a}),n.d(t,"c",function(){return u}),n.d(t,"g",function(){return l}),n.d(t,"p",function(){return c}),n.d(t,"h",function(){return d}),n.d(t,"j",function(){return p}),n.d(t,"w",function(){return g}),n.d(t,"v",function(){return f}),n.d(t,"u",function(){return h}),n.d(t,"n",function(){return m}),n.d(t,"m",function(){return y}),n.d(t,"i",function(){return b}),n.d(t,"f",function(){return v}),n.d(t,"q",function(){return _}),n.d(t,"r",function(){return E}),n.d(t,"e",function(){return T}),n.d(t,"k",function(){return S}),n.d(t,"l",function(){return A}),n.d(t,"t",function(){return M}),n.d(t,"s",function(){return C}),n.d(t,"o",function(){return k}),n.d(t,"a",function(){return R}),n.d(t,"x",function(){return N}),n.d(t,"y",function(){return O});var r=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},i=function(){function ParserError(e,t,n,o){this.input=t,this.errLocation=n,this.ctxLocation=o,this.message="Parser Error: "+e+" "+n+" ["+t+"] in "+o}return ParserError}(),a=function(){function ParseSpan(e,t){this.start=e,this.end=t}return ParseSpan}(),s=function(){function AST(e){this.span=e}return AST.prototype.visit=function(e,t){return void 0===t&&(t=null),null},AST.prototype.toString=function(){return"AST"},AST}(),u=function(e){function Quote(t,n,o,r){e.call(this,t),this.prefix=n,this.uninterpretedExpression=o,this.location=r}return r(Quote,e),Quote.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitQuote(this,t)},Quote.prototype.toString=function(){return"Quote"},Quote}(s),l=function(e){function EmptyExpr(){e.apply(this,arguments)}return r(EmptyExpr,e),EmptyExpr.prototype.visit=function(e,t){void 0===t&&(t=null)},EmptyExpr}(s),c=function(e){function ImplicitReceiver(){e.apply(this,arguments)}return r(ImplicitReceiver,e),ImplicitReceiver.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitImplicitReceiver(this,t)},ImplicitReceiver}(s),d=function(e){function Chain(t,n){e.call(this,t),this.expressions=n}return r(Chain,e),Chain.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitChain(this,t)},Chain}(s),p=function(e){function Conditional(t,n,o,r){e.call(this,t),this.condition=n,this.trueExp=o,this.falseExp=r}return r(Conditional,e),Conditional.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitConditional(this,t)},Conditional}(s),g=function(e){function PropertyRead(t,n,o){e.call(this,t),this.receiver=n,this.name=o}return r(PropertyRead,e),PropertyRead.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitPropertyRead(this,t)},PropertyRead}(s),f=function(e){function PropertyWrite(t,n,o,r){e.call(this,t),this.receiver=n,this.name=o,this.value=r}return r(PropertyWrite,e),PropertyWrite.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitPropertyWrite(this,t)},PropertyWrite}(s),h=function(e){function SafePropertyRead(t,n,o){e.call(this,t),this.receiver=n,this.name=o}return r(SafePropertyRead,e),SafePropertyRead.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitSafePropertyRead(this,t)},SafePropertyRead}(s),m=function(e){function KeyedRead(t,n,o){e.call(this,t),this.obj=n,this.key=o}return r(KeyedRead,e),KeyedRead.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitKeyedRead(this,t)},KeyedRead}(s),y=function(e){function KeyedWrite(t,n,o,r){e.call(this,t),this.obj=n,this.key=o,this.value=r}return r(KeyedWrite,e),KeyedWrite.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitKeyedWrite(this,t)},KeyedWrite}(s),b=function(e){function BindingPipe(t,n,o,r){e.call(this,t),this.exp=n,this.name=o,this.args=r}return r(BindingPipe,e),BindingPipe.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitPipe(this,t)},BindingPipe}(s),v=function(e){function LiteralPrimitive(t,n){e.call(this,t),this.value=n}return r(LiteralPrimitive,e),LiteralPrimitive.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitLiteralPrimitive(this,t)},LiteralPrimitive}(s),_=function(e){function LiteralArray(t,n){e.call(this,t),this.expressions=n}return r(LiteralArray,e),LiteralArray.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitLiteralArray(this,t)},LiteralArray}(s),E=function(e){function LiteralMap(t,n,o){e.call(this,t),this.keys=n,this.values=o}return r(LiteralMap,e),LiteralMap.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitLiteralMap(this,t)},LiteralMap}(s),T=function(e){function Interpolation(t,n,o){e.call(this,t),this.strings=n,this.expressions=o}return r(Interpolation,e),Interpolation.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitInterpolation(this,t)},Interpolation}(s),S=function(e){function Binary(t,n,o,r){e.call(this,t),this.operation=n,this.left=o,this.right=r}return r(Binary,e),Binary.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitBinary(this,t)},Binary}(s),A=function(e){function PrefixNot(t,n){e.call(this,t),this.expression=n}return r(PrefixNot,e),PrefixNot.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitPrefixNot(this,t)},PrefixNot}(s),M=function(e){function MethodCall(t,n,o,r){e.call(this,t),this.receiver=n,this.name=o,this.args=r}return r(MethodCall,e),MethodCall.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitMethodCall(this,t)},MethodCall}(s),C=function(e){function SafeMethodCall(t,n,o,r){e.call(this,t),this.receiver=n,this.name=o,this.args=r}return r(SafeMethodCall,e),SafeMethodCall.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitSafeMethodCall(this,t)},SafeMethodCall}(s),k=function(e){function FunctionCall(t,n,o){e.call(this,t),this.target=n,this.args=o}return r(FunctionCall,e),FunctionCall.prototype.visit=function(e,t){return void 0===t&&(t=null),e.visitFunctionCall(this,t)},FunctionCall}(s),R=function(e){function ASTWithSource(t,r,i,s){e.call(this,new a(0,n.i(o.g)(r)?0:r.length)),this.ast=t,this.source=r,this.location=i,this.errors=s}return r(ASTWithSource,e),ASTWithSource.prototype.visit=function(e,t){return void 0===t&&(t=null),this.ast.visit(e,t)},ASTWithSource.prototype.toString=function(){return this.source+" in "+this.location},ASTWithSource}(s),N=function(){function TemplateBinding(e,t,n,o,r){this.span=e,this.key=t,this.keyIsVar=n,this.name=o,this.expression=r}return TemplateBinding}(),O=function(){function RecursiveAstVisitor(){}return RecursiveAstVisitor.prototype.visitBinary=function(e,t){return e.left.visit(this),e.right.visit(this),null},RecursiveAstVisitor.prototype.visitChain=function(e,t){return this.visitAll(e.expressions,t)},RecursiveAstVisitor.prototype.visitConditional=function(e,t){return e.condition.visit(this),e.trueExp.visit(this),e.falseExp.visit(this),null},RecursiveAstVisitor.prototype.visitPipe=function(e,t){return e.exp.visit(this),this.visitAll(e.args,t),null},RecursiveAstVisitor.prototype.visitFunctionCall=function(e,t){return e.target.visit(this),this.visitAll(e.args,t),null},RecursiveAstVisitor.prototype.visitImplicitReceiver=function(e,t){return null},RecursiveAstVisitor.prototype.visitInterpolation=function(e,t){return this.visitAll(e.expressions,t)},RecursiveAstVisitor.prototype.visitKeyedRead=function(e,t){return e.obj.visit(this),e.key.visit(this),null},RecursiveAstVisitor.prototype.visitKeyedWrite=function(e,t){return e.obj.visit(this),e.key.visit(this),e.value.visit(this),null},RecursiveAstVisitor.prototype.visitLiteralArray=function(e,t){return this.visitAll(e.expressions,t)},RecursiveAstVisitor.prototype.visitLiteralMap=function(e,t){return this.visitAll(e.values,t)},RecursiveAstVisitor.prototype.visitLiteralPrimitive=function(e,t){return null},RecursiveAstVisitor.prototype.visitMethodCall=function(e,t){return e.receiver.visit(this),this.visitAll(e.args,t)},RecursiveAstVisitor.prototype.visitPrefixNot=function(e,t){return e.expression.visit(this),null},RecursiveAstVisitor.prototype.visitPropertyRead=function(e,t){return e.receiver.visit(this),null},RecursiveAstVisitor.prototype.visitPropertyWrite=function(e,t){return e.receiver.visit(this),e.value.visit(this),null},RecursiveAstVisitor.prototype.visitSafePropertyRead=function(e,t){return e.receiver.visit(this),null},RecursiveAstVisitor.prototype.visitSafeMethodCall=function(e,t){return e.receiver.visit(this),this.visitAll(e.args,t)},RecursiveAstVisitor.prototype.visitAll=function(e,t){var n=this;return e.forEach(function(e){return e.visit(n,t)}),null},RecursiveAstVisitor.prototype.visitQuote=function(e,t){return null},RecursiveAstVisitor}();(function(){function AstTransformer(){}return AstTransformer.prototype.visitImplicitReceiver=function(e,t){return e},AstTransformer.prototype.visitInterpolation=function(e,t){return new T(e.span,e.strings,this.visitAll(e.expressions))},AstTransformer.prototype.visitLiteralPrimitive=function(e,t){return new v(e.span,e.value)},AstTransformer.prototype.visitPropertyRead=function(e,t){return new g(e.span,e.receiver.visit(this),e.name)},AstTransformer.prototype.visitPropertyWrite=function(e,t){return new f(e.span,e.receiver.visit(this),e.name,e.value)},AstTransformer.prototype.visitSafePropertyRead=function(e,t){return new h(e.span,e.receiver.visit(this),e.name)},AstTransformer.prototype.visitMethodCall=function(e,t){return new M(e.span,e.receiver.visit(this),e.name,this.visitAll(e.args))},AstTransformer.prototype.visitSafeMethodCall=function(e,t){return new C(e.span,e.receiver.visit(this),e.name,this.visitAll(e.args))},AstTransformer.prototype.visitFunctionCall=function(e,t){return new k(e.span,e.target.visit(this),this.visitAll(e.args))},AstTransformer.prototype.visitLiteralArray=function(e,t){return new _(e.span,this.visitAll(e.expressions))},AstTransformer.prototype.visitLiteralMap=function(e,t){return new E(e.span,e.keys,this.visitAll(e.values))},AstTransformer.prototype.visitBinary=function(e,t){return new S(e.span,e.operation,e.left.visit(this),e.right.visit(this))},AstTransformer.prototype.visitPrefixNot=function(e,t){return new A(e.span,e.expression.visit(this))},AstTransformer.prototype.visitConditional=function(e,t){return new p(e.span,e.condition.visit(this),e.trueExp.visit(this),e.falseExp.visit(this))},AstTransformer.prototype.visitPipe=function(e,t){return new b(e.span,e.exp.visit(this),e.name,this.visitAll(e.args))},AstTransformer.prototype.visitKeyedRead=function(e,t){return new m(e.span,e.obj.visit(this),e.key.visit(this))},AstTransformer.prototype.visitKeyedWrite=function(e,t){return new y(e.span,e.obj.visit(this),e.key.visit(this),e.value.visit(this))},AstTransformer.prototype.visitAll=function(e){for(var t=new Array(e.length),n=0;n<e.length;++n)t[n]=e[n].visit(this);return t},AstTransformer.prototype.visitChain=function(e,t){return new d(e.span,this.visitAll(e.expressions))},AstTransformer.prototype.visitQuote=function(e,t){return new u(e.span,e.prefix,e.uninterpretedExpression,e.location)},AstTransformer})()},function(e,t,n){"use strict";function digest(e){return n.i(o.b)(e)}var o=n(354),r=n(170),i=n(359);n.d(t,"c",function(){return p}),t.a=digest,n.d(t,"b",function(){return h});var a=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},s="messagebundle",u="msg",l="ph",c="ex",d='<!ELEMENT messagebundle (msg)*>\n<!ATTLIST messagebundle class CDATA #IMPLIED>\n\n<!ELEMENT msg (#PCDATA|ph|source)*>\n<!ATTLIST msg id CDATA #IMPLIED>\n<!ATTLIST msg seq CDATA #IMPLIED>\n<!ATTLIST msg name CDATA #IMPLIED>\n<!ATTLIST msg desc CDATA #IMPLIED>\n<!ATTLIST msg meaning CDATA #IMPLIED>\n<!ATTLIST msg obsolete (obsolete) #IMPLIED>\n<!ATTLIST msg xml:space (default|preserve) "default">\n<!ATTLIST msg is_hidden CDATA #IMPLIED>\n\n<!ELEMENT source (#PCDATA)>\n\n<!ELEMENT ph (#PCDATA|ex)*>\n<!ATTLIST ph name CDATA #REQUIRED>\n\n<!ELEMENT ex (#PCDATA)>',p=function(e){function Xmb(){e.apply(this,arguments)}return a(Xmb,e),Xmb.prototype.write=function(e){var t=this,n=new f,o=new g,r={},a=new i.a(s);return e.forEach(function(e){var n=t.digest(e);if(!r[n]){r[n]=!0;var s=t.createNameMapper(e),l={id:n};e.description&&(l.desc=e.description),e.meaning&&(l.meaning=e.meaning),a.children.push(new i.b(2),new i.a(u,l,o.serialize(e.nodes,{mapper:s})))}}),a.children.push(new i.b),i.d([new i.e({version:"1.0",encoding:"UTF-8"}),new i.b,new i.f(s,d),new i.b,n.addDefaultExamples(a),new i.b])},Xmb.prototype.load=function(e,t){throw new Error("Unsupported")},Xmb.prototype.digest=function(e){return digest(e)},Xmb.prototype.createNameMapper=function(e){return new h(e)},Xmb}(r.a),g=function(){function _Visitor(){}return _Visitor.prototype.visitText=function(e,t){return[new i.c(e.value)]},_Visitor.prototype.visitContainer=function(e,t){var n=this,o=[];return e.children.forEach(function(e){return o.push.apply(o,e.visit(n,t))}),o},_Visitor.prototype.visitIcu=function(e,t){var n=this,o=[new i.c("{"+e.expressionPlaceholder+", "+e.type+", ")];return Object.keys(e.cases).forEach(function(r){o.push.apply(o,[new i.c(r+" {")].concat(e.cases[r].visit(n,t),[new i.c("} ")]))}),o.push(new i.c("}")),o},_Visitor.prototype.visitTagPlaceholder=function(e,t){var n=new i.a(c,{},[new i.c("<"+e.tag+">")]),o=t.mapper.toPublicName(e.startName),r=new i.a(l,{name:o},[n]);if(e.isVoid)return[r];var a=new i.a(c,{},[new i.c("</"+e.tag+">")]);o=t.mapper.toPublicName(e.closeName);var s=new i.a(l,{name:o},[a]);return[r].concat(this.serialize(e.children,t),[s])},_Visitor.prototype.visitPlaceholder=function(e,t){var n=t.mapper.toPublicName(e.name);return[new i.a(l,{name:n})]},_Visitor.prototype.visitIcuPlaceholder=function(e,t){var n=t.mapper.toPublicName(e.name);return[new i.a(l,{name:n})]},_Visitor.prototype.serialize=function(e,t){var n=this;return(o=[]).concat.apply(o,e.map(function(e){return e.visit(n,t)}));var o},_Visitor}(),f=function(){function ExampleVisitor(){}return ExampleVisitor.prototype.addDefaultExamples=function(e){return e.visit(this),e},ExampleVisitor.prototype.visitTag=function(e){var t=this;if(e.name===l){if(!e.children||0==e.children.length){var n=new i.c(e.attrs.name||"...");e.children=[new i.a(c,{},[n])]}}else e.children&&e.children.forEach(function(e){return e.visit(t)})},ExampleVisitor.prototype.visitText=function(e){},ExampleVisitor.prototype.visitDeclaration=function(e){},ExampleVisitor.prototype.visitDoctype=function(e){},ExampleVisitor}(),h=function(){function XmbPlaceholderMapper(e){var t=this;this.internalToXmb={},this.xmbToNextId={},this.xmbToInternal={},e.nodes.forEach(function(e){return e.visit(t)})}return XmbPlaceholderMapper.prototype.toPublicName=function(e){return this.internalToXmb.hasOwnProperty(e)?this.internalToXmb[e]:null},XmbPlaceholderMapper.prototype.toInternalName=function(e){return this.xmbToInternal.hasOwnProperty(e)?this.xmbToInternal[e]:null},XmbPlaceholderMapper.prototype.visitText=function(e,t){return null},XmbPlaceholderMapper.prototype.visitContainer=function(e,t){var n=this;e.children.forEach(function(e){return e.visit(n)})},XmbPlaceholderMapper.prototype.visitIcu=function(e,t){var n=this;Object.keys(e.cases).forEach(function(t){e.cases[t].visit(n)})},XmbPlaceholderMapper.prototype.visitTagPlaceholder=function(e,t){var n=this;this.addPlaceholder(e.startName),e.children.forEach(function(e){return e.visit(n)}),this.addPlaceholder(e.closeName)},XmbPlaceholderMapper.prototype.visitPlaceholder=function(e,t){this.addPlaceholder(e.name)},XmbPlaceholderMapper.prototype.visitIcuPlaceholder=function(e,t){this.addPlaceholder(e.name)},XmbPlaceholderMapper.prototype.addPlaceholder=function(e){if(e&&!this.internalToXmb.hasOwnProperty(e)){var t=e.toUpperCase().replace(/[^A-Z0-9_]/g,"_");if(this.xmbToInternal.hasOwnProperty(t)){var n=this.xmbToNextId[t];this.xmbToNextId[t]=n+1,t=t+"_"+n}else this.xmbToNextId[t]=1;this.internalToXmb[e]=t,this.xmbToInternal[t]=e}},XmbPlaceholderMapper}()},function(e,t,n){"use strict";function getHtmlTagDefinition(e){return i[e.toLowerCase()]||a}var o=n(87);t.a=getHtmlTagDefinition;var r=function(){function HtmlTagDefinition(e){var t=this,n=void 0===e?{}:e,r=n.closedByChildren,i=n.requiredParents,a=n.implicitNamespacePrefix,s=n.contentType,u=void 0===s?o.a.PARSABLE_DATA:s,l=n.closedByParent,c=void 0!==l&&l,d=n.isVoid,p=void 0!==d&&d,g=n.ignoreFirstLf,f=void 0!==g&&g;this.closedByChildren={},this.closedByParent=!1,this.canSelfClose=!1,r&&r.length>0&&r.forEach(function(e){return t.closedByChildren[e]=!0}),this.isVoid=p,this.closedByParent=c||p,i&&i.length>0&&(this.requiredParents={},this.parentToAdd=i[0],i.forEach(function(e){return t.requiredParents[e]=!0})),this.implicitNamespacePrefix=a,this.contentType=u,this.ignoreFirstLf=f}return HtmlTagDefinition.prototype.requireExtraParent=function(e){if(!this.requiredParents)return!1;if(!e)return!0;var t=e.toLowerCase();return 1!=this.requiredParents[t]&&"template"!=t},HtmlTagDefinition.prototype.isClosedByChild=function(e){return this.isVoid||e.toLowerCase()in this.closedByChildren},HtmlTagDefinition}(),i={base:new r({isVoid:!0}),meta:new r({isVoid:!0}),area:new r({isVoid:!0}),embed:new r({isVoid:!0}),link:new r({isVoid:!0}),img:new r({isVoid:!0}),input:new r({isVoid:!0}),param:new r({isVoid:!0}),hr:new r({isVoid:!0}),br:new r({isVoid:!0}),source:new r({isVoid:!0}),track:new r({isVoid:!0}),wbr:new r({isVoid:!0}),p:new r({closedByChildren:["address","article","aside","blockquote","div","dl","fieldset","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","main","nav","ol","p","pre","section","table","ul"],closedByParent:!0}),thead:new r({closedByChildren:["tbody","tfoot"]}),tbody:new r({closedByChildren:["tbody","tfoot"],closedByParent:!0}),tfoot:new r({closedByChildren:["tbody"],closedByParent:!0}),tr:new r({closedByChildren:["tr"],requiredParents:["tbody","tfoot","thead"],closedByParent:!0}),td:new r({closedByChildren:["td","th"],closedByParent:!0}),th:new r({closedByChildren:["td","th"],closedByParent:!0}),col:new r({requiredParents:["colgroup"],isVoid:!0}),svg:new r({implicitNamespacePrefix:"svg"}),math:new r({implicitNamespacePrefix:"math"}),li:new r({closedByChildren:["li"],closedByParent:!0}),dt:new r({closedByChildren:["dt","dd"]}),dd:new r({closedByChildren:["dt","dd"],closedByParent:!0}),rb:new r({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rt:new r({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rtc:new r({closedByChildren:["rb","rtc","rp"],closedByParent:!0}),rp:new r({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),optgroup:new r({closedByChildren:["optgroup"],closedByParent:!0}),option:new r({closedByChildren:["option","optgroup"],closedByParent:!0}),pre:new r({ignoreFirstLf:!0}),listing:new r({ignoreFirstLf:!0}),style:new r({contentType:o.a.RAW_TEXT}),script:new r({contentType:o.a.RAW_TEXT}),title:new r({contentType:o.a.ESCAPABLE_RAW_TEXT}),textarea:new r({contentType:o.a.ESCAPABLE_RAW_TEXT,ignoreFirstLf:!0})},a=new r},function(e,t,n){"use strict";function escapeIdentifier(e,t,r){if(void 0===r&&(r=!0),n.i(o.g)(e))return null;var s=e.replace(i,function(){for(var e=[],n=0;n<arguments.length;n++)e[n-0]=arguments[n];return"$"==e[0]?t?"\\$":"$":"\n"==e[0]?"\\n":"\r"==e[0]?"\\r":"\\"+e[0]}),u=r||!a.test(s);return u?"'"+s+"'":s}function _createIndent(e){for(var t="",n=0;n<e;n++)t+="  ";return t}var o=n(7),r=n(10);n.d(t,"b",function(){return s}),n.d(t,"c",function(){return u}),n.d(t,"a",function(){return c}),n.d(t,"d",function(){return d});var i=/'|\\|\n|\r|\$/g,a=/^[$A-Z_][0-9A-Z_$]*$/i,s=r.g("error"),u=r.g("stack"),l=(function(){function OutputEmitter(){}return OutputEmitter.prototype.emitStatements=function(e,t,n){},OutputEmitter}(),function(){function _EmittedLine(e){this.indent=e,this.parts=[]}return _EmittedLine}()),c=function(){function EmitterVisitorContext(e,t){this._exportedVars=e,this._indent=t,this._classes=[],this._lines=[new l(t)]}return EmitterVisitorContext.createRoot=function(e){return new EmitterVisitorContext(e,0)},Object.defineProperty(EmitterVisitorContext.prototype,"_currentLine",{get:function(){return this._lines[this._lines.length-1]},enumerable:!0,configurable:!0}),EmitterVisitorContext.prototype.isExportedVar=function(e){return this._exportedVars.indexOf(e)!==-1},EmitterVisitorContext.prototype.println=function(e){void 0===e&&(e=""),this.print(e,!0)},EmitterVisitorContext.prototype.lineIsEmpty=function(){return 0===this._currentLine.parts.length},EmitterVisitorContext.prototype.print=function(e,t){void 0===t&&(t=!1),e.length>0&&this._currentLine.parts.push(e),t&&this._lines.push(new l(this._indent))},EmitterVisitorContext.prototype.removeEmptyLastLine=function(){this.lineIsEmpty()&&this._lines.pop()},EmitterVisitorContext.prototype.incIndent=function(){this._indent++,this._currentLine.indent=this._indent},EmitterVisitorContext.prototype.decIndent=function(){this._indent--,this._currentLine.indent=this._indent},EmitterVisitorContext.prototype.pushClass=function(e){this._classes.push(e)},EmitterVisitorContext.prototype.popClass=function(){return this._classes.pop()},Object.defineProperty(EmitterVisitorContext.prototype,"currentClass",{get:function(){return this._classes.length>0?this._classes[this._classes.length-1]:null},enumerable:!0,configurable:!0}),EmitterVisitorContext.prototype.toSource=function(){var e=this._lines;return 0===e[e.length-1].parts.length&&(e=e.slice(0,e.length-1)),e.map(function(e){return e.parts.length>0?_createIndent(e.indent)+e.parts.join(""):""}).join("\n")},EmitterVisitorContext}(),d=function(){function AbstractEmitterVisitor(e){this._escapeDollarInStrings=e}return AbstractEmitterVisitor.prototype.visitExpressionStmt=function(e,t){return e.expr.visitExpression(this,t),t.println(";"),null},AbstractEmitterVisitor.prototype.visitReturnStmt=function(e,t){return t.print("return "),e.value.visitExpression(this,t),t.println(";"),null},AbstractEmitterVisitor.prototype.visitCastExpr=function(e,t){},AbstractEmitterVisitor.prototype.visitDeclareClassStmt=function(e,t){},AbstractEmitterVisitor.prototype.visitIfStmt=function(e,t){t.print("if ("),e.condition.visitExpression(this,t),t.print(") {");var r=n.i(o.f)(e.falseCase)&&e.falseCase.length>0;return e.trueCase.length<=1&&!r?(t.print(" "),this.visitAllStatements(e.trueCase,t),t.removeEmptyLastLine(),t.print(" ")):(t.println(),t.incIndent(),this.visitAllStatements(e.trueCase,t),t.decIndent(),r&&(t.println("} else {"),t.incIndent(),this.visitAllStatements(e.falseCase,t),t.decIndent())),t.println("}"),null},AbstractEmitterVisitor.prototype.visitTryCatchStmt=function(e,t){},AbstractEmitterVisitor.prototype.visitThrowStmt=function(e,t){return t.print("throw "),e.error.visitExpression(this,t),t.println(";"),null},AbstractEmitterVisitor.prototype.visitCommentStmt=function(e,t){var n=e.comment.split("\n");return n.forEach(function(e){t.println("// "+e)}),null},AbstractEmitterVisitor.prototype.visitDeclareVarStmt=function(e,t){},AbstractEmitterVisitor.prototype.visitWriteVarExpr=function(e,t){var n=t.lineIsEmpty();return n||t.print("("),t.print(e.name+" = "),e.value.visitExpression(this,t),n||t.print(")"),
null},AbstractEmitterVisitor.prototype.visitWriteKeyExpr=function(e,t){var n=t.lineIsEmpty();return n||t.print("("),e.receiver.visitExpression(this,t),t.print("["),e.index.visitExpression(this,t),t.print("] = "),e.value.visitExpression(this,t),n||t.print(")"),null},AbstractEmitterVisitor.prototype.visitWritePropExpr=function(e,t){var n=t.lineIsEmpty();return n||t.print("("),e.receiver.visitExpression(this,t),t.print("."+e.name+" = "),e.value.visitExpression(this,t),n||t.print(")"),null},AbstractEmitterVisitor.prototype.visitInvokeMethodExpr=function(e,t){e.receiver.visitExpression(this,t);var r=e.name;return n.i(o.f)(e.builtin)&&(r=this.getBuiltinMethodName(e.builtin),n.i(o.g)(r))?null:(t.print("."+r+"("),this.visitAllExpressions(e.args,t,","),t.print(")"),null)},AbstractEmitterVisitor.prototype.getBuiltinMethodName=function(e){},AbstractEmitterVisitor.prototype.visitInvokeFunctionExpr=function(e,t){return e.fn.visitExpression(this,t),t.print("("),this.visitAllExpressions(e.args,t,","),t.print(")"),null},AbstractEmitterVisitor.prototype.visitReadVarExpr=function(e,t){var i=e.name;if(n.i(o.f)(e.builtin))switch(e.builtin){case r.L.Super:i="super";break;case r.L.This:i="this";break;case r.L.CatchError:i=s.name;break;case r.L.CatchStack:i=u.name;break;default:throw new Error("Unknown builtin variable "+e.builtin)}return t.print(i),null},AbstractEmitterVisitor.prototype.visitInstantiateExpr=function(e,t){return t.print("new "),e.classExpr.visitExpression(this,t),t.print("("),this.visitAllExpressions(e.args,t,","),t.print(")"),null},AbstractEmitterVisitor.prototype.visitLiteralExpr=function(e,t){var n=e.value;return"string"==typeof n?t.print(escapeIdentifier(n,this._escapeDollarInStrings)):t.print(""+n),null},AbstractEmitterVisitor.prototype.visitExternalExpr=function(e,t){},AbstractEmitterVisitor.prototype.visitConditionalExpr=function(e,t){return t.print("("),e.condition.visitExpression(this,t),t.print("? "),e.trueCase.visitExpression(this,t),t.print(": "),e.falseCase.visitExpression(this,t),t.print(")"),null},AbstractEmitterVisitor.prototype.visitNotExpr=function(e,t){return t.print("!"),e.condition.visitExpression(this,t),null},AbstractEmitterVisitor.prototype.visitFunctionExpr=function(e,t){},AbstractEmitterVisitor.prototype.visitDeclareFunctionStmt=function(e,t){},AbstractEmitterVisitor.prototype.visitBinaryOperatorExpr=function(e,t){var n;switch(e.operator){case r.l.Equals:n="==";break;case r.l.Identical:n="===";break;case r.l.NotEquals:n="!=";break;case r.l.NotIdentical:n="!==";break;case r.l.And:n="&&";break;case r.l.Or:n="||";break;case r.l.Plus:n="+";break;case r.l.Minus:n="-";break;case r.l.Divide:n="/";break;case r.l.Multiply:n="*";break;case r.l.Modulo:n="%";break;case r.l.Lower:n="<";break;case r.l.LowerEquals:n="<=";break;case r.l.Bigger:n=">";break;case r.l.BiggerEquals:n=">=";break;default:throw new Error("Unknown operator "+e.operator)}return t.print("("),e.lhs.visitExpression(this,t),t.print(" "+n+" "),e.rhs.visitExpression(this,t),t.print(")"),null},AbstractEmitterVisitor.prototype.visitReadPropExpr=function(e,t){return e.receiver.visitExpression(this,t),t.print("."),t.print(e.name),null},AbstractEmitterVisitor.prototype.visitReadKeyExpr=function(e,t){return e.receiver.visitExpression(this,t),t.print("["),e.index.visitExpression(this,t),t.print("]"),null},AbstractEmitterVisitor.prototype.visitLiteralArrayExpr=function(e,t){var n=e.entries.length>1;return t.print("[",n),t.incIndent(),this.visitAllExpressions(e.entries,t,",",n),t.decIndent(),t.print("]",n),null},AbstractEmitterVisitor.prototype.visitLiteralMapExpr=function(e,t){var n=this,o=e.entries.length>1;return t.print("{",o),t.incIndent(),this.visitAllObjects(function(e){t.print(escapeIdentifier(e.key,n._escapeDollarInStrings,e.quoted)+": "),e.value.visitExpression(n,t)},e.entries,t,",",o),t.decIndent(),t.print("}",o),null},AbstractEmitterVisitor.prototype.visitAllExpressions=function(e,t,n,o){var r=this;void 0===o&&(o=!1),this.visitAllObjects(function(e){return e.visitExpression(r,t)},e,t,n,o)},AbstractEmitterVisitor.prototype.visitAllObjects=function(e,t,n,o,r){void 0===r&&(r=!1);for(var i=0;i<t.length;i++)i>0&&n.print(o,r),e(t[i]);r&&n.println()},AbstractEmitterVisitor.prototype.visitAllStatements=function(e,t){var n=this;e.forEach(function(e){return e.visitStatement(n,t)})},AbstractEmitterVisitor}()},function(e,t,n){"use strict";function createClassStmt(e){var t=e.parentArgs||[],n=e.parent?[o.y.callFn(t).toStmt()]:[],r=concatClassBuilderParts(Array.isArray(e.builders)?e.builders:[e.builders]),i=new o.z(null,e.ctorParams||[],n.concat(r.ctorStmts));return new o.A(e.name,e.parent,r.fields,r.getters,i,r.methods,e.modifiers||[])}function concatClassBuilderParts(e){return{fields:(t=[]).concat.apply(t,e.map(function(e){return e.fields||[]})),methods:(n=[]).concat.apply(n,e.map(function(e){return e.methods||[]})),getters:(o=[]).concat.apply(o,e.map(function(e){return e.getters||[]})),ctorStmts:(r=[]).concat.apply(r,e.map(function(e){return e.ctorStmts||[]}))};var t,n,o,r}var o=n(10);t.a=createClassStmt},function(e,t,n){"use strict";function debugOutputAstAsTypeScript(e){var t=new c(u),n=i.a.createRoot([]),o=Array.isArray(e)?e:[e];return o.forEach(function(e){if(e instanceof a.M)e.visitStatement(t,n);else if(e instanceof a.I)e.visitExpression(t,n);else{if(!(e instanceof a.N))throw new Error("Don't know how to print debug info for "+e);e.visitType(t,n)}}),n.toSource()}var o=n(14),r=n(7),i=n(247),a=n(10);t.b=debugOutputAstAsTypeScript,n.d(t,"a",function(){return l});var s=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},u="/debug/lib",l=function(){function TypeScriptEmitter(e){this._importGenerator=e}return TypeScriptEmitter.prototype.emitStatements=function(e,t,n){var o=this,r=new c(e),a=i.a.createRoot(n);r.visitAllStatements(t,a);var s=[];return r.importsWithPrefixes.forEach(function(t,n){s.push("imp"+("ort * as "+t+" from '"+o._importGenerator.fileNameToModuleName(n,e)+"';"))}),s.push(a.toSource()),s.join("\n")},TypeScriptEmitter}(),c=function(e){function _TsEmitterVisitor(t){e.call(this,!1),this._moduleUrl=t,this.importsWithPrefixes=new Map}return s(_TsEmitterVisitor,e),_TsEmitterVisitor.prototype.visitType=function(e,t,o){void 0===o&&(o="any"),n.i(r.f)(e)?e.visitType(this,t):t.print(o)},_TsEmitterVisitor.prototype.visitLiteralExpr=function(t,o){var i=t.value;return n.i(r.g)(i)&&t.type!=a.O?(o.print("("+i+" as any)"),null):e.prototype.visitLiteralExpr.call(this,t,o)},_TsEmitterVisitor.prototype.visitLiteralArrayExpr=function(t,n){0===t.entries.length&&n.print("(");var o=e.prototype.visitLiteralArrayExpr.call(this,t,n);return 0===t.entries.length&&n.print(" as any[])"),o},_TsEmitterVisitor.prototype.visitExternalExpr=function(e,t){return this._visitIdentifier(e.value,e.typeParams,t),null},_TsEmitterVisitor.prototype.visitDeclareVarStmt=function(e,t){return t.isExportedVar(e.name)&&t.print("export "),e.hasModifier(a.b.Final)?t.print("const"):t.print("var"),t.print(" "+e.name+":"),this.visitType(e.type,t),t.print(" = "),e.value.visitExpression(this,t),t.println(";"),null},_TsEmitterVisitor.prototype.visitCastExpr=function(e,t){return t.print("(<"),e.type.visitType(this,t),t.print(">"),e.value.visitExpression(this,t),t.print(")"),null},_TsEmitterVisitor.prototype.visitDeclareClassStmt=function(e,t){var o=this;return t.pushClass(e),t.isExportedVar(e.name)&&t.print("export "),t.print("class "+e.name),n.i(r.f)(e.parent)&&(t.print(" extends "),e.parent.visitExpression(this,t)),t.println(" {"),t.incIndent(),e.fields.forEach(function(e){return o._visitClassField(e,t)}),n.i(r.f)(e.constructorMethod)&&this._visitClassConstructor(e,t),e.getters.forEach(function(e){return o._visitClassGetter(e,t)}),e.methods.forEach(function(e){return o._visitClassMethod(e,t)}),t.decIndent(),t.println("}"),t.popClass(),null},_TsEmitterVisitor.prototype._visitClassField=function(e,t){e.hasModifier(a.b.Private)&&t.print("/*private*/ "),t.print(e.name),t.print(":"),this.visitType(e.type,t),t.println(";")},_TsEmitterVisitor.prototype._visitClassGetter=function(e,t){e.hasModifier(a.b.Private)&&t.print("private "),t.print("get "+e.name+"()"),t.print(":"),this.visitType(e.type,t),t.println(" {"),t.incIndent(),this.visitAllStatements(e.body,t),t.decIndent(),t.println("}")},_TsEmitterVisitor.prototype._visitClassConstructor=function(e,t){t.print("constructor("),this._visitParams(e.constructorMethod.params,t),t.println(") {"),t.incIndent(),this.visitAllStatements(e.constructorMethod.body,t),t.decIndent(),t.println("}")},_TsEmitterVisitor.prototype._visitClassMethod=function(e,t){e.hasModifier(a.b.Private)&&t.print("private "),t.print(e.name+"("),this._visitParams(e.params,t),t.print("):"),this.visitType(e.type,t,"void"),t.println(" {"),t.incIndent(),this.visitAllStatements(e.body,t),t.decIndent(),t.println("}")},_TsEmitterVisitor.prototype.visitFunctionExpr=function(e,t){return t.print("("),this._visitParams(e.params,t),t.print("):"),this.visitType(e.type,t,"void"),t.println(" => {"),t.incIndent(),this.visitAllStatements(e.statements,t),t.decIndent(),t.print("}"),null},_TsEmitterVisitor.prototype.visitDeclareFunctionStmt=function(e,t){return t.isExportedVar(e.name)&&t.print("export "),t.print("function "+e.name+"("),this._visitParams(e.params,t),t.print("):"),this.visitType(e.type,t,"void"),t.println(" {"),t.incIndent(),this.visitAllStatements(e.statements,t),t.decIndent(),t.println("}"),null},_TsEmitterVisitor.prototype.visitTryCatchStmt=function(e,t){t.println("try {"),t.incIndent(),this.visitAllStatements(e.bodyStmts,t),t.decIndent(),t.println("} catch ("+i.b.name+") {"),t.incIndent();var n=[i.c.set(i.b.prop("stack")).toDeclStmt(null,[a.b.Final])].concat(e.catchStmts);return this.visitAllStatements(n,t),t.decIndent(),t.println("}"),null},_TsEmitterVisitor.prototype.visitBuiltintType=function(e,t){var n;switch(e.name){case a.P.Bool:n="boolean";break;case a.P.Dynamic:n="any";break;case a.P.Function:n="Function";break;case a.P.Number:n="number";break;case a.P.Int:n="number";break;case a.P.String:n="string";break;default:throw new Error("Unsupported builtin type "+e.name)}return t.print(n),null},_TsEmitterVisitor.prototype.visitExpressionType=function(e,t){var o=this;return e.value.visitExpression(this,t),n.i(r.f)(e.typeParams)&&e.typeParams.length>0&&(t.print("<"),this.visitAllObjects(function(e){return e.visitType(o,t)},e.typeParams,t,","),t.print(">")),null},_TsEmitterVisitor.prototype.visitArrayType=function(e,t){return this.visitType(e.of,t),t.print("[]"),null},_TsEmitterVisitor.prototype.visitMapType=function(e,t){return t.print("{[key: string]:"),this.visitType(e.valueType,t),t.print("}"),null},_TsEmitterVisitor.prototype.getBuiltinMethodName=function(e){var t;switch(e){case a.x.ConcatArray:t="concat";break;case a.x.SubscribeObservable:t="subscribe";break;case a.x.Bind:t="bind";break;default:throw new Error("Unknown builtin method: "+e)}return t},_TsEmitterVisitor.prototype._visitParams=function(e,t){var n=this;this.visitAllObjects(function(e){t.print(e.name),t.print(":"),n.visitType(e.type,t)},e,t,",")},_TsEmitterVisitor.prototype._visitIdentifier=function(e,t,i){var a=this,s=n.i(o.c)(e),u=n.i(o.m)(e);if(n.i(r.g)(s))throw new Error("Internal error: unknown identifier "+e);if(n.i(r.f)(u)&&u!=this._moduleUrl){var l=this.importsWithPrefixes.get(u);n.i(r.g)(l)&&(l="import"+this.importsWithPrefixes.size,this.importsWithPrefixes.set(u,l)),i.print(l+".")}e.reference&&e.reference.members&&e.reference.members.length?(i.print(e.reference.name),i.print("."),i.print(e.reference.members.join("."))):i.print(s),n.i(r.f)(t)&&t.length>0&&(i.print("<"),this.visitAllObjects(function(e){return e.visitType(a,i)},t,i,","),i.print(">"))},_TsEmitterVisitor}(i.d)},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o=function(){function ResourceLoader(){}return ResourceLoader.prototype.get=function(e){return null},ResourceLoader}()},function(e,t,n){"use strict";var o=n(20);n.d(t,"a",function(){return a});var r=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},i=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},a=function(){function SummaryResolver(){}return SummaryResolver.prototype.resolveSummary=function(e){return null},SummaryResolver.prototype.getSymbolsOf=function(e){return[]},SummaryResolver=r([n.i(o.a)(),i("design:paramtypes",[])],SummaryResolver)}()},function(e,t,n){"use strict";var o=n(10);n.d(t,"a",function(){return a});var r=function(){function _DebugState(e,t){this.nodeIndex=e,this.sourceAst=t}return _DebugState}(),i=new r(null,null),a=function(){function CompileMethod(e){this._view=e,this._newState=i,this._currState=i,this._bodyStatements=[],this._debugEnabled=this._view.genConfig.genDebugInfo}return CompileMethod.prototype._updateDebugContextIfNeeded=function(){if(this._newState.nodeIndex!==this._currState.nodeIndex||this._newState.sourceAst!==this._currState.sourceAst){var e=this._updateDebugContext(this._newState);e&&this._bodyStatements.push(e.toStmt())}},CompileMethod.prototype._updateDebugContext=function(e){if(this._currState=this._newState=e,this._debugEnabled){var t=e.sourceAst?e.sourceAst.sourceSpan.start:null;return o.c.callMethod("debug",[o.f(e.nodeIndex),t?o.f(t.line):o.k,t?o.f(t.col):o.k])}return null},CompileMethod.prototype.resetDebugInfoExpr=function(e,t){var n=this._updateDebugContext(new r(e,t));return n||o.k},CompileMethod.prototype.resetDebugInfo=function(e,t){this._newState=new r(e,t)},CompileMethod.prototype.push=function(){for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];this.addStmts(e)},CompileMethod.prototype.addStmt=function(e){this._updateDebugContextIfNeeded(),this._bodyStatements.push(e)},CompileMethod.prototype.addStmts=function(e){this._updateDebugContextIfNeeded(),(t=this._bodyStatements).push.apply(t,e);var t},CompileMethod.prototype.finish=function(){return this._bodyStatements},CompileMethod.prototype.isEmpty=function(){return 0===this._bodyStatements.length},CompileMethod}()},function(e,t,n){"use strict";n.d(t,"c",function(){return o}),n.d(t,"a",function(){return r}),n.d(t,"b",function(){return i});var o=function(){function ViewClassDependency(e,t,n){this.comp=e,this.name=t,this.placeholder=n}return ViewClassDependency}(),r=function(){function ComponentFactoryDependency(e,t){this.comp=e,this.placeholder=t}return ComponentFactoryDependency}(),i=function(){function DirectiveWrapperDependency(e,t,n){this.dir=e,this.name=t,this.placeholder=n}return DirectiveWrapperDependency}()},function(e,t,n){"use strict";var o=n(8);n.d(t,"b",function(){return r}),n.d(t,"a",function(){return i});var r=function(){function AnimationPlayer(){}return AnimationPlayer.prototype.onDone=function(e){},AnimationPlayer.prototype.onStart=function(e){},AnimationPlayer.prototype.init=function(){},AnimationPlayer.prototype.hasStarted=function(){},AnimationPlayer.prototype.play=function(){},AnimationPlayer.prototype.pause=function(){},AnimationPlayer.prototype.restart=function(){},AnimationPlayer.prototype.finish=function(){},AnimationPlayer.prototype.destroy=function(){},AnimationPlayer.prototype.reset=function(){},AnimationPlayer.prototype.setPosition=function(e){},AnimationPlayer.prototype.getPosition=function(){},Object.defineProperty(AnimationPlayer.prototype,"parentPlayer",{get:function(){throw new Error("NOT IMPLEMENTED: Base Class")},set:function(e){throw new Error("NOT IMPLEMENTED: Base Class")},enumerable:!0,configurable:!0}),AnimationPlayer}(),i=function(){function NoOpAnimationPlayer(){var e=this;this._onDoneFns=[],this._onStartFns=[],this._started=!1,this.parentPlayer=null,n.i(o.l)(function(){return e._onFinish()})}return NoOpAnimationPlayer.prototype._onFinish=function(){this._onDoneFns.forEach(function(e){return e()}),this._onDoneFns=[]},NoOpAnimationPlayer.prototype.onStart=function(e){this._onStartFns.push(e)},NoOpAnimationPlayer.prototype.onDone=function(e){this._onDoneFns.push(e)},NoOpAnimationPlayer.prototype.hasStarted=function(){return this._started},NoOpAnimationPlayer.prototype.init=function(){},NoOpAnimationPlayer.prototype.play=function(){this.hasStarted()||(this._onStartFns.forEach(function(e){return e()}),this._onStartFns=[]),this._started=!0},NoOpAnimationPlayer.prototype.pause=function(){},NoOpAnimationPlayer.prototype.restart=function(){},NoOpAnimationPlayer.prototype.finish=function(){this._onFinish()},NoOpAnimationPlayer.prototype.destroy=function(){},NoOpAnimationPlayer.prototype.reset=function(){},NoOpAnimationPlayer.prototype.setPosition=function(e){},NoOpAnimationPlayer.prototype.getPosition=function(){return 0},NoOpAnimationPlayer}()},function(e,t,n){"use strict";var o=n(270),r=n(41);n.d(t,"b",function(){return i}),n.d(t,"a",function(){return a});var i=new r.a("Application Initializer"),a=function(){function ApplicationInitStatus(e){var t=this;this._done=!1;var r=[];if(e)for(var i=0;i<e.length;i++){var a=e[i]();n.i(o.a)(a)&&r.push(a)}this._donePromise=Promise.all(r).then(function(){t._done=!0}),0===r.length&&(this._done=!0)}return Object.defineProperty(ApplicationInitStatus.prototype,"done",{get:function(){return this._done},enumerable:!0,configurable:!0}),Object.defineProperty(ApplicationInitStatus.prototype,"donePromise",{get:function(){return this._donePromise},enumerable:!0,configurable:!0}),ApplicationInitStatus.decorators=[{type:r.b}],ApplicationInitStatus.ctorParameters=function(){return[{type:Array,decorators:[{type:r.c,args:[i]},{type:r.d}]}]},ApplicationInitStatus}()},function(e,t,n){"use strict";function enableProdMode(){if(_)throw new Error("Cannot enable prod mode after platform setup.");v=!1}function isDevMode(){return _=!0,v}function createPlatform(e){if(y&&!y.destroyed)throw new Error("There can be only one platform. Destroy the previous one to create a new one.");y=e.get(T);var t=e.get(u.a,null);return t&&t.forEach(function(e){return e()}),y}function createPlatformFactory(e,t,n){void 0===n&&(n=[]);var o=new c.a("Platform: "+t);return function(t){return void 0===t&&(t=[]),getPlatform()||(e?e(n.concat(t).concat({provide:o,useValue:!0})):createPlatform(c.f.resolveAndCreate(n.concat(t).concat({provide:o,useValue:!0})))),assertPlatform(o)}}function assertPlatform(e){var t=getPlatform();if(!t)throw new Error("No platform exists!");if(!t.injector.get(e,null))throw new Error("A platform with a different configuration has been created. Please destroy it first.");return t}function destroyPlatform(){y&&!y.destroyed&&y.destroy()}function getPlatform(){return y&&!y.destroyed?y:null}function _callAndReportToErrorHandler(e,t){try{var o=t();return n.i(a.a)(o)?o.catch(function(t){throw e.handleError(t),t}):o}catch(r){throw e.handleError(r),r}}var o=n(385),r=n(132),i=n(8),a=n(270),s=n(255),u=n(176),l=n(258),c=n(41),d=n(133),p=n(264),g=n(181),f=n(185),h=n(268),m=n(186);t.k=enableProdMode,t.f=isDevMode,n.d(t,"g",function(){return E}),t.l=createPlatform,t.c=createPlatformFactory,t.h=assertPlatform,t.i=destroyPlatform,t.j=getPlatform,n.d(t,"b",function(){return T}),n.d(t,"a",function(){return S}),n.d(t,"e",function(){return A}),n.d(t,"d",function(){return M});var y,b=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},v=!0,_=!1,E=function(){function NgProbeToken(e,t){this.name=e,this.token=t}return NgProbeToken}(),T=function(){function PlatformRef(){}return PlatformRef.prototype.bootstrapModuleFactory=function(e){},PlatformRef.prototype.bootstrapModule=function(e,t){},PlatformRef.prototype.onDestroy=function(e){},PlatformRef.prototype.injector=function(){},PlatformRef.prototype.destroy=function(){},PlatformRef.prototype.destroyed=function(){},PlatformRef}(),S=function(e){function PlatformRef_(t){e.call(this),this._injector=t,this._modules=[],this._destroyListeners=[],this._destroyed=!1}return b(PlatformRef_,e),PlatformRef_.prototype.onDestroy=function(e){this._destroyListeners.push(e)},Object.defineProperty(PlatformRef_.prototype,"injector",{get:function(){return this._injector},enumerable:!0,configurable:!0}),Object.defineProperty(PlatformRef_.prototype,"destroyed",{get:function(){return this._destroyed},enumerable:!0,configurable:!0}),PlatformRef_.prototype.destroy=function(){if(this._destroyed)throw new Error("The platform has already been destroyed!");this._modules.slice().forEach(function(e){return e.destroy()}),this._destroyListeners.forEach(function(e){return e()}),this._destroyed=!0},PlatformRef_.prototype.bootstrapModuleFactory=function(e){return this._bootstrapModuleFactoryWithZone(e,null)},PlatformRef_.prototype._bootstrapModuleFactoryWithZone=function(e,t){var n=this;return t||(t=new m.a({enableLongStackTrace:isDevMode()})),t.run(function(){var i=c.f.resolveAndCreate([{provide:m.a,useValue:t}],n.injector),a=e.create(i),u=a.injector.get(o.a,null);if(!u)throw new Error("No ErrorHandler. Is platform module (BrowserModule) included?");return a.onDestroy(function(){return r.d.remove(n._modules,a)}),t.onError.subscribe({next:function(e){u.handleError(e)}}),_callAndReportToErrorHandler(u,function(){var e=a.injector.get(s.a);return e.donePromise.then(function(){return n._moduleDoBootstrap(a),a})})})},PlatformRef_.prototype.bootstrapModule=function(e,t){return void 0===t&&(t=[]),this._bootstrapModuleWithZone(e,t,null)},PlatformRef_.prototype._bootstrapModuleWithZone=function(e,t,n,o){var r=this;void 0===t&&(t=[]);var i=this.injector.get(d.a),a=i.createCompiler(Array.isArray(t)?t:[t]);return o?a.compileModuleAndAllComponentsAsync(e).then(function(e){var t=e.ngModuleFactory,i=e.componentFactories;return o(i),r._bootstrapModuleFactoryWithZone(t,n)}):a.compileModuleAsync(e).then(function(e){return r._bootstrapModuleFactoryWithZone(e,n)})},PlatformRef_.prototype._moduleDoBootstrap=function(e){var t=e.injector.get(A);if(e.bootstrapFactories.length>0)e.bootstrapFactories.forEach(function(e){return t.bootstrap(e)});else{if(!e.instance.ngDoBootstrap)throw new Error("The module "+n.i(i.b)(e.instance.constructor)+' was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. Please define one of these.');e.instance.ngDoBootstrap(t)}this._modules.push(e)},PlatformRef_.decorators=[{type:c.b}],PlatformRef_.ctorParameters=function(){return[{type:c.g}]},PlatformRef_}(T),A=function(){function ApplicationRef(){}return ApplicationRef.prototype.bootstrap=function(e){},ApplicationRef.prototype.tick=function(){},ApplicationRef.prototype.componentTypes=function(){},ApplicationRef.prototype.components=function(){},ApplicationRef.prototype.attachView=function(e){},ApplicationRef.prototype.detachView=function(e){},ApplicationRef.prototype.viewCount=function(){},ApplicationRef}(),M=function(e){function ApplicationRef_(t,n,o,r,i,a,s,u){var l=this;e.call(this),this._zone=t,this._console=n,this._injector=o,this._exceptionHandler=r,this._componentFactoryResolver=i,this._initStatus=a,this._testabilityRegistry=s,this._testability=u,this._bootstrapListeners=[],this._rootComponents=[],this._rootComponentTypes=[],this._views=[],this._runningTick=!1,this._enforceNoNewChanges=!1,this._enforceNoNewChanges=isDevMode(),this._zone.onMicrotaskEmpty.subscribe({next:function(){l._zone.run(function(){l.tick()})}})}return b(ApplicationRef_,e),ApplicationRef_.prototype.attachView=function(e){var t=e.internalView;this._views.push(t),t.attachToAppRef(this)},ApplicationRef_.prototype.detachView=function(e){var t=e.internalView;r.d.remove(this._views,t),t.detach()},ApplicationRef_.prototype.bootstrap=function(e){var t=this;if(!this._initStatus.done)throw new Error("Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.");var n;n=e instanceof p.a?e:this._componentFactoryResolver.resolveComponentFactory(e),this._rootComponentTypes.push(n.componentType);var o=n.create(this._injector,[],n.selector);o.onDestroy(function(){t._unloadComponent(o)});var r=o.injector.get(h.a,null);return r&&o.injector.get(h.b).registerApplication(o.location.nativeElement,r),this._loadComponent(o),isDevMode()&&this._console.log("Angular is running in the development mode. Call enableProdMode() to enable the production mode."),o},ApplicationRef_.prototype._loadComponent=function(e){this.attachView(e.hostView),this.tick(),this._rootComponents.push(e);var t=this._injector.get(u.b,[]).concat(this._bootstrapListeners);t.forEach(function(t){return t(e)})},ApplicationRef_.prototype._unloadComponent=function(e){this.detachView(e.hostView),r.d.remove(this._rootComponents,e)},ApplicationRef_.prototype.tick=function(){if(this._runningTick)throw new Error("ApplicationRef.tick is called recursively");var e=ApplicationRef_._tickScope();try{this._runningTick=!0,this._views.forEach(function(e){return e.ref.detectChanges()}),this._enforceNoNewChanges&&this._views.forEach(function(e){return e.ref.checkNoChanges()})}finally{this._runningTick=!1,n.i(f.a)(e)}},ApplicationRef_.prototype.ngOnDestroy=function(){this._views.slice().forEach(function(e){return e.destroy()})},Object.defineProperty(ApplicationRef_.prototype,"viewCount",{get:function(){return this._views.length},enumerable:!0,configurable:!0}),Object.defineProperty(ApplicationRef_.prototype,"componentTypes",{get:function(){return this._rootComponentTypes},enumerable:!0,configurable:!0}),Object.defineProperty(ApplicationRef_.prototype,"components",{get:function(){return this._rootComponents},enumerable:!0,configurable:!0}),ApplicationRef_._tickScope=n.i(f.b)("ApplicationRef#tick()"),ApplicationRef_.decorators=[{type:c.b}],ApplicationRef_.ctorParameters=function(){return[{type:m.a},{type:l.a},{type:c.g},{type:o.a},{type:g.a},{type:s.a},{type:h.b,decorators:[{type:c.d}]},{type:h.a,decorators:[{type:c.d}]}]},ApplicationRef_}(A)},function(e,t,n){"use strict";function getPreviousIndex(e,t,n){var o=e.previousIndex;if(null===o)return o;var r=0;return n&&o<n.length&&(r=n[o]),o+t+r}var o=n(132),r=n(8);n.d(t,"a",function(){return i}),n.d(t,"c",function(){return s}),n.d(t,"b",function(){return u});var i=function(){function DefaultIterableDifferFactory(){}return DefaultIterableDifferFactory.prototype.supports=function(e){return n.i(o.a)(e)},DefaultIterableDifferFactory.prototype.create=function(e,t){return new s(t)},DefaultIterableDifferFactory}(),a=function(e,t){return t},s=function(){function DefaultIterableDiffer(e){this._trackByFn=e,this._length=null,this._collection=null,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=this._trackByFn||a}return Object.defineProperty(DefaultIterableDiffer.prototype,"collection",{get:function(){return this._collection},enumerable:!0,configurable:!0}),Object.defineProperty(DefaultIterableDiffer.prototype,"length",{get:function(){return this._length},enumerable:!0,configurable:!0}),DefaultIterableDiffer.prototype.forEachItem=function(e){var t;for(t=this._itHead;null!==t;t=t._next)e(t)},DefaultIterableDiffer.prototype.forEachOperation=function(e){for(var t=this._itHead,n=this._removalsHead,o=0,r=null;t||n;){var i=!n||t&&t.currentIndex<getPreviousIndex(n,o,r)?t:n,a=getPreviousIndex(i,o,r),s=i.currentIndex;if(i===n)o--,n=n._nextRemoved;else if(t=t._next,null==i.previousIndex)o++;else{r||(r=[]);var u=a-o,l=s-o;if(u!=l){for(var c=0;c<u;c++){var d=c<r.length?r[c]:r[c]=0,p=d+c;l<=p&&p<u&&(r[c]=d+1)}var g=i.previousIndex;r[g]=l-u}}a!==s&&e(i,a,s)}},DefaultIterableDiffer.prototype.forEachPreviousItem=function(e){var t;for(t=this._previousItHead;null!==t;t=t._nextPrevious)e(t)},DefaultIterableDiffer.prototype.forEachAddedItem=function(e){var t;for(t=this._additionsHead;null!==t;t=t._nextAdded)e(t)},DefaultIterableDiffer.prototype.forEachMovedItem=function(e){var t;for(t=this._movesHead;null!==t;t=t._nextMoved)e(t)},DefaultIterableDiffer.prototype.forEachRemovedItem=function(e){var t;for(t=this._removalsHead;null!==t;t=t._nextRemoved)e(t)},DefaultIterableDiffer.prototype.forEachIdentityChange=function(e){var t;for(t=this._identityChangesHead;null!==t;t=t._nextIdentityChange)e(t)},DefaultIterableDiffer.prototype.diff=function(e){if(n.i(r.c)(e)&&(e=[]),!n.i(o.a)(e))throw new Error("Error trying to diff '"+e+"'");return this.check(e)?this:null},DefaultIterableDiffer.prototype.onDestroy=function(){},DefaultIterableDiffer.prototype.check=function(e){var t=this;this._reset();var i,a,s,u=this._itHead,l=!1;if(Array.isArray(e)){var c=e;this._length=e.length;for(var d=0;d<this._length;d++)a=c[d],s=this._trackByFn(d,a),null!==u&&n.i(r.i)(u.trackById,s)?(l&&(u=this._verifyReinsertion(u,a,s,d)),n.i(r.i)(u.item,a)||this._addIdentityChange(u,a)):(u=this._mismatch(u,a,s,d),l=!0),u=u._next}else i=0,n.i(o.b)(e,function(e){s=t._trackByFn(i,e),null!==u&&n.i(r.i)(u.trackById,s)?(l&&(u=t._verifyReinsertion(u,e,s,i)),n.i(r.i)(u.item,e)||t._addIdentityChange(u,e)):(u=t._mismatch(u,e,s,i),l=!0),u=u._next,i++}),this._length=i;return this._truncate(u),this._collection=e,this.isDirty},Object.defineProperty(DefaultIterableDiffer.prototype,"isDirty",{get:function(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead},enumerable:!0,configurable:!0}),DefaultIterableDiffer.prototype._reset=function(){if(this.isDirty){var e=void 0,t=void 0;for(e=this._previousItHead=this._itHead;null!==e;e=e._next)e._nextPrevious=e._next;for(e=this._additionsHead;null!==e;e=e._nextAdded)e.previousIndex=e.currentIndex;for(this._additionsHead=this._additionsTail=null,e=this._movesHead;null!==e;e=t)e.previousIndex=e.currentIndex,t=e._nextMoved;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}},DefaultIterableDiffer.prototype._mismatch=function(e,t,o,i){var a;return null===e?a=this._itTail:(a=e._prev,this._remove(e)),e=null===this._linkedRecords?null:this._linkedRecords.get(o,i),null!==e?(n.i(r.i)(e.item,t)||this._addIdentityChange(e,t),this._moveAfter(e,a,i)):(e=null===this._unlinkedRecords?null:this._unlinkedRecords.get(o),null!==e?(n.i(r.i)(e.item,t)||this._addIdentityChange(e,t),this._reinsertAfter(e,a,i)):e=this._addAfter(new u(t,o),a,i)),e},DefaultIterableDiffer.prototype._verifyReinsertion=function(e,t,n,o){var r=null===this._unlinkedRecords?null:this._unlinkedRecords.get(n);return null!==r?e=this._reinsertAfter(r,e._prev,o):e.currentIndex!=o&&(e.currentIndex=o,this._addToMoves(e,o)),e},DefaultIterableDiffer.prototype._truncate=function(e){for(;null!==e;){var t=e._next;this._addToRemovals(this._unlink(e)),e=t}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)},DefaultIterableDiffer.prototype._reinsertAfter=function(e,t,n){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(e);var o=e._prevRemoved,r=e._nextRemoved;return null===o?this._removalsHead=r:o._nextRemoved=r,null===r?this._removalsTail=o:r._prevRemoved=o,this._insertAfter(e,t,n),this._addToMoves(e,n),e},DefaultIterableDiffer.prototype._moveAfter=function(e,t,n){return this._unlink(e),
this._insertAfter(e,t,n),this._addToMoves(e,n),e},DefaultIterableDiffer.prototype._addAfter=function(e,t,n){return this._insertAfter(e,t,n),null===this._additionsTail?this._additionsTail=this._additionsHead=e:this._additionsTail=this._additionsTail._nextAdded=e,e},DefaultIterableDiffer.prototype._insertAfter=function(e,t,n){var o=null===t?this._itHead:t._next;return e._next=o,e._prev=t,null===o?this._itTail=e:o._prev=e,null===t?this._itHead=e:t._next=e,null===this._linkedRecords&&(this._linkedRecords=new c),this._linkedRecords.put(e),e.currentIndex=n,e},DefaultIterableDiffer.prototype._remove=function(e){return this._addToRemovals(this._unlink(e))},DefaultIterableDiffer.prototype._unlink=function(e){null!==this._linkedRecords&&this._linkedRecords.remove(e);var t=e._prev,n=e._next;return null===t?this._itHead=n:t._next=n,null===n?this._itTail=t:n._prev=t,e},DefaultIterableDiffer.prototype._addToMoves=function(e,t){return e.previousIndex===t?e:(null===this._movesTail?this._movesTail=this._movesHead=e:this._movesTail=this._movesTail._nextMoved=e,e)},DefaultIterableDiffer.prototype._addToRemovals=function(e){return null===this._unlinkedRecords&&(this._unlinkedRecords=new c),this._unlinkedRecords.put(e),e.currentIndex=null,e._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=e,e._prevRemoved=null):(e._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=e),e},DefaultIterableDiffer.prototype._addIdentityChange=function(e,t){return e.item=t,null===this._identityChangesTail?this._identityChangesTail=this._identityChangesHead=e:this._identityChangesTail=this._identityChangesTail._nextIdentityChange=e,e},DefaultIterableDiffer.prototype.toString=function(){var e=[];this.forEachItem(function(t){return e.push(t)});var t=[];this.forEachPreviousItem(function(e){return t.push(e)});var n=[];this.forEachAddedItem(function(e){return n.push(e)});var o=[];this.forEachMovedItem(function(e){return o.push(e)});var r=[];this.forEachRemovedItem(function(e){return r.push(e)});var i=[];return this.forEachIdentityChange(function(e){return i.push(e)}),"collection: "+e.join(", ")+"\nprevious: "+t.join(", ")+"\nadditions: "+n.join(", ")+"\nmoves: "+o.join(", ")+"\nremovals: "+r.join(", ")+"\nidentityChanges: "+i.join(", ")+"\n"},DefaultIterableDiffer}(),u=function(){function CollectionChangeRecord(e,t){this.item=e,this.trackById=t,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}return CollectionChangeRecord.prototype.toString=function(){return this.previousIndex===this.currentIndex?n.i(r.b)(this.item):n.i(r.b)(this.item)+"["+n.i(r.b)(this.previousIndex)+"->"+n.i(r.b)(this.currentIndex)+"]"},CollectionChangeRecord}(),l=function(){function _DuplicateItemRecordList(){this._head=null,this._tail=null}return _DuplicateItemRecordList.prototype.add=function(e){null===this._head?(this._head=this._tail=e,e._nextDup=null,e._prevDup=null):(this._tail._nextDup=e,e._prevDup=this._tail,e._nextDup=null,this._tail=e)},_DuplicateItemRecordList.prototype.get=function(e,t){var o;for(o=this._head;null!==o;o=o._nextDup)if((null===t||t<o.currentIndex)&&n.i(r.i)(o.trackById,e))return o;return null},_DuplicateItemRecordList.prototype.remove=function(e){var t=e._prevDup,n=e._nextDup;return null===t?this._head=n:t._nextDup=n,null===n?this._tail=t:n._prevDup=t,null===this._head},_DuplicateItemRecordList}(),c=function(){function _DuplicateMap(){this.map=new Map}return _DuplicateMap.prototype.put=function(e){var t=e.trackById,n=this.map.get(t);n||(n=new l,this.map.set(t,n)),n.add(e)},_DuplicateMap.prototype.get=function(e,t){void 0===t&&(t=null);var n=e,o=this.map.get(n);return o?o.get(e,t):null},_DuplicateMap.prototype.remove=function(e){var t=e.trackById,n=this.map.get(t);return n.remove(e)&&this.map.delete(t),e},Object.defineProperty(_DuplicateMap.prototype,"isEmpty",{get:function(){return 0===this.map.size},enumerable:!0,configurable:!0}),_DuplicateMap.prototype.clear=function(){this.map.clear()},_DuplicateMap.prototype.toString=function(){return"_DuplicateMap("+n.i(r.b)(this.map)+")"},_DuplicateMap}()},function(e,t,n){"use strict";var o=n(41),r=n(8);n.d(t,"a",function(){return i});var i=function(){function Console(){}return Console.prototype.log=function(e){n.i(r.g)(e)},Console.prototype.warn=function(e){n.i(r.h)(e)},Console.decorators=[{type:o.b}],Console.ctorParameters=function(){return[]},Console}()},function(e,t,n){"use strict";function forwardRef(e){return e.__forward_ref__=forwardRef,e.toString=function(){return n.i(o.b)(this())},e}function resolveForwardRef(e){return"function"==typeof e&&e.hasOwnProperty("__forward_ref__")&&e.__forward_ref__===forwardRef?e():e}var o=n(8);t.b=forwardRef,t.a=resolveForwardRef},function(e,t,n){"use strict";var o=n(108);n.d(t,"a",function(){return r});var r=function(){function OpaqueToken(e){this._desc=e}return OpaqueToken.prototype.toString=function(){return"Token "+this._desc},OpaqueToken.decorators=[{type:o.a}],OpaqueToken.ctorParameters=function(){return[null]},OpaqueToken}()},function(e,t,n){"use strict";var o=n(8),r=n(259);n.d(t,"a",function(){return i});var i=function(){function ReflectiveKey(e,t){if(this.token=e,this.id=t,!e)throw new Error("Token must be defined!")}return Object.defineProperty(ReflectiveKey.prototype,"displayName",{get:function(){return n.i(o.b)(this.token)},enumerable:!0,configurable:!0}),ReflectiveKey.get=function(e){return s.get(n.i(r.a)(e))},Object.defineProperty(ReflectiveKey,"numberOfKeys",{get:function(){return s.numberOfKeys},enumerable:!0,configurable:!0}),ReflectiveKey}(),a=function(){function KeyRegistry(){this._allKeys=new Map}return KeyRegistry.prototype.get=function(e){if(e instanceof i)return e;if(this._allKeys.has(e))return this._allKeys.get(e);var t=new i(e,i.numberOfKeys);return this._allKeys.set(e,t),t},Object.defineProperty(KeyRegistry.prototype,"numberOfKeys",{get:function(){return this._allKeys.size},enumerable:!0,configurable:!0}),KeyRegistry}(),s=new a},function(e,t,n){"use strict";function resolveReflectiveFactory(e){var t,r;if(e.useClass){var a=n.i(i.a)(e.useClass);t=o.a.factory(a),r=_dependenciesFor(a)}else e.useExisting?(t=function(e){return e},r=[l.fromKey(u.a.get(e.useExisting))]):e.useFactory?(t=e.useFactory,r=constructDependencies(e.useFactory,e.deps)):(t=function(){return e.useValue},r=c);return new p(t,r)}function resolveReflectiveProvider(e){return new d(u.a.get(e.provide),[resolveReflectiveFactory(e)],e.multi)}function resolveReflectiveProviders(e){var t=_normalizeProviders(e,[]),n=t.map(resolveReflectiveProvider),o=mergeResolvedReflectiveProviders(n,new Map);return Array.from(o.values())}function mergeResolvedReflectiveProviders(e,t){for(var n=0;n<e.length;n++){var o=e[n],r=t.get(o.key.id);if(r){if(o.multiProvider!==r.multiProvider)throw new s.a(r,o);if(o.multiProvider)for(var i=0;i<o.resolvedFactories.length;i++)r.resolvedFactories.push(o.resolvedFactories[i]);else t.set(o.key.id,o)}else{var a=void 0;a=o.multiProvider?new d(o.key,o.resolvedFactories.slice(),o.multiProvider):o,t.set(o.key.id,a)}}return t}function _normalizeProviders(e,t){return e.forEach(function(e){if(e instanceof r.b)t.push({provide:e,useClass:e});else if(e&&"object"==typeof e&&void 0!==e.provide)t.push(e);else{if(!(e instanceof Array))throw new s.b(e);_normalizeProviders(e,t)}}),t}function constructDependencies(e,t){if(t){var n=t.map(function(e){return[e]});return t.map(function(t){return _extractToken(e,t,n)})}return _dependenciesFor(e)}function _dependenciesFor(e){var t=o.a.parameters(e);if(!t)return[];if(t.some(function(e){return null==e}))throw new s.c(e,t);return t.map(function(n){return _extractToken(e,n,t)})}function _extractToken(e,t,o){var u=null,l=!1;if(!Array.isArray(t))return t instanceof a.b?_createDependency(t.token,l,null):_createDependency(t,l,null);for(var c=null,d=0;d<t.length;++d){var p=t[d];p instanceof r.b?u=p:p instanceof a.b?u=p.token:p instanceof a.c?l=!0:(p instanceof a.d||p instanceof a.e)&&(c=p)}if(u=n.i(i.a)(u),null!=u)return _createDependency(u,l,c);throw new s.c(e,o)}function _createDependency(e,t,n){return new l(u.a.get(e),t,n)}var o=n(265),r=n(269),i=n(259),a=n(108),s=n(384),u=n(261);n.d(t,"c",function(){return p}),t.a=resolveReflectiveProviders,t.b=constructDependencies;var l=function(){function ReflectiveDependency(e,t,n){this.key=e,this.optional=t,this.visibility=n}return ReflectiveDependency.fromKey=function(e){return new ReflectiveDependency(e,(!1),null)},ReflectiveDependency}(),c=[],d=function(){function ResolvedReflectiveProvider_(e,t,n){this.key=e,this.resolvedFactories=t,this.multiProvider=n}return Object.defineProperty(ResolvedReflectiveProvider_.prototype,"resolvedFactory",{get:function(){return this.resolvedFactories[0]},enumerable:!0,configurable:!0}),ResolvedReflectiveProvider_}(),p=function(){function ResolvedReflectiveFactory(e,t){this.factory=e,this.dependencies=t}return ResolvedReflectiveFactory}()},function(e,t,n){"use strict";var o=n(13),r=(n.n(o),n(0));n.n(r);n.d(t,"a",function(){return a});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=function(e){function EventEmitter(t){void 0===t&&(t=!1),e.call(this),this.__isAsync=t}return i(EventEmitter,e),EventEmitter.prototype.emit=function(t){e.prototype.next.call(this,t)},EventEmitter.prototype.subscribe=function(t,n,o){var r,i=function(e){return null},a=function(){return null};return t&&"object"==typeof t?(r=this.__isAsync?function(e){setTimeout(function(){return t.next(e)})}:function(e){t.next(e)},t.error&&(i=this.__isAsync?function(e){setTimeout(function(){return t.error(e)})}:function(e){t.error(e)}),t.complete&&(a=this.__isAsync?function(){setTimeout(function(){return t.complete()})}:function(){t.complete()})):(r=this.__isAsync?function(e){setTimeout(function(){return t(e)})}:function(e){t(e)},n&&(i=this.__isAsync?function(e){setTimeout(function(){return n(e)})}:function(e){n(e)}),o&&(a=this.__isAsync?function(){setTimeout(function(){return o()})}:function(){o()})),e.prototype.subscribe.call(this,r,i,a)},EventEmitter}(o.Subject)},function(e,t,n){"use strict";var o=n(182),r=n(184);n.d(t,"c",function(){return a}),n.d(t,"b",function(){return s}),n.d(t,"a",function(){return u});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=function(){function ComponentRef(){}return ComponentRef.prototype.location=function(){},ComponentRef.prototype.injector=function(){},ComponentRef.prototype.instance=function(){},ComponentRef.prototype.hostView=function(){},ComponentRef.prototype.changeDetectorRef=function(){},ComponentRef.prototype.componentType=function(){},ComponentRef.prototype.destroy=function(){},ComponentRef.prototype.onDestroy=function(e){},ComponentRef}(),s=function(e){function ComponentRef_(t,n,o,r){e.call(this),this._index=t,this._parentView=n,this._nativeElement=o,this._component=r}return i(ComponentRef_,e),Object.defineProperty(ComponentRef_.prototype,"location",{get:function(){return new o.a(this._nativeElement)},enumerable:!0,configurable:!0}),Object.defineProperty(ComponentRef_.prototype,"injector",{get:function(){return this._parentView.injector(this._index)},enumerable:!0,configurable:!0}),Object.defineProperty(ComponentRef_.prototype,"instance",{get:function(){return this._component},enumerable:!0,configurable:!0}),Object.defineProperty(ComponentRef_.prototype,"hostView",{get:function(){return this._parentView.ref},enumerable:!0,configurable:!0}),Object.defineProperty(ComponentRef_.prototype,"changeDetectorRef",{get:function(){return this._parentView.ref},enumerable:!0,configurable:!0}),Object.defineProperty(ComponentRef_.prototype,"componentType",{get:function(){return this._component.constructor},enumerable:!0,configurable:!0}),ComponentRef_.prototype.destroy=function(){this._parentView.detachAndDestroy()},ComponentRef_.prototype.onDestroy=function(e){this.hostView.onDestroy(e)},ComponentRef_}(a),u=function(){function ComponentFactory(e,t,n){this.selector=e,this._viewClass=t,this._componentType=n}return Object.defineProperty(ComponentFactory.prototype,"componentType",{get:function(){return this._componentType},enumerable:!0,configurable:!0}),ComponentFactory.prototype.create=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=null);var o=e.get(r.ViewUtils);t||(t=[]);var i=new this._viewClass(o,null,null,null);return i.createHostView(n,e,t)},ComponentFactory}()},function(e,t,n){"use strict";var o=n(397),r=n(398);n.d(t,"a",function(){return i}),n.d(t,"b",function(){return r.a});var i=new r.a(new o.a)},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o=function(){function ReflectorReader(){}return ReflectorReader.prototype.parameters=function(e){},ReflectorReader.prototype.annotations=function(e){},ReflectorReader.prototype.propMetadata=function(e){},ReflectorReader.prototype.importUri=function(e){},ReflectorReader.prototype.resolveIdentifier=function(e,t,n){},ReflectorReader.prototype.resolveEnum=function(e,t){},ReflectorReader}()},function(e,t,n){"use strict";n.d(t,"b",function(){return o}),n.d(t,"c",function(){return r}),n.d(t,"d",function(){return i}),n.d(t,"a",function(){return a});var o=function(){function RenderComponentType(e,t,n,o,r,i){this.id=e,this.templateUrl=t,this.slotCount=n,this.encapsulation=o,this.styles=r,this.animations=i}return RenderComponentType}(),r=function(){function RenderDebugInfo(){}return RenderDebugInfo.prototype.injector=function(){},RenderDebugInfo.prototype.component=function(){},RenderDebugInfo.prototype.providerTokens=function(){},RenderDebugInfo.prototype.references=function(){},RenderDebugInfo.prototype.context=function(){},RenderDebugInfo.prototype.source=function(){},RenderDebugInfo}(),i=function(){function Renderer(){}return Renderer.prototype.selectRootElement=function(e,t){},Renderer.prototype.createElement=function(e,t,n){},Renderer.prototype.createViewRoot=function(e){},Renderer.prototype.createTemplateAnchor=function(e,t){},Renderer.prototype.createText=function(e,t,n){},Renderer.prototype.projectNodes=function(e,t){},Renderer.prototype.attachViewAfter=function(e,t){},Renderer.prototype.detachView=function(e){},Renderer.prototype.destroyView=function(e,t){},Renderer.prototype.listen=function(e,t,n){},Renderer.prototype.listenGlobal=function(e,t,n){},Renderer.prototype.setElementProperty=function(e,t,n){},Renderer.prototype.setElementAttribute=function(e,t,n){},Renderer.prototype.setBindingDebugInfo=function(e,t,n){},Renderer.prototype.setElementClass=function(e,t,n){},Renderer.prototype.setElementStyle=function(e,t,n){},Renderer.prototype.invokeElementMethod=function(e,t,n){},Renderer.prototype.setText=function(e,t){},Renderer.prototype.animate=function(e,t,n,o,r,i,a){},Renderer}(),a=function(){function RootRenderer(){}return RootRenderer.prototype.renderComponent=function(e){},RootRenderer}()},function(e,t,n){"use strict";function setTestabilityGetter(e){l=e}var o=n(41),r=n(8),i=n(186);n.d(t,"a",function(){return a}),n.d(t,"b",function(){return s}),t.c=setTestabilityGetter;var a=function(){function Testability(e){this._ngZone=e,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this._watchAngularEvents()}return Testability.prototype._watchAngularEvents=function(){var e=this;this._ngZone.onUnstable.subscribe({next:function(){e._didWork=!0,e._isZoneStable=!1}}),this._ngZone.runOutsideAngular(function(){e._ngZone.onStable.subscribe({next:function(){i.a.assertNotInAngularZone(),n.i(r.l)(function(){e._isZoneStable=!0,e._runCallbacksIfReady()})}})})},Testability.prototype.increasePendingRequestCount=function(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount},Testability.prototype.decreasePendingRequestCount=function(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount},Testability.prototype.isStable=function(){return this._isZoneStable&&0==this._pendingCount&&!this._ngZone.hasPendingMacrotasks},Testability.prototype._runCallbacksIfReady=function(){var e=this;this.isStable()?n.i(r.l)(function(){for(;0!==e._callbacks.length;)e._callbacks.pop()(e._didWork);e._didWork=!1}):this._didWork=!0},Testability.prototype.whenStable=function(e){this._callbacks.push(e),this._runCallbacksIfReady()},Testability.prototype.getPendingRequestCount=function(){return this._pendingCount},Testability.prototype.findBindings=function(e,t,n){return[]},Testability.prototype.findProviders=function(e,t,n){return[]},Testability.decorators=[{type:o.b}],Testability.ctorParameters=function(){return[{type:i.a}]},Testability}(),s=function(){function TestabilityRegistry(){this._applications=new Map,l.addToWindow(this)}return TestabilityRegistry.prototype.registerApplication=function(e,t){this._applications.set(e,t)},TestabilityRegistry.prototype.getTestability=function(e){return this._applications.get(e)},TestabilityRegistry.prototype.getAllTestabilities=function(){return Array.from(this._applications.values())},TestabilityRegistry.prototype.getAllRootElements=function(){return Array.from(this._applications.keys())},TestabilityRegistry.prototype.findTestabilityInTree=function(e,t){return void 0===t&&(t=!0),l.findTestabilityInTree(this,e,t)},TestabilityRegistry.decorators=[{type:o.b}],TestabilityRegistry.ctorParameters=function(){return[]},TestabilityRegistry}(),u=function(){function _NoopGetTestability(){}return _NoopGetTestability.prototype.addToWindow=function(e){},_NoopGetTestability.prototype.findTestabilityInTree=function(e,t,n){return null},_NoopGetTestability}(),l=new u},function(e,t,n){"use strict";function isType(e){return"function"==typeof e}n.d(t,"b",function(){return o}),t.a=isType;var o=Function},function(e,t,n){"use strict";function isPromise(e){return!!e&&"function"==typeof e.then}function isObservable(e){return!(!e||!e[o.$$observable])}var o=n(156);n.n(o);t.a=isPromise,t.b=isObservable},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o=function(){function AbstractControlDirective(){}return Object.defineProperty(AbstractControlDirective.prototype,"control",{get:function(){throw new Error("unimplemented")},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlDirective.prototype,"value",{get:function(){return this.control?this.control.value:null},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlDirective.prototype,"valid",{get:function(){return this.control?this.control.valid:null},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlDirective.prototype,"invalid",{get:function(){return this.control?this.control.invalid:null},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlDirective.prototype,"pending",{get:function(){return this.control?this.control.pending:null},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlDirective.prototype,"errors",{get:function(){return this.control?this.control.errors:null},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlDirective.prototype,"pristine",{get:function(){return this.control?this.control.pristine:null},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlDirective.prototype,"dirty",{get:function(){return this.control?this.control.dirty:null},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlDirective.prototype,"touched",{get:function(){return this.control?this.control.touched:null},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlDirective.prototype,"untouched",{get:function(){return this.control?this.control.untouched:null},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlDirective.prototype,"disabled",{get:function(){return this.control?this.control.disabled:null},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlDirective.prototype,"enabled",{get:function(){return this.control?this.control.enabled:null},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlDirective.prototype,"statusChanges",{get:function(){return this.control?this.control.statusChanges:null},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlDirective.prototype,"valueChanges",{get:function(){return this.control?this.control.valueChanges:null},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlDirective.prototype,"path",{get:function(){return null},enumerable:!0,configurable:!0}),AbstractControlDirective.prototype.reset=function(e){void 0===e&&(e=void 0),this.control&&this.control.reset(e)},AbstractControlDirective.prototype.hasError=function(e,t){return void 0===t&&(t=null),!!this.control&&this.control.hasError(e,t)},AbstractControlDirective.prototype.getError=function(e,t){return void 0===t&&(t=null),this.control?this.control.getError(e,t):null},AbstractControlDirective}()},function(e,t,n){"use strict";var o=n(1),r=n(57),i=n(90);n.d(t,"a",function(){return l}),n.d(t,"b",function(){return c});var a=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},s=function(){function AbstractControlStatus(e){this._cd=e}return Object.defineProperty(AbstractControlStatus.prototype,"ngClassUntouched",{get:function(){return!!this._cd.control&&this._cd.control.untouched},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlStatus.prototype,"ngClassTouched",{get:function(){return!!this._cd.control&&this._cd.control.touched},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlStatus.prototype,"ngClassPristine",{get:function(){return!!this._cd.control&&this._cd.control.pristine},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlStatus.prototype,"ngClassDirty",{get:function(){return!!this._cd.control&&this._cd.control.dirty},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlStatus.prototype,"ngClassValid",{get:function(){return!!this._cd.control&&this._cd.control.valid},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlStatus.prototype,"ngClassInvalid",{get:function(){return!!this._cd.control&&this._cd.control.invalid},enumerable:!0,configurable:!0}),Object.defineProperty(AbstractControlStatus.prototype,"ngClassPending",{get:function(){return!!this._cd.control&&this._cd.control.pending},enumerable:!0,configurable:!0}),AbstractControlStatus}(),u={"[class.ng-untouched]":"ngClassUntouched","[class.ng-touched]":"ngClassTouched","[class.ng-pristine]":"ngClassPristine","[class.ng-dirty]":"ngClassDirty","[class.ng-valid]":"ngClassValid","[class.ng-invalid]":"ngClassInvalid","[class.ng-pending]":"ngClassPending"},l=function(e){function NgControlStatus(t){e.call(this,t)}return a(NgControlStatus,e),NgControlStatus.decorators=[{type:o.Directive,args:[{selector:"[formControlName],[ngModel],[formControl]",host:u}]}],NgControlStatus.ctorParameters=function(){return[{type:i.a,decorators:[{type:o.Self}]}]},NgControlStatus}(s),c=function(e){function NgControlStatusGroup(t){e.call(this,t)}return a(NgControlStatusGroup,e),NgControlStatusGroup.decorators=[{type:o.Directive,args:[{selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]",host:u}]}],NgControlStatusGroup.ctorParameters=function(){return[{type:r.a,decorators:[{type:o.Self}]}]},NgControlStatusGroup}(s)},function(e,t,n){"use strict";var o=n(1),r=n(110),i=n(193),a=n(49),s=n(134),u=n(57),l=n(42),c=n(90),d=n(135),p=n(189),g=n(76),f=n(402);n.d(t,"a",function(){return b});var h=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},m={provide:c.a,useExisting:n.i(o.forwardRef)(function(){return b})},y=Promise.resolve(null),b=function(e){function NgModel(t,o,a,s){e.call(this),this._control=new i.b,this._registered=!1,this.update=new r.a,this._parent=t,this._rawValidators=o||[],this._rawAsyncValidators=a||[],this.valueAccessor=n.i(g.f)(this,s)}return h(NgModel,e),NgModel.prototype.ngOnChanges=function(e){this._checkForErrors(),this._registered||this._setUpControl(),"isDisabled"in e&&this._updateDisabled(e),n.i(g.g)(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)},NgModel.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeControl(this)},Object.defineProperty(NgModel.prototype,"control",{get:function(){return this._control},enumerable:!0,configurable:!0}),Object.defineProperty(NgModel.prototype,"path",{get:function(){return this._parent?n.i(g.a)(this.name,this._parent):[this.name]},enumerable:!0,configurable:!0}),Object.defineProperty(NgModel.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(NgModel.prototype,"validator",{get:function(){return n.i(g.b)(this._rawValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(NgModel.prototype,"asyncValidator",{get:function(){return n.i(g.c)(this._rawAsyncValidators)},enumerable:!0,configurable:!0}),NgModel.prototype.viewToModelUpdate=function(e){this.viewModel=e,this.update.emit(e)},NgModel.prototype._setUpControl=function(){this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0},NgModel.prototype._isStandalone=function(){return!this._parent||this.options&&this.options.standalone},NgModel.prototype._setUpStandalone=function(){n.i(g.d)(this._control,this),this._control.updateValueAndValidity({emitEvent:!1})},NgModel.prototype._checkForErrors=function(){this._isStandalone()||this._checkParentType(),this._checkName()},NgModel.prototype._checkParentType=function(){!(this._parent instanceof p.a)&&this._parent instanceof s.a?f.a.formGroupNameException():this._parent instanceof p.a||this._parent instanceof d.a||f.a.modelParentException()},NgModel.prototype._checkName=function(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()||this.name||f.a.missingNameException()},NgModel.prototype._updateValue=function(e){var t=this;y.then(function(){t.control.setValue(e,{emitViewToModelChange:!1})})},NgModel.prototype._updateDisabled=function(e){var t=this,n=e.isDisabled.currentValue,o=""===n||n&&"false"!==n;y.then(function(){o&&!t.control.disabled?t.control.disable():!o&&t.control.disabled&&t.control.enable()})},NgModel.decorators=[{type:o.Directive,args:[{selector:"[ngModel]:not([formControlName]):not([formControl])",providers:[m],exportAs:"ngModel"}]}],NgModel.ctorParameters=function(){return[{type:u.a,decorators:[{type:o.Optional},{type:o.Host}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[a.b]}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[a.c]}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[l.a]}]}]},NgModel.propDecorators={name:[{type:o.Input}],isDisabled:[{type:o.Input,args:["disabled"]}],model:[{type:o.Input,args:["ngModel"]}],options:[{type:o.Input,args:["ngModelOptions"]}],update:[{type:o.Output,args:["ngModelChange"]}]},NgModel}(c.a)},function(e,t,n){"use strict";var o=n(1),r=n(42);n.d(t,"a",function(){return a});var i={provide:r.a,useExisting:n.i(o.forwardRef)(function(){return a}),multi:!0},a=function(){function NumberValueAccessor(e,t){this._renderer=e,this._elementRef=t,this.onChange=function(e){},this.onTouched=function(){}}return NumberValueAccessor.prototype.writeValue=function(e){var t=null==e?"":e;this._renderer.setElementProperty(this._elementRef.nativeElement,"value",t)},NumberValueAccessor.prototype.registerOnChange=function(e){this.onChange=function(t){e(""==t?null:parseFloat(t))}},NumberValueAccessor.prototype.registerOnTouched=function(e){this.onTouched=e},NumberValueAccessor.prototype.setDisabledState=function(e){this._renderer.setElementProperty(this._elementRef.nativeElement,"disabled",e)},NumberValueAccessor.decorators=[{type:o.Directive,args:[{selector:"input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]",host:{"(change)":"onChange($event.target.value)","(input)":"onChange($event.target.value)","(blur)":"onTouched()"},providers:[i]}]}],NumberValueAccessor.ctorParameters=function(){return[{type:o.Renderer},{type:o.ElementRef}]},NumberValueAccessor}()},function(e,t,n){"use strict";var o=n(1),r=n(42);n.d(t,"a",function(){return a});var i={provide:r.a,useExisting:n.i(o.forwardRef)(function(){return a}),multi:!0},a=function(){function RangeValueAccessor(e,t){this._renderer=e,this._elementRef=t,this.onChange=function(e){},this.onTouched=function(){}}return RangeValueAccessor.prototype.writeValue=function(e){this._renderer.setElementProperty(this._elementRef.nativeElement,"value",parseFloat(e))},RangeValueAccessor.prototype.registerOnChange=function(e){this.onChange=function(t){e(""==t?null:parseFloat(t))}},RangeValueAccessor.prototype.registerOnTouched=function(e){this.onTouched=e},RangeValueAccessor.prototype.setDisabledState=function(e){this._renderer.setElementProperty(this._elementRef.nativeElement,"disabled",e)},RangeValueAccessor.decorators=[{type:o.Directive,args:[{selector:"input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]",host:{"(change)":"onChange($event.target.value)","(input)":"onChange($event.target.value)","(blur)":"onTouched()"},providers:[i]}]}],RangeValueAccessor.ctorParameters=function(){return[{type:o.Renderer},{type:o.ElementRef}]},RangeValueAccessor}()},function(e,t,n){"use strict";var o=n(1),r=n(110),i=n(49),a=n(42),s=n(90),u=n(190),l=n(76);n.d(t,"a",function(){return p});var c=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},d={provide:s.a,useExisting:n.i(o.forwardRef)(function(){return p})},p=function(e){function FormControlDirective(t,o,i){e.call(this),this.update=new r.a,this._rawValidators=t||[],this._rawAsyncValidators=o||[],this.valueAccessor=n.i(l.f)(this,i)}return c(FormControlDirective,e),Object.defineProperty(FormControlDirective.prototype,"isDisabled",{set:function(e){u.a.disabledAttrWarning()},enumerable:!0,configurable:!0}),FormControlDirective.prototype.ngOnChanges=function(e){this._isControlChanged(e)&&(n.i(l.d)(this.form,this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this.form.updateValueAndValidity({emitEvent:!1})),n.i(l.g)(e,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)},Object.defineProperty(FormControlDirective.prototype,"path",{get:function(){return[]},enumerable:!0,configurable:!0}),Object.defineProperty(FormControlDirective.prototype,"validator",{get:function(){return n.i(l.b)(this._rawValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(FormControlDirective.prototype,"asyncValidator",{get:function(){return n.i(l.c)(this._rawAsyncValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(FormControlDirective.prototype,"control",{get:function(){return this.form},enumerable:!0,configurable:!0}),FormControlDirective.prototype.viewToModelUpdate=function(e){this.viewModel=e,this.update.emit(e)},FormControlDirective.prototype._isControlChanged=function(e){return e.hasOwnProperty("form")},FormControlDirective.decorators=[{type:o.Directive,args:[{selector:"[formControl]",providers:[d],exportAs:"ngForm"}]}],FormControlDirective.ctorParameters=function(){return[{type:Array,decorators:[{type:o.Optional
},{type:o.Self},{type:o.Inject,args:[i.b]}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[i.c]}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[a.a]}]}]},FormControlDirective.propDecorators={form:[{type:o.Input,args:["formControl"]}],model:[{type:o.Input,args:["ngModel"]}],update:[{type:o.Output,args:["ngModelChange"]}],isDisabled:[{type:o.Input,args:["disabled"]}]},FormControlDirective}(s.a)},function(e,t,n){"use strict";var o=n(1),r=n(110),i=n(49),a=n(134),s=n(57),u=n(42),l=n(90),c=n(190),d=n(76),p=n(137),g=n(138);n.d(t,"a",function(){return m});var f=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},h={provide:l.a,useExisting:n.i(o.forwardRef)(function(){return m})},m=function(e){function FormControlName(t,o,i,a){e.call(this),this._added=!1,this.update=new r.a,this._parent=t,this._rawValidators=o||[],this._rawAsyncValidators=i||[],this.valueAccessor=n.i(d.f)(this,a)}return f(FormControlName,e),Object.defineProperty(FormControlName.prototype,"isDisabled",{set:function(e){c.a.disabledAttrWarning()},enumerable:!0,configurable:!0}),FormControlName.prototype.ngOnChanges=function(e){this._added||this._setUpControl(),n.i(d.g)(e,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))},FormControlName.prototype.ngOnDestroy=function(){this.formDirective&&this.formDirective.removeControl(this)},FormControlName.prototype.viewToModelUpdate=function(e){this.viewModel=e,this.update.emit(e)},Object.defineProperty(FormControlName.prototype,"path",{get:function(){return n.i(d.a)(this.name,this._parent)},enumerable:!0,configurable:!0}),Object.defineProperty(FormControlName.prototype,"formDirective",{get:function(){return this._parent?this._parent.formDirective:null},enumerable:!0,configurable:!0}),Object.defineProperty(FormControlName.prototype,"validator",{get:function(){return n.i(d.b)(this._rawValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(FormControlName.prototype,"asyncValidator",{get:function(){return n.i(d.c)(this._rawAsyncValidators)},enumerable:!0,configurable:!0}),Object.defineProperty(FormControlName.prototype,"control",{get:function(){return this._control},enumerable:!0,configurable:!0}),FormControlName.prototype._checkParentType=function(){!(this._parent instanceof g.a)&&this._parent instanceof a.a?c.a.ngModelGroupException():this._parent instanceof g.a||this._parent instanceof p.a||this._parent instanceof g.b||c.a.controlParentException()},FormControlName.prototype._setUpControl=function(){this._checkParentType(),this._control=this.formDirective.addControl(this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this._added=!0},FormControlName.decorators=[{type:o.Directive,args:[{selector:"[formControlName]",providers:[h]}]}],FormControlName.ctorParameters=function(){return[{type:s.a,decorators:[{type:o.Optional},{type:o.Host},{type:o.SkipSelf}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[i.b]}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[i.c]}]},{type:Array,decorators:[{type:o.Optional},{type:o.Self},{type:o.Inject,args:[u.a]}]}]},FormControlName.propDecorators={name:[{type:o.Input,args:["formControlName"]}],model:[{type:o.Input,args:["ngModel"]}],update:[{type:o.Output,args:["ngModelChange"]}],isDisabled:[{type:o.Input,args:["disabled"]}]},FormControlName}(l.a)},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r});var r=function(){function BrowserXhr(){}return BrowserXhr.prototype.build=function(){return new XMLHttpRequest},BrowserXhr.decorators=[{type:o.Injectable}],BrowserXhr.ctorParameters=function(){return[]},BrowserXhr}()},function(e,t,n){"use strict";var o=n(1),r=n(77),i=n(139),a=n(195),s=n(196);n.d(t,"a",function(){return l}),n.d(t,"b",function(){return c});var u=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},l=function(){function RequestOptions(e){var t=void 0===e?{}:e,o=t.method,r=t.headers,i=t.body,u=t.url,l=t.search,c=t.withCredentials,d=t.responseType;this.method=null!=o?n.i(a.d)(o):null,this.headers=null!=r?r:null,this.body=null!=i?i:null,this.url=null!=u?u:null,this.search=null!=l?"string"==typeof l?new s.a(l):l:null,this.withCredentials=null!=c?c:null,this.responseType=null!=d?d:null}return RequestOptions.prototype.merge=function(e){return new RequestOptions({method:e&&null!=e.method?e.method:this.method,headers:e&&null!=e.headers?e.headers:new i.a(this.headers),body:e&&null!=e.body?e.body:this.body,url:e&&null!=e.url?e.url:this.url,search:e&&null!=e.search?"string"==typeof e.search?new s.a(e.search):e.search.clone():this.search,withCredentials:e&&null!=e.withCredentials?e.withCredentials:this.withCredentials,responseType:e&&null!=e.responseType?e.responseType:this.responseType})},RequestOptions}(),c=function(e){function BaseRequestOptions(){e.call(this,{method:r.b.Get,headers:new i.a})}return u(BaseRequestOptions,e),BaseRequestOptions.decorators=[{type:o.Injectable}],BaseRequestOptions.ctorParameters=function(){return[]},BaseRequestOptions}(l)},function(e,t,n){"use strict";var o=n(410);n.d(t,"a",function(){return i});var r=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},i=function(e){function Response(t){e.call(this),this._body=t.body,this.status=t.status,this.ok=this.status>=200&&this.status<=299,this.statusText=t.statusText,this.headers=t.headers,this.type=t.type,this.url=t.url}return r(Response,e),Response.prototype.toString=function(){return"Response with status: "+this.status+" "+this.statusText+" for URL: "+this.url},Response}(o.a)},function(e,t,n){"use strict";var o=n(286);n.d(t,"a",function(){return i});var r=function(){function NoOpAnimationDriver(){}return NoOpAnimationDriver.prototype.animate=function(e,t,n,r,i,a,s){return void 0===s&&(s=[]),new o.a},NoOpAnimationDriver}(),i=function(){function AnimationDriver(){}return AnimationDriver.prototype.animate=function(e,t,n,o,r,i,a){},AnimationDriver.NOOP=new r,AnimationDriver}()},function(e,t,n){"use strict";function inspectNativeElement(e){return o.getDebugNode(e)}function _createConditionalRootRenderer(e,t,n){return o.isDevMode()?_createRootRenderer(e,(t||[]).concat(n||[])):e}function _createRootRenderer(e,t){return n.i(a.a)().setGlobalVar(l,inspectNativeElement),n.i(a.a)().setGlobalVar(c,r.a.merge(u,_ngProbeTokensToMap(t||[]))),new i.b(e)}function _ngProbeTokensToMap(e){return e.reduce(function(e,t){return e[t.name]=t.token,e},{})}var o=n(1),r=n(686),i=n(286),a=n(23),s=n(283);n.d(t,"b",function(){return d}),n.d(t,"a",function(){return p});var u={ApplicationRef:o.ApplicationRef,NgZone:o.NgZone},l="ng.probe",c="ng.coreTokens",d=function(){function NgProbeToken(e,t){this.name=e,this.token=t}return NgProbeToken}(),p=[{provide:o.RootRenderer,useFactory:_createConditionalRootRenderer,deps:[s.a,[d,new o.Optional],[o.NgProbeToken,new o.Optional]]}]},function(e,t,n){"use strict";function moveNodesAfterSibling(e,t){var n=e.parentNode;if(t.length>0&&n){var o=e.nextSibling;if(o)for(var r=0;r<t.length;r++)n.insertBefore(t[r],o);else for(var r=0;r<t.length;r++)n.appendChild(t[r])}}function appendNodes(e,t){for(var n=0;n<t.length;n++)e.appendChild(t[n])}function decoratePreventDefault(e){return function(t){var n=e(t);n===!1&&(t.preventDefault(),t.returnValue=!1)}}function shimContentAttribute(e){return E.replace(b,e)}function shimHostAttribute(e){return _.replace(b,e)}function flattenStyles(e,t,n){for(var o=0;o<t.length;o++){var r=t[o];Array.isArray(r)?flattenStyles(e,r,n):(r=r.replace(b,e),n.push(r))}return n}function isNamespaced(e){return":"===e[0]}function splitNamespace(e){var t=e.match(T);return[t[1],t[2]]}var o=n(1),r=n(50),i=n(286),a=n(281),s=n(197),u=n(112),l=n(285);n.d(t,"c",function(){return d}),n.d(t,"a",function(){return f}),n.d(t,"b",function(){return h}),t.d=shimContentAttribute,t.e=shimHostAttribute,t.f=flattenStyles,t.h=isNamespaced,t.g=splitNamespace;var c=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},d={xlink:"http://www.w3.org/1999/xlink",svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml"},p="template bindings={}",g=/^template bindings=(.*)$/,f=function(){function DomRootRenderer(e,t,n,o,r){this.document=e,this.eventManager=t,this.sharedStylesHost=n,this.animationDriver=o,this.appId=r,this.registeredComponents=new Map}return DomRootRenderer.prototype.renderComponent=function(e){var t=this.registeredComponents.get(e.id);return t||(t=new y(this,e,this.animationDriver,this.appId+"-"+e.id),this.registeredComponents.set(e.id,t)),t},DomRootRenderer}(),h=function(e){function DomRootRenderer_(t,n,o,r,i){e.call(this,t,n,o,r,i)}return c(DomRootRenderer_,e),DomRootRenderer_.decorators=[{type:o.Injectable}],DomRootRenderer_.ctorParameters=function(){return[{type:void 0,decorators:[{type:o.Inject,args:[s.a]}]},{type:u.a},{type:l.a},{type:a.a},{type:void 0,decorators:[{type:o.Inject,args:[o.APP_ID]}]}]},DomRootRenderer_}(f),m={remove:function(e){e.parentNode&&e.parentNode.removeChild(e)},appendChild:function(e,t){t.appendChild(e)},insertBefore:function(e,t){t.parentNode.insertBefore(e,t)},nextSibling:function(e){return e.nextSibling},parentElement:function(e){return e.parentNode}},y=function(){function DomRenderer(e,t,n,r){this._rootRenderer=e,this.componentProto=t,this._animationDriver=n,this.directRenderer=m,this._styles=flattenStyles(r,t.styles,[]),t.encapsulation!==o.ViewEncapsulation.Native&&this._rootRenderer.sharedStylesHost.addStyles(this._styles),this.componentProto.encapsulation===o.ViewEncapsulation.Emulated?(this._contentAttr=shimContentAttribute(r),this._hostAttr=shimHostAttribute(r)):(this._contentAttr=null,this._hostAttr=null)}return DomRenderer.prototype.selectRootElement=function(e,t){var n;if("string"==typeof e){if(n=this._rootRenderer.document.querySelector(e),!n)throw new Error('The selector "'+e+'" did not match any elements')}else n=e;for(;n.firstChild;)n.removeChild(n.firstChild);return n},DomRenderer.prototype.createElement=function(e,t,n){var o;if(isNamespaced(t)){var r=splitNamespace(t);o=document.createElementNS(d[r[0]],r[1])}else o=document.createElement(t);return this._contentAttr&&o.setAttribute(this._contentAttr,""),e&&e.appendChild(o),o},DomRenderer.prototype.createViewRoot=function(e){var t;if(this.componentProto.encapsulation===o.ViewEncapsulation.Native){t=e.createShadowRoot();for(var n=0;n<this._styles.length;n++){var r=document.createElement("style");r.textContent=this._styles[n],t.appendChild(r)}}else this._hostAttr&&e.setAttribute(this._hostAttr,""),t=e;return t},DomRenderer.prototype.createTemplateAnchor=function(e,t){var n=document.createComment(p);return e&&e.appendChild(n),n},DomRenderer.prototype.createText=function(e,t,n){var o=document.createTextNode(t);return e&&e.appendChild(o),o},DomRenderer.prototype.projectNodes=function(e,t){e&&appendNodes(e,t)},DomRenderer.prototype.attachViewAfter=function(e,t){moveNodesAfterSibling(e,t)},DomRenderer.prototype.detachView=function(e){for(var t=0;t<e.length;t++){var n=e[t];n.parentNode&&n.parentNode.removeChild(n)}},DomRenderer.prototype.destroyView=function(e,t){this.componentProto.encapsulation===o.ViewEncapsulation.Native&&e&&this._rootRenderer.sharedStylesHost.removeHost(e.shadowRoot)},DomRenderer.prototype.listen=function(e,t,n){return this._rootRenderer.eventManager.addEventListener(e,t,decoratePreventDefault(n))},DomRenderer.prototype.listenGlobal=function(e,t,n){return this._rootRenderer.eventManager.addGlobalEventListener(e,t,decoratePreventDefault(n))},DomRenderer.prototype.setElementProperty=function(e,t,n){e[t]=n},DomRenderer.prototype.setElementAttribute=function(e,t,o){var i,a=t;if(isNamespaced(t)){var s=splitNamespace(t);a=s[1],t=s[0]+":"+s[1],i=d[s[0]]}n.i(r.a)(o)?i?e.setAttributeNS(i,t,o):e.setAttribute(t,o):n.i(r.a)(i)?e.removeAttributeNS(i,a):e.removeAttribute(t)},DomRenderer.prototype.setBindingDebugInfo=function(e,t,n){if(e.nodeType===Node.COMMENT_NODE){var o=e.nodeValue.replace(/\n/g,"").match(g),r=JSON.parse(o[1]);r[t]=n,e.nodeValue=p.replace("{}",JSON.stringify(r,null,2))}else this.setElementAttribute(e,t,n)},DomRenderer.prototype.setElementClass=function(e,t,n){n?e.classList.add(t):e.classList.remove(t)},DomRenderer.prototype.setElementStyle=function(e,t,o){n.i(r.a)(o)?e.style[t]=n.i(r.g)(o):e.style[t]=""},DomRenderer.prototype.invokeElementMethod=function(e,t,n){e[t].apply(e,n)},DomRenderer.prototype.setText=function(e,t){e.nodeValue=t},DomRenderer.prototype.animate=function(e,t,n,o,r,a,s){return void 0===s&&(s=[]),this._rootRenderer.document.body.contains(e)?this._animationDriver.animate(e,t,n,o,r,a,s):new i.a},DomRenderer}(),b=/%COMP%/g,v="%COMP%",_="_nghost-"+v,E="_ngcontent-"+v,T=/^:([^:]+):(.+)$/},function(e,t,n){"use strict";var o=n(1),r=n(112);n.d(t,"b",function(){return s}),n.d(t,"c",function(){return u}),n.d(t,"a",function(){return l});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a={pan:!0,panstart:!0,panmove:!0,panend:!0,pancancel:!0,panleft:!0,panright:!0,panup:!0,pandown:!0,pinch:!0,pinchstart:!0,pinchmove:!0,pinchend:!0,pinchcancel:!0,pinchin:!0,pinchout:!0,press:!0,pressup:!0,rotate:!0,rotatestart:!0,rotatemove:!0,rotateend:!0,rotatecancel:!0,swipe:!0,swipeleft:!0,swiperight:!0,swipeup:!0,swipedown:!0,tap:!0},s=new o.OpaqueToken("HammerGestureConfig"),u=function(){function HammerGestureConfig(){this.events=[],this.overrides={}}return HammerGestureConfig.prototype.buildHammer=function(e){var t=new Hammer(e);t.get("pinch").set({enable:!0}),t.get("rotate").set({enable:!0});for(var n in this.overrides)t.get(n).set(this.overrides[n]);return t},HammerGestureConfig.decorators=[{type:o.Injectable}],HammerGestureConfig.ctorParameters=function(){return[]},HammerGestureConfig}(),l=function(e){function HammerGesturesPlugin(t){e.call(this),this._config=t}return i(HammerGesturesPlugin,e),HammerGesturesPlugin.prototype.supports=function(e){if(!a.hasOwnProperty(e.toLowerCase())&&!this.isCustomEvent(e))return!1;if(!window.Hammer)throw new Error("Hammer.js is not loaded, can not bind "+e+" event");return!0},HammerGesturesPlugin.prototype.addEventListener=function(e,t,n){var o=this,r=this.manager.getZone();return t=t.toLowerCase(),r.runOutsideAngular(function(){var i=o._config.buildHammer(e),a=function(e){r.runGuarded(function(){n(e)})};return i.on(t,a),function(){return i.off(t,a)}})},HammerGesturesPlugin.prototype.isCustomEvent=function(e){return this._config.events.indexOf(e)>-1},HammerGesturesPlugin.decorators=[{type:o.Injectable}],HammerGesturesPlugin.ctorParameters=function(){return[{type:u,decorators:[{type:o.Inject,args:[s]}]}]},HammerGesturesPlugin}(r.b)},function(e,t,n){"use strict";var o=n(1),r=n(23),i=n(197);n.d(t,"b",function(){return s}),n.d(t,"a",function(){return u});var a=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},s=function(){function SharedStylesHost(){this._stylesSet=new Set}return SharedStylesHost.prototype.addStyles=function(e){var t=this,n=new Set;e.forEach(function(e){t._stylesSet.has(e)||(t._stylesSet.add(e),n.add(e))}),this.onStylesAdded(n)},SharedStylesHost.prototype.onStylesAdded=function(e){},SharedStylesHost.prototype.getAllStyles=function(){return Array.from(this._stylesSet)},SharedStylesHost.decorators=[{type:o.Injectable}],SharedStylesHost.ctorParameters=function(){return[]},SharedStylesHost}(),u=function(e){function DomSharedStylesHost(t){e.call(this),this._doc=t,this._hostNodes=new Set,this._styleNodes=new Set,this._hostNodes.add(t.head)}return a(DomSharedStylesHost,e),DomSharedStylesHost.prototype._addStylesToHost=function(e,t){var n=this;e.forEach(function(e){var o=n._doc.createElement("style");o.textContent=e,n._styleNodes.add(t.appendChild(o))})},DomSharedStylesHost.prototype.addHost=function(e){this._addStylesToHost(this._stylesSet,e),this._hostNodes.add(e)},DomSharedStylesHost.prototype.removeHost=function(e){this._hostNodes.delete(e)},DomSharedStylesHost.prototype.onStylesAdded=function(e){var t=this;this._hostNodes.forEach(function(n){return t._addStylesToHost(e,n)})},DomSharedStylesHost.prototype.ngOnDestroy=function(){this._styleNodes.forEach(function(e){return n.i(r.a)().remove(e)})},DomSharedStylesHost.decorators=[{type:o.Injectable}],DomSharedStylesHost.ctorParameters=function(){return[{type:void 0,decorators:[{type:o.Inject,args:[i.a]}]}]},DomSharedStylesHost}(s)},function(e,t,n){"use strict";var o=n(1);n.d(t,"b",function(){return r}),n.d(t,"a",function(){return i});var r=(o.__core_private__.RenderDebugInfo,o.__core_private__.ReflectionCapabilities,o.__core_private__.DebugDomRootRenderer),i=(o.__core_private__.reflector,o.__core_private__.NoOpAnimationPlayer);o.__core_private__.AnimationPlayer,o.__core_private__.AnimationSequencePlayer,o.__core_private__.AnimationGroupPlayer,o.__core_private__.AnimationKeyframe,o.__core_private__.AnimationStyles,o.__core_private__.prepareFinalAnimationStyles,o.__core_private__.balanceAnimationKeyframes,o.__core_private__.clearStyles,o.__core_private__.collectAndResolveStyles},function(e,t,n){"use strict";function sanitizeUrl(e){return e=String(e),e.match(i)||e.match(a)?e:(n.i(o.isDevMode)()&&n.i(r.a)().log("WARNING: sanitizing unsafe URL value "+e+" (see http://g.co/ng/security#xss)"),"unsafe:"+e)}function sanitizeSrcset(e){return e=String(e),e.split(",").map(function(e){return sanitizeUrl(e.trim())}).join(", ")}var o=n(1),r=n(23);t.a=sanitizeUrl,t.b=sanitizeSrcset;var i=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:\/?#]*(?:[\/?#]|$))/gi,a=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+\/]+=*$/i},function(e,t,n){"use strict";function toBool(e){return""===e||!!e}var o=n(68),r=n(1),i=n(198),a=n(113);n.d(t,"a",function(){return s}),n.d(t,"b",function(){return u});var s=function(){function RouterLink(e,t,n){this.router=e,this.route=t,this.locationStrategy=n,this.commands=[]}return Object.defineProperty(RouterLink.prototype,"routerLink",{set:function(e){Array.isArray(e)?this.commands=e:this.commands=[e]},enumerable:!0,configurable:!0}),RouterLink.prototype.onClick=function(e,t,n){return!(0===e&&!t&&!n)||(this.router.navigateByUrl(this.urlTree),!1)},Object.defineProperty(RouterLink.prototype,"urlTree",{get:function(){return this.router.createUrlTree(this.commands,{relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,preserveQueryParams:toBool(this.preserveQueryParams),preserveFragment:toBool(this.preserveFragment)})},enumerable:!0,configurable:!0}),RouterLink.decorators=[{type:r.Directive,args:[{selector:":not(a)[routerLink]"}]}],RouterLink.ctorParameters=[{type:i.a},{type:a.b},{type:o.LocationStrategy}],RouterLink.propDecorators={queryParams:[{type:r.Input}],fragment:[{type:r.Input}],preserveQueryParams:[{type:r.Input}],preserveFragment:[{type:r.Input}],routerLink:[{type:r.Input}],onClick:[{type:r.HostListener,args:["click",["$event.button","$event.ctrlKey","$event.metaKey"]]}]},RouterLink}(),u=function(){function RouterLinkWithHref(e,t,n){var o=this;this.router=e,this.route=t,this.locationStrategy=n,this.commands=[],this.subscription=e.events.subscribe(function(e){e instanceof i.b&&o.updateTargetUrlAndHref()})}return Object.defineProperty(RouterLinkWithHref.prototype,"routerLink",{set:function(e){Array.isArray(e)?this.commands=e:this.commands=[e]},enumerable:!0,configurable:!0}),RouterLinkWithHref.prototype.ngOnChanges=function(e){this.updateTargetUrlAndHref()},RouterLinkWithHref.prototype.ngOnDestroy=function(){this.subscription.unsubscribe()},RouterLinkWithHref.prototype.onClick=function(e,t,n){return!(0===e&&!t&&!n)||("string"==typeof this.target&&"_self"!=this.target||(this.router.navigateByUrl(this.urlTree),!1))},RouterLinkWithHref.prototype.updateTargetUrlAndHref=function(){this.href=this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.urlTree))},Object.defineProperty(RouterLinkWithHref.prototype,"urlTree",{get:function(){return this.router.createUrlTree(this.commands,{relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,preserveQueryParams:toBool(this.preserveQueryParams),preserveFragment:toBool(this.preserveFragment)})},enumerable:!0,configurable:!0}),RouterLinkWithHref.decorators=[{type:r.Directive,args:[{selector:"a[routerLink]"}]}],RouterLinkWithHref.ctorParameters=[{type:i.a},{type:a.b},{type:o.LocationStrategy}],RouterLinkWithHref.propDecorators={target:[{type:r.Input}],queryParams:[{type:r.Input}],fragment:[{type:r.Input}],routerLinkOptions:[{type:r.Input}],preserveQueryParams:[{type:r.Input}],preserveFragment:[{type:r.Input}],href:[{type:r.HostBinding}],routerLink:[{type:r.Input}],onClick:[{type:r.HostListener,args:["click",["$event.button","$event.ctrlKey","$event.metaKey"]]}]},RouterLinkWithHref}()},function(e,t,n){"use strict";function findNode(e,t){if(e===t.value)return t;for(var n=0,o=t.children;n<o.length;n++){var r=o[n],i=findNode(e,r);if(i)return i}return null}function findPath(e,t,n){if(n.push(t),e===t.value)return n;for(var o=0,r=t.children;o<r.length;o++){var i=r[o],a=n.slice(0),s=findPath(e,i,a);if(s.length>0)return s}return[]}n.d(t,"a",function(){return o}),n.d(t,"b",function(){return r});var o=function(){function Tree(e){this._root=e}return Object.defineProperty(Tree.prototype,"root",{get:function(){return this._root.value},enumerable:!0,configurable:!0}),Tree.prototype.parent=function(e){var t=this.pathFromRoot(e);return t.length>1?t[t.length-2]:null},Tree.prototype.children=function(e){var t=findNode(e,this._root);return t?t.children.map(function(e){return e.value}):[]},Tree.prototype.firstChild=function(e){var t=findNode(e,this._root);return t&&t.children.length>0?t.children[0].value:null},Tree.prototype.siblings=function(e){var t=findPath(e,this._root,[]);if(t.length<2)return[];var n=t[t.length-2].children.map(function(e){return e.value});return n.filter(function(t){return t!==e})},Tree.prototype.pathFromRoot=function(e){return findPath(e,this._root,[]).map(function(e){return e.value})},Tree}(),r=function(){function TreeNode(e,t){this.value=e,this.children=t}return TreeNode.prototype.toString=function(){return"TreeNode("+this.value+")"},TreeNode}()},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(0),i=function(e){function ScalarObservable(t,n){e.call(this),this.value=t,this.scheduler=n,this._isScalar=!0,n&&(this._isScalar=!1)}return o(ScalarObservable,e),ScalarObservable.create=function(e,t){return new ScalarObservable(e,t)},ScalarObservable.dispatch=function(e){var t=e.done,n=e.value,o=e.subscriber;return t?void o.complete():(o.next(n),void(o.closed||(e.done=!0,this.schedule(e))))},ScalarObservable.prototype._subscribe=function(e){var t=this.value,n=this.scheduler;return n?n.schedule(ScalarObservable.dispatch,0,{done:!1,value:t,subscriber:e}):(e.next(t),void(e.closed||e.complete()))},ScalarObservable}(r.Observable);t.ScalarObservable=i},function(e,t,n){"use strict";var o=n(495);t.from=o.FromObservable.create},,,function(e,t,n){"use strict";function concatAll(){return this.lift(new o.MergeAllOperator(1))}var o=n(118);t.concatAll=concatAll},function(e,t,n){"use strict";function every(e,t){return this.lift(new i(e,t,this))}var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(3);t.every=every;var i=function(){function EveryOperator(e,t,n){this.predicate=e,this.thisArg=t,this.source=n}return EveryOperator.prototype.call=function(e,t){return t.subscribe(new a(e,this.predicate,this.thisArg,this.source))},EveryOperator}(),a=function(e){function EverySubscriber(t,n,o,r){e.call(this,t),this.predicate=n,this.thisArg=o,this.source=r,this.index=0,this.thisArg=o||this}return o(EverySubscriber,e),EverySubscriber.prototype.notifyComplete=function(e){this.destination.next(e),this.destination.complete()},EverySubscriber.prototype._next=function(e){var t=!1;try{t=this.predicate.call(this.thisArg,e,this.index++,this.source)}catch(n){return void this.destination.error(n)}t||this.notifyComplete(!1)},EverySubscriber.prototype._complete=function(){this.notifyComplete(!0)},EverySubscriber}(r.Subscriber)},,,,,,function(e,t,n){"use strict";var o=n(668);n.d(t,"NgSelectOption",function(){return o.a}),n.d(t,"AbstractFormGroupDirective",function(){return o.b}),n.d(t,"CheckboxControlValueAccessor",function(){return o.c}),n.d(t,"ControlContainer",function(){return o.d}),n.d(t,"NG_VALUE_ACCESSOR",function(){return o.e}),n.d(t,"DefaultValueAccessor",function(){return o.f}),n.d(t,"NgControl",function(){return o.g}),n.d(t,"NgControlStatus",function(){return o.h}),n.d(t,"NgControlStatusGroup",function(){return o.i}),n.d(t,"NgForm",function(){return o.j}),n.d(t,"NgModel",function(){return o.k}),n.d(t,"NgModelGroup",function(){return o.l}),n.d(t,"RadioControlValueAccessor",function(){return o.m}),n.d(t,"FormControlDirective",function(){return o.n}),n.d(t,"FormControlName",function(){return o.o}),n.d(t,"FormGroupDirective",function(){return o.p}),n.d(t,"FormArrayName",function(){return o.q}),n.d(t,"FormGroupName",function(){return o.r}),n.d(t,"AbstractControlDirective",function(){return o.s}),n.d(t,"SelectControlValueAccessor",function(){return o.t}),n.d(t,"SelectMultipleControlValueAccessor",function(){return o.u}),n.d(t,"CheckboxRequiredValidator",function(){return o.v}),n.d(t,"MaxLengthValidator",function(){return o.w}),n.d(t,"MinLengthValidator",function(){return o.x}),n.d(t,"PatternValidator",function(){return o.y}),n.d(t,"RequiredValidator",function(){return o.z}),n.d(t,"FormBuilder",function(){return o.A}),n.d(t,"AbstractControl",function(){return o.B}),n.d(t,"FormArray",function(){return o.C}),n.d(t,"FormControl",function(){return o.D}),n.d(t,"FormGroup",function(){return o.E}),n.d(t,"NG_ASYNC_VALIDATORS",function(){return o.F}),n.d(t,"NG_VALIDATORS",function(){return o.G}),n.d(t,"Validators",function(){return o.H}),n.d(t,"VERSION",function(){return o.I}),n.d(t,"FormsModule",function(){return o.J}),n.d(t,"ReactiveFormsModule",function(){return o.K})},function(e,t,n){"use strict";var o=n(0),r=n(151);o.Observable.prototype.mergeMap=r.mergeMap,o.Observable.prototype.flatMap=r.mergeMap},,,,,,,,,,,,,function(e,t,n){"use strict";var o=n(592),r=n(593),i=n(594),a=n(595),s=n(596),u=n(345),l=n(597);n.d(t,"a",function(){return c}),n.d(t,"b",function(){return o.a}),n.d(t,"c",function(){return r.a}),n.d(t,"d",function(){return i.a}),n.d(t,"e",function(){return a.a}),n.d(t,"f",function(){return a.b}),n.d(t,"g",function(){return s.a}),n.d(t,"h",function(){return u.b}),n.d(t,"i",function(){return u.c}),n.d(t,"j",function(){return u.d}),n.d(t,"k",function(){return l.a});var c=[o.a,r.a,i.a,l.a,s.a,u.b,u.c,u.d,a.a,a.b]},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r}),n.d(t,"b",function(){return i}),n.d(t,"c",function(){return a}),n.d(t,"d",function(){return s});var r=function(){function SwitchView(e,t){this._viewContainerRef=e,this._templateRef=t,this._created=!1}return SwitchView.prototype.create=function(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)},SwitchView.prototype.destroy=function(){this._created=!1,this._viewContainerRef.clear()},SwitchView.prototype.enforceState=function(e){e&&!this._created?this.create():!e&&this._created&&this.destroy()},SwitchView}(),i=function(){function NgSwitch(){this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}return Object.defineProperty(NgSwitch.prototype,"ngSwitch",{set:function(e){this._ngSwitch=e,0===this._caseCount&&this._updateDefaultCases(!0)},enumerable:!0,configurable:!0}),NgSwitch.prototype._addCase=function(){return this._caseCount++},NgSwitch.prototype._addDefault=function(e){this._defaultViews||(this._defaultViews=[]),this._defaultViews.push(e)},NgSwitch.prototype._matchCase=function(e){var t=e==this._ngSwitch;return this._lastCasesMatched=this._lastCasesMatched||t,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),t},NgSwitch.prototype._updateDefaultCases=function(e){if(this._defaultViews&&e!==this._defaultUsed){this._defaultUsed=e;for(var t=0;t<this._defaultViews.length;t++){var n=this._defaultViews[t];n.enforceState(e)}}},NgSwitch.decorators=[{type:o.Directive,args:[{selector:"[ngSwitch]"}]}],NgSwitch.ctorParameters=function(){return[]},NgSwitch.propDecorators={ngSwitch:[{type:o.Input}]},NgSwitch}(),a=function(){function NgSwitchCase(e,t,n){this.ngSwitch=n,n._addCase(),this._view=new r(e,t)}return NgSwitchCase.prototype.ngDoCheck=function(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))},NgSwitchCase.decorators=[{type:o.Directive,args:[{selector:"[ngSwitchCase]"}]}],NgSwitchCase.ctorParameters=function(){return[{type:o.ViewContainerRef},{type:o.TemplateRef},{type:i,decorators:[{type:o.Host}]}]},NgSwitchCase.propDecorators={ngSwitchCase:[{type:o.Input}]},NgSwitchCase}(),s=function(){function NgSwitchDefault(e,t,n){n._addDefault(new r(e,t))}return NgSwitchDefault.decorators=[{type:o.Directive,args:[{selector:"[ngSwitchDefault]"}]}],NgSwitchDefault.ctorParameters=function(){return[{type:o.ViewContainerRef},{type:o.TemplateRef},{type:i,decorators:[{type:o.Host}]}]},NgSwitchDefault}()},function(e,t,n){"use strict";var o=n(603),r=n(604),i=n(605),a=n(606),s=n(607),u=n(608),l=n(609),c=n(610),d=n(611);n.d(t,"a",function(){return p}),n.d(t,"c",function(){return o.a}),n.d(t,"h",function(){return l.c}),n.d(t,"d",function(){return r.a}),n.d(t,"i",function(){return l.a}),n.d(t,"e",function(){return i.a}),n.d(t,"b",function(){return a.a}),n.d(t,"f",function(){return s.a}),n.d(t,"g",function(){return u.a}),n.d(t,"j",function(){return l.b}),n.d(t,"k",function(){return c.a}),n.d(t,"l",function(){return d.a});var p=[o.a,d.a,u.a,s.a,c.a,l.a,l.b,l.c,r.a,i.a,a.a]},function(e,t,n){"use strict";function digitModifier(e){return function(t,n){var o=e(t,n);return 1==o.length?"0"+o:o}}function hourClockExtractor(e){return function(t,n){return e(t,n).split(" ")[1]}}function hourExtractor(e){return function(t,n){return e(t,n).split(" ")[0]}}function intlDateFormat(e,t,n){return new Intl.DateTimeFormat(t,n).format(e).replace(/[\u200e\u200f]/g,"")}function timeZoneGetter(e){var t={hour:"2-digit",hour12:!1,timeZoneName:e};return function(e,n){var o=intlDateFormat(e,n,t);return o?o.substring(3):""}}function hour12Modify(e,t){return e.hour12=t,e}function digitCondition(e,t){var n={};return n[e]=2===t?"2-digit":"numeric",n}function nameCondition(e,t){var n={};return t<4?n[e]=t>1?"short":"narrow":n[e]="long",n}function combine(e){return(t=Object).assign.apply(t,[{}].concat(e));var t}function datePartGetterFactory(e){return function(t,n){return intlDateFormat(t,n,e)}}function dateFormatter(e,t,n){var o=a[e];if(o)return o(t,n);var r=e,l=u.get(r);if(!l){l=[];var c=void 0;for(i.exec(e);e;)c=i.exec(e),c?(l=l.concat(c.slice(1)),e=l.pop()):(l.push(e),e=null);u.set(r,l)}return l.reduce(function(e,o){
var r=s[o];return e+(r?r(t,n):partToTime(o))},"")}function partToTime(e){return"''"===e?"'":e.replace(/(^'|'$)/g,"").replace(/''/g,"'")}n.d(t,"b",function(){return o}),n.d(t,"c",function(){return r}),n.d(t,"a",function(){return l});var o={};o.Decimal=0,o.Percent=1,o.Currency=2,o[o.Decimal]="Decimal",o[o.Percent]="Percent",o[o.Currency]="Currency";var r=function(){function NumberFormatter(){}return NumberFormatter.format=function(e,t,n,r){var i=void 0===r?{}:r,a=i.minimumIntegerDigits,s=i.minimumFractionDigits,u=i.maximumFractionDigits,l=i.currency,c=i.currencyAsSymbol,d=void 0!==c&&c,p={minimumIntegerDigits:a,minimumFractionDigits:s,maximumFractionDigits:u,style:o[n].toLowerCase()};return n==o.Currency&&(p.currency=l,p.currencyDisplay=d?"symbol":"code"),new Intl.NumberFormat(t,p).format(e)},NumberFormatter}(),i=/((?:[^yMLdHhmsazZEwGjJ']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|J+|j+|m+|s+|a|z|Z|G+|w+))(.*)/,a={yMMMdjms:datePartGetterFactory(combine([digitCondition("year",1),nameCondition("month",3),digitCondition("day",1),digitCondition("hour",1),digitCondition("minute",1),digitCondition("second",1)])),yMdjm:datePartGetterFactory(combine([digitCondition("year",1),digitCondition("month",1),digitCondition("day",1),digitCondition("hour",1),digitCondition("minute",1)])),yMMMMEEEEd:datePartGetterFactory(combine([digitCondition("year",1),nameCondition("month",4),nameCondition("weekday",4),digitCondition("day",1)])),yMMMMd:datePartGetterFactory(combine([digitCondition("year",1),nameCondition("month",4),digitCondition("day",1)])),yMMMd:datePartGetterFactory(combine([digitCondition("year",1),nameCondition("month",3),digitCondition("day",1)])),yMd:datePartGetterFactory(combine([digitCondition("year",1),digitCondition("month",1),digitCondition("day",1)])),jms:datePartGetterFactory(combine([digitCondition("hour",1),digitCondition("second",1),digitCondition("minute",1)])),jm:datePartGetterFactory(combine([digitCondition("hour",1),digitCondition("minute",1)]))},s={yyyy:datePartGetterFactory(digitCondition("year",4)),yy:datePartGetterFactory(digitCondition("year",2)),y:datePartGetterFactory(digitCondition("year",1)),MMMM:datePartGetterFactory(nameCondition("month",4)),MMM:datePartGetterFactory(nameCondition("month",3)),MM:datePartGetterFactory(digitCondition("month",2)),M:datePartGetterFactory(digitCondition("month",1)),LLLL:datePartGetterFactory(nameCondition("month",4)),L:datePartGetterFactory(nameCondition("month",1)),dd:datePartGetterFactory(digitCondition("day",2)),d:datePartGetterFactory(digitCondition("day",1)),HH:digitModifier(hourExtractor(datePartGetterFactory(hour12Modify(digitCondition("hour",2),!1)))),H:hourExtractor(datePartGetterFactory(hour12Modify(digitCondition("hour",1),!1))),hh:digitModifier(hourExtractor(datePartGetterFactory(hour12Modify(digitCondition("hour",2),!0)))),h:hourExtractor(datePartGetterFactory(hour12Modify(digitCondition("hour",1),!0))),jj:datePartGetterFactory(digitCondition("hour",2)),j:datePartGetterFactory(digitCondition("hour",1)),mm:digitModifier(datePartGetterFactory(digitCondition("minute",2))),m:datePartGetterFactory(digitCondition("minute",1)),ss:digitModifier(datePartGetterFactory(digitCondition("second",2))),s:datePartGetterFactory(digitCondition("second",1)),sss:datePartGetterFactory(digitCondition("second",3)),EEEE:datePartGetterFactory(nameCondition("weekday",4)),EEE:datePartGetterFactory(nameCondition("weekday",3)),EE:datePartGetterFactory(nameCondition("weekday",2)),E:datePartGetterFactory(nameCondition("weekday",1)),a:hourClockExtractor(datePartGetterFactory(hour12Modify(digitCondition("hour",1),!0))),Z:timeZoneGetter("short"),z:timeZoneGetter("long"),ww:datePartGetterFactory({}),w:datePartGetterFactory({}),G:datePartGetterFactory(nameCondition("era",1)),GG:datePartGetterFactory(nameCondition("era",2)),GGG:datePartGetterFactory(nameCondition("era",3)),GGGG:datePartGetterFactory(nameCondition("era",4))},u=new Map,l=function(){function DateFormatter(){}return DateFormatter.format=function(e,t,n){return dateFormatter(n,e,t)},DateFormatter}()},function(e,t,n){"use strict";n.d(t,"a",function(){return a}),n.d(t,"c",function(){return s}),n.d(t,"g",function(){return u}),n.d(t,"f",function(){return l}),n.d(t,"i",function(){return c}),n.d(t,"b",function(){return d}),n.d(t,"h",function(){return p}),n.d(t,"d",function(){return g}),n.d(t,"j",function(){return f}),n.d(t,"e",function(){return h});var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=function(){function AnimationAst(){this.startTime=0,this.playTime=0}return AnimationAst.prototype.visit=function(e,t){},AnimationAst}(),i=function(e){function AnimationStateAst(){e.apply(this,arguments)}return o(AnimationStateAst,e),AnimationStateAst.prototype.visit=function(e,t){},AnimationStateAst}(r),a=function(e){function AnimationEntryAst(t,n,o){e.call(this),this.name=t,this.stateDeclarations=n,this.stateTransitions=o}return o(AnimationEntryAst,e),AnimationEntryAst.prototype.visit=function(e,t){return e.visitAnimationEntry(this,t)},AnimationEntryAst}(r),s=function(e){function AnimationStateDeclarationAst(t,n){e.call(this),this.stateName=t,this.styles=n}return o(AnimationStateDeclarationAst,e),AnimationStateDeclarationAst.prototype.visit=function(e,t){return e.visitAnimationStateDeclaration(this,t)},AnimationStateDeclarationAst}(i),u=function(){function AnimationStateTransitionExpression(e,t){this.fromState=e,this.toState=t}return AnimationStateTransitionExpression}(),l=function(e){function AnimationStateTransitionAst(t,n){e.call(this),this.stateChanges=t,this.animation=n}return o(AnimationStateTransitionAst,e),AnimationStateTransitionAst.prototype.visit=function(e,t){return e.visitAnimationStateTransition(this,t)},AnimationStateTransitionAst}(i),c=function(e){function AnimationStepAst(t,n,o,r,i){e.call(this),this.startingStyles=t,this.keyframes=n,this.duration=o,this.delay=r,this.easing=i}return o(AnimationStepAst,e),AnimationStepAst.prototype.visit=function(e,t){return e.visitAnimationStep(this,t)},AnimationStepAst}(r),d=function(e){function AnimationStylesAst(t){e.call(this),this.styles=t}return o(AnimationStylesAst,e),AnimationStylesAst.prototype.visit=function(e,t){return e.visitAnimationStyles(this,t)},AnimationStylesAst}(r),p=function(e){function AnimationKeyframeAst(t,n){e.call(this),this.offset=t,this.styles=n}return o(AnimationKeyframeAst,e),AnimationKeyframeAst.prototype.visit=function(e,t){return e.visitAnimationKeyframe(this,t)},AnimationKeyframeAst}(r),g=function(e){function AnimationWithStepsAst(t){e.call(this),this.steps=t}return o(AnimationWithStepsAst,e),AnimationWithStepsAst}(r),f=function(e){function AnimationGroupAst(t){e.call(this,t)}return o(AnimationGroupAst,e),AnimationGroupAst.prototype.visit=function(e,t){return e.visitAnimationGroup(this,t)},AnimationGroupAst}(g),h=function(e){function AnimationSequenceAst(t){e.call(this,t)}return o(AnimationSequenceAst,e),AnimationSequenceAst.prototype.visit=function(e,t){return e.visitAnimationSequence(this,t)},AnimationSequenceAst}(g)},function(e,t,n){"use strict";function _compareToAnimationStateExpr(e,t){var n=i.f(a.G);switch(t){case a.G:return e.equals(n);case a.D:return i.f(!0);default:return e.equals(i.f(t))}}function _isEndStateAnimateStep(e){if(e instanceof s.i&&e.duration>0&&2==e.keyframes.length){var t=_getStylesArray(e.keyframes[0])[0],n=_getStylesArray(e.keyframes[1])[0];return 0===Object.keys(t).length&&0===Object.keys(n).length}return!1}function _getStylesArray(e){return e.styles.styles}var o=n(7),r=n(19),i=n(10),a=n(17),s=n(348);n.d(t,"a",function(){return l});var u=function(){function AnimationEntryCompileResult(e,t,n){this.name=e,this.statements=t,this.fnExp=n}return AnimationEntryCompileResult}(),l=function(){function AnimationCompiler(){}return AnimationCompiler.prototype.compile=function(e,t){return t.map(function(t){var n=e+"_"+t.name,o=new M(t.name,n);return o.build(t)})},AnimationCompiler}(),c=i.g("element"),d=i.g("defaultStateStyles"),p=i.g("view"),g=p.prop("animationContext"),f=p.prop("renderer"),h=i.g("currentState"),m=i.g("nextState"),y=i.g("player"),b=i.g("totalTime"),v=i.g("startStateStyles"),_=i.g("endStateStyles"),E=i.g("collectedStyles"),T=i.g("previousPlayers"),S=i.o([]),A=i.n([]),M=function(){function _AnimationBuilder(e,t){this.animationName=e,this._fnVarName=t+"_factory",this._statesMapVarName=t+"_states",this._statesMapVar=i.g(this._statesMapVarName)}return _AnimationBuilder.prototype.visitAnimationStyles=function(e,t){var o=[];return t.isExpectingFirstStyleStep&&(o.push(v),t.isExpectingFirstStyleStep=!1),e.styles.forEach(function(e){var t=Object.keys(e).map(function(t){return[t,i.f(e[t])]});o.push(i.o(t,null,!0))}),i.d(n.i(r.e)(r.b.AnimationStyles)).instantiate([i.d(n.i(r.e)(r.b.collectAndResolveStyles)).callFn([E,i.n(o)])])},_AnimationBuilder.prototype.visitAnimationKeyframe=function(e,t){return i.d(n.i(r.e)(r.b.AnimationKeyframe)).instantiate([i.f(e.offset),e.styles.visit(this,t)])},_AnimationBuilder.prototype.visitAnimationStep=function(e,t){var n=this;if(t.endStateAnimateStep===e)return this._visitEndStateAnimation(e,t);var o=e.startingStyles.visit(this,t),r=e.keyframes.map(function(e){return e.visit(n,t)});return this._callAnimateMethod(e,o,i.n(r),t)},_AnimationBuilder.prototype._visitEndStateAnimation=function(e,t){var o=this,a=e.startingStyles.visit(this,t),s=e.keyframes.map(function(e){return e.visit(o,t)}),u=i.d(n.i(r.e)(r.b.balanceAnimationKeyframes)).callFn([E,_,i.n(s)]);return this._callAnimateMethod(e,a,u,t)},_AnimationBuilder.prototype._callAnimateMethod=function(e,t,n,o){var r=A;return o.isExpectingFirstAnimateStep&&(r=T,o.isExpectingFirstAnimateStep=!1),o.totalTransitionTime+=e.duration+e.delay,f.callMethod("animate",[c,t,n,i.f(e.duration),i.f(e.delay),i.f(e.easing),r])},_AnimationBuilder.prototype.visitAnimationSequence=function(e,t){var o=this,a=e.steps.map(function(e){return e.visit(o,t)});return i.d(n.i(r.e)(r.b.AnimationSequencePlayer)).instantiate([i.n(a)])},_AnimationBuilder.prototype.visitAnimationGroup=function(e,t){var o=this,a=e.steps.map(function(e){return e.visit(o,t)});return i.d(n.i(r.e)(r.b.AnimationGroupPlayer)).instantiate([i.n(a)])},_AnimationBuilder.prototype.visitAnimationStateDeclaration=function(e,t){var n={};_getStylesArray(e).forEach(function(e){Object.keys(e).forEach(function(t){n[t]=e[t]})}),t.stateMap.registerState(e.stateName,n)},_AnimationBuilder.prototype.visitAnimationStateTransition=function(e,t){var n=e.animation.steps,o=n[n.length-1];_isEndStateAnimateStep(o)&&(t.endStateAnimateStep=o),t.totalTransitionTime=0,t.isExpectingFirstStyleStep=!0,t.isExpectingFirstAnimateStep=!0;var r=[];e.stateChanges.forEach(function(e){r.push(_compareToAnimationStateExpr(h,e.fromState).and(_compareToAnimationStateExpr(m,e.toState))),e.fromState!=a.D&&t.stateMap.registerState(e.fromState),e.toState!=a.D&&t.stateMap.registerState(e.toState)});var s=e.animation.visit(this,t),u=r.reduce(function(e,t){return e.or(t)}),l=y.equals(i.k).and(u),c=y.set(s).toStmt(),d=b.set(i.f(t.totalTransitionTime)).toStmt();return new i.e(l,[c,d])},_AnimationBuilder.prototype.visitAnimationEntry=function(e,t){var o=this;e.stateDeclarations.forEach(function(e){return e.visit(o,t)}),t.stateMap.registerState(a.L,{});var s=[];s.push(T.set(g.callMethod("getAnimationPlayers",[c,m.equals(i.f(a.G)).conditional(i.k,i.f(this.animationName))])).toDeclStmt()),s.push(E.set(S).toDeclStmt()),s.push(y.set(i.k).toDeclStmt()),s.push(b.set(i.f(0)).toDeclStmt()),s.push(d.set(this._statesMapVar.key(i.f(a.L))).toDeclStmt()),s.push(v.set(this._statesMapVar.key(h)).toDeclStmt()),s.push(new i.e(v.equals(i.k),[v.set(d).toStmt()])),s.push(_.set(this._statesMapVar.key(m)).toDeclStmt()),s.push(new i.e(_.equals(i.k),[_.set(d).toStmt()]));var u=i.d(n.i(r.e)(r.b.renderStyles));return e.stateTransitions.forEach(function(e){return s.push(e.visit(o,t))}),s.push(new i.e(y.equals(i.k),[y.set(i.d(n.i(r.e)(r.b.NoOpAnimationPlayer)).instantiate([])).toStmt()])),s.push(y.callMethod("onDone",[i.s([],[y.callMethod("destroy",[]).toStmt(),u.callFn([c,f,i.d(n.i(r.e)(r.b.prepareFinalAnimationStyles)).callFn([v,_])]).toStmt()])]).toStmt()),s.push(i.d(n.i(r.e)(r.b.AnimationSequencePlayer)).instantiate([T]).callMethod("destroy",[]).toStmt()),s.push(u.callFn([c,f,i.d(n.i(r.e)(r.b.clearStyles)).callFn([v])]).toStmt()),s.push(g.callMethod("queueAnimation",[c,i.f(this.animationName),y]).toStmt()),s.push(new i.t(i.d(n.i(r.e)(r.b.AnimationTransition)).instantiate([y,h,m,b]))),i.s([new i.r(p.name,i.B(n.i(r.e)(r.b.AppView),[i.h])),new i.r(c.name,i.h),new i.r(h.name,i.h),new i.r(m.name,i.h)],s,i.B(n.i(r.e)(r.b.AnimationTransition)))},_AnimationBuilder.prototype.build=function(e){var t=new C,r=e.visit(this,t).toDeclStmt(this._fnVarName),a=i.g(this._fnVarName),s=[];Object.keys(t.stateMap.states).forEach(function(e){var r=t.stateMap.states[e],a=S;if(n.i(o.f)(r)){var u=[];Object.keys(r).forEach(function(e){u.push([e,i.f(r[e])])}),a=i.o(u,null,!0)}s.push([e,a])});var l=this._statesMapVar.set(i.o(s,null,!0)).toDeclStmt(),c=[l,r];return new u(this.animationName,c,a)},_AnimationBuilder}(),C=function(){function _AnimationBuilderContext(){this.stateMap=new k,this.endStateAnimateStep=null,this.isExpectingFirstStyleStep=!1,this.isExpectingFirstAnimateStep=!1,this.totalTransitionTime=0}return _AnimationBuilderContext}(),k=function(){function _AnimationBuilderStateMap(){this._states={}}return Object.defineProperty(_AnimationBuilderStateMap.prototype,"states",{get:function(){return this._states},enumerable:!0,configurable:!0}),_AnimationBuilderStateMap.prototype.registerState=function(e,t){void 0===t&&(t=null);var n=this._states[e];n||(this._states[e]=t)},_AnimationBuilderStateMap}()},function(e,t,n){"use strict";function serializeSummaries(e,t,n,r,i){var a=new u(e);r.forEach(function(e){return a.addOrMergeSummary({symbol:e.symbol,metadata:e.metadata})});for(var s=0;s<a.symbols.length;s++){var l=a.symbols[s];if(!e.isSourceFile(l.filePath)){var c=t.resolveSummary(l);if(!c){var d=n.resolveSymbol(l);d&&(c={symbol:d.symbol,metadata:d.metadata})}c&&a.addOrMergeSummary(c)}}return i.forEach(function(n){if(a.addOrMergeSummary({symbol:n.type.reference,metadata:{__symbolic:"class"},type:n}),n.summaryKind===o.q.NgModule){var r=n;r.exportedDirectives.concat(r.exportedPipes).forEach(function(n){var o=n.reference;e.isSourceFile(o.filePath)||a.addOrMergeSummary(t.resolveSummary(o))})}}),a.serialize()}function deserializeSummaries(e,t){var n=new l(e);return n.deserialize(t)}function summaryFileName(e){var t=e.replace(s,"");return t+".ngsummary.json"}var o=n(14),r=n(32),i=n(71);t.a=serializeSummaries,t.c=deserializeSummaries,t.b=summaryFileName;var a=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},s=/(\.ts|\.d\.ts|\.js|\.jsx|\.tsx)$/,u=function(e){function Serializer(t){e.call(this),this.host=t,this.symbols=[],this.indexBySymbol=new Map,this.processedSummaryBySymbol=new Map,this.processedSummaries=[]}return a(Serializer,e),Serializer.prototype.addOrMergeSummary=function(e){var t=e.metadata;t&&"class"===t.__symbolic&&(t={__symbolic:"class",statics:t.statics});var n=this.processedSummaryBySymbol.get(e.symbol);n||(n=this.processValue({symbol:e.symbol}),this.processedSummaries.push(n),this.processedSummaryBySymbol.set(e.symbol,n)),null==n.metadata&&null!=t&&(n.metadata=this.processValue(t)),null==n.type&&null!=e.type&&(n.type=this.processValue(e.type))},Serializer.prototype.serialize=function(){var e=this;return JSON.stringify({summaries:this.processedSummaries,symbols:this.symbols.map(function(t,n){return{__symbol:n,name:t.name,filePath:e.host.getOutputFileName(t.filePath)}})})},Serializer.prototype.processValue=function(e){return n.i(r.f)(e,this,null)},Serializer.prototype.visitOther=function(e,t){if(e instanceof i.a){var n=this.indexBySymbol.get(e);return null==n&&(n=this.indexBySymbol.size,this.indexBySymbol.set(e,n),this.symbols.push(e)),{__symbol:n}}},Serializer}(r.g),l=function(e){function Deserializer(t){e.call(this),this.symbolCache=t}return a(Deserializer,e),Deserializer.prototype.deserialize=function(e){var t=this,o=JSON.parse(e);return this.symbols=o.symbols.map(function(e){return t.symbolCache.get(e.filePath,e.name)}),n.i(r.f)(o.summaries,this,null)},Deserializer.prototype.visitStringMap=function(t,n){return"__symbol"in t?this.symbols[t.__symbol]:e.prototype.visitStringMap.call(this,t,n)},Deserializer}(r.g)},function(e,t,n){"use strict";function assertArrayOfStrings(e,t){if(n.i(o.isDevMode)()&&!n.i(r.g)(t)){if(!Array.isArray(t))throw new Error("Expected '"+e+"' to be an array of strings.");for(var i=0;i<t.length;i+=1)if("string"!=typeof t[i])throw new Error("Expected '"+e+"' to be an array of strings.")}}function assertInterpolationSymbols(e,t){if(n.i(r.f)(t)&&(!Array.isArray(t)||2!=t.length))throw new Error("Expected '"+e+"' to be an array, [start, end].");if(n.i(o.isDevMode)()&&!n.i(r.g)(t)){var a=t[0],s=t[1];i.forEach(function(e){if(e.test(a)||e.test(s))throw new Error("['"+a+"', '"+s+"'] contains unusable interpolation symbol.")})}}var o=n(1),r=n(7);t.b=assertArrayOfStrings,t.a=assertInterpolationSymbols;var i=[/^\s*$/,/[<>]/,/^[{}]$/,/&(#|[a-z])/i,/^\/\//]},function(e,t,n){"use strict";function createCheckBindingField(e){var t=""+e.fields.length,a=createBindFieldExpr(t);return e.fields.push(new r.a(a.name,null,[r.b.Private])),e.ctorStmts.push(r.c.prop(a.name).set(r.d(n.i(o.e)(o.b.UNINITIALIZED))).toStmt()),new i(a,t)}function createCheckBindingStmt(e,t,i,a){var s=r.d(n.i(o.e)(o.b.checkBinding)).callFn([i,t,e.currValExpr]);return e.forceUpdate&&(s=e.forceUpdate.or(s)),e.stmts.concat([new r.e(s,a.concat([r.c.prop(t.name).set(e.currValExpr).toStmt()]))])}function createBindFieldExpr(e){return r.c.prop("_expr_"+e)}var o=n(19),r=n(10);t.a=createCheckBindingField,t.b=createCheckBindingStmt;var i=function(){function CheckBindingField(e,t){this.expression=e,this.bindingId=t}return CheckBindingField}()},function(e,t,n){"use strict";function writeToRenderer(e,t,o,s,l,c){var d=[],p=e.prop("renderer");switch(s=sanitizedValue(e,t,s,c),t.type){case u.e.Property:l&&d.push(a.d(n.i(i.e)(i.b.setBindingDebugInfo)).callFn([p,o,a.f(t.name),s]).toStmt()),d.push(p.callMethod("setElementProperty",[o,a.f(t.name),s]).toStmt());break;case u.e.Attribute:s=s.isBlank().conditional(a.k,s.callMethod("toString",[])),d.push(p.callMethod("setElementAttribute",[o,a.f(t.name),s]).toStmt());break;case u.e.Class:d.push(p.callMethod("setElementClass",[o,a.f(t.name),s]).toStmt());break;case u.e.Style:var g=s.callMethod("toString",[]);n.i(r.f)(t.unit)&&(g=g.plus(a.f(t.unit))),s=s.isBlank().conditional(a.k,g),d.push(p.callMethod("setElementStyle",[o,a.f(t.name),s]).toStmt());break;case u.e.Animation:throw new Error("Illegal state: Should not come here!")}return d}function sanitizedValue(e,t,r,a){if(t.securityContext===o.SecurityContext.NONE)return r;if(t.needsRuntimeSecurityContext||(a=n.i(l.b)(i.b.SecurityContext,t.securityContext)),!a)throw new Error("internal error, no SecurityContext given "+t.name);var s=e.prop("viewUtils").prop("sanitizer"),u=[a,r];return s.callMethod("sanitize",u)}function triggerAnimation(e,t,o,r,l,c,d,p){var g=[],f=[],h=o.name,m=t.prop("componentType").prop("animations").key(a.f(h)),y=a.f(s.G),b=a.d(n.i(i.e)(i.b.UNINITIALIZED)),v=a.g("animationTransition_"+h);f.push(v.set(m.callFn([e,c,p.equals(b).conditional(y,p),d.equals(b).conditional(y,d)])).toDeclStmt()),g.push(v.set(m.callFn([e,c,p,y])).toDeclStmt());var _=[],E=r.find(function(e){return e.isAnimation&&e.name==h&&"start"==e.phase});E&&_.push(v.callMethod("onStart",[l.callMethod(a.x.Bind,[e,a.f(u.f.calcFullName(h,null,"start"))])]).toStmt());var T=r.find(function(e){return e.isAnimation&&e.name==h&&"done"==e.phase});return T&&_.push(v.callMethod("onDone",[l.callMethod(a.x.Bind,[e,a.f(u.f.calcFullName(h,null,"done"))])]).toStmt()),f.push.apply(f,_),g.push.apply(g,_),{updateStmts:f,detachStmts:g}}var o=n(1),r=n(7),i=n(19),a=n(10),s=n(17),u=n(48),l=n(46);t.b=writeToRenderer,t.a=triggerAnimation},function(e,t,n){"use strict";function digest(e){return sha1(serializeNodes(e.nodes).join("")+("["+e.meaning+"]"))}function decimalDigest(e){var t=new a,n=e.nodes.map(function(e){return e.visit(t,null)});return computeMsgId(n.join(""),e.meaning)}function serializeNodes(e){return e.map(function(e){return e.visit(i,null)})}function sha1(e){var t=utf8Encode(e),n=stringToWords32(t,s.Big),o=8*t.length,r=new Array(80),i=[1732584193,4023233417,2562383102,271733878,3285377520],a=i[0],u=i[1],l=i[2],c=i[3],d=i[4];n[o>>5]|=128<<24-o%32,n[(o+64>>9<<4)+15]=o;for(var p=0;p<n.length;p+=16){for(var g=[a,u,l,c,d],f=g[0],h=g[1],m=g[2],y=g[3],b=g[4],v=0;v<80;v++){v<16?r[v]=n[p+v]:r[v]=rol32(r[v-3]^r[v-8]^r[v-14]^r[v-16],1);var _=fk(v,u,l,c),E=_[0],T=_[1],S=[rol32(a,5),E,d,T,r[v]].reduce(add32);A=[c,l,rol32(u,30),a,S],d=A[0],c=A[1],l=A[2],u=A[3],a=A[4]}M=[add32(a,f),add32(u,h),add32(l,m),add32(c,y),add32(d,b)],a=M[0],u=M[1],l=M[2],c=M[3],d=M[4]}return byteStringToHexString(words32ToByteString([a,u,l,c,d]));var A,M}function fk(e,t,n,o){return e<20?[t&n|~t&o,1518500249]:e<40?[t^n^o,1859775393]:e<60?[t&n|t&o|n&o,2400959708]:[t^n^o,3395469782]}function fingerprint(e){var t=utf8Encode(e),n=[hash32(t,0),hash32(t,102072)],o=n[0],r=n[1];return 0!=o||0!=r&&1!=r||(o=319790063^o,r^=-1801410264),[o,r]}function computeMsgId(e,t){var n=fingerprint(e),o=n[0],r=n[1];if(t){var i=fingerprint(t),a=i[0],s=i[1];u=add64(rol64([o,r],1),[a,s]),o=u[0],r=u[1]}return byteStringToDecString(words32ToByteString([2147483647&o,r]));var u}function hash32(e,t){var n,o=[2654435769,2654435769],r=o[0],i=o[1],a=e.length;for(n=0;n+12<=a;n+=12)r=add32(r,wordAt(e,n,s.Little)),i=add32(i,wordAt(e,n+4,s.Little)),t=add32(t,wordAt(e,n+8,s.Little)),u=mix([r,i,t]),r=u[0],i=u[1],t=u[2];return r=add32(r,wordAt(e,n,s.Little)),i=add32(i,wordAt(e,n+4,s.Little)),t=add32(t,a),t=add32(t,wordAt(e,n+8,s.Little)<<8),mix([r,i,t])[2];var u}function mix(e){var t=e[0],n=e[1],o=e[2];return t=sub32(t,n),t=sub32(t,o),t^=o>>>13,n=sub32(n,o),n=sub32(n,t),n^=t<<8,o=sub32(o,t),o=sub32(o,n),o^=n>>>13,t=sub32(t,n),t=sub32(t,o),t^=o>>>12,n=sub32(n,o),n=sub32(n,t),n^=t<<16,o=sub32(o,t),o=sub32(o,n),o^=n>>>5,t=sub32(t,n),t=sub32(t,o),t^=o>>>3,n=sub32(n,o),n=sub32(n,t),n^=t<<10,o=sub32(o,t),o=sub32(o,n),o^=n>>>15,[t,n,o]}function utf8Encode(e){for(var t="",n=0;n<e.length;n++){var o=e.charCodeAt(n);if(o>=55296&&o<=56319&&e.length>n+1){var r=e.charCodeAt(n+1);r>=56320&&r<=57343&&(n++,o=(o-55296<<10)+r-56320+65536)}o<=127?t+=String.fromCharCode(o):o<=2047?t+=String.fromCharCode(o>>6&31|192,63&o|128):o<=65535?t+=String.fromCharCode(o>>12|224,o>>6&63|128,63&o|128):o<=2097151&&(t+=String.fromCharCode(o>>18&7|240,o>>12&63|128,o>>6&63|128,63&o|128))}return t}function add32(e,t){return add32to64(e,t)[1]}function add32to64(e,t){var n=(65535&e)+(65535&t),o=(e>>>16)+(t>>>16)+(n>>>16);return[o>>>16,o<<16|65535&n]}function add64(e,t){var n=e[0],o=e[1],r=t[0],i=t[1],a=add32to64(o,i),s=a[0],u=a[1],l=add32(add32(n,r),s);return[l,u]}function sub32(e,t){var n=(65535&e)-(65535&t),o=(e>>16)-(t>>16)+(n>>16);return o<<16|65535&n}function rol32(e,t){return e<<t|e>>>32-t}function rol64(e,t){var n=e[0],o=e[1],r=n<<t|o>>>32-t,i=o<<t|n>>>32-t;return[r,i]}function stringToWords32(e,t){for(var n=Array(e.length+3>>>2),o=0;o<n.length;o++)n[o]=wordAt(e,4*o,t);return n}function byteAt(e,t){return t>=e.length?0:255&e.charCodeAt(t)}function wordAt(e,t,n){var o=0;if(n===s.Big)for(var r=0;r<4;r++)o+=byteAt(e,t+r)<<24-8*r;else for(var r=0;r<4;r++)o+=byteAt(e,t+r)<<8*r;return o}function words32ToByteString(e){return e.reduce(function(e,t){return e+word32ToByteString(t)},"")}function word32ToByteString(e){for(var t="",n=0;n<4;n++)t+=String.fromCharCode(e>>>8*(3-n)&255);return t}function byteStringToHexString(e){for(var t="",n=0;n<e.length;n++){var o=byteAt(e,n);t+=(o>>>4).toString(16)+(15&o).toString(16)}return t.toLowerCase()}function byteStringToDecString(e){for(var t="",n="1",o=e.length-1;o>=0;o--)t=addBigInt(t,numberTimesBigInt(byteAt(e,o),n)),n=numberTimesBigInt(256,n);return t.split("").reverse().join("")}function addBigInt(e,t){for(var n="",o=Math.max(e.length,t.length),r=0,i=0;r<o||i;r++){var a=i+ +(e[r]||0)+ +(t[r]||0);a>=10?(i=1,n+=a-10):(i=0,n+=a)}return n}function numberTimesBigInt(e,t){for(var n="",o=t;0!==e;e>>>=1)1&e&&(n=addBigInt(n,o)),o=addBigInt(o,o);return n}t.a=digest,t.b=decimalDigest;var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=function(){function _SerializerVisitor(){}return _SerializerVisitor.prototype.visitText=function(e,t){return e.value},_SerializerVisitor.prototype.visitContainer=function(e,t){var n=this;return"["+e.children.map(function(e){return e.visit(n)}).join(", ")+"]"},_SerializerVisitor.prototype.visitIcu=function(e,t){var n=this,o=Object.keys(e.cases).map(function(t){return t+" {"+e.cases[t].visit(n)+"}"});return"{"+e.expression+", "+e.type+", "+o.join(", ")+"}"},_SerializerVisitor.prototype.visitTagPlaceholder=function(e,t){var n=this;return e.isVoid?'<ph tag name="'+e.startName+'"/>':'<ph tag name="'+e.startName+'">'+e.children.map(function(e){return e.visit(n)}).join(", ")+'</ph name="'+e.closeName+'">'},_SerializerVisitor.prototype.visitPlaceholder=function(e,t){return e.value?'<ph name="'+e.name+'">'+e.value+"</ph>":'<ph name="'+e.name+'"/>'},_SerializerVisitor.prototype.visitIcuPlaceholder=function(e,t){return'<ph icu name="'+e.name+'">'+e.value.visit(this)+"</ph>"},_SerializerVisitor}(),i=new r,a=function(e){function _SerializerIgnoreIcuExpVisitor(){e.apply(this,arguments)}return o(_SerializerIgnoreIcuExpVisitor,e),_SerializerIgnoreIcuExpVisitor.prototype.visitIcu=function(e,t){var n=this,o=Object.keys(e.cases).map(function(t){return t+" {"+e.cases[t].visit(n)+"}"});return"{"+e.type+", "+o.join(", ")+"}"},_SerializerIgnoreIcuExpVisitor}(r),s={};s.Little=0,s.Big=1,s[s.Little]="Little",s[s.Big]="Big"},function(e,t,n){"use strict";function extractMessages(e,t,n,o){var r=new g(n,o);return r.extract(e,t)}function mergeTranslations(e,t,n,o,r){var i=new g(o,r);return i.merge(e,t,n)}function _isOpeningComment(e){return e instanceof o.a&&e.value&&e.value.startsWith("i18n")}function _isClosingComment(e){return e instanceof o.a&&e.value&&"/i18n"===e.value}function _getI18nAttr(e){return e.attrs.find(function(e){return e.name===u})||null}function _splitMeaningAndDesc(e){if(!e)return["",""];var t=e.indexOf("|");return t==-1?["",e]:[e.slice(0,t),e.slice(t+1)]}var o=n(74),r=n(107),i=n(167),a=n(619),s=n(169);t.b=extractMessages,t.a=mergeTranslations;var u="i18n",l="i18n-",c=/^i18n:?/,d=function(){function ExtractionResult(e,t){this.messages=e,this.errors=t}return ExtractionResult}(),p={};p.Extract=0,p.Merge=1,p[p.Extract]="Extract",p[p.Merge]="Merge";var g=function(){function _Visitor(e,t){this._implicitTags=e,this._implicitAttrs=t}return _Visitor.prototype.extract=function(e,t){var n=this;return this._init(p.Extract,t),e.forEach(function(e){return e.visit(n,null)}),this._inI18nBlock&&this._reportError(e[e.length-1],"Unclosed block"),new d(this._messages,this._errors)},_Visitor.prototype.merge=function(e,t,n){this._init(p.Merge,n),this._translations=t;var i=new o.e("wrapper",[],e,null,null,null),a=i.visit(this,null);return this._inI18nBlock&&this._reportError(e[e.length-1],"Unclosed block"),new r.a(a.children,this._errors)},_Visitor.prototype.visitExpansionCase=function(e,t){var n=o.g(this,e.expression,t);if(this._mode===p.Merge)return new o.c(e.value,n,e.sourceSpan,e.valueSourceSpan,e.expSourceSpan)},_Visitor.prototype.visitExpansion=function(e,t){this._mayBeAddBlockChildren(e);var n=this._inIcu;this._inIcu||(this._isInTranslatableSection&&this._addMessage([e]),this._inIcu=!0);var r=o.g(this,e.cases,t);return this._mode===p.Merge&&(e=new o.b(e.switchValue,e.type,r,e.sourceSpan,e.switchValueSourceSpan)),this._inIcu=n,e},_Visitor.prototype.visitComment=function(e,t){var n=_isOpeningComment(e);if(n&&this._isInTranslatableSection)return void this._reportError(e,"Could not start a block inside a translatable section");var r=_isClosingComment(e);if(r&&!this._inI18nBlock)return void this._reportError(e,"Trying to close an unopened block");if(!this._inI18nNode&&!this._inIcu)if(this._inI18nBlock){if(r){if(this._depth==this._blockStartDepth){this._closeTranslatableSection(e,this._blockChildren),this._inI18nBlock=!1;var i=this._addMessage(this._blockChildren,this._blockMeaningAndDesc),a=this._translateMessage(e,i);return o.g(this,a)}return void this._reportError(e,"I18N blocks should not cross element boundaries")}}else n&&(this._inI18nBlock=!0,this._blockStartDepth=this._depth,this._blockChildren=[],this._blockMeaningAndDesc=e.value.replace(c,"").trim(),this._openTranslatableSection(e))},_Visitor.prototype.visitText=function(e,t){return this._isInTranslatableSection&&this._mayBeAddBlockChildren(e),e},_Visitor.prototype.visitElement=function(e,t){var n=this;this._mayBeAddBlockChildren(e),this._depth++;var r,i=this._inI18nNode,a=this._inImplicitNode,s=[],u=_getI18nAttr(e),l=u?u.value:"",c=this._implicitTags.some(function(t){return e.name===t})&&!this._inIcu&&!this._isInTranslatableSection,d=!a&&c;if(this._inImplicitNode=a||c,this._isInTranslatableSection||this._inIcu)(u||d)&&this._reportError(e,"Could not mark an element as translatable inside a translatable section"),this._mode==p.Extract&&o.g(this,e.children);else{if(u||d){this._inI18nNode=!0;var g=this._addMessage(e.children,l);r=this._translateMessage(e,g)}if(this._mode==p.Extract){var f=u||d;f&&this._openTranslatableSection(e),o.g(this,e.children),f&&this._closeTranslatableSection(e,e.children)}}if(this._mode===p.Merge){var h=r||e.children;h.forEach(function(e){var o=e.visit(n,t);o&&!n._isInTranslatableSection&&(s=s.concat(o))})}if(this._visitAttributesOf(e),this._depth--,this._inI18nNode=i,this._inImplicitNode=a,this._mode===p.Merge){var m=this._translateAttributes(e);return new o.e(e.name,m,s,e.sourceSpan,e.startSourceSpan,e.endSourceSpan)}},_Visitor.prototype.visitAttribute=function(e,t){throw new Error("unreachable code")},_Visitor.prototype._init=function(e,t){this._mode=e,this._inI18nBlock=!1,this._inI18nNode=!1,this._depth=0,this._inIcu=!1,this._msgCountAtSectionStart=void 0,this._errors=[],this._messages=[],this._inImplicitNode=!1,this._createI18nMessage=n.i(a.a)(t)},_Visitor.prototype._visitAttributesOf=function(e){var t=this,n={},o=this._implicitAttrs[e.name]||[];e.attrs.filter(function(e){return e.name.startsWith(l)}).forEach(function(e){return n[e.name.slice(l.length)]=e.value}),e.attrs.forEach(function(e){e.name in n?t._addMessage([e],n[e.name]):o.some(function(t){return e.name===t})&&t._addMessage([e])})},_Visitor.prototype._addMessage=function(e,t){if(!(0==e.length||1==e.length&&e[0]instanceof o.f&&!e[0].value)){var n=_splitMeaningAndDesc(t),r=n[0],i=n[1],a=this._createI18nMessage(e,r,i);return this._messages.push(a),a}},_Visitor.prototype._translateMessage=function(e,t){if(t&&this._mode===p.Merge){var n=this._translations.get(t);if(n)return n;this._reportError(e,'Translation unavailable for message id="'+this._translations.digest(t)+'"')}return[]},_Visitor.prototype._translateAttributes=function(e){var t=this,n=e.attrs,r={};n.forEach(function(e){e.name.startsWith(l)&&(r[e.name.slice(l.length)]=_splitMeaningAndDesc(e.value)[0])});var i=[];return n.forEach(function(n){if(n.name!==u&&!n.name.startsWith(l))if(n.value&&""!=n.value&&r.hasOwnProperty(n.name)){var a=r[n.name],s=t._createI18nMessage([n],a,""),c=t._translations.get(s);if(c)if(0==c.length)i.push(new o.f(n.name,"",n.sourceSpan));else if(c[0]instanceof o.d){var d=c[0].value;i.push(new o.f(n.name,d,n.sourceSpan))}else t._reportError(e,'Unexpected translation for attribute "'+n.name+'" (id="'+t._translations.digest(s)+'")');else t._reportError(e,'Translation unavailable for attribute "'+n.name+'" (id="'+t._translations.digest(s)+'")');
}else i.push(n)}),i},_Visitor.prototype._mayBeAddBlockChildren=function(e){this._inI18nBlock&&!this._inIcu&&this._depth==this._blockStartDepth&&this._blockChildren.push(e)},_Visitor.prototype._openTranslatableSection=function(e){this._isInTranslatableSection?this._reportError(e,"Unexpected section start"):this._msgCountAtSectionStart=this._messages.length},Object.defineProperty(_Visitor.prototype,"_isInTranslatableSection",{get:function(){return void 0!==this._msgCountAtSectionStart},enumerable:!0,configurable:!0}),_Visitor.prototype._closeTranslatableSection=function(e,t){if(!this._isInTranslatableSection)return void this._reportError(e,"Unexpected section end");var n=this._msgCountAtSectionStart,r=t.reduce(function(e,t){return e+(t instanceof o.a?0:1)},0);if(1==r)for(var a=this._messages.length-1;a>=n;a--){var s=this._messages[a].nodes;if(!(1==s.length&&s[0]instanceof i.f)){this._messages.splice(a,1);break}}this._msgCountAtSectionStart=void 0},_Visitor.prototype._reportError=function(e,t){this._errors.push(new s.a(e.sourceSpan,t))},_Visitor}()},function(e,t,n){"use strict";var o=(n(618),n(168));n(357),n(170),n(358),n(245),n(360);n.d(t,"a",function(){return o.a})},function(e,t,n){"use strict";var o=n(355);n.d(t,"a",function(){return r});var r=function(){function MessageBundle(e,t,n){this._htmlParser=e,this._implicitTags=t,this._implicitAttrs=n,this._messages=[]}return MessageBundle.prototype.updateFromTemplate=function(e,t,r){var i=this._htmlParser.parse(e,t,!0,r);if(i.errors.length)return i.errors;var a=n.i(o.b)(i.rootNodes,r,this._implicitTags,this._implicitAttrs);if(a.errors.length)return a.errors;(s=this._messages).push.apply(s,a.messages);var s},MessageBundle.prototype.getMessages=function(){return this._messages},MessageBundle.prototype.write=function(e){return e.write(this._messages)},MessageBundle}()},function(e,t,n){"use strict";function getCtypeForTag(e){switch(e.toLowerCase()){case"br":return"lb";case"img":return"image";default:return"x-"+e}}var o=n(74),r=n(362),i=n(354),a=n(167),s=n(169),u=n(170),l=n(359);n.d(t,"a",function(){return b});var c=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},d="1.2",p="urn:oasis:names:tc:xliff:document:1.2",g="en",f="x",h="source",m="target",y="trans-unit",b=function(e){function Xliff(){e.apply(this,arguments)}return c(Xliff,e),Xliff.prototype.write=function(e){var t=this,n=new v,o={},r=[];e.forEach(function(e){var i=t.digest(e);if(!o[i]){o[i]=!0;var a=new l.a(y,{id:i,datatype:"html"});a.children.push(new l.b(8),new l.a(h,{},n.serialize(e.nodes)),new l.b(8),new l.a(m)),e.description&&a.children.push(new l.b(8),new l.a("note",{priority:"1",from:"description"},[new l.c(e.description)])),e.meaning&&a.children.push(new l.b(8),new l.a("note",{priority:"1",from:"meaning"},[new l.c(e.meaning)])),a.children.push(new l.b(6)),r.push(new l.b(6),a)}});var i=new l.a("body",{},r.concat([new l.b(4)])),a=new l.a("file",{"source-language":g,datatype:"plaintext",original:"ng2.template"},[new l.b(4),i,new l.b(2)]),s=new l.a("xliff",{version:d,xmlns:p},[new l.b(2),a,new l.b]);return l.d([new l.e({version:"1.0",encoding:"UTF-8"}),new l.b,s,new l.b])},Xliff.prototype.load=function(e,t){var n=new _,o=n.parse(e,t),r=o.mlNodesByMsgId,i=o.errors,a={},s=new E;if(Object.keys(r).forEach(function(e){var t=s.convert(r[e]),n=t.i18nNodes,o=t.errors;i.push.apply(i,o),a[e]=n}),i.length)throw new Error("xliff parse errors:\n"+i.join("\n"));return a},Xliff.prototype.digest=function(e){return n.i(i.a)(e)},Xliff}(u.a),v=function(){function _WriteVisitor(){}return _WriteVisitor.prototype.visitText=function(e,t){return[new l.c(e.value)]},_WriteVisitor.prototype.visitContainer=function(e,t){var n=this,o=[];return e.children.forEach(function(e){return o.push.apply(o,e.visit(n))}),o},_WriteVisitor.prototype.visitIcu=function(e,t){if(this._isInIcu)throw new Error("xliff does not support nested ICU messages");this._isInIcu=!0;var n=[];return this._isInIcu=!1,n},_WriteVisitor.prototype.visitTagPlaceholder=function(e,t){var n=getCtypeForTag(e.tag),o=new l.a(f,{id:e.startName,ctype:n});if(e.isVoid)return[o];var r=new l.a(f,{id:e.closeName,ctype:n});return[o].concat(this.serialize(e.children),[r])},_WriteVisitor.prototype.visitPlaceholder=function(e,t){return[new l.a(f,{id:e.name})]},_WriteVisitor.prototype.visitIcuPlaceholder=function(e,t){return[new l.a(f,{id:e.name})]},_WriteVisitor.prototype.serialize=function(e){var t=this;return this._isInIcu=!1,(n=[]).concat.apply(n,e.map(function(e){return e.visit(t)}));var n},_WriteVisitor}(),_=function(){function XliffParser(){}return XliffParser.prototype.parse=function(e,t){this._unitMlNodes=[],this._mlNodesByMsgId={};var n=(new r.a).parse(e,t,!1);return this._errors=n.errors,o.g(this,n.rootNodes,null),{mlNodesByMsgId:this._mlNodesByMsgId,errors:this._errors}},XliffParser.prototype.visitElement=function(e,t){switch(e.name){case y:this._unitMlNodes=null;var n=e.attrs.find(function(e){return"id"===e.name});if(n){var r=n.value;this._mlNodesByMsgId.hasOwnProperty(r)?this._addError(e,"Duplicated translations for msg "+r):(o.g(this,e.children,null),this._unitMlNodes?this._mlNodesByMsgId[r]=this._unitMlNodes:this._addError(e,"Message "+r+" misses a translation"))}else this._addError(e,"<"+y+'> misses the "id" attribute');break;case h:break;case m:this._unitMlNodes=e.children;break;default:o.g(this,e.children,null)}},XliffParser.prototype.visitAttribute=function(e,t){},XliffParser.prototype.visitText=function(e,t){},XliffParser.prototype.visitComment=function(e,t){},XliffParser.prototype.visitExpansion=function(e,t){},XliffParser.prototype.visitExpansionCase=function(e,t){},XliffParser.prototype._addError=function(e,t){this._errors.push(new s.a(e.sourceSpan,t))},XliffParser}(),E=function(){function XmlToI18n(){}return XmlToI18n.prototype.convert=function(e){return this._errors=[],{i18nNodes:o.g(this,e),errors:this._errors}},XmlToI18n.prototype.visitText=function(e,t){return new a.f(e.value,e.sourceSpan)},XmlToI18n.prototype.visitElement=function(e,t){if(e.name===f){var n=e.attrs.find(function(e){return"id"===e.name});if(n)return new a.g("",n.value,e.sourceSpan);this._addError(e,"<"+f+'> misses the "id" attribute')}else this._addError(e,"Unexpected tag")},XmlToI18n.prototype.visitExpansion=function(e,t){},XmlToI18n.prototype.visitExpansionCase=function(e,t){},XmlToI18n.prototype.visitComment=function(e,t){},XmlToI18n.prototype.visitAttribute=function(e,t){},XmlToI18n.prototype._addError=function(e,t){this._errors.push(new s.a(e.sourceSpan,t))},XmlToI18n}()},function(e,t,n){"use strict";function serialize(e){return e.map(function(e){return e.visit(i)}).join("")}function _escapeXml(e){return d.reduce(function(e,t){return e.replace(t[0],t[1])},e)}t.d=serialize,n.d(t,"e",function(){return a}),n.d(t,"f",function(){return s}),n.d(t,"a",function(){return u}),n.d(t,"c",function(){return l}),n.d(t,"b",function(){return c});var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=function(){function _Visitor(){}return _Visitor.prototype.visitTag=function(e){var t=this,n=this._serializeAttributes(e.attrs);if(0==e.children.length)return"<"+e.name+n+"/>";var o=e.children.map(function(e){return e.visit(t)});return"<"+e.name+n+">"+o.join("")+"</"+e.name+">"},_Visitor.prototype.visitText=function(e){return e.value},_Visitor.prototype.visitDeclaration=function(e){return"<?xml"+this._serializeAttributes(e.attrs)+" ?>"},_Visitor.prototype._serializeAttributes=function(e){var t=Object.keys(e).map(function(t){return t+'="'+e[t]+'"'}).join(" ");return t.length>0?" "+t:""},_Visitor.prototype.visitDoctype=function(e){return"<!DOCTYPE "+e.rootTag+" [\n"+e.dtd+"\n]>"},_Visitor}(),i=new r,a=function(){function Declaration(e){var t=this;this.attrs={},Object.keys(e).forEach(function(n){t.attrs[n]=_escapeXml(e[n])})}return Declaration.prototype.visit=function(e){return e.visitDeclaration(this)},Declaration}(),s=function(){function Doctype(e,t){this.rootTag=e,this.dtd=t}return Doctype.prototype.visit=function(e){return e.visitDoctype(this)},Doctype}(),u=function(){function Tag(e,t,n){var o=this;void 0===t&&(t={}),void 0===n&&(n=[]),this.name=e,this.children=n,this.attrs={},Object.keys(t).forEach(function(e){o.attrs[e]=_escapeXml(t[e])})}return Tag.prototype.visit=function(e){return e.visitTag(this)},Tag}(),l=function(){function Text(e){this.value=_escapeXml(e)}return Text.prototype.visit=function(e){return e.visitText(this)},Text}(),c=function(e){function CR(t){void 0===t&&(t=0),e.call(this,"\n"+new Array(t+1).join(" "))}return o(CR,e),CR}(l),d=[[/&/g,"&amp;"],[/"/g,"&quot;"],[/'/g,"&apos;"],[/</g,"&lt;"],[/>/g,"&gt;"]]},function(e,t,n){"use strict";var o=n(74),r=n(362),i=n(167),a=n(169),s=n(170),u=n(245);n.d(t,"a",function(){return g});var l=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},c="translationbundle",d="translation",p="ph",g=function(e){function Xtb(){e.apply(this,arguments)}return l(Xtb,e),Xtb.prototype.write=function(e){throw new Error("Unsupported")},Xtb.prototype.load=function(e,t){var n=new f,o=n.parse(e,t),r=o.mlNodesByMsgId,i=o.errors,a={},s=new h;if(Object.keys(r).forEach(function(e){var t=s.convert(r[e]),n=t.i18nNodes,o=t.errors;i.push.apply(i,o),a[e]=n}),i.length)throw new Error("xtb parse errors:\n"+i.join("\n"));return a},Xtb.prototype.digest=function(e){return n.i(u.a)(e)},Xtb.prototype.createNameMapper=function(e){return new u.b(e)},Xtb}(s.a),f=function(){function XtbParser(){}return XtbParser.prototype.parse=function(e,t){this._bundleDepth=0,this._mlNodesByMsgId={};var n=(new r.a).parse(e,t,!0);return this._errors=n.errors,o.g(this,n.rootNodes),{mlNodesByMsgId:this._mlNodesByMsgId,errors:this._errors}},XtbParser.prototype.visitElement=function(e,t){switch(e.name){case c:this._bundleDepth++,this._bundleDepth>1&&this._addError(e,"<"+c+"> elements can not be nested"),o.g(this,e.children,null),this._bundleDepth--;break;case d:var n=e.attrs.find(function(e){return"id"===e.name});if(n){var r=n.value;this._mlNodesByMsgId.hasOwnProperty(r)?this._addError(e,"Duplicated translations for msg "+r):this._mlNodesByMsgId[r]=e.children}else this._addError(e,"<"+d+'> misses the "id" attribute');break;default:this._addError(e,"Unexpected tag")}},XtbParser.prototype.visitAttribute=function(e,t){},XtbParser.prototype.visitText=function(e,t){},XtbParser.prototype.visitComment=function(e,t){},XtbParser.prototype.visitExpansion=function(e,t){},XtbParser.prototype.visitExpansionCase=function(e,t){},XtbParser.prototype._addError=function(e,t){this._errors.push(new a.a(e.sourceSpan,t))},XtbParser}(),h=function(){function XmlToI18n(){}return XmlToI18n.prototype.convert=function(e){return this._errors=[],{i18nNodes:o.g(this,e),errors:this._errors}},XmlToI18n.prototype.visitText=function(e,t){return new i.f(e.value,e.sourceSpan)},XmlToI18n.prototype.visitExpansion=function(e,t){var n={};return o.g(this,e.cases).forEach(function(t){n[t.value]=new i.d(t.nodes,e.sourceSpan)}),new i.c(e.switchValue,e.type,n,e.sourceSpan)},XmlToI18n.prototype.visitExpansionCase=function(e,t){return{value:e.value,nodes:o.g(this,e.expression)}},XmlToI18n.prototype.visitElement=function(e,t){if(e.name===p){var n=e.attrs.find(function(e){return"name"===e.name});if(n)return new i.g("",n.value,e.sourceSpan);this._addError(e,"<"+p+'> misses the "name" attribute')}else this._addError(e,"Unexpected tag")},XmlToI18n.prototype.visitComment=function(e,t){},XmlToI18n.prototype.visitAttribute=function(e,t){},XmlToI18n.prototype._addError=function(e,t){this._errors.push(new a.a(e.sourceSpan,t))},XmlToI18n}()},function(e,t,n){"use strict";function assertComponent(e){if(!e.isComponent)throw new Error("Could not compile '"+n.i(a.c)(e.type)+"' because it is not a component.")}var o=n(1),r=n(349),i=n(165),a=n(14),s=n(72),u=n(73),l=n(7),c=n(20),d=n(126),p=n(171),g=n(10),f=n(628),h=n(629),m=n(174),y=n(129),b=n(32),v=n(130);n.d(t,"a",function(){return T});var _=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},E=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},T=function(){function JitCompiler(e,t,n,o,i,a,s,u,l){this._injector=e,this._metadataResolver=t,this._templateParser=n,this._styleCompiler=o,this._viewCompiler=i,this._ngModuleCompiler=a,this._directiveWrapperCompiler=s,this._compilerConfig=u,this._animationParser=l,this._compiledTemplateCache=new Map,this._compiledHostTemplateCache=new Map,this._compiledDirectiveWrapperCache=new Map,this._compiledNgModuleCache=new Map,this._animationCompiler=new r.a}return Object.defineProperty(JitCompiler.prototype,"injector",{get:function(){return this._injector},enumerable:!0,configurable:!0}),JitCompiler.prototype.compileModuleSync=function(e){return this._compileModuleAndComponents(e,!0).syncResult},JitCompiler.prototype.compileModuleAsync=function(e){return this._compileModuleAndComponents(e,!1).asyncResult},JitCompiler.prototype.compileModuleAndAllComponentsSync=function(e){return this._compileModuleAndAllComponents(e,!0).syncResult},JitCompiler.prototype.compileModuleAndAllComponentsAsync=function(e){return this._compileModuleAndAllComponents(e,!1).asyncResult},JitCompiler.prototype.getNgContentSelectors=function(e){var t=this._compiledTemplateCache.get(e);if(!t)throw new Error("The component "+n.i(l.e)(e)+" is not yet compiled!");return t.compMeta.template.ngContentSelectors},JitCompiler.prototype._compileModuleAndComponents=function(e,t){var n=this,o=this._loadModules(e,t),r=function(){return n._compileComponents(e,null),n._compileModule(e)};return t?new b.d(r()):new b.d(null,o.then(r))},JitCompiler.prototype._compileModuleAndAllComponents=function(e,t){var n=this,r=this._loadModules(e,t),i=function(){var t=[];return n._compileComponents(e,t),new o.ModuleWithComponentFactories(n._compileModule(e),t)};return t?new b.d(i()):new b.d(null,r.then(i))},JitCompiler.prototype._loadModules=function(e,t){var n=this,o=[],r=this._metadataResolver.getNgModuleMetadata(e);return r.transitiveModule.modules.forEach(function(e){o.push(n._metadataResolver.loadNgModuleDirectiveAndPipeMetadata(e.reference,t))}),Promise.all(o)},JitCompiler.prototype._compileModule=function(e){var t=this,r=this._compiledNgModuleCache.get(e);if(!r){var i=this._metadataResolver.getNgModuleMetadata(e),s=[this._metadataResolver.getProviderMetadata(new a.u(o.Compiler,{useFactory:function(){return new A(t,i.type.reference)}}))],u=this._ngModuleCompiler.compile(i,s);u.dependencies.forEach(function(e){e.placeholder.reference=t._assertComponentKnown(e.comp.reference,!0).proxyComponentFactory}),r=this._compilerConfig.useJit?n.i(h.a)("/"+n.i(a.c)(i.type)+"/module.ngfactory.js",u.statements,u.ngModuleFactoryVar):n.i(f.a)(u.statements,u.ngModuleFactoryVar),this._compiledNgModuleCache.set(i.type.reference,r)}return r},JitCompiler.prototype._compileComponents=function(e,t){var n=this,o=this._metadataResolver.getNgModuleMetadata(e),r=new Map,i=new Set;o.transitiveModule.modules.forEach(function(e){var o=n._metadataResolver.getNgModuleMetadata(e.reference);o.declaredDirectives.forEach(function(e){r.set(e.reference,o);var a=n._metadataResolver.getDirectiveMetadata(e.reference);if(n._compileDirectiveWrapper(a,o),a.isComponent&&(i.add(n._createCompiledTemplate(a,o)),t)){var s=n._createCompiledHostTemplate(a.type.reference,o);i.add(s),t.push(s.proxyComponentFactory)}})}),o.transitiveModule.modules.forEach(function(e){var t=n._metadataResolver.getNgModuleMetadata(e.reference);t.declaredDirectives.forEach(function(e){var t=n._metadataResolver.getDirectiveMetadata(e.reference);t.isComponent&&t.entryComponents.forEach(function(e){var t=r.get(e.reference);i.add(n._createCompiledHostTemplate(e.reference,t))})}),t.entryComponents.forEach(function(e){var t=r.get(e.reference);i.add(n._createCompiledHostTemplate(e.reference,t))})}),i.forEach(function(e){return n._compileTemplate(e)})},JitCompiler.prototype.clearCacheFor=function(e){this._compiledNgModuleCache.delete(e),this._metadataResolver.clearCacheFor(e),this._compiledHostTemplateCache.delete(e);var t=this._compiledTemplateCache.get(e);t&&this._compiledTemplateCache.delete(e)},JitCompiler.prototype.clearCache=function(){this._metadataResolver.clearCache(),this._compiledTemplateCache.clear(),this._compiledHostTemplateCache.clear(),this._compiledNgModuleCache.clear()},JitCompiler.prototype._createCompiledHostTemplate=function(e,t){if(!t)throw new Error("Component "+n.i(l.e)(e)+" is not part of any NgModule or the module has not been imported into your module.");var o=this._compiledHostTemplateCache.get(e);if(!o){var r=this._metadataResolver.getDirectiveMetadata(e);assertComponent(r);var i=function(){};i.overriddenName=n.i(a.c)(r.type)+"_Host";var s=n.i(a.v)(i,r);o=new S((!0),r.selector,r.type,s,t,[r.type]),this._compiledHostTemplateCache.set(e,o)}return o},JitCompiler.prototype._createCompiledTemplate=function(e,t){var n=this._compiledTemplateCache.get(e.type.reference);return n||(assertComponent(e),n=new S((!1),e.selector,e.type,e,t,t.transitiveModule.directives),this._compiledTemplateCache.set(e.type.reference,n)),n},JitCompiler.prototype._assertComponentKnown=function(e,t){var o=t?this._compiledHostTemplateCache.get(e):this._compiledTemplateCache.get(e);if(!o)throw new Error("Illegal state: Compiled view for component "+n.i(l.e)(e)+" (host: "+t+") does not exist!");return o},JitCompiler.prototype._assertDirectiveWrapper=function(e){var t=this._compiledDirectiveWrapperCache.get(e);if(!t)throw new Error("Illegal state: Directive wrapper for "+n.i(l.e)(e)+" has not been compiled!");return t},JitCompiler.prototype._compileDirectiveWrapper=function(e,t){var o,r=this._directiveWrapperCompiler.compile(e),i=r.statements;o=this._compilerConfig.useJit?n.i(h.a)("/"+n.i(a.c)(t.type)+"/"+n.i(a.c)(e.type)+"/wrapper.ngfactory.js",i,r.dirWrapperClassVar):n.i(f.a)(i,r.dirWrapperClassVar),this._compiledDirectiveWrapperCache.set(e.type.reference,o)},JitCompiler.prototype._compileTemplate=function(e){var t=this;if(!e.isCompiled){var o=e.compMeta,r=new Map,i=this._styleCompiler.compileComponent(o);i.externalStylesheets.forEach(function(e){r.set(e.meta.moduleUrl,e)}),this._resolveStylesCompileResult(i.componentStylesheet,r);var s=this._animationParser.parseComponent(o),u=e.directives.map(function(e){return t._metadataResolver.getDirectiveSummary(e.reference)}),l=e.ngModule.transitiveModule.pipes.map(function(e){return t._metadataResolver.getPipeSummary(e.reference)}),c=this._templateParser.parse(o,o.template.template,u,l,e.ngModule.schemas,n.i(a.c)(o.type)),d=this._animationCompiler.compile(n.i(a.c)(o.type),s),p=this._viewCompiler.compileComponent(o,c,g.g(i.componentStylesheet.stylesVar),l,d);p.dependencies.forEach(function(e){var n;if(e instanceof v.a){var o=e;n=t._assertComponentKnown(o.comp.reference,!1),o.placeholder.reference=n.proxyViewClass}else if(e instanceof v.b){var r=e;n=t._assertComponentKnown(r.comp.reference,!0),r.placeholder.reference=n.proxyComponentFactory}else if(e instanceof v.c){var i=e;i.placeholder.reference=t._assertDirectiveWrapper(i.dir.reference)}});var m,y=(b=i.componentStylesheet.statements).concat.apply(b,d.map(function(e){return e.statements})).concat(p.statements);m=this._compilerConfig.useJit?n.i(h.a)("/"+n.i(a.c)(e.ngModule.type)+"/"+n.i(a.c)(e.compType)+"/"+(e.isHost?"host":"component")+".ngfactory.js",y,p.viewClassVar):n.i(f.a)(y,p.viewClassVar),e.compiled(m);var b}},JitCompiler.prototype._resolveStylesCompileResult=function(e,t){var n=this;e.dependencies.forEach(function(e,o){var r=t.get(e.moduleUrl),i=n._resolveAndEvalStylesCompileResult(r,t);e.valuePlaceholder.reference=i})},JitCompiler.prototype._resolveAndEvalStylesCompileResult=function(e,t){return this._resolveStylesCompileResult(e,t),this._compilerConfig.useJit?n.i(h.a)("/"+e.meta.moduleUrl+".ngstyle.js",e.statements,e.stylesVar):n.i(f.a)(e.statements,e.stylesVar)},JitCompiler=_([n.i(c.a)(),E("design:paramtypes",[o.Injector,d.a,y.a,m.a,v.d,p.a,u.a,s.a,i.a])],JitCompiler)}(),S=function(){function CompiledTemplate(e,t,r,i,a,s){this.isHost=e,this.compType=r,this.compMeta=i,this.ngModule=a,this.directives=s,this._viewClass=null,this.isCompiled=!1;var u=this;this.proxyViewClass=function(){if(!u._viewClass)throw new Error("Illegal state: CompiledTemplate for "+n.i(l.e)(u.compType)+" is not compiled yet!");return u._viewClass.apply(this,arguments)},this.proxyComponentFactory=e?new o.ComponentFactory(t,this.proxyViewClass,r.reference):null}return CompiledTemplate.prototype.compiled=function(e){this._viewClass=e,this.proxyViewClass.prototype=e.prototype,this.isCompiled=!0},CompiledTemplate}(),A=function(){function ModuleBoundCompiler(e,t){this._delegate=e,this._ngModule=t}return Object.defineProperty(ModuleBoundCompiler.prototype,"_injector",{get:function(){return this._delegate.injector},enumerable:!0,configurable:!0}),ModuleBoundCompiler.prototype.compileModuleSync=function(e){return this._delegate.compileModuleSync(e)},ModuleBoundCompiler.prototype.compileModuleAsync=function(e){return this._delegate.compileModuleAsync(e)},ModuleBoundCompiler.prototype.compileModuleAndAllComponentsSync=function(e){return this._delegate.compileModuleAndAllComponentsSync(e)},ModuleBoundCompiler.prototype.compileModuleAndAllComponentsAsync=function(e){return this._delegate.compileModuleAndAllComponentsAsync(e)},ModuleBoundCompiler.prototype.getNgContentSelectors=function(e){return this._delegate.getNgContentSelectors(e)},ModuleBoundCompiler.prototype.clearCache=function(){this._delegate.clearCache()},ModuleBoundCompiler.prototype.clearCacheFor=function(e){this._delegate.clearCacheFor(e)},ModuleBoundCompiler}()},function(e,t,n){"use strict";var o=n(107),r=n(626);n.d(t,"a",function(){return a});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=function(e){function XmlParser(){e.call(this,r.a)}return i(XmlParser,e),XmlParser.prototype.parse=function(t,n,o){return void 0===o&&(o=!1),e.prototype.parse.call(this,t,n,o,null)},XmlParser}(o.b)},function(e,t,n){"use strict";function convertValueToOutputAst(e,t){return void 0===t&&(t=null),n.i(o.f)(e,new a,t)}var o=n(32),r=n(10);t.a=convertValueToOutputAst;var i="$quoted$",a=function(){function _ValueOutputAstTransformer(){}return _ValueOutputAstTransformer.prototype.visitArray=function(e,t){var i=this;return r.n(e.map(function(e){return n.i(o.f)(e,i,null)}),t)},_ValueOutputAstTransformer.prototype.visitStringMap=function(e,t){var a=this,s=[],u=new Set(e&&e[i]);return Object.keys(e).forEach(function(t){s.push(new r.G(t,n.i(o.f)(e[t],a,null),u.has(t)))}),new r.H(s,t)},_ValueOutputAstTransformer.prototype.visitPrimitive=function(e,t){return r.f(e,t)},_ValueOutputAstTransformer.prototype.visitOther=function(e,t){return e instanceof r.I?e:r.d({reference:e})},_ValueOutputAstTransformer}()},function(e,t,n){"use strict";function _transformProvider(e,t){var n=t.useExisting,o=t.useValue,r=t.deps;return{token:e.token,useClass:e.useClass,useExisting:n,useFactory:e.useFactory,useValue:o,deps:r,multi:e.multi}}function _transformProviderAst(e,t){var n=t.eager,o=t.providers;return new s.b(e.token,e.multiProvider,e.eager||n,o,e.providerType,e.lifecycleHooks,e.sourceSpan)}function _resolveProvidersFromDirectives(e,t,n){var o=new Map;e.forEach(function(e){var r={token:{identifier:e.type},useClass:e.type};_resolveProviders([r],e.isComponent?s.a.Component:s.a.Directive,!0,t,n,o)});var r=e.filter(function(e){return e.isComponent}).concat(e.filter(function(e){return!e.isComponent}));return r.forEach(function(e){_resolveProviders(e.providers,s.a.PublicService,!1,t,n,o),_resolveProviders(e.viewProviders,s.a.PrivateService,!1,t,n,o)}),o}function _resolveProviders(e,t,i,a,u,c){e.forEach(function(e){var d=c.get(n.i(o.a)(e.token));if(n.i(r.f)(d)&&!!d.multiProvider!=!!e.multi&&u.push(new l("Mixing multi and non multi provider is not possible for token "+n.i(o.b)(d.token),a)),d)e.multi||(d.providers.length=0),d.providers.push(e);else{var p=e.token.identifier&&e.token.identifier.lifecycleHooks?e.token.identifier.lifecycleHooks:[];d=new s.b(e.token,e.multi,i||p.length>0,[e],t,p,a),c.set(n.i(o.a)(e.token),d)}})}function _getViewQueries(e){var t=new Map;return e.viewQueries&&e.viewQueries.forEach(function(e){return _addQueryToTokenMap(t,e)}),t}function _getContentQueries(e){var t=new Map;return e.forEach(function(e){e.queries&&e.queries.forEach(function(e){return _addQueryToTokenMap(t,e)})}),t}function _addQueryToTokenMap(e,t){t.selectors.forEach(function(r){var i=e.get(n.i(o.a)(r));i||(i=[],e.set(n.i(o.a)(r),i)),i.push(t)})}var o=n(14),r=n(7),i=n(19),a=n(40),s=n(48);n.d(t,"a",function(){return c}),n.d(t,"b",function(){return d}),n.d(t,"c",function(){return p});var u=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},l=function(e){function ProviderError(t,n){e.call(this,n,t)}return u(ProviderError,e),ProviderError}(a.a),c=function(){function ProviderViewContext(e,t){var i=this;this.component=e,this.sourceSpan=t,this.errors=[],this.viewQueries=_getViewQueries(e),this.viewProviders=new Map,e.viewProviders.forEach(function(e){n.i(r.g)(i.viewProviders.get(n.i(o.a)(e.token)))&&i.viewProviders.set(n.i(o.a)(e.token),!0)})}return ProviderViewContext}(),d=function(){function ProviderElementContext(e,t,a,s,u,l,c){var d=this;this.viewContext=e,this._parent=t,this._isViewRoot=a,this._directiveAsts=s,this._sourceSpan=c,this._transformedProviders=new Map,this._seenProviders=new Map,this._hasViewContainer=!1,this._attrs={},u.forEach(function(e){return d._attrs[e.name]=e.value});var p=s.map(function(e){return e.directive});this._allProviders=_resolveProvidersFromDirectives(p,c,e.errors),this._contentQueries=_getContentQueries(p);var g=new Map;Array.from(this._allProviders.values()).forEach(function(e){d._addQueryReadsTo(e.token,g)}),l.forEach(function(e){d._addQueryReadsTo({value:e.name},g)}),n.i(r.f)(g.get(n.i(i.a)(i.b.ViewContainerRef)))&&(this._hasViewContainer=!0),Array.from(this._allProviders.values()).forEach(function(e){var t=e.eager||n.i(r.f)(g.get(n.i(o.a)(e.token)));t&&d._getOrCreateLocalProvider(e.providerType,e.token,!0)})}return ProviderElementContext.prototype.afterElement=function(){var e=this;Array.from(this._allProviders.values()).forEach(function(t){e._getOrCreateLocalProvider(t.providerType,t.token,!1)})},Object.defineProperty(ProviderElementContext.prototype,"transformProviders",{get:function(){return Array.from(this._transformedProviders.values())},enumerable:!0,configurable:!0}),Object.defineProperty(ProviderElementContext.prototype,"transformedDirectiveAsts",{get:function(){var e=this.transformProviders.map(function(e){return e.token.identifier}),t=this._directiveAsts.slice();return t.sort(function(t,n){return e.indexOf(t.directive.type)-e.indexOf(n.directive.type)}),t},enumerable:!0,configurable:!0}),Object.defineProperty(ProviderElementContext.prototype,"transformedHasViewContainer",{get:function(){return this._hasViewContainer},enumerable:!0,configurable:!0}),ProviderElementContext.prototype._addQueryReadsTo=function(e,t){this._getQueriesFor(e).forEach(function(i){var a=i.read||e;n.i(r.g)(t.get(n.i(o.a)(a)))&&t.set(n.i(o.a)(a),!0)})},ProviderElementContext.prototype._getQueriesFor=function(e){for(var t,r=[],i=this,a=0;null!==i;)t=i._contentQueries.get(n.i(o.a)(e)),t&&r.push.apply(r,t.filter(function(e){return e.descendants||a<=1})),i._directiveAsts.length>0&&a++,i=i._parent;return t=this.viewContext.viewQueries.get(n.i(o.a)(e)),t&&r.push.apply(r,t),r},ProviderElementContext.prototype._getOrCreateLocalProvider=function(e,t,i){var a=this,u=this._allProviders.get(n.i(o.a)(t));if(!u||(e===s.a.Directive||e===s.a.PublicService)&&u.providerType===s.a.PrivateService||(e===s.a.PrivateService||e===s.a.PublicService)&&u.providerType===s.a.Builtin)return null;var c=this._transformedProviders.get(n.i(o.a)(t));if(c)return c;if(n.i(r.f)(this._seenProviders.get(n.i(o.a)(t))))return this.viewContext.errors.push(new l("Cannot instantiate cyclic dependency! "+n.i(o.b)(t),this._sourceSpan)),null;this._seenProviders.set(n.i(o.a)(t),!0);var d=u.providers.map(function(e){var t,o=e.useValue,s=e.useExisting;if(n.i(r.f)(e.useExisting)){var l=a._getDependency(u.providerType,{token:e.useExisting},i);n.i(r.f)(l.token)?s=l.token:(s=null,o=l.value)}else if(e.useFactory){var c=e.deps||e.useFactory.diDeps;t=c.map(function(e){return a._getDependency(u.providerType,e,i)})}else if(e.useClass){var c=e.deps||e.useClass.diDeps;t=c.map(function(e){return a._getDependency(u.providerType,e,i)})}return _transformProvider(e,{useExisting:s,useValue:o,deps:t})});return c=_transformProviderAst(u,{eager:i,providers:d}),this._transformedProviders.set(n.i(o.a)(t),c),c},ProviderElementContext.prototype._getLocalDependency=function(e,t,a){if(void 0===a&&(a=null),t.isAttribute){var u=this._attrs[t.token.value];return{isValue:!0,value:null==u?null:u}}if(n.i(r.f)(t.token)){if(e===s.a.Directive||e===s.a.Component){if(n.i(o.a)(t.token)===n.i(i.a)(i.b.Renderer)||n.i(o.a)(t.token)===n.i(i.a)(i.b.ElementRef)||n.i(o.a)(t.token)===n.i(i.a)(i.b.ChangeDetectorRef)||n.i(o.a)(t.token)===n.i(i.a)(i.b.TemplateRef))return t;n.i(o.a)(t.token)===n.i(i.a)(i.b.ViewContainerRef)&&(this._hasViewContainer=!0)}if(n.i(o.a)(t.token)===n.i(i.a)(i.b.Injector))return t;if(n.i(r.f)(this._getOrCreateLocalProvider(e,t.token,a)))return t}return null},ProviderElementContext.prototype._getDependency=function(e,t,i){void 0===i&&(i=null);var a=this,u=i,c=null;if(t.isSkipSelf||(c=this._getLocalDependency(e,t,i)),t.isSelf)!c&&t.isOptional&&(c={isValue:!0,value:null});else{for(;!c&&a._parent;){var d=a;a=a._parent,d._isViewRoot&&(u=!1),c=a._getLocalDependency(s.a.PublicService,t,u)}c||(c=!t.isHost||this.viewContext.component.isHost||this.viewContext.component.type.reference===n.i(o.a)(t.token)||n.i(r.f)(this.viewContext.viewProviders.get(n.i(o.a)(t.token)))?t:t.isOptional?c={isValue:!0,value:null}:null)}return c||this.viewContext.errors.push(new l("No provider for "+n.i(o.b)(t.token),this._sourceSpan)),c},ProviderElementContext}(),p=function(){function NgModuleProviderAnalyzer(e,t,n){var o=this;this._transformedProviders=new Map,this._seenProviders=new Map,this._errors=[],this._allProviders=new Map,e.transitiveModule.modules.forEach(function(e){var t={token:{identifier:e},useClass:e};_resolveProviders([t],s.a.PublicService,!0,n,o._errors,o._allProviders)}),_resolveProviders(e.transitiveModule.providers.map(function(e){return e.provider}).concat(t),s.a.PublicService,!1,n,this._errors,this._allProviders)}return NgModuleProviderAnalyzer.prototype.parse=function(){var e=this;if(Array.from(this._allProviders.values()).forEach(function(t){e._getOrCreateLocalProvider(t.token,t.eager)}),this._errors.length>0){var t=this._errors.join("\n");throw new Error("Provider parse errors:\n"+t)}return Array.from(this._transformedProviders.values())},NgModuleProviderAnalyzer.prototype._getOrCreateLocalProvider=function(e,t){var i=this,a=this._allProviders.get(n.i(o.a)(e));if(!a)return null;var s=this._transformedProviders.get(n.i(o.a)(e));if(s)return s;if(n.i(r.f)(this._seenProviders.get(n.i(o.a)(e))))return this._errors.push(new l("Cannot instantiate cyclic dependency! "+n.i(o.b)(e),a.sourceSpan)),
null;this._seenProviders.set(n.i(o.a)(e),!0);var u=a.providers.map(function(e){var o,s=e.useValue,u=e.useExisting;if(n.i(r.f)(e.useExisting)){var l=i._getDependency({token:e.useExisting},t,a.sourceSpan);n.i(r.f)(l.token)?u=l.token:(u=null,s=l.value)}else if(e.useFactory){var c=e.deps||e.useFactory.diDeps;o=c.map(function(e){return i._getDependency(e,t,a.sourceSpan)})}else if(e.useClass){var c=e.deps||e.useClass.diDeps;o=c.map(function(e){return i._getDependency(e,t,a.sourceSpan)})}return _transformProvider(e,{useExisting:u,useValue:s,deps:o})});return s=_transformProviderAst(a,{eager:t,providers:u}),this._transformedProviders.set(n.i(o.a)(e),s),s},NgModuleProviderAnalyzer.prototype._getDependency=function(e,t,a){void 0===t&&(t=null);var s=!1;!e.isSkipSelf&&n.i(r.f)(e.token)&&(n.i(o.a)(e.token)===n.i(i.a)(i.b.Injector)||n.i(o.a)(e.token)===n.i(i.a)(i.b.ComponentFactoryResolver)?s=!0:n.i(r.f)(this._getOrCreateLocalProvider(e.token,t))&&(s=!0));var u=e;return e.isSelf&&!s&&(e.isOptional?u={isValue:!0,value:null}:this._errors.push(new l("No provider for "+n.i(o.b)(e.token),a))),u},NgModuleProviderAnalyzer}()},function(e,t,n){"use strict";function isStyleUrlResolvable(e){if(null==e||0===e.length||"/"==e[0])return!1;var t=e.match(a);return null===t||"package"==t[1]||"asset"==t[1]}function extractStyleUrls(e,t,n){var a=[],s=n.replace(i,"").replace(r,function(){for(var n=[],o=0;o<arguments.length;o++)n[o-0]=arguments[o];var r=n[1]||n[2];return isStyleUrlResolvable(r)?(a.push(e.resolve(t,r)),""):n[0]});return new o(s,a)}t.a=isStyleUrlResolvable,t.b=extractStyleUrls;var o=function(){function StyleWithImports(e,t){this.style=e,this.styleUrls=t}return StyleWithImports}(),r=/@import\s+(?:url\()?\s*(?:(?:['"]([^'"]*))|([^;\)\s]*))[^;]*;?/g,i=/\/\*.+?\*\//g,a=/^([^:\/?#]+):/},function(e,t,n){"use strict";function _isAnimationLabel(e){return"@"==e[0]}function calcPossibleSecurityContexts(e,t,n,r){var i=[];return s.a.parse(t).forEach(function(t){var o=t.element?[t.element]:e.allKnownElementNames(),a=new Set(t.notSelectors.filter(function(e){return e.isElementSelector()}).map(function(e){return e.element})),s=o.filter(function(e){return!a.has(e)});i.push.apply(i,s.map(function(t){return e.securityContext(t,n,r)}))}),0===i.length?[o.SecurityContext.NONE]:Array.from(new Set(i)).sort()}var o=n(1),r=n(244),i=n(87),a=n(40),s=n(173),u=n(32),l=n(48);n.d(t,"a",function(){return b});var c=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},d=".",p="attr",g="class",f="style",h="animate-",m={};m.DEFAULT=0,m.LITERAL_ATTR=1,m.ANIMATION=2,m[m.DEFAULT]="DEFAULT",m[m.LITERAL_ATTR]="LITERAL_ATTR",m[m.ANIMATION]="ANIMATION";var y=function(){function BoundProperty(e,t,n,o){this.name=e,this.expression=t,this.type=n,this.sourceSpan=o}return Object.defineProperty(BoundProperty.prototype,"isLiteral",{get:function(){return this.type===m.LITERAL_ATTR},enumerable:!0,configurable:!0}),Object.defineProperty(BoundProperty.prototype,"isAnimation",{get:function(){return this.type===m.ANIMATION},enumerable:!0,configurable:!0}),BoundProperty}(),b=function(){function BindingParser(e,t,n,o,r){var i=this;this._exprParser=e,this._interpolationConfig=t,this._schemaRegistry=n,this._targetErrors=r,this.pipesByName=new Map,o.forEach(function(e){return i.pipesByName.set(e.name,e)})}return BindingParser.prototype.createDirectiveHostPropertyAsts=function(e,t){var n=this;if(e.hostProperties){var o=[];return Object.keys(e.hostProperties).forEach(function(r){var i=e.hostProperties[r];"string"==typeof i?n.parsePropertyBinding(r,i,!0,t,[],o):n._reportError('Value of the host property binding "'+r+'" needs to be a string representing an expression but got "'+i+'" ('+typeof i+")",t)}),o.map(function(t){return n.createElementPropertyAst(e.selector,t)})}},BindingParser.prototype.createDirectiveHostEventAsts=function(e,t){var n=this;if(e.hostListeners){var o=[];return Object.keys(e.hostListeners).forEach(function(r){var i=e.hostListeners[r];"string"==typeof i?n.parseEvent(r,i,t,[],o):n._reportError('Value of the host listener "'+r+'" needs to be a string representing an expression but got "'+i+'" ('+typeof i+")",t)}),o}},BindingParser.prototype.parseInterpolation=function(e,t){var n=t.start.toString();try{var o=this._exprParser.parseInterpolation(e,n,this._interpolationConfig);return o&&this._reportExpressionParserErrors(o.errors,t),this._checkPipes(o,t),o}catch(r){return this._reportError(""+r,t),this._exprParser.wrapLiteralPrimitive("ERROR",n)}},BindingParser.prototype.parseInlineTemplateBinding=function(e,t,n,o,r,i){for(var a=this._parseTemplateBindings(e,t,n),s=0;s<a.length;s++){var u=a[s];u.keyIsVar?i.push(new l.c(u.key,u.name,n)):u.expression?this._parsePropertyAst(u.key,u.expression,n,o,r):(o.push([u.key,""]),this.parseLiteralAttr(u.key,null,n,o,r))}},BindingParser.prototype._parseTemplateBindings=function(e,t,n){var o=this,r=n.start.toString();try{var i=this._exprParser.parseTemplateBindings(e,t,r);return this._reportExpressionParserErrors(i.errors,n),i.templateBindings.forEach(function(e){e.expression&&o._checkPipes(e.expression,n)}),i.warnings.forEach(function(e){o._reportError(e,n,a.e.WARNING)}),i.templateBindings}catch(s){return this._reportError(""+s,n),[]}},BindingParser.prototype.parseLiteralAttr=function(e,t,n,o,r){_isAnimationLabel(e)?(e=e.substring(1),t&&this._reportError('Assigning animation triggers via @prop="exp" attributes with an expression is invalid. Use property bindings (e.g. [@prop]="exp") or use an attribute without a value (e.g. @prop) instead.',n,a.e.FATAL),this._parseAnimation(e,t,n,o,r)):r.push(new y(e,this._exprParser.wrapLiteralPrimitive(t,""),m.LITERAL_ATTR,n))},BindingParser.prototype.parsePropertyBinding=function(e,t,n,o,r,i){var a=!1;e.startsWith(h)?(a=!0,e=e.substring(h.length)):_isAnimationLabel(e)&&(a=!0,e=e.substring(1)),a?this._parseAnimation(e,t,o,r,i):this._parsePropertyAst(e,this._parseBinding(t,n,o),o,r,i)},BindingParser.prototype.parsePropertyInterpolation=function(e,t,n,o,r){var i=this.parseInterpolation(t,n);return!!i&&(this._parsePropertyAst(e,i,n,o,r),!0)},BindingParser.prototype._parsePropertyAst=function(e,t,n,o,r){o.push([e,t.source]),r.push(new y(e,t,m.DEFAULT,n))},BindingParser.prototype._parseAnimation=function(e,t,n,o,r){var i=this._parseBinding(t||"null",!1,n);o.push([e,i.source]),r.push(new y(e,i,m.ANIMATION,n))},BindingParser.prototype._parseBinding=function(e,t,n){var o=n.start.toString();try{var r=t?this._exprParser.parseSimpleBinding(e,o,this._interpolationConfig):this._exprParser.parseBinding(e,o,this._interpolationConfig);return r&&this._reportExpressionParserErrors(r.errors,n),this._checkPipes(r,n),r}catch(i){return this._reportError(""+i,n),this._exprParser.wrapLiteralPrimitive("ERROR",o)}},BindingParser.prototype.createElementPropertyAst=function(e,t){if(t.isAnimation)return new l.d(t.name,l.e.Animation,o.SecurityContext.NONE,(!1),t.expression,null,t.sourceSpan);var r,a,s=null,u=null,c=t.name.split(d);if(c.length>1)if(c[0]==p){u=c[1],this._validatePropertyOrAttributeName(u,t.sourceSpan,!0),a=calcPossibleSecurityContexts(this._schemaRegistry,e,u,!0);var h=u.indexOf(":");if(h>-1){var m=u.substring(0,h),y=u.substring(h+1);u=n.i(i.d)(m,y)}r=l.e.Attribute}else c[0]==g?(u=c[1],r=l.e.Class,a=[o.SecurityContext.NONE]):c[0]==f&&(s=c.length>2?c[2]:null,u=c[1],r=l.e.Style,a=[o.SecurityContext.STYLE]);return null===u&&(u=this._schemaRegistry.getMappedPropName(t.name),a=calcPossibleSecurityContexts(this._schemaRegistry,e,u,!1),r=l.e.Property,this._validatePropertyOrAttributeName(u,t.sourceSpan,!1)),new l.d(u,r,1===a.length?a[0]:null,a.length>1,t.expression,s,t.sourceSpan)},BindingParser.prototype.parseEvent=function(e,t,n,o,r){_isAnimationLabel(e)?(e=e.substr(1),this._parseAnimationEvent(e,t,n,r)):this._parseEvent(e,t,n,o,r)},BindingParser.prototype._parseAnimationEvent=function(e,t,o,r){var i=n.i(u.b)(e,[e,""]),a=i[0],s=i[1].toLowerCase();if(s)switch(s){case"start":case"done":var c=this._parseAction(t,o);r.push(new l.f(a,null,s,c,o));break;default:this._reportError('The provided animation output phase value "'+s+'" for "@'+a+'" is not supported (use start or done)',o)}else this._reportError("The animation trigger output event (@"+a+") is missing its phase value name (start or done are currently supported)",o)},BindingParser.prototype._parseEvent=function(e,t,o,r,i){var a=n.i(u.a)(e,[null,e]),s=a[0],c=a[1],d=this._parseAction(t,o);r.push([e,d.source]),i.push(new l.f(c,s,null,d,o))},BindingParser.prototype._parseAction=function(e,t){var n=t.start.toString();try{var o=this._exprParser.parseAction(e,n,this._interpolationConfig);return o&&this._reportExpressionParserErrors(o.errors,t),!o||o.ast instanceof r.g?(this._reportError("Empty expressions are not allowed",t),this._exprParser.wrapLiteralPrimitive("ERROR",n)):(this._checkPipes(o,t),o)}catch(i){return this._reportError(""+i,t),this._exprParser.wrapLiteralPrimitive("ERROR",n)}},BindingParser.prototype._reportError=function(e,t,n){void 0===n&&(n=a.e.FATAL),this._targetErrors.push(new a.a(t,e,n))},BindingParser.prototype._reportExpressionParserErrors=function(e,t){for(var n=0,o=e;n<o.length;n++){var r=o[n];this._reportError(r.message,t)}},BindingParser.prototype._checkPipes=function(e,t){var n=this;if(e){var o=new v;e.visit(o),o.pipes.forEach(function(e,o){n.pipesByName.has(o)||n._reportError("The pipe '"+o+"' could not be found",new a.d(t.start.moveBy(e.span.start),t.start.moveBy(e.span.end)))})}},BindingParser.prototype._validatePropertyOrAttributeName=function(e,t,n){var o=n?this._schemaRegistry.validateAttribute(e):this._schemaRegistry.validateProperty(e);o.error&&this._reportError(o.msg,t,a.e.FATAL)},BindingParser}(),v=function(e){function PipeCollector(){e.apply(this,arguments),this.pipes=new Map}return c(PipeCollector,e),PipeCollector.prototype.visitPipe=function(e,t){return this.pipes.set(e.name,e),e.exp.visit(this),this.visitAll(e.args,t),null},PipeCollector}(r.y)},function(e,t,n){"use strict";function preparseElement(e){var t=null,m=null,y=null,b=!1,v=null;e.attrs.forEach(function(e){var n=e.name.toLowerCase();n==r?t=e.value:n==u?m=e.value:n==s?y=e.value:e.name==p?b=!0:e.name==g&&e.value.length>0&&(v=e.value)}),t=normalizeNgContentSelect(t);var _=e.name.toLowerCase(),E=f.OTHER;return n.i(o.e)(_)[1]==i?E=f.NG_CONTENT:_==c?E=f.STYLE:_==d?E=f.SCRIPT:_==a&&y==l&&(E=f.STYLESHEET),new h(E,t,m,b,v)}function normalizeNgContentSelect(e){return null===e||0===e.length?"*":e}var o=n(87);t.a=preparseElement,n.d(t,"b",function(){return f});var r="select",i="ng-content",a="link",s="rel",u="href",l="stylesheet",c="style",d="script",p="ngNonBindable",g="ngProjectAs",f={};f.NG_CONTENT=0,f.STYLE=1,f.STYLESHEET=2,f.SCRIPT=3,f.OTHER=4,f[f.NG_CONTENT]="NG_CONTENT",f[f.STYLE]="STYLE",f[f.STYLESHEET]="STYLESHEET",f[f.SCRIPT]="SCRIPT",f[f.OTHER]="OTHER";var h=function(){function PreparsedElement(e,t,n,o,r){this.type=e,this.selectAttr=t,this.hrefAttr=n,this.nonBindable=o,this.projectAs=r}return PreparsedElement}()},function(e,t,n){"use strict";function createInjectInternalCondition(e,t,o,i){var a;return a=t>0?u.f(e).lowerEquals(g.a.requestNodeIndex).and(g.a.requestNodeIndex.lowerEquals(u.f(e+t))):u.f(e).identical(g.a.requestNodeIndex),new u.e(g.a.token.identical(n.i(r.c)(o.token)).and(a),[new u.t(i)])}function createProviderProperty(e,t,n,o,r){var i,a,s=r.view;if(n?(i=u.n(t),a=new u.u(u.h)):(i=t[0],a=t[0].type),a||(a=u.h),o)s.fields.push(new u.a(e,a)),s.createMethod.addStmt(u.c.prop(e).set(i).toStmt());else{var l="_"+e;s.fields.push(new u.a(l,a));var c=new d.a(s);c.resetDebugInfo(r.nodeIndex,r.sourceAst),c.addStmt(new u.e(u.c.prop(l).isBlank(),[u.c.prop(l).set(i).toStmt()])),c.addStmt(new u.t(u.c.prop(l))),s.getters.push(new u.K(e,c.finish(),a))}return u.c.prop(e)}var o=n(14),r=n(46),i=n(73),a=n(7),s=n(19),u=n(10),l=n(363),c=n(48),d=n(252),p=n(369),g=n(175),f=n(253),h=n(89);n.d(t,"b",function(){return y}),n.d(t,"a",function(){return b});var m=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},y=function(){function CompileNode(e,t,n,o,r){this.parent=e,this.view=t,this.nodeIndex=n,this.renderNode=o,this.sourceAst=r}return CompileNode.prototype.isNull=function(){return!this.renderNode},CompileNode.prototype.isRootElement=function(){return this.view!=this.parent.view},CompileNode}(),b=function(e){function CompileElement(t,o,r,i,a,l,c,d,p,g,f){var h=this;e.call(this,t,o,r,i,a),this.component=l,this._directives=c,this._resolvedProvidersArray=d,this.hasViewContainer=p,this.hasEmbeddedView=g,this.compViewExpr=null,this.instances=new Map,this.directiveWrapperInstance=new Map,this._queryCount=0,this._queries=new Map,this.contentNodesByNgContentIndex=null,this.referenceTokens={},f.forEach(function(e){return h.referenceTokens[e.name]=e.value}),this.elementRef=u.d(n.i(s.e)(s.b.ElementRef)).instantiate([this.renderNode]),this.instances.set(n.i(s.a)(s.b.ElementRef),this.elementRef),this.instances.set(n.i(s.a)(s.b.Injector),u.c.callMethod("injector",[u.f(this.nodeIndex)])),this.instances.set(n.i(s.a)(s.b.Renderer),u.c.prop("renderer")),(this.hasViewContainer||this.hasEmbeddedView)&&this._createViewContainer(),this.component&&this._createComponentFactoryResolver()}return m(CompileElement,e),CompileElement.createNull=function(){return new CompileElement(null,null,null,null,null,null,[],[],(!1),(!1),[])},CompileElement.prototype._createViewContainer=function(){var e="_vc_"+this.nodeIndex,t=this.isRootElement()?null:this.parent.nodeIndex;this.view.fields.push(new u.a(e,u.B(n.i(s.e)(s.b.ViewContainer)),[u.b.Private]));var o=u.c.prop(e).set(u.d(n.i(s.e)(s.b.ViewContainer)).instantiate([u.f(this.nodeIndex),u.f(t),u.c,this.renderNode])).toStmt();this.view.createMethod.addStmt(o),this.viewContainer=u.c.prop(e),this.instances.set(n.i(s.a)(s.b.ViewContainer),this.viewContainer),this.view.viewContainers.push(this.viewContainer)},CompileElement.prototype._createComponentFactoryResolver=function(){var e=this,t=this.component.entryComponents.map(function(t){var n={reference:null};return e.view.targetDependencies.push(new f.a(t,n)),n});if(t&&0!==t.length){var o=u.d(n.i(s.e)(s.b.CodegenComponentFactoryResolver)).instantiate([u.n(t.map(function(e){return u.d(e)})),n.i(h.b)(this.view,n.i(s.d)(s.b.ComponentFactoryResolver),!1)]),r={token:n.i(s.d)(s.b.ComponentFactoryResolver),useValue:o};this._resolvedProvidersArray.unshift(new c.b(r.token,(!1),(!0),[r],c.a.PrivateService,[],this.sourceAst.sourceSpan))}},CompileElement.prototype.setComponentView=function(e){this.compViewExpr=e,this.contentNodesByNgContentIndex=new Array(this.component.template.ngContentSelectors.length);for(var t=0;t<this.contentNodesByNgContentIndex.length;t++)this.contentNodesByNgContentIndex[t]=[]},CompileElement.prototype.setEmbeddedView=function(e){if(this.embeddedView=e,n.i(a.f)(e)){var t=u.d(n.i(s.e)(s.b.TemplateRef_)).instantiate([u.c,u.f(this.nodeIndex),this.renderNode]),o={token:n.i(s.d)(s.b.TemplateRef),useValue:t};this._resolvedProvidersArray.unshift(new c.b(o.token,(!1),(!0),[o],c.a.Builtin,[],this.sourceAst.sourceSpan))}},CompileElement.prototype.beforeChildren=function(){var e=this;this.hasViewContainer&&this.instances.set(n.i(s.a)(s.b.ViewContainerRef),this.viewContainer.prop("vcRef")),this._resolvedProviders=new Map,this._resolvedProvidersArray.forEach(function(t){return e._resolvedProviders.set(n.i(o.a)(t.token),t)}),Array.from(this._resolvedProviders.values()).forEach(function(t){var r=t.providerType===c.a.Component||t.providerType===c.a.Directive,a=t.providers.map(function(o){if(o.useExisting)return e._getDependency(t.providerType,{token:o.useExisting});if(o.useFactory){var a=o.deps||o.useFactory.diDeps,s=a.map(function(n){return e._getDependency(t.providerType,n)});return u.d(o.useFactory).callFn(s)}if(o.useClass){var a=o.deps||o.useClass.diDeps,s=a.map(function(n){return e._getDependency(t.providerType,n)});if(r){var c={reference:null};return e.view.targetDependencies.push(new f.b(o.useClass,i.a.dirWrapperClassName(o.useClass),c)),i.b.create(c,s)}return u.d(o.useClass).instantiate(s,u.B(o.useClass))}return n.i(l.a)(o.useValue)}),s="_"+n.i(o.b)(t.token)+"_"+e.nodeIndex+"_"+e.instances.size,d=createProviderProperty(s,a,t.multiProvider,t.eager,e);r?(e.directiveWrapperInstance.set(n.i(o.a)(t.token),d),e.instances.set(n.i(o.a)(t.token),i.b.context(d))):e.instances.set(n.i(o.a)(t.token),d)});for(var t=function(t){var i=r._directives[t],a=r.instances.get(n.i(o.a)(n.i(s.c)(i.type)));i.queries.forEach(function(t){e._addQuery(t,a)})},r=this,a=0;a<this._directives.length;a++)t(a);Object.keys(this.referenceTokens).forEach(function(t){var r,i=e.referenceTokens[t];r=i?e.instances.get(n.i(o.a)(i)):e.renderNode,e.view.locals.set(t,r)})},CompileElement.prototype.afterChildren=function(e){var t=this;Array.from(this._resolvedProviders.values()).forEach(function(r){var i=t.instances.get(n.i(o.a)(r.token)),a=r.providerType===c.a.PrivateService?0:e;t.view.injectorGetMethod.addStmt(createInjectInternalCondition(t.nodeIndex,a,r,i))})},CompileElement.prototype.finish=function(){var e=this;Array.from(this._queries.values()).forEach(function(t){return t.forEach(function(t){return t.generateStatements(e.view.createMethod,e.view.updateContentQueriesMethod)})})},CompileElement.prototype.addContentNode=function(e,t){this.contentNodesByNgContentIndex[e].push(t)},CompileElement.prototype.getComponent=function(){return n.i(a.f)(this.component)?this.instances.get(n.i(o.a)(n.i(s.c)(this.component.type))):null},CompileElement.prototype.getProviderTokens=function(){return Array.from(this._resolvedProviders.values()).map(function(e){return e.token})},CompileElement.prototype.getQueriesFor=function(e){for(var t,r=[],i=this,s=0;!i.isNull();)t=i._queries.get(n.i(o.a)(e)),n.i(a.f)(t)&&r.push.apply(r,t.filter(function(e){return e.meta.descendants||s<=1})),i._directives.length>0&&s++,i=i.parent;return t=this.view.componentView.viewQueries.get(n.i(o.a)(e)),n.i(a.f)(t)&&r.push.apply(r,t),r},CompileElement.prototype._addQuery=function(e,t){var r="_query_"+n.i(o.b)(e.selectors[0])+"_"+this.nodeIndex+"_"+this._queryCount++,i=n.i(p.a)(r,this.view),a=new p.b(e,i,t,this.view);return n.i(p.c)(this._queries,a),a},CompileElement.prototype._getLocalDependency=function(e,t){var r=null;if(n.i(a.f)(t.token)){if(!r&&n.i(o.a)(t.token)===n.i(s.a)(s.b.ChangeDetectorRef))return e===c.a.Component?this.compViewExpr.prop("ref"):n.i(h.a)(u.c.prop("ref"),this.view,this.view.componentView);if(!r){var i=this._resolvedProviders.get(n.i(o.a)(t.token));if(i&&(e===c.a.Directive||e===c.a.PublicService)&&i.providerType===c.a.PrivateService)return null;r=this.instances.get(n.i(o.a)(t.token))}}return r},CompileElement.prototype._getDependency=function(e,t){var o=this,r=null;for(t.isValue&&(r=u.f(t.value)),r||t.isSkipSelf||(r=this._getLocalDependency(e,t));!r&&!o.parent.isNull();)o=o.parent,r=o._getLocalDependency(c.a.PublicService,{token:t.token});return r||(r=n.i(h.b)(this.view,t.token,t.isOptional)),r||(r=u.k),n.i(h.a)(r,this.view,o.view)},CompileElement}(y)},function(e,t,n){"use strict";function createQueryValues(e){return r.a.flatten(e.values.map(function(e){return e instanceof u?mapNestedViews(e.view.declarationElement.viewContainer,e.view,createQueryValues(e)):e}))}function mapNestedViews(e,t,n){var o=n.map(function(e){return a.S(a.c.name,a.g("nestedView"),e)});return e.callMethod("mapNestedViews",[a.g(t.className),a.s([new a.r("nestedView",t.classType)],[new a.t(a.n(o))],a.h)])}function createQueryList(e,t){t.fields.push(new a.a(e,a.B(n.i(i.e)(i.b.QueryList),[a.h])));var o=a.c.prop(e);return t.createMethod.addStmt(a.c.prop(e).set(a.d(n.i(i.e)(i.b.QueryList),[a.h]).instantiate([])).toStmt()),o}function addQueryToTokenMap(e,t){t.meta.selectors.forEach(function(r){var i=e.get(n.i(o.a)(r));i||(i=[],e.set(n.i(o.a)(r),i)),i.push(t)})}var o=n(14),r=n(85),i=n(19),a=n(10),s=n(89);n.d(t,"b",function(){return l}),t.a=createQueryList,t.c=addQueryToTokenMap;var u=function(){function ViewQueryValues(e,t){this.view=e,this.values=t}return ViewQueryValues}(),l=function(){function CompileQuery(e,t,n,o){this.meta=e,this.queryList=t,this.ownerDirectiveExpression=n,this.view=o,this._values=new u(o,[])}return CompileQuery.prototype.addValue=function(e,t){for(var o=t,r=[];o&&o!==this.view;){var i=o.declarationElement;r.unshift(i),o=i.view}var a=n.i(s.a)(this.queryList,t,this.view),l=this._values;r.forEach(function(e){var t=l.values.length>0?l.values[l.values.length-1]:null;if(t instanceof u&&t.view===e.embeddedView)l=t;else{var n=new u(e.embeddedView,[]);l.values.push(n),l=n}}),l.values.push(e),r.length>0&&t.dirtyParentQueriesMethod.addStmt(a.callMethod("setDirty",[]).toStmt())},CompileQuery.prototype._isStatic=function(){return!this._values.values.some(function(e){return e instanceof u})},CompileQuery.prototype.generateStatements=function(e,t){var n=createQueryValues(this._values),o=[this.queryList.callMethod("reset",[a.n(n)]).toStmt()];if(this.ownerDirectiveExpression){var r=this.meta.first?this.queryList.prop("first"):this.queryList;o.push(this.ownerDirectiveExpression.prop(this.meta.propertyName).set(r).toStmt())}this.meta.first||o.push(this.queryList.callMethod("notifyOnChanges",[]).toStmt()),this.meta.first&&this._isStatic()?e.addStmts(o):t.addStmt(new a.e(this.queryList.prop("dirty"),o))},CompileQuery}()},function(e,t,n){"use strict";function getViewType(e,t){return t>0?s.l.EMBEDDED:e.isHost?s.l.HOST:s.l.COMPONENT}var o=n(14),r=n(122),i=n(7),a=n(10),s=n(17),u=n(252),l=n(634),c=n(369),d=n(89);n.d(t,"b",function(){return p}),n.d(t,"a",function(){return g}),n.d(t,"c",function(){return f});var p={};p.Node=0,p.ViewContainer=1,p.NgContent=2,p[p.Node]="Node",p[p.ViewContainer]="ViewContainer",p[p.NgContent]="NgContent";var g=function(){function CompileViewRootNode(e,t,n){this.type=e,this.expr=t,this.ngContentIndex=n}return CompileViewRootNode}(),f=function(){function CompileView(e,t,r,i,l,p,g,f,h){var m=this;this.component=e,this.genConfig=t,this.pipeMetas=r,this.styles=i,this.animations=l,this.viewIndex=p,this.declarationElement=g,this.templateVariableBindings=f,this.targetDependencies=h,this.viewChildren=[],this.nodes=[],this.rootNodes=[],this.lastRenderNode=a.k,this.viewContainers=[],this.methods=[],this.ctorStmts=[],this.fields=[],this.getters=[],this.disposables=[],this.purePipes=new Map,this.pipes=[],this.locals=new Map,this.literalArrayCount=0,this.literalMapCount=0,this.pipeCount=0,this.createMethod=new u.a(this),this.animationBindingsMethod=new u.a(this),this.injectorGetMethod=new u.a(this),this.updateContentQueriesMethod=new u.a(this),this.dirtyParentQueriesMethod=new u.a(this),this.updateViewQueriesMethod=new u.a(this),this.detectChangesInInputsMethod=new u.a(this),this.detectChangesRenderPropertiesMethod=new u.a(this),this.afterContentLifecycleCallbacksMethod=new u.a(this),this.afterViewLifecycleCallbacksMethod=new u.a(this),this.destroyMethod=new u.a(this),this.detachMethod=new u.a(this),this.viewType=getViewType(e,p),this.className=n.i(d.c)(e,p),this.classType=a.T(a.g(this.className)),this.classExpr=a.g(this.className),this.viewType===s.l.COMPONENT||this.viewType===s.l.HOST?this.componentView=this:this.componentView=this.declarationElement.view.componentView,this.componentContext=n.i(d.a)(a.c.prop("context"),this,this.componentView);var y=new Map;if(this.viewType===s.l.COMPONENT){var b=a.c.prop("context");this.component.viewQueries.forEach(function(e,t){var r="_viewQuery_"+n.i(o.b)(e.selectors[0])+"_"+t,i=n.i(c.a)(r,m),a=new c.b(e,i,b,m);n.i(c.c)(y,a)})}this.viewQueries=y,f.forEach(function(e){m.locals.set(e[1],a.c.prop("context").prop(e[0]))}),this.declarationElement.isNull()||this.declarationElement.setEmbeddedView(this)}return CompileView.prototype.callPipe=function(e,t,n){return l.a.call(this,e,[t].concat(n))},CompileView.prototype.getLocal=function(e){if(e==r.c.event.name)return r.c.event;for(var t=this,o=t.locals.get(e);!o&&n.i(i.f)(t.declarationElement.view);)t=t.declarationElement.view,o=t.locals.get(e);return n.i(i.f)(o)?n.i(d.a)(o,this,t):null},CompileView.prototype.finish=function(){var e=this;Array.from(this.viewQueries.values()).forEach(function(t){return t.forEach(function(t){return t.generateStatements(e.createMethod,e.updateViewQueriesMethod)})})},CompileView}()},function(e,t,n){"use strict";n.d(t,"a",function(){return o}),n.d(t,"b",function(){return r}),n.d(t,"c",function(){return i}),n.d(t,"d",function(){return a});var o="true",r="*",i="*",a="void"},function(e,t,n){"use strict";var o=n(8);n.d(t,"a",function(){return r});var r=function(){function AnimationGroupPlayer(e){var t=this;this._players=e,this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this.parentPlayer=null;var r=0,i=this._players.length;0==i?n.i(o.l)(function(){return t._onFinish()}):this._players.forEach(function(e){e.parentPlayer=t,e.onDone(function(){++r>=i&&t._onFinish()})})}return AnimationGroupPlayer.prototype._onFinish=function(){this._finished||(this._finished=!0,this._onDoneFns.forEach(function(e){return e()}),this._onDoneFns=[])},AnimationGroupPlayer.prototype.init=function(){this._players.forEach(function(e){return e.init()})},AnimationGroupPlayer.prototype.onStart=function(e){this._onStartFns.push(e)},AnimationGroupPlayer.prototype.onDone=function(e){this._onDoneFns.push(e)},AnimationGroupPlayer.prototype.hasStarted=function(){return this._started},AnimationGroupPlayer.prototype.play=function(){n.i(o.d)(this.parentPlayer)||this.init(),this.hasStarted()||(this._onStartFns.forEach(function(e){return e()}),this._onStartFns=[],this._started=!0),this._players.forEach(function(e){return e.play()})},AnimationGroupPlayer.prototype.pause=function(){this._players.forEach(function(e){return e.pause()})},AnimationGroupPlayer.prototype.restart=function(){this._players.forEach(function(e){return e.restart()})},AnimationGroupPlayer.prototype.finish=function(){this._onFinish(),this._players.forEach(function(e){return e.finish()})},AnimationGroupPlayer.prototype.destroy=function(){this._destroyed||(this._onFinish(),this._players.forEach(function(e){return e.destroy()}),this._destroyed=!0)},AnimationGroupPlayer.prototype.reset=function(){this._players.forEach(function(e){return e.reset()}),this._destroyed=!1,this._finished=!1,this._started=!1},AnimationGroupPlayer.prototype.setPosition=function(e){this._players.forEach(function(t){t.setPosition(e)})},AnimationGroupPlayer.prototype.getPosition=function(){var e=0;return this._players.forEach(function(t){var n=t.getPosition();e=Math.min(n,e)}),e},Object.defineProperty(AnimationGroupPlayer.prototype,"players",{get:function(){return this._players},enumerable:!0,configurable:!0}),AnimationGroupPlayer}()},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o=function(){function AnimationKeyframe(e,t){this.offset=e,this.styles=t}return AnimationKeyframe}()},function(e,t,n){"use strict";var o=n(108),r=n(186);n.d(t,"a",function(){return i});var i=function(){function AnimationQueue(e){this._zone=e,this.entries=[]}return AnimationQueue.prototype.enqueue=function(e){this.entries.push(e)},AnimationQueue.prototype.flush=function(){var e=this;this.entries.length&&this._zone.runOutsideAngular(function(){Promise.resolve(null).then(function(){return e._triggerAnimations()})})},AnimationQueue.prototype._triggerAnimations=function(){for(r.a.assertNotInAngularZone();this.entries.length;){var e=this.entries.shift();e.hasStarted()||e.play()}},AnimationQueue.decorators=[{type:o.a}],AnimationQueue.ctorParameters=function(){return[{type:r.a}]},AnimationQueue}()},function(e,t,n){"use strict";var o=n(8),r=n(254);n.d(t,"a",function(){return i});var i=function(){function AnimationSequencePlayer(e){var t=this;this._players=e,this._currentIndex=0,this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this.parentPlayer=null,this._players.forEach(function(e){e.parentPlayer=t}),this._onNext(!1)}return AnimationSequencePlayer.prototype._onNext=function(e){var t=this;if(!this._finished)if(0==this._players.length)this._activePlayer=new r.a,n.i(o.l)(function(){return t._onFinish()});else if(this._currentIndex>=this._players.length)this._activePlayer=new r.a,this._onFinish();else{var i=this._players[this._currentIndex++];i.onDone(function(){return t._onNext(!0)}),this._activePlayer=i,e&&i.play()}},AnimationSequencePlayer.prototype._onFinish=function(){this._finished||(this._finished=!0,this._onDoneFns.forEach(function(e){return e()}),this._onDoneFns=[])},AnimationSequencePlayer.prototype.init=function(){this._players.forEach(function(e){return e.init()})},AnimationSequencePlayer.prototype.onStart=function(e){this._onStartFns.push(e)},AnimationSequencePlayer.prototype.onDone=function(e){this._onDoneFns.push(e)},AnimationSequencePlayer.prototype.hasStarted=function(){return this._started},AnimationSequencePlayer.prototype.play=function(){n.i(o.d)(this.parentPlayer)||this.init(),this.hasStarted()||(this._onStartFns.forEach(function(e){return e()}),this._onStartFns=[],this._started=!0),this._activePlayer.play()},AnimationSequencePlayer.prototype.pause=function(){this._activePlayer.pause()},AnimationSequencePlayer.prototype.restart=function(){this.reset(),this._players.length>0&&this._players[0].restart()},AnimationSequencePlayer.prototype.reset=function(){this._players.forEach(function(e){return e.reset()}),this._destroyed=!1,this._finished=!1,this._started=!1},AnimationSequencePlayer.prototype.finish=function(){this._onFinish(),this._players.forEach(function(e){return e.finish()})},AnimationSequencePlayer.prototype.destroy=function(){this._destroyed||(this._onFinish(),this._players.forEach(function(e){return e.destroy()}),this._destroyed=!0,this._activePlayer=new r.a)},AnimationSequencePlayer.prototype.setPosition=function(e){this._players[0].setPosition(e)},AnimationSequencePlayer.prototype.getPosition=function(){return this._players[0].getPosition()},Object.defineProperty(AnimationSequencePlayer.prototype,"players",{get:function(){return this._players},enumerable:!0,configurable:!0}),AnimationSequencePlayer}()},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o=function(){function AnimationStyles(e){this.styles=e}return AnimationStyles}()},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o=function(){function AnimationTransitionEvent(e){var t=e.fromState,n=e.toState,o=e.totalTime,r=e.phaseName;this.fromState=t,this.toState=n,this.totalTime=o,this.phaseName=r}return AnimationTransitionEvent}()},function(e,t,n){"use strict";function animate(e,t){void 0===t&&(t=null);var r=t;if(!n.i(o.d)(r)){var i={};r=new p([i],1)}return new g(e,r)}function group(e){return new m(e)}function sequence(e){return new h(e)}function style(e){var t,r=null;return"string"==typeof e?t=[e]:(t=Array.isArray(e)?e:[e],t.forEach(function(e){var t=e.offset;n.i(o.d)(t)&&(r=null==r?parseFloat(t):r)})),new p(t,r)}function state(e,t){return new u(e,t)}function keyframes(e){return new d(e)}function transition(e,t){var n=Array.isArray(t)?new h(t):t;return new l(e,n)}function trigger(e,t){return new a(e,t)}var o=n(8);n.d(t,"a",function(){return i}),n.d(t,"q",function(){return a}),n.d(t,"r",function(){return s}),n.d(t,"b",function(){return u}),n.d(t,"c",function(){return l}),n.d(t,"s",function(){return c}),n.d(t,"e",function(){return d}),n.d(t,"d",function(){return p}),n.d(t,"f",function(){return g}),n.d(t,"g",function(){return f}),n.d(t,"t",function(){return h}),n.d(t,"h",function(){return m}),t.m=animate,t.p=group,t.o=sequence,t.l=style,t.j=state,t.n=keyframes,t.k=transition,t.i=trigger;var r=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},i="*",a=function(){function AnimationEntryMetadata(e,t){this.name=e,this.definitions=t;
}return AnimationEntryMetadata}(),s=function(){function AnimationStateMetadata(){}return AnimationStateMetadata}(),u=function(e){function AnimationStateDeclarationMetadata(t,n){e.call(this),this.stateNameExpr=t,this.styles=n}return r(AnimationStateDeclarationMetadata,e),AnimationStateDeclarationMetadata}(s),l=function(e){function AnimationStateTransitionMetadata(t,n){e.call(this),this.stateChangeExpr=t,this.steps=n}return r(AnimationStateTransitionMetadata,e),AnimationStateTransitionMetadata}(s),c=function(){function AnimationMetadata(){}return AnimationMetadata}(),d=function(e){function AnimationKeyframesSequenceMetadata(t){e.call(this),this.steps=t}return r(AnimationKeyframesSequenceMetadata,e),AnimationKeyframesSequenceMetadata}(c),p=function(e){function AnimationStyleMetadata(t,n){void 0===n&&(n=null),e.call(this),this.styles=t,this.offset=n}return r(AnimationStyleMetadata,e),AnimationStyleMetadata}(c),g=function(e){function AnimationAnimateMetadata(t,n){e.call(this),this.timings=t,this.styles=n}return r(AnimationAnimateMetadata,e),AnimationAnimateMetadata}(c),f=function(e){function AnimationWithStepsMetadata(){e.call(this)}return r(AnimationWithStepsMetadata,e),Object.defineProperty(AnimationWithStepsMetadata.prototype,"steps",{get:function(){throw new Error("NOT IMPLEMENTED: Base Class")},enumerable:!0,configurable:!0}),AnimationWithStepsMetadata}(c),h=function(e){function AnimationSequenceMetadata(t){e.call(this),this._steps=t}return r(AnimationSequenceMetadata,e),Object.defineProperty(AnimationSequenceMetadata.prototype,"steps",{get:function(){return this._steps},enumerable:!0,configurable:!0}),AnimationSequenceMetadata}(f),m=function(e){function AnimationGroupMetadata(t){e.call(this),this._steps=t}return r(AnimationGroupMetadata,e),Object.defineProperty(AnimationGroupMetadata.prototype,"steps",{get:function(){return this._steps},enumerable:!0,configurable:!0}),AnimationGroupMetadata}(f)},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o=function(){function ChangeDetectorRef(){}return ChangeDetectorRef.prototype.markForCheck=function(){},ChangeDetectorRef.prototype.detach=function(){},ChangeDetectorRef.prototype.detectChanges=function(){},ChangeDetectorRef.prototype.checkNoChanges=function(){},ChangeDetectorRef.prototype.reattach=function(){},ChangeDetectorRef}()},function(e,t,n){"use strict";var o=n(8);n.d(t,"a",function(){return r}),n.d(t,"b",function(){return a});var r=function(){function DefaultKeyValueDifferFactory(){}return DefaultKeyValueDifferFactory.prototype.supports=function(e){return e instanceof Map||n.i(o.e)(e)},DefaultKeyValueDifferFactory.prototype.create=function(e){return new i},DefaultKeyValueDifferFactory}(),i=function(){function DefaultKeyValueDiffer(){this._records=new Map,this._mapHead=null,this._previousMapHead=null,this._changesHead=null,this._changesTail=null,this._additionsHead=null,this._additionsTail=null,this._removalsHead=null,this._removalsTail=null}return Object.defineProperty(DefaultKeyValueDiffer.prototype,"isDirty",{get:function(){return null!==this._additionsHead||null!==this._changesHead||null!==this._removalsHead},enumerable:!0,configurable:!0}),DefaultKeyValueDiffer.prototype.forEachItem=function(e){var t;for(t=this._mapHead;null!==t;t=t._next)e(t)},DefaultKeyValueDiffer.prototype.forEachPreviousItem=function(e){var t;for(t=this._previousMapHead;null!==t;t=t._nextPrevious)e(t)},DefaultKeyValueDiffer.prototype.forEachChangedItem=function(e){var t;for(t=this._changesHead;null!==t;t=t._nextChanged)e(t)},DefaultKeyValueDiffer.prototype.forEachAddedItem=function(e){var t;for(t=this._additionsHead;null!==t;t=t._nextAdded)e(t)},DefaultKeyValueDiffer.prototype.forEachRemovedItem=function(e){var t;for(t=this._removalsHead;null!==t;t=t._nextRemoved)e(t)},DefaultKeyValueDiffer.prototype.diff=function(e){if(e){if(!(e instanceof Map||n.i(o.e)(e)))throw new Error("Error trying to diff '"+e+"'")}else e=new Map;return this.check(e)?this:null},DefaultKeyValueDiffer.prototype.onDestroy=function(){},DefaultKeyValueDiffer.prototype.check=function(e){var t=this;this._reset();var n=this._records,o=this._mapHead,r=null,i=null,s=!1;return this._forEach(e,function(e,u){var l;o&&u===o.key?(l=o,t._maybeAddToChanges(l,e)):(s=!0,null!==o&&(t._removeFromSeq(r,o),t._addToRemovals(o)),n.has(u)?(l=n.get(u),t._maybeAddToChanges(l,e)):(l=new a(u),n.set(u,l),l.currentValue=e,t._addToAdditions(l))),s&&(t._isInRemovals(l)&&t._removeFromRemovals(l),null==i?t._mapHead=l:i._next=l),r=o,i=l,o=o&&o._next}),this._truncate(r,o),this.isDirty},DefaultKeyValueDiffer.prototype._reset=function(){if(this.isDirty){var e=void 0;for(e=this._previousMapHead=this._mapHead;null!==e;e=e._next)e._nextPrevious=e._next;for(e=this._changesHead;null!==e;e=e._nextChanged)e.previousValue=e.currentValue;for(e=this._additionsHead;null!=e;e=e._nextAdded)e.previousValue=e.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=this._removalsTail=null}},DefaultKeyValueDiffer.prototype._truncate=function(e,t){for(;null!==t;){null===e?this._mapHead=null:e._next=null;var n=t._next;this._addToRemovals(t),e=t,t=n}for(var o=this._removalsHead;null!==o;o=o._nextRemoved)o.previousValue=o.currentValue,o.currentValue=null,this._records.delete(o.key)},DefaultKeyValueDiffer.prototype._maybeAddToChanges=function(e,t){n.i(o.i)(t,e.currentValue)||(e.previousValue=e.currentValue,e.currentValue=t,this._addToChanges(e))},DefaultKeyValueDiffer.prototype._isInRemovals=function(e){return e===this._removalsHead||null!==e._nextRemoved||null!==e._prevRemoved},DefaultKeyValueDiffer.prototype._addToRemovals=function(e){null===this._removalsHead?this._removalsHead=this._removalsTail=e:(this._removalsTail._nextRemoved=e,e._prevRemoved=this._removalsTail,this._removalsTail=e)},DefaultKeyValueDiffer.prototype._removeFromSeq=function(e,t){var n=t._next;null===e?this._mapHead=n:e._next=n,t._next=null},DefaultKeyValueDiffer.prototype._removeFromRemovals=function(e){var t=e._prevRemoved,n=e._nextRemoved;null===t?this._removalsHead=n:t._nextRemoved=n,null===n?this._removalsTail=t:n._prevRemoved=t,e._prevRemoved=e._nextRemoved=null},DefaultKeyValueDiffer.prototype._addToAdditions=function(e){null===this._additionsHead?this._additionsHead=this._additionsTail=e:(this._additionsTail._nextAdded=e,this._additionsTail=e)},DefaultKeyValueDiffer.prototype._addToChanges=function(e){null===this._changesHead?this._changesHead=this._changesTail=e:(this._changesTail._nextChanged=e,this._changesTail=e)},DefaultKeyValueDiffer.prototype.toString=function(){var e,t=[],r=[],i=[],a=[],s=[];for(e=this._mapHead;null!==e;e=e._next)t.push(n.i(o.b)(e));for(e=this._previousMapHead;null!==e;e=e._nextPrevious)r.push(n.i(o.b)(e));for(e=this._changesHead;null!==e;e=e._nextChanged)i.push(n.i(o.b)(e));for(e=this._additionsHead;null!==e;e=e._nextAdded)a.push(n.i(o.b)(e));for(e=this._removalsHead;null!==e;e=e._nextRemoved)s.push(n.i(o.b)(e));return"map: "+t.join(", ")+"\nprevious: "+r.join(", ")+"\nadditions: "+a.join(", ")+"\nchanges: "+i.join(", ")+"\nremovals: "+s.join(", ")+"\n"},DefaultKeyValueDiffer.prototype._forEach=function(e,t){e instanceof Map?e.forEach(t):Object.keys(e).forEach(function(n){return t(e[n],n)})},DefaultKeyValueDiffer}(),a=function(){function KeyValueChangeRecord(e){this.key=e,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._nextAdded=null,this._nextRemoved=null,this._prevRemoved=null,this._nextChanged=null}return KeyValueChangeRecord.prototype.toString=function(){return n.i(o.i)(this.previousValue,this.currentValue)?n.i(o.b)(this.key):n.i(o.b)(this.key)+"["+n.i(o.b)(this.previousValue)+"->"+n.i(o.b)(this.currentValue)+"]"},KeyValueChangeRecord}()},function(e,t,n){"use strict";var o=n(41),r=n(8);n.d(t,"a",function(){return i});var i=function(){function IterableDiffers(e){this.factories=e}return IterableDiffers.create=function(e,t){if(n.i(r.d)(t)){var o=t.factories.slice();return e=e.concat(o),new IterableDiffers(e)}return new IterableDiffers(e)},IterableDiffers.extend=function(e){return{provide:IterableDiffers,useFactory:function(t){if(!t)throw new Error("Cannot extend IterableDiffers without a parent injector");return IterableDiffers.create(e,t)},deps:[[IterableDiffers,new o.e,new o.d]]}},IterableDiffers.prototype.find=function(e){var t=this.factories.find(function(t){return t.supports(e)});if(n.i(r.d)(t))return t;throw new Error("Cannot find a differ supporting object '"+e+"' of type '"+n.i(r.j)(e)+"'")},IterableDiffers}()},function(e,t,n){"use strict";var o=n(41),r=n(8);n.d(t,"a",function(){return i});var i=function(){function KeyValueDiffers(e){this.factories=e}return KeyValueDiffers.create=function(e,t){if(n.i(r.d)(t)){var o=t.factories.slice();return e=e.concat(o),new KeyValueDiffers(e)}return new KeyValueDiffers(e)},KeyValueDiffers.extend=function(e){return{provide:KeyValueDiffers,useFactory:function(t){if(!t)throw new Error("Cannot extend KeyValueDiffers without a parent injector");return KeyValueDiffers.create(e,t)},deps:[[KeyValueDiffers,new o.e,new o.d]]}},KeyValueDiffers.prototype.find=function(e){var t=this.factories.find(function(t){return t.supports(e)});if(n.i(r.d)(t))return t;throw new Error("Cannot find a differ supporting object '"+e+"'")},KeyValueDiffers}()},function(e,t,n){"use strict";function asNativeElements(e){return e.map(function(e){return e.nativeElement})}function _queryElementChildren(e,t,n){e.childNodes.forEach(function(e){e instanceof a&&(t(e)&&n.push(e),_queryElementChildren(e,t,n))})}function _queryNodeChildren(e,t,n){e instanceof a&&e.childNodes.forEach(function(e){t(e)&&n.push(e),e instanceof a&&_queryNodeChildren(e,t,n)})}function getDebugNode(e){return s.get(e)}function indexDebugNode(e){s.set(e.nativeNode,e)}function removeDebugNodeFromIndex(e){s.delete(e.nativeNode)}n.d(t,"f",function(){return r}),n.d(t,"d",function(){return i}),n.d(t,"a",function(){return a}),t.g=asNativeElements,t.c=getDebugNode,t.b=indexDebugNode,t.e=removeDebugNodeFromIndex;var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=function(){function EventListener(e,t){this.name=e,this.callback=t}return EventListener}(),i=function(){function DebugNode(e,t,n){this._debugInfo=n,this.nativeNode=e,t&&t instanceof a?t.addChild(this):this.parent=null,this.listeners=[]}return Object.defineProperty(DebugNode.prototype,"injector",{get:function(){return this._debugInfo?this._debugInfo.injector:null},enumerable:!0,configurable:!0}),Object.defineProperty(DebugNode.prototype,"componentInstance",{get:function(){return this._debugInfo?this._debugInfo.component:null},enumerable:!0,configurable:!0}),Object.defineProperty(DebugNode.prototype,"context",{get:function(){return this._debugInfo?this._debugInfo.context:null},enumerable:!0,configurable:!0}),Object.defineProperty(DebugNode.prototype,"references",{get:function(){return this._debugInfo?this._debugInfo.references:null},enumerable:!0,configurable:!0}),Object.defineProperty(DebugNode.prototype,"providerTokens",{get:function(){return this._debugInfo?this._debugInfo.providerTokens:null},enumerable:!0,configurable:!0}),Object.defineProperty(DebugNode.prototype,"source",{get:function(){return this._debugInfo?this._debugInfo.source:null},enumerable:!0,configurable:!0}),DebugNode}(),a=function(e){function DebugElement(t,n,o){e.call(this,t,n,o),this.properties={},this.attributes={},this.classes={},this.styles={},this.childNodes=[],this.nativeElement=t}return o(DebugElement,e),DebugElement.prototype.addChild=function(e){e&&(this.childNodes.push(e),e.parent=this)},DebugElement.prototype.removeChild=function(e){var t=this.childNodes.indexOf(e);t!==-1&&(e.parent=null,this.childNodes.splice(t,1))},DebugElement.prototype.insertChildrenAfter=function(e,t){var n=this.childNodes.indexOf(e);if(n!==-1){var o=this.childNodes.slice(0,n+1),r=this.childNodes.slice(n+1);this.childNodes=o.concat(t,r);for(var i=0;i<t.length;++i){var a=t[i];a.parent&&a.parent.removeChild(a),a.parent=this}}},DebugElement.prototype.query=function(e){var t=this.queryAll(e);return t[0]||null},DebugElement.prototype.queryAll=function(e){var t=[];return _queryElementChildren(this,e,t),t},DebugElement.prototype.queryAllNodes=function(e){var t=[];return _queryNodeChildren(this,e,t),t},Object.defineProperty(DebugElement.prototype,"children",{get:function(){return this.childNodes.filter(function(e){return e instanceof DebugElement})},enumerable:!0,configurable:!0}),DebugElement.prototype.triggerEventHandler=function(e,t){this.listeners.forEach(function(n){n.name==e&&n.callback(t)})},DebugElement}(i),s=new Map},function(e,t,n){"use strict";function findFirstClosedCycle(e){for(var t=[],n=0;n<e.length;++n){if(t.indexOf(e[n])>-1)return t.push(e[n]),t;t.push(e[n])}return t}function constructResolvingPath(e){if(e.length>1){var t=findFirstClosedCycle(e.slice().reverse()),o=t.map(function(e){return n.i(r.b)(e.token)});return" ("+o.join(" -> ")+")"}return""}var o=n(180),r=n(8);n.d(t,"f",function(){return a}),n.d(t,"h",function(){return s}),n.d(t,"e",function(){return u}),n.d(t,"g",function(){return l}),n.d(t,"b",function(){return c}),n.d(t,"c",function(){return d}),n.d(t,"d",function(){return p}),n.d(t,"a",function(){return g});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=function(e){function AbstractProviderError(t,n,o){e.call(this,"DI Error"),this.keys=[n],this.injectors=[t],this.constructResolvingMessage=o,this.message=this.constructResolvingMessage(this.keys)}return i(AbstractProviderError,e),AbstractProviderError.prototype.addKey=function(e,t){this.injectors.push(e),this.keys.push(t),this.message=this.constructResolvingMessage(this.keys)},AbstractProviderError}(o.a),s=function(e){function NoProviderError(t,o){e.call(this,t,o,function(e){var t=n.i(r.b)(e[0].token);return"No provider for "+t+"!"+constructResolvingPath(e)})}return i(NoProviderError,e),NoProviderError}(a),u=function(e){function CyclicDependencyError(t,n){e.call(this,t,n,function(e){return"Cannot instantiate cyclic dependency!"+constructResolvingPath(e)})}return i(CyclicDependencyError,e),CyclicDependencyError}(a),l=function(e){function InstantiationError(t,n,o,r){e.call(this,"DI Error",n),this.keys=[r],this.injectors=[t]}return i(InstantiationError,e),InstantiationError.prototype.addKey=function(e,t){this.injectors.push(e),this.keys.push(t)},Object.defineProperty(InstantiationError.prototype,"message",{get:function(){var e=n.i(r.b)(this.keys[0].token);return this.originalError.message+": Error during instantiation of "+e+"!"+constructResolvingPath(this.keys)+"."},enumerable:!0,configurable:!0}),Object.defineProperty(InstantiationError.prototype,"causeKey",{get:function(){return this.keys[0]},enumerable:!0,configurable:!0}),InstantiationError}(o.b),c=function(e){function InvalidProviderError(t){e.call(this,"Invalid provider - only instances of Provider and Type are allowed, got: "+t)}return i(InvalidProviderError,e),InvalidProviderError}(o.a),d=function(e){function NoAnnotationError(t,n){e.call(this,NoAnnotationError._genMessage(t,n))}return i(NoAnnotationError,e),NoAnnotationError._genMessage=function(e,t){for(var o=[],i=0,a=t.length;i<a;i++){var s=t[i];s&&0!=s.length?o.push(s.map(r.b).join(" ")):o.push("?")}return"Cannot resolve all parameters for '"+n.i(r.b)(e)+"'("+o.join(", ")+"). Make sure that all the parameters are decorated with Inject or have valid type annotations and that '"+n.i(r.b)(e)+"' is decorated with Injectable."},NoAnnotationError}(o.a),p=function(e){function OutOfBoundsError(t){e.call(this,"Index "+t+" is out-of-bounds.")}return i(OutOfBoundsError,e),OutOfBoundsError}(o.a),g=function(e){function MixingMultiProvidersWithRegularProvidersError(t,n){e.call(this,"Cannot mix multi providers and regular providers, got: "+t.toString()+" "+n.toString())}return i(MixingMultiProvidersWithRegularProvidersError,e),MixingMultiProvidersWithRegularProvidersError}(o.a)},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o=function(){function ErrorHandler(e){void 0===e&&(e=!0),this._console=console,this.rethrowError=e}return ErrorHandler.prototype.handleError=function(e){var t=this._findOriginalError(e),n=this._findOriginalStack(e),o=this._findContext(e);if(this._console.error("EXCEPTION: "+this._extractMessage(e)),t&&this._console.error("ORIGINAL EXCEPTION: "+this._extractMessage(t)),n&&(this._console.error("ORIGINAL STACKTRACE:"),this._console.error(n)),o&&(this._console.error("ERROR CONTEXT:"),this._console.error(o)),this.rethrowError)throw e},ErrorHandler.prototype._extractMessage=function(e){return e instanceof Error?e.message:e.toString()},ErrorHandler.prototype._findContext=function(e){return e?e.context?e.context:this._findContext(e.originalError):null},ErrorHandler.prototype._findOriginalError=function(e){for(var t=e.originalError;t&&t.originalError;)t=t.originalError;return t},ErrorHandler.prototype._findOriginalStack=function(e){if(!(e instanceof Error))return null;for(var t=e,n=t.stack;t instanceof Error&&t.originalError;)t=t.originalError,t instanceof Error&&t.stack&&(n=t.stack);return n},ErrorHandler}()},function(e,t,n){"use strict";var o=n(260);n.d(t,"a",function(){return r}),n.d(t,"c",function(){return i}),n.d(t,"b",function(){return a});var r=new o.a("LocaleId"),i=new o.a("Translations"),a=new o.a("TranslationsFormat")},function(e,t,n){"use strict";var o=n(8),r=n(183);n.d(t,"b",function(){return i}),n.d(t,"a",function(){return a});var i=function(){function StaticNodeDebugInfo(e,t,n){this.providerTokens=e,this.componentToken=t,this.refTokens=n}return StaticNodeDebugInfo}(),a=function(){function DebugContext(e,t,n,o){this._view=e,this._nodeIndex=t,this._tplRow=n,this._tplCol=o}return Object.defineProperty(DebugContext.prototype,"_staticNodeInfo",{get:function(){return n.i(o.d)(this._nodeIndex)?this._view.staticNodeDebugInfos[this._nodeIndex]:null},enumerable:!0,configurable:!0}),Object.defineProperty(DebugContext.prototype,"context",{get:function(){return this._view.context},enumerable:!0,configurable:!0}),Object.defineProperty(DebugContext.prototype,"component",{get:function(){var e=this._staticNodeInfo;return n.i(o.d)(e)&&n.i(o.d)(e.componentToken)?this.injector.get(e.componentToken):null},enumerable:!0,configurable:!0}),Object.defineProperty(DebugContext.prototype,"componentRenderElement",{get:function(){for(var e=this._view;n.i(o.d)(e.parentView)&&e.type!==r.a.COMPONENT;)e=e.parentView;return e.parentElement},enumerable:!0,configurable:!0}),Object.defineProperty(DebugContext.prototype,"injector",{get:function(){return this._view.injector(this._nodeIndex)},enumerable:!0,configurable:!0}),Object.defineProperty(DebugContext.prototype,"renderNode",{get:function(){return n.i(o.d)(this._nodeIndex)&&this._view.allNodes?this._view.allNodes[this._nodeIndex]:null},enumerable:!0,configurable:!0}),Object.defineProperty(DebugContext.prototype,"providerTokens",{get:function(){var e=this._staticNodeInfo;return n.i(o.d)(e)?e.providerTokens:null},enumerable:!0,configurable:!0}),Object.defineProperty(DebugContext.prototype,"source",{get:function(){return this._view.componentType.templateUrl+":"+this._tplRow+":"+this._tplCol},enumerable:!0,configurable:!0}),Object.defineProperty(DebugContext.prototype,"references",{get:function(){var e=this,t={},r=this._staticNodeInfo;if(n.i(o.d)(r)){var i=r.refTokens;Object.keys(i).forEach(function(r){var a,s=i[r];a=n.i(o.c)(s)?e._view.allNodes?e._view.allNodes[e._nodeIndex]:null:e._view.injectorGet(s,e._nodeIndex,null),t[r]=a})}return t},enumerable:!0,configurable:!0}),DebugContext}()},function(e,t,n){"use strict";var o=n(178),r=n(180);n.d(t,"a",function(){return a}),n.d(t,"c",function(){return s}),n.d(t,"b",function(){return u});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=function(e){function ExpressionChangedAfterItHasBeenCheckedError(t,n){var r="Expression has changed after it was checked. Previous value: '"+t+"'. Current value: '"+n+"'.";t===o.a&&(r+=" It seems like the view has been created after its parent and its children have been dirty checked. Has it been created in a change detection hook ?"),e.call(this,r)}return i(ExpressionChangedAfterItHasBeenCheckedError,e),ExpressionChangedAfterItHasBeenCheckedError}(r.a),s=function(e){function ViewWrappedError(t,n){e.call(this,"Error in "+n.source,t),this.context=n}return i(ViewWrappedError,e),ViewWrappedError}(r.b),u=function(e){function ViewDestroyedError(t){e.call(this,"Attempt to use a destroyed view: "+t)}return i(ViewDestroyedError,e),ViewDestroyedError}(r.a)},function(e,t,n){"use strict";var o=n(131),r=n(8),i=n(181);n.d(t,"c",function(){return s}),n.d(t,"b",function(){return u}),n.d(t,"a",function(){return c});var a=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},s=function(){function NgModuleRef(){}return NgModuleRef.prototype.injector=function(){},NgModuleRef.prototype.componentFactoryResolver=function(){},NgModuleRef.prototype.instance=function(){},NgModuleRef.prototype.destroy=function(){},NgModuleRef.prototype.onDestroy=function(e){},NgModuleRef}(),u=function(){function NgModuleFactory(e,t){this._injectorClass=e,this._moduleType=t}return Object.defineProperty(NgModuleFactory.prototype,"moduleType",{get:function(){return this._moduleType},enumerable:!0,configurable:!0}),NgModuleFactory.prototype.create=function(e){e||(e=o.b.NULL);var t=new this._injectorClass(e);return t.create(),t},NgModuleFactory}(),l=new Object,c=function(e){function NgModuleInjector(t,n,o){e.call(this,n,t.get(i.a,i.a.NULL)),this.parent=t,this.bootstrapFactories=o,this._destroyListeners=[],this._destroyed=!1}return a(NgModuleInjector,e),NgModuleInjector.prototype.create=function(){this.instance=this.createInternal()},NgModuleInjector.prototype.createInternal=function(){},NgModuleInjector.prototype.get=function(e,t){if(void 0===t&&(t=o.a),e===o.b||e===i.a)return this;var n=this.getInternal(e,l);return n===l?this.parent.get(e,t):n},NgModuleInjector.prototype.getInternal=function(e,t){},Object.defineProperty(NgModuleInjector.prototype,"injector",{get:function(){return this},enumerable:!0,configurable:!0}),Object.defineProperty(NgModuleInjector.prototype,"componentFactoryResolver",{get:function(){return this},enumerable:!0,configurable:!0}),NgModuleInjector.prototype.destroy=function(){if(this._destroyed)throw new Error("The ng module "+n.i(r.b)(this.instance.constructor)+" has already been destroyed.");this._destroyed=!0,this.destroyInternal(),this._destroyListeners.forEach(function(e){return e()})},NgModuleInjector.prototype.onDestroy=function(e){this._destroyListeners.push(e)},NgModuleInjector.prototype.destroyInternal=function(){},NgModuleInjector}(i.b)},function(e,t,n){"use strict";function registerModuleFactory(e,t){var n=r.get(e);if(n)throw new Error("Duplicate module registered for "+e+" - "+n.moduleType.name+" vs "+t.moduleType.name);r.set(e,t)}function getModuleFactory(e){var t=r.get(e);if(!t)throw new Error("No module with ID "+e+" loaded");return t}n.d(t,"b",function(){return o}),t.a=registerModuleFactory,t.c=getModuleFactory;var o=function(){function NgModuleFactoryLoader(){}return NgModuleFactoryLoader.prototype.load=function(e){},NgModuleFactoryLoader}(),r=new Map},function(e,t,n){"use strict";var o=n(182);n.d(t,"b",function(){return i}),n.d(t,"a",function(){return a});var r=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},i=function(){function TemplateRef(){}return TemplateRef.prototype.elementRef=function(){},TemplateRef.prototype.createEmbeddedView=function(e){},TemplateRef}(),a=function(e){function TemplateRef_(t,n,o){e.call(this),this._parentView=t,this._nodeIndex=n,this._nativeElement=o}return r(TemplateRef_,e),TemplateRef_.prototype.createEmbeddedView=function(e){var t=this._parentView.createEmbeddedViewInternal(this._nodeIndex);return t.create(e||{}),t.ref},Object.defineProperty(TemplateRef_.prototype,"elementRef",{get:function(){return new o.a(this._nativeElement)},enumerable:!0,configurable:!0}),TemplateRef_}(i)},function(e,t,n){"use strict";var o=n(8),r=n(185);n.d(t,"b",function(){return i}),n.d(t,"a",function(){return a});var i=function(){function ViewContainerRef(){}return ViewContainerRef.prototype.element=function(){},ViewContainerRef.prototype.injector=function(){},ViewContainerRef.prototype.parentInjector=function(){},ViewContainerRef.prototype.clear=function(){},ViewContainerRef.prototype.get=function(e){},ViewContainerRef.prototype.length=function(){},ViewContainerRef.prototype.createEmbeddedView=function(e,t,n){},ViewContainerRef.prototype.createComponent=function(e,t,n,o){},ViewContainerRef.prototype.insert=function(e,t){},ViewContainerRef.prototype.move=function(e,t){},ViewContainerRef.prototype.indexOf=function(e){},ViewContainerRef.prototype.remove=function(e){},ViewContainerRef.prototype.detach=function(e){},ViewContainerRef}(),a=function(){function ViewContainerRef_(e){this._element=e,this._createComponentInContainerScope=n.i(r.b)("ViewContainerRef#createComponent()"),this._insertScope=n.i(r.b)("ViewContainerRef#insert()"),this._removeScope=n.i(r.b)("ViewContainerRef#remove()"),this._detachScope=n.i(r.b)("ViewContainerRef#detach()")}return ViewContainerRef_.prototype.get=function(e){return this._element.nestedViews[e].ref},Object.defineProperty(ViewContainerRef_.prototype,"length",{get:function(){var e=this._element.nestedViews;return n.i(o.d)(e)?e.length:0},enumerable:!0,configurable:!0}),Object.defineProperty(ViewContainerRef_.prototype,"element",{get:function(){return this._element.elementRef},enumerable:!0,configurable:!0}),Object.defineProperty(ViewContainerRef_.prototype,"injector",{get:function(){return this._element.injector},enumerable:!0,configurable:!0}),Object.defineProperty(ViewContainerRef_.prototype,"parentInjector",{get:function(){return this._element.parentInjector},enumerable:!0,configurable:!0}),ViewContainerRef_.prototype.createEmbeddedView=function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=-1);var o=e.createEmbeddedView(t);return this.insert(o,n),o},ViewContainerRef_.prototype.createComponent=function(e,t,o,i){void 0===t&&(t=-1),void 0===o&&(o=null),void 0===i&&(i=null);var a=this._createComponentInContainerScope(),s=o||this._element.parentInjector,u=e.create(s,i);return this.insert(u.hostView,t),n.i(r.a)(a,u)},ViewContainerRef_.prototype.insert=function(e,t){void 0===t&&(t=-1);var o=this._insertScope();t==-1&&(t=this.length);var i=e;return this._element.attachView(i.internalView,t),n.i(r.a)(o,i)},ViewContainerRef_.prototype.move=function(e,t){var o=this._insertScope();if(t!=-1){var i=e;return this._element.moveView(i.internalView,t),n.i(r.a)(o,i)}},ViewContainerRef_.prototype.indexOf=function(e){return this.length?this._element.nestedViews.indexOf(e.internalView):-1},ViewContainerRef_.prototype.remove=function(e){void 0===e&&(e=-1);var t=this._removeScope();e==-1&&(e=this.length-1);var o=this._element.detachView(e);o.destroy(),n.i(r.a)(t)},ViewContainerRef_.prototype.detach=function(e){void 0===e&&(e=-1);var t=this._detachScope();e==-1&&(e=this.length-1);var o=this._element.detachView(e);return n.i(r.a)(t,o.ref)},ViewContainerRef_.prototype.clear=function(){for(var e=this.length-1;e>=0;e--)this.remove(e)},ViewContainerRef_}()},function(e,t,n){"use strict";var o=n(379),r=n(179);n.d(t,"c",function(){return a}),n.d(t,"b",function(){return s}),n.d(t,"a",function(){return u});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=function(e){function ViewRef(){e.apply(this,arguments)}return i(ViewRef,e),ViewRef.prototype.destroy=function(){},ViewRef.prototype.destroyed=function(){},ViewRef.prototype.onDestroy=function(e){},ViewRef}(o.a),s=function(e){function EmbeddedViewRef(){e.apply(this,arguments)}return i(EmbeddedViewRef,e),EmbeddedViewRef.prototype.context=function(){},EmbeddedViewRef.prototype.rootNodes=function(){},EmbeddedViewRef}(a),u=function(){function ViewRef_(e,t){this._view=e,this.animationQueue=t,this._view=e,this._originalMode=this._view.cdMode}return Object.defineProperty(ViewRef_.prototype,"internalView",{get:function(){return this._view},enumerable:!0,configurable:!0}),Object.defineProperty(ViewRef_.prototype,"rootNodes",{get:function(){return this._view.flatRootNodes},enumerable:!0,configurable:!0}),Object.defineProperty(ViewRef_.prototype,"context",{get:function(){return this._view.context},enumerable:!0,configurable:!0}),Object.defineProperty(ViewRef_.prototype,"destroyed",{get:function(){return this._view.destroyed},enumerable:!0,configurable:!0}),ViewRef_.prototype.markForCheck=function(){this._view.markPathToRootAsCheckOnce()},ViewRef_.prototype.detach=function(){this._view.cdMode=r.b.Detached},ViewRef_.prototype.detectChanges=function(){this._view.detectChanges(!1),this.animationQueue.flush()},ViewRef_.prototype.checkNoChanges=function(){this._view.detectChanges(!0)},ViewRef_.prototype.reattach=function(){this._view.cdMode=this._originalMode,this.markForCheck()},ViewRef_.prototype.onDestroy=function(e){this._view.disposables||(this._view.disposables=[]),this._view.disposables.push(e)},ViewRef_.prototype.destroy=function(){this._view.detachAndDestroy()},ViewRef_}()},function(e,t,n){"use strict";var o=n(657),r=n(658),i=n(395),a=n(659),s=n(396);n.d(t,"l",function(){return o.c}),n.d(t,"o",function(){return o.d}),n.d(t,"p",function(){return o.e}),n.d(t,"h",function(){return o.b}),n.d(t,"q",function(){return o.f}),n.d(t,"r",function(){return o.g}),n.d(t,"c",function(){return o.a}),n.d(t,"i",function(){return r.e}),n.d(t,"j",function(){return r.f}),n.d(t,"f",function(){return r.c}),n.d(t,"g",function(){return r.d}),n.d(t,"d",function(){return r.a}),n.d(t,"e",function(){return r.b}),n.d(t,"k",function(){return r.g}),n.d(t,"y",function(){return i.i}),n.d(t,"t",function(){return i.d}),n.d(t,"u",function(){return i.e}),n.d(t,"v",function(){return i.f}),n.d(t,"w",function(){return i.g}),n.d(t,"x",function(){return i.h}),n.d(t,"s",function(){return i.c}),n.d(t,"z",function(){return i.j}),n.d(t,"n",function(){return a.c}),n.d(t,"m",function(){return a.b}),n.d(t,"a",function(){return a.a}),n.d(t,"b",function(){return s.b})},function(e,t,n){"use strict";n.d(t,"a",function(){return o}),n.d(t,"b",function(){return r}),n.d(t,"h",function(){return i}),n.d(t,"j",function(){return a}),n.d(t,"g",function(){return s}),n.d(t,"i",function(){return u}),n.d(t,"d",function(){return l}),n.d(t,"c",function(){return c}),n.d(t,"f",function(){return d}),n.d(t,"e",function(){return p});var o={};o.OnInit=0,o.OnDestroy=1,o.DoCheck=2,o.OnChanges=3,o.AfterContentInit=4,o.AfterContentChecked=5,o.AfterViewInit=6,o.AfterViewChecked=7,o[o.OnInit]="OnInit",o[o.OnDestroy]="OnDestroy",o[o.DoCheck]="DoCheck",o[o.OnChanges]="OnChanges",o[o.AfterContentInit]="AfterContentInit",o[o.AfterContentChecked]="AfterContentChecked",o[o.AfterViewInit]="AfterViewInit",o[o.AfterViewChecked]="AfterViewChecked";var r=[o.OnInit,o.OnDestroy,o.DoCheck,o.OnChanges,o.AfterContentInit,o.AfterContentChecked,o.AfterViewInit,o.AfterViewChecked],i=function(){function OnChanges(){}return OnChanges.prototype.ngOnChanges=function(e){},OnChanges}(),a=function(){function OnInit(){}return OnInit.prototype.ngOnInit=function(){},OnInit}(),s=function(){function DoCheck(){}return DoCheck.prototype.ngDoCheck=function(){},DoCheck}(),u=function(){
function OnDestroy(){}return OnDestroy.prototype.ngOnDestroy=function(){},OnDestroy}(),l=function(){function AfterContentInit(){}return AfterContentInit.prototype.ngAfterContentInit=function(){},AfterContentInit}(),c=function(){function AfterContentChecked(){}return AfterContentChecked.prototype.ngAfterContentChecked=function(){},AfterContentChecked}(),d=function(){function AfterViewInit(){}return AfterViewInit.prototype.ngAfterViewInit=function(){},AfterViewInit}(),p=function(){function AfterViewChecked(){}return AfterViewChecked.prototype.ngAfterViewChecked=function(){},AfterViewChecked}()},function(e,t,n){"use strict";n.d(t,"b",function(){return o}),n.d(t,"a",function(){return r});var o={};o.Emulated=0,o.Native=1,o.None=2,o[o.Emulated]="Emulated",o[o.Native]="Native",o[o.None]="None";var r=function(){function ViewMetadata(e){var t=void 0===e?{}:e,n=t.templateUrl,o=t.template,r=t.encapsulation,i=t.styles,a=t.styleUrls,s=t.animations,u=t.interpolation;this.templateUrl=n,this.template=o,this.styleUrls=a,this.styles=i,this.encapsulation=r,this.animations=s,this.interpolation=u}return ViewMetadata}()},function(e,t,n){"use strict";function convertTsickleDecoratorIntoMetadata(e){return e?e.map(function(e){var t=e.type,n=t.annotationCls,o=e.args?e.args:[];return new(n.bind.apply(n,[void 0].concat(o)))}):[]}function getParentCtor(e){var t=Object.getPrototypeOf(e.prototype),n=t?t.constructor:null;return n||Object}var o=n(8),r=n(269);n.d(t,"a",function(){return a});var i=/^function\s+\S+\(\)\s*{\s*("use strict";)?\s*(return\s+)?\S+\.apply\(this,\s*arguments\)/,a=function(){function ReflectionCapabilities(e){this._reflect=e||o.a.Reflect}return ReflectionCapabilities.prototype.isReflectionEnabled=function(){return!0},ReflectionCapabilities.prototype.factory=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n-0]=arguments[n];return new(e.bind.apply(e,[void 0].concat(t)))}},ReflectionCapabilities.prototype._zipTypesAndAnnotations=function(e,t){var r;r="undefined"==typeof e?new Array(t.length):new Array(e.length);for(var i=0;i<r.length;i++)"undefined"==typeof e?r[i]=[]:e[i]!=Object?r[i]=[e[i]]:r[i]=[],t&&n.i(o.d)(t[i])&&(r[i]=r[i].concat(t[i]));return r},ReflectionCapabilities.prototype._ownParameters=function(e,t){if(i.exec(e.toString()))return null;if(e.parameters&&e.parameters!==t.parameters)return e.parameters;var r=e.ctorParameters;if(r&&r!==t.ctorParameters){var a="function"==typeof r?r():r,s=a.map(function(e){return e&&e.type}),u=a.map(function(e){return e&&convertTsickleDecoratorIntoMetadata(e.decorators)});return this._zipTypesAndAnnotations(s,u)}if(n.i(o.d)(this._reflect)&&n.i(o.d)(this._reflect.getOwnMetadata)){var u=this._reflect.getOwnMetadata("parameters",e),s=this._reflect.getOwnMetadata("design:paramtypes",e);if(s||u)return this._zipTypesAndAnnotations(s,u)}return new Array(e.length).fill(void 0)},ReflectionCapabilities.prototype.parameters=function(e){if(!n.i(r.a)(e))return[];var t=getParentCtor(e),o=this._ownParameters(e,t);return o||t===Object||(o=this.parameters(t)),o||[]},ReflectionCapabilities.prototype._ownAnnotations=function(e,t){if(e.annotations&&e.annotations!==t.annotations){var n=e.annotations;return"function"==typeof n&&n.annotations&&(n=n.annotations),n}return e.decorators&&e.decorators!==t.decorators?convertTsickleDecoratorIntoMetadata(e.decorators):this._reflect&&this._reflect.getOwnMetadata?this._reflect.getOwnMetadata("annotations",e):void 0},ReflectionCapabilities.prototype.annotations=function(e){if(!n.i(r.a)(e))return[];var t=getParentCtor(e),o=this._ownAnnotations(e,t)||[],i=t!==Object?this.annotations(t):[];return i.concat(o)},ReflectionCapabilities.prototype._ownPropMetadata=function(e,t){if(e.propMetadata&&e.propMetadata!==t.propMetadata){var n=e.propMetadata;return"function"==typeof n&&n.propMetadata&&(n=n.propMetadata),n}if(e.propDecorators&&e.propDecorators!==t.propDecorators){var o=e.propDecorators,r={};return Object.keys(o).forEach(function(e){r[e]=convertTsickleDecoratorIntoMetadata(o[e])}),r}if(this._reflect&&this._reflect.getOwnMetadata)return this._reflect.getOwnMetadata("propMetadata",e)},ReflectionCapabilities.prototype.propMetadata=function(e){if(!n.i(r.a)(e))return{};var t=getParentCtor(e),o={};if(t!==Object){var i=this.propMetadata(t);Object.keys(i).forEach(function(e){o[e]=i[e]})}var a=this._ownPropMetadata(e,t);return a&&Object.keys(a).forEach(function(e){var t=[];o.hasOwnProperty(e)&&t.push.apply(t,o[e]),t.push.apply(t,a[e]),o[e]=t}),o},ReflectionCapabilities.prototype.hasLifecycleHook=function(e,t){return e instanceof r.b&&t in e.prototype},ReflectionCapabilities.prototype.getter=function(e){return new Function("o","return o."+e+";")},ReflectionCapabilities.prototype.setter=function(e){return new Function("o","v","return o."+e+" = v;")},ReflectionCapabilities.prototype.method=function(e){var t="if (!o."+e+") throw new Error('\""+e+"\" is undefined');\n        return o."+e+".apply(o, args);";return new Function("o","args",t)},ReflectionCapabilities.prototype.importUri=function(e){return"object"==typeof e&&e.filePath?e.filePath:"./"+n.i(o.b)(e)},ReflectionCapabilities.prototype.resolveIdentifier=function(e,t,n){return n},ReflectionCapabilities.prototype.resolveEnum=function(e,t){return e[t]},ReflectionCapabilities}()},function(e,t,n){"use strict";var o=n(266);n.d(t,"a",function(){return i});var r=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},i=function(e){function Reflector(t){e.call(this),this.reflectionCapabilities=t}return r(Reflector,e),Reflector.prototype.updateCapabilities=function(e){this.reflectionCapabilities=e},Reflector.prototype.factory=function(e){return this.reflectionCapabilities.factory(e)},Reflector.prototype.parameters=function(e){return this.reflectionCapabilities.parameters(e)},Reflector.prototype.annotations=function(e){return this.reflectionCapabilities.annotations(e)},Reflector.prototype.propMetadata=function(e){return this.reflectionCapabilities.propMetadata(e)},Reflector.prototype.hasLifecycleHook=function(e,t){return this.reflectionCapabilities.hasLifecycleHook(e,t)},Reflector.prototype.getter=function(e){return this.reflectionCapabilities.getter(e)},Reflector.prototype.setter=function(e){return this.reflectionCapabilities.setter(e)},Reflector.prototype.method=function(e){return this.reflectionCapabilities.method(e)},Reflector.prototype.importUri=function(e){return this.reflectionCapabilities.importUri(e)},Reflector.prototype.resolveIdentifier=function(e,t,n){return this.reflectionCapabilities.resolveIdentifier(e,t,n)},Reflector.prototype.resolveEnum=function(e,t){return this.reflectionCapabilities.resolveEnum(e,t)},Reflector}(o.a)},function(e,t,n){"use strict";n.d(t,"b",function(){return o}),n.d(t,"a",function(){return r});var o={};o.NONE=0,o.HTML=1,o.STYLE=2,o.SCRIPT=3,o.URL=4,o.RESOURCE_URL=5,o[o.NONE]="NONE",o[o.HTML]="HTML",o[o.STYLE]="STYLE",o[o.SCRIPT]="SCRIPT",o[o.URL]="URL",o[o.RESOURCE_URL]="RESOURCE_URL";var r=function(){function Sanitizer(){}return Sanitizer.prototype.sanitize=function(e,t){},Sanitizer}()},function(e,t,n){"use strict";n.d(t,"b",function(){return o}),n.d(t,"a",function(){return r});var o=function(){function Version(e){this.full=e}return Object.defineProperty(Version.prototype,"major",{get:function(){return this.full.split(".")[0]},enumerable:!0,configurable:!0}),Object.defineProperty(Version.prototype,"minor",{get:function(){return this.full.split(".")[1]},enumerable:!0,configurable:!0}),Object.defineProperty(Version.prototype,"patch",{get:function(){return this.full.split(".").slice(2).join(".")},enumerable:!0,configurable:!0}),Version}(),r=new o("2.4.10")},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o={formControlName:'\n    <div [formGroup]="myGroup">\n      <input formControlName="firstName">\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       firstName: new FormControl()\n    });',formGroupName:'\n    <div [formGroup]="myGroup">\n       <div formGroupName="person">\n          <input formControlName="firstName">\n       </div>\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       person: new FormGroup({ firstName: new FormControl() })\n    });',formArrayName:'\n    <div [formGroup]="myGroup">\n      <div formArrayName="cities">\n        <div *ngFor="let city of cityArray.controls; let i=index">\n          <input [formControlName]="i">\n        </div>\n      </div>\n    </div>\n\n    In your class:\n\n    this.cityArray = new FormArray([new FormControl(\'SF\')]);\n    this.myGroup = new FormGroup({\n      cities: this.cityArray\n    });',ngModelGroup:'\n    <form>\n       <div ngModelGroup="person">\n          <input [(ngModel)]="person.name" name="firstName">\n       </div>\n    </form>',ngModelWithFormGroup:'\n    <div [formGroup]="myGroup">\n       <input formControlName="firstName">\n       <input [(ngModel)]="showMoreControls" [ngModelOptions]="{standalone: true}">\n    </div>\n  '}},function(e,t,n){"use strict";var o=n(401);n.d(t,"a",function(){return r});var r=function(){function TemplateDrivenErrors(){}return TemplateDrivenErrors.modelParentException=function(){throw new Error('\n      ngModel cannot be used to register form controls with a parent formGroup directive.  Try using\n      formGroup\'s partner directive "formControlName" instead.  Example:\n\n      '+o.a.formControlName+"\n\n      Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:\n\n      Example:\n\n      "+o.a.ngModelWithFormGroup)},TemplateDrivenErrors.formGroupNameException=function(){throw new Error("\n      ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.\n\n      Option 1: Use formControlName instead of ngModel (reactive strategy):\n\n      "+o.a.formGroupName+"\n\n      Option 2:  Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n      "+o.a.ngModelGroup)},TemplateDrivenErrors.missingNameException=function(){throw new Error('If ngModel is used within a form tag, either the name attribute must be set or the form\n      control must be defined as \'standalone\' in ngModelOptions.\n\n      Example 1: <input [(ngModel)]="person.firstName" name="first">\n      Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">')},TemplateDrivenErrors.modelGroupParentException=function(){throw new Error("\n      ngModelGroup cannot be used with a parent formGroup directive.\n\n      Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):\n\n      "+o.a.formGroupName+"\n\n      Option 2:  Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n      "+o.a.ngModelGroup)},TemplateDrivenErrors}()},function(e,t,n){"use strict";var o=n(1),r=n(49);n.d(t,"a",function(){return u}),n.d(t,"e",function(){return l}),n.d(t,"b",function(){return d}),n.d(t,"c",function(){return g}),n.d(t,"d",function(){return h});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a={provide:r.b,useExisting:n.i(o.forwardRef)(function(){return u}),multi:!0},s={provide:r.b,useExisting:n.i(o.forwardRef)(function(){return l}),multi:!0},u=function(){function RequiredValidator(){}return Object.defineProperty(RequiredValidator.prototype,"required",{get:function(){return this._required},set:function(e){this._required=null!=e&&e!==!1&&""+e!="false",this._onChange&&this._onChange()},enumerable:!0,configurable:!0}),RequiredValidator.prototype.validate=function(e){return this.required?r.a.required(e):null},RequiredValidator.prototype.registerOnValidatorChange=function(e){this._onChange=e},RequiredValidator.decorators=[{type:o.Directive,args:[{selector:":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]",providers:[a],host:{"[attr.required]":'required ? "" : null'}}]}],RequiredValidator.ctorParameters=function(){return[]},RequiredValidator.propDecorators={required:[{type:o.Input}]},RequiredValidator}(),l=function(e){function CheckboxRequiredValidator(){e.apply(this,arguments)}return i(CheckboxRequiredValidator,e),CheckboxRequiredValidator.prototype.validate=function(e){return this.required?r.a.requiredTrue(e):null},CheckboxRequiredValidator.decorators=[{type:o.Directive,args:[{selector:"input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]",providers:[s],host:{"[attr.required]":'required ? "" : null'}}]}],CheckboxRequiredValidator.ctorParameters=function(){return[]},CheckboxRequiredValidator}(u),c={provide:r.b,useExisting:n.i(o.forwardRef)(function(){return d}),multi:!0},d=function(){function MinLengthValidator(){}return MinLengthValidator.prototype.ngOnChanges=function(e){"minlength"in e&&(this._createValidator(),this._onChange&&this._onChange())},MinLengthValidator.prototype.validate=function(e){return null==this.minlength?null:this._validator(e)},MinLengthValidator.prototype.registerOnValidatorChange=function(e){this._onChange=e},MinLengthValidator.prototype._createValidator=function(){this._validator=r.a.minLength(parseInt(this.minlength,10))},MinLengthValidator.decorators=[{type:o.Directive,args:[{selector:"[minlength][formControlName],[minlength][formControl],[minlength][ngModel]",providers:[c],host:{"[attr.minlength]":"minlength ? minlength : null"}}]}],MinLengthValidator.ctorParameters=function(){return[]},MinLengthValidator.propDecorators={minlength:[{type:o.Input}]},MinLengthValidator}(),p={provide:r.b,useExisting:n.i(o.forwardRef)(function(){return g}),multi:!0},g=function(){function MaxLengthValidator(){}return MaxLengthValidator.prototype.ngOnChanges=function(e){"maxlength"in e&&(this._createValidator(),this._onChange&&this._onChange())},MaxLengthValidator.prototype.validate=function(e){return null!=this.maxlength?this._validator(e):null},MaxLengthValidator.prototype.registerOnValidatorChange=function(e){this._onChange=e},MaxLengthValidator.prototype._createValidator=function(){this._validator=r.a.maxLength(parseInt(this.maxlength,10))},MaxLengthValidator.decorators=[{type:o.Directive,args:[{selector:"[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]",providers:[p],host:{"[attr.maxlength]":"maxlength ? maxlength : null"}}]}],MaxLengthValidator.ctorParameters=function(){return[]},MaxLengthValidator.propDecorators={maxlength:[{type:o.Input}]},MaxLengthValidator}(),f={provide:r.b,useExisting:n.i(o.forwardRef)(function(){return h}),multi:!0},h=function(){function PatternValidator(){}return PatternValidator.prototype.ngOnChanges=function(e){"pattern"in e&&(this._createValidator(),this._onChange&&this._onChange())},PatternValidator.prototype.validate=function(e){return this._validator(e)},PatternValidator.prototype.registerOnValidatorChange=function(e){this._onChange=e},PatternValidator.prototype._createValidator=function(){this._validator=r.a.pattern(this.pattern)},PatternValidator.decorators=[{type:o.Directive,args:[{selector:"[pattern][formControlName],[pattern][formControl],[pattern][ngModel]",providers:[f],host:{"[attr.pattern]":"pattern ? pattern : null"}}]}],PatternValidator.ctorParameters=function(){return[]},PatternValidator.propDecorators={pattern:[{type:o.Input}]},PatternValidator}()},function(e,t,n){"use strict";n(111);n.d(t,"a",function(){return o}),n.d(t,"b",function(){return r});var o=function(){function StringMapWrapper(){}return StringMapWrapper.merge=function(e,t){for(var n={},o=0,r=Object.keys(e);o<r.length;o++){var i=r[o];n[i]=e[i]}for(var a=0,s=Object.keys(t);a<s.length;a++){var i=s[a];n[i]=t[i]}return n},StringMapWrapper.equals=function(e,t){var n=Object.keys(e),o=Object.keys(t);if(n.length!=o.length)return!1;for(var r=0;r<n.length;r++){var i=n[r];if(e[i]!==t[i])return!1}return!0},StringMapWrapper}(),r=function(){function ListWrapper(){}return ListWrapper.findLast=function(e,t){for(var n=e.length-1;n>=0;n--)if(t(e[n]))return e[n];return null},ListWrapper.removeAll=function(e,t){for(var n=0;n<t.length;++n){var o=e.indexOf(t[n]);o>-1&&e.splice(o,1)}},ListWrapper.remove=function(e,t){var n=e.indexOf(t);return n>-1&&(e.splice(n,1),!0)},ListWrapper.equals=function(e,t){if(e.length!=t.length)return!1;for(var n=0;n<e.length;++n)if(e[n]!==t[n])return!1;return!0},ListWrapper.flatten=function(e){return e.reduce(function(e,t){var n=Array.isArray(t)?ListWrapper.flatten(t):t;return e.concat(n)},[])},ListWrapper}()},function(e,t,n){"use strict";var o=n(1),r=n(111),i=n(193);n.d(t,"a",function(){return a});var a=function(){function FormBuilder(){}return FormBuilder.prototype.group=function(e,t){void 0===t&&(t=null);var o=this._reduceControls(e),a=n.i(r.c)(t)?t.validator:null,s=n.i(r.c)(t)?t.asyncValidator:null;return new i.a(o,a,s)},FormBuilder.prototype.control=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),new i.b(e,t,n)},FormBuilder.prototype.array=function(e,t,n){var o=this;void 0===t&&(t=null),void 0===n&&(n=null);var r=e.map(function(e){return o._createControl(e)});return new i.c(r,t,n)},FormBuilder.prototype._reduceControls=function(e){var t=this,n={};return Object.keys(e).forEach(function(o){n[o]=t._createControl(e[o])}),n},FormBuilder.prototype._createControl=function(e){if(e instanceof i.b||e instanceof i.a||e instanceof i.c)return e;if(Array.isArray(e)){var t=e[0],n=e.length>1?e[1]:null,o=e.length>2?e[2]:null;return this.control(t,n,o)}return this.control(e)},FormBuilder.decorators=[{type:o.Injectable}],FormBuilder.ctorParameters=function(){return[]},FormBuilder}()},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r}),n.d(t,"b",function(){return i});var r=o.__core_private__.isPromise,i=o.__core_private__.isObservable},function(e,t,n){"use strict";function _getJsonpConnections(){var e="object"==typeof window?window:{};return null===a&&(a=e[i]={}),a}var o=n(1);n.d(t,"a",function(){return s});var r=0,i="__ng_jsonp__",a=null,s=function(){function BrowserJsonp(){}return BrowserJsonp.prototype.build=function(e){var t=document.createElement("script");return t.src=e,t},BrowserJsonp.prototype.nextRequestID=function(){return"__req"+r++},BrowserJsonp.prototype.requestCallback=function(e){return i+"."+e+".finished"},BrowserJsonp.prototype.exposeConnection=function(e,t){var n=_getJsonpConnections();n[e]=t},BrowserJsonp.prototype.removeConnection=function(e){var t=_getJsonpConnections();t[e]=null},BrowserJsonp.prototype.send=function(e){document.body.appendChild(e)},BrowserJsonp.prototype.cleanup=function(e){e.parentNode&&e.parentNode.removeChild(e)},BrowserJsonp.decorators=[{type:o.Injectable}],BrowserJsonp.ctorParameters=function(){return[]},BrowserJsonp}()},function(e,t,n){"use strict";var o=n(1),r=n(0),i=(n.n(r),n(194)),a=n(77),s=n(140),u=n(280),l=n(407);n.d(t,"c",function(){return g}),n.d(t,"a",function(){return h}),n.d(t,"b",function(){return m});var c=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},d="JSONP injected script did not invoke callback.",p="JSONP requests must use GET request method.",g=function(){function JSONPConnection(){}return JSONPConnection.prototype.finished=function(e){},JSONPConnection}(),f=function(e){function JSONPConnection_(t,n,o){var s=this;if(e.call(this),this._dom=n,this.baseResponseOptions=o,this._finished=!1,t.method!==a.b.Get)throw new TypeError(p);this.request=t,this.response=new r.Observable(function(e){s.readyState=a.c.Loading;var r=s._id=n.nextRequestID();n.exposeConnection(r,s);var l=n.requestCallback(s._id),c=t.url;c.indexOf("=JSONP_CALLBACK&")>-1?c=c.replace("=JSONP_CALLBACK&","="+l+"&"):c.lastIndexOf("=JSONP_CALLBACK")===c.length-"=JSONP_CALLBACK".length&&(c=c.substring(0,c.length-"=JSONP_CALLBACK".length)+("="+l));var p=s._script=n.build(c),g=function(t){if(s.readyState!==a.c.Cancelled){if(s.readyState=a.c.Done,n.cleanup(p),!s._finished){var r=new i.a({body:d,type:a.a.Error,url:c});return o&&(r=o.merge(r)),void e.error(new u.a(r))}var l=new i.a({body:s._responseData,url:c});s.baseResponseOptions&&(l=s.baseResponseOptions.merge(l)),e.next(new u.a(l)),e.complete()}},f=function(t){if(s.readyState!==a.c.Cancelled){s.readyState=a.c.Done,n.cleanup(p);var r=new i.a({body:t.message,type:a.a.Error});o&&(r=o.merge(r)),e.error(new u.a(r))}};return p.addEventListener("load",g),p.addEventListener("error",f),n.send(p),function(){s.readyState=a.c.Cancelled,p.removeEventListener("load",g),p.removeEventListener("error",f),s._dom.cleanup(p)}})}return c(JSONPConnection_,e),JSONPConnection_.prototype.finished=function(e){this._finished=!0,this._dom.removeConnection(this._id),this.readyState!==a.c.Cancelled&&(this._responseData=e)},JSONPConnection_}(g),h=function(e){function JSONPBackend(){e.apply(this,arguments)}return c(JSONPBackend,e),JSONPBackend}(s.a),m=function(e){function JSONPBackend_(t,n){e.call(this),this._browserJSONP=t,this._baseResponseOptions=n}return c(JSONPBackend_,e),JSONPBackend_.prototype.createConnection=function(e){return new f(e,this._browserJSONP,this._baseResponseOptions)},JSONPBackend_.decorators=[{type:o.Injectable}],JSONPBackend_.ctorParameters=function(){return[{type:l.a},{type:i.a}]},JSONPBackend_}(h)},function(e,t,n){"use strict";var o=n(1),r=n(103),i=n(0),a=(n.n(i),n(194)),s=n(77),u=n(139),l=n(195),c=n(140),d=n(280),p=n(278);n.d(t,"c",function(){return f}),n.d(t,"a",function(){return h}),n.d(t,"b",function(){return m});var g=/^\)\]\}',?\n/,f=function(){function XHRConnection(e,t,o){var r=this;this.request=e,this.response=new i.Observable(function(i){var c=t.build();c.open(s.b[e.method].toUpperCase(),e.url),null!=e.withCredentials&&(c.withCredentials=e.withCredentials);var p=function(){var t=1223===c.status?204:c.status,r=null;204!==t&&(r="undefined"==typeof c.response?c.responseText:c.response,"string"==typeof r&&(r=r.replace(g,""))),0===t&&(t=r?200:0);var s=u.a.fromResponseHeaderString(c.getAllResponseHeaders()),p=n.i(l.b)(c)||e.url,f=c.statusText||"OK",h=new a.a({body:r,status:t,headers:s,statusText:f,url:p});null!=o&&(h=o.merge(h));var m=new d.a(h);return m.ok=n.i(l.c)(t),m.ok?(i.next(m),void i.complete()):void i.error(m)},f=function(e){var t=new a.a({body:e,type:s.a.Error,status:c.status,statusText:c.statusText});null!=o&&(t=o.merge(t)),i.error(new d.a(t))};if(r.setDetectedContentType(e,c),null==e.headers&&(e.headers=new u.a),e.headers.has("Accept")||e.headers.append("Accept","application/json, text/plain, */*"),e.headers.forEach(function(e,t){return c.setRequestHeader(t,e.join(","))}),null!=e.responseType&&null!=c.responseType)switch(e.responseType){case s.d.ArrayBuffer:c.responseType="arraybuffer";break;case s.d.Json:c.responseType="json";break;case s.d.Text:c.responseType="text";break;case s.d.Blob:c.responseType="blob";break;default:throw new Error("The selected responseType is not supported")}return c.addEventListener("load",p),c.addEventListener("error",f),c.send(r.request.getBody()),function(){c.removeEventListener("load",p),c.removeEventListener("error",f),c.abort()}})}return XHRConnection.prototype.setDetectedContentType=function(e,t){if(null==e.headers||null==e.headers.get("Content-Type"))switch(e.contentType){case s.e.NONE:break;case s.e.JSON:t.setRequestHeader("content-type","application/json");break;case s.e.FORM:t.setRequestHeader("content-type","application/x-www-form-urlencoded;charset=UTF-8");break;case s.e.TEXT:t.setRequestHeader("content-type","text/plain");break;case s.e.BLOB:var n=e.blob();n.type&&t.setRequestHeader("content-type",n.type)}},XHRConnection}(),h=function(){function CookieXSRFStrategy(e,t){void 0===e&&(e="XSRF-TOKEN"),void 0===t&&(t="X-XSRF-TOKEN"),this._cookieName=e,this._headerName=t}return CookieXSRFStrategy.prototype.configureRequest=function(e){var t=r.__platform_browser_private__.getDOM().getCookie(this._cookieName);t&&e.headers.set(this._headerName,t)},CookieXSRFStrategy}(),m=function(){function XHRBackend(e,t,n){this._browserXHR=e,this._baseResponseOptions=t,this._xsrfStrategy=n}return XHRBackend.prototype.createConnection=function(e){return this._xsrfStrategy.configureRequest(e),new f(e,this._browserXHR,this._baseResponseOptions)},XHRBackend.decorators=[{type:o.Injectable}],XHRBackend.ctorParameters=function(){return[{type:p.a},{type:a.a},{type:c.b}]},XHRBackend}()},function(e,t,n){"use strict";var o=n(195),r=n(196);n.d(t,"a",function(){return i});var i=function(){function Body(){}return Body.prototype.json=function(){return"string"==typeof this._body?JSON.parse(this._body):this._body instanceof ArrayBuffer?JSON.parse(this.text()):this._body},Body.prototype.text=function(){return this._body instanceof r.a?this._body.toString():this._body instanceof ArrayBuffer?String.fromCharCode.apply(null,new Uint16Array(this._body)):null==this._body?"":"object"==typeof this._body?JSON.stringify(this._body,null,2):this._body.toString()},Body.prototype.arrayBuffer=function(){return this._body instanceof ArrayBuffer?this._body:n.i(o.a)(this.text())},Body.prototype.blob=function(){if(this._body instanceof Blob)return this._body;if(this._body instanceof ArrayBuffer)return new Blob([this._body]);throw new Error("The request body isn't either a blob or an array buffer")},Body}()},function(e,t,n){"use strict";function httpRequest(e,t){return e.createConnection(t).response}function mergeOptions(e,t,n,o){var i=e;return t?i.merge(new r.a({method:t.method||n,url:t.url||o,search:t.search,headers:t.headers,body:t.body,withCredentials:t.withCredentials,responseType:t.responseType})):i.merge(new r.a({method:n,url:o}))}var o=n(1),r=n(279),i=n(77),a=n(140),s=n(412);n.d(t,"a",function(){return l}),n.d(t,"b",function(){return c});var u=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},l=function(){function Http(e,t){this._backend=e,this._defaultOptions=t}return Http.prototype.request=function(e,t){var n;if("string"==typeof e)n=httpRequest(this._backend,new s.a(mergeOptions(this._defaultOptions,t,i.b.Get,e)));else{if(!(e instanceof s.a))throw new Error("First argument must be a url string or Request instance.");n=httpRequest(this._backend,e)}return n},Http.prototype.get=function(e,t){return this.request(new s.a(mergeOptions(this._defaultOptions,t,i.b.Get,e)))},Http.prototype.post=function(e,t,n){return this.request(new s.a(mergeOptions(this._defaultOptions.merge(new r.a({body:t})),n,i.b.Post,e)))},Http.prototype.put=function(e,t,n){return this.request(new s.a(mergeOptions(this._defaultOptions.merge(new r.a({body:t})),n,i.b.Put,e)))},Http.prototype.delete=function(e,t){return this.request(new s.a(mergeOptions(this._defaultOptions,t,i.b.Delete,e)))},Http.prototype.patch=function(e,t,n){return this.request(new s.a(mergeOptions(this._defaultOptions.merge(new r.a({body:t})),n,i.b.Patch,e)))},Http.prototype.head=function(e,t){return this.request(new s.a(mergeOptions(this._defaultOptions,t,i.b.Head,e)))},Http.prototype.options=function(e,t){return this.request(new s.a(mergeOptions(this._defaultOptions,t,i.b.Options,e)))},Http.decorators=[{type:o.Injectable}],Http.ctorParameters=function(){return[{type:a.a},{type:r.a}]},Http}(),c=function(e){function Jsonp(t,n){e.call(this,t,n)}return u(Jsonp,e),Jsonp.prototype.request=function(e,t){var n;if("string"==typeof e&&(e=new s.a(mergeOptions(this._defaultOptions,t,i.b.Get,e))),!(e instanceof s.a))throw new Error("First argument must be a url string or Request instance.");if(e.method!==i.b.Get)throw new Error("JSONP requests must use GET request method.");return n=httpRequest(this._backend,e)},Jsonp.decorators=[{type:o.Injectable}],Jsonp.ctorParameters=function(){return[{type:a.a},{type:r.a}]},Jsonp}(l)},function(e,t,n){"use strict";var o=n(410),r=n(77),i=n(139),a=n(195),s=n(196);n.d(t,"a",function(){return l});var u=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},l=function(e){function Request(t){e.call(this);var o=t.url;if(this.url=t.url,t.search){var r=t.search.toString();if(r.length>0){var s="?";this.url.indexOf("?")!=-1&&(s="&"==this.url[this.url.length-1]?"":"&"),this.url=o+s+r}}this._body=t.body,this.method=n.i(a.d)(t.method),this.headers=new i.a(t.headers),this.contentType=this.detectContentType(),this.withCredentials=t.withCredentials,this.responseType=t.responseType}return u(Request,e),Request.prototype.detectContentType=function(){switch(this.headers.get("content-type")){case"application/json":return r.e.JSON;case"application/x-www-form-urlencoded":return r.e.FORM;case"multipart/form-data":return r.e.FORM_DATA;case"text/plain":case"text/html":return r.e.TEXT;case"application/octet-stream":return this._body instanceof f?r.e.ARRAY_BUFFER:r.e.BLOB;default:return this.detectContentTypeFromBody()}},Request.prototype.detectContentTypeFromBody=function(){return null==this._body?r.e.NONE:this._body instanceof s.a?r.e.FORM:this._body instanceof p?r.e.FORM_DATA:this._body instanceof g?r.e.BLOB:this._body instanceof f?r.e.ARRAY_BUFFER:this._body&&"object"==typeof this._body?r.e.JSON:r.e.TEXT},Request.prototype.getBody=function(){switch(this.contentType){case r.e.JSON:return this.text();case r.e.FORM:return this.text();case r.e.FORM_DATA:return this._body;case r.e.TEXT:return this.text();case r.e.BLOB:return this.blob();case r.e.ARRAY_BUFFER:return this.arrayBuffer();default:return null}},Request}(o.a),c=function(){},d="object"==typeof window?window:c,p=d.FormData||c,g=d.Blob||c,f=d.ArrayBuffer||c},function(e,t,n){"use strict";var o=n(164),r=n(1),i=n(676),a=n(414);n.d(t,"a",function(){return s});var s=[i.a,{provide:r.COMPILER_OPTIONS,useValue:{providers:[{provide:o.a,useClass:a.a}]},multi:!0}]},function(e,t,n){"use strict";var o=n(164),r=n(1);n.d(t,"a",function(){return a});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=function(e){function ResourceLoaderImpl(){e.apply(this,arguments)}return i(ResourceLoaderImpl,e),ResourceLoaderImpl.prototype.get=function(e){var t,n,o=new Promise(function(e,o){t=e,n=o}),r=new XMLHttpRequest;return r.open("GET",e,!0),r.responseType="text",r.onload=function(){var o=r.response||r.responseText,i=1223===r.status?204:r.status;0===i&&(i=o?200:0),200<=i&&i<=300?t(o):n("Failed to load "+e)},r.onerror=function(){n("Failed to load "+e)},r.send(),o},ResourceLoaderImpl.decorators=[{type:r.Injectable}],ResourceLoaderImpl.ctorParameters=function(){return[]},ResourceLoaderImpl}(o.a)},function(e,t,n){"use strict";function initDomAdapter(){s.a.makeCurrent(),l.a.init()}function errorHandler(){return new r.ErrorHandler}function _document(){return n.i(p.a)().defaultDoc()}function _resolveDefaultAnimationDriver(){return n.i(p.a)().supportsWebAnimation()?new a.a:i.a.NOOP}var o=n(68),r=n(1),i=n(281),a=n(422),s=n(416),u=n(417),l=n(418),c=n(419),d=n(282),p=n(23),g=n(283),f=n(197),h=n(420),m=n(112),y=n(284),b=n(421),v=n(285),_=n(423);n.d(t,"b",function(){return E}),n.d(t,"c",function(){return T}),n.d(t,"d",function(){return S}),t.a=initDomAdapter,n.d(t,"e",function(){return A});var E=[{provide:r.PLATFORM_INITIALIZER,useValue:initDomAdapter,multi:!0},{provide:o.PlatformLocation,useClass:u.a}],T=[{provide:r.Sanitizer,useExisting:_.a},{provide:_.a,useClass:_.b}],S=n.i(r.createPlatformFactory)(r.platformCore,"browser",E),A=function(){function BrowserModule(e){if(e)throw new Error("BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.");
}return BrowserModule.decorators=[{type:r.NgModule,args:[{providers:[T,{provide:r.ErrorHandler,useFactory:errorHandler,deps:[]},{provide:f.a,useFactory:_document,deps:[]},{provide:m.c,useClass:h.a,multi:!0},{provide:m.c,useClass:b.a,multi:!0},{provide:m.c,useClass:y.a,multi:!0},{provide:y.b,useClass:y.c},{provide:g.a,useClass:g.b},{provide:r.RootRenderer,useExisting:g.a},{provide:v.b,useExisting:v.a},{provide:i.a,useFactory:_resolveDefaultAnimationDriver},v.a,r.Testability,m.a,d.a,c.a],exports:[o.CommonModule,r.ApplicationModule]}]}],BrowserModule.ctorParameters=function(){return[{type:BrowserModule,decorators:[{type:r.Optional},{type:r.SkipSelf}]}]},BrowserModule}()},function(e,t,n){"use strict";function getBaseElementHref(){return g||(g=document.querySelector("base"))?g.getAttribute("href"):null}function relativePath(e){return a||(a=document.createElement("a")),a.setAttribute("href",e),"/"===a.pathname.charAt(0)?a.pathname:"/"+a.pathname}function parseCookieValue(e,t){t=encodeURIComponent(t);for(var n=0,o=e.split(";");n<o.length;n++){var r=o[n],i=r.indexOf("="),a=i==-1?[r,""]:[r.slice(0,i),r.slice(i+1)],s=a[0],u=a[1];if(s.trim()===t)return decodeURIComponent(u)}return null}var o=n(23),r=n(50),i=n(679);n.d(t,"a",function(){return p});var a,s=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},u={"class":"className",innerHtml:"innerHTML",readonly:"readOnly",tabindex:"tabIndex"},l=3,c={"\b":"Backspace","\t":"Tab","":"Delete","":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},d={A:"1",B:"2",C:"3",D:"4",E:"5",F:"6",G:"7",H:"8",I:"9",J:"*",K:"+",M:"-",N:".",O:"/","`":"0","":"NumLock"},p=function(e){function BrowserDomAdapter(){e.apply(this,arguments)}return s(BrowserDomAdapter,e),BrowserDomAdapter.prototype.parse=function(e){throw new Error("parse not implemented")},BrowserDomAdapter.makeCurrent=function(){n.i(o.c)(new BrowserDomAdapter)},BrowserDomAdapter.prototype.hasProperty=function(e,t){return t in e},BrowserDomAdapter.prototype.setProperty=function(e,t,n){e[t]=n},BrowserDomAdapter.prototype.getProperty=function(e,t){return e[t]},BrowserDomAdapter.prototype.invoke=function(e,t,n){(o=e)[t].apply(o,n);var o},BrowserDomAdapter.prototype.logError=function(e){window.console&&(console.error?console.error(e):console.log(e))},BrowserDomAdapter.prototype.log=function(e){window.console&&window.console.log&&window.console.log(e)},BrowserDomAdapter.prototype.logGroup=function(e){window.console&&window.console.group&&window.console.group(e)},BrowserDomAdapter.prototype.logGroupEnd=function(){window.console&&window.console.groupEnd&&window.console.groupEnd()},Object.defineProperty(BrowserDomAdapter.prototype,"attrToPropMap",{get:function(){return u},enumerable:!0,configurable:!0}),BrowserDomAdapter.prototype.query=function(e){return document.querySelector(e)},BrowserDomAdapter.prototype.querySelector=function(e,t){return e.querySelector(t)},BrowserDomAdapter.prototype.querySelectorAll=function(e,t){return e.querySelectorAll(t)},BrowserDomAdapter.prototype.on=function(e,t,n){e.addEventListener(t,n,!1)},BrowserDomAdapter.prototype.onAndCancel=function(e,t,n){return e.addEventListener(t,n,!1),function(){e.removeEventListener(t,n,!1)}},BrowserDomAdapter.prototype.dispatchEvent=function(e,t){e.dispatchEvent(t)},BrowserDomAdapter.prototype.createMouseEvent=function(e){var t=document.createEvent("MouseEvent");return t.initEvent(e,!0,!0),t},BrowserDomAdapter.prototype.createEvent=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t},BrowserDomAdapter.prototype.preventDefault=function(e){e.preventDefault(),e.returnValue=!1},BrowserDomAdapter.prototype.isPrevented=function(e){return e.defaultPrevented||n.i(r.a)(e.returnValue)&&!e.returnValue},BrowserDomAdapter.prototype.getInnerHTML=function(e){return e.innerHTML},BrowserDomAdapter.prototype.getTemplateContent=function(e){return"content"in e&&e instanceof HTMLTemplateElement?e.content:null},BrowserDomAdapter.prototype.getOuterHTML=function(e){return e.outerHTML},BrowserDomAdapter.prototype.nodeName=function(e){return e.nodeName},BrowserDomAdapter.prototype.nodeValue=function(e){return e.nodeValue},BrowserDomAdapter.prototype.type=function(e){return e.type},BrowserDomAdapter.prototype.content=function(e){return this.hasProperty(e,"content")?e.content:e},BrowserDomAdapter.prototype.firstChild=function(e){return e.firstChild},BrowserDomAdapter.prototype.nextSibling=function(e){return e.nextSibling},BrowserDomAdapter.prototype.parentElement=function(e){return e.parentNode},BrowserDomAdapter.prototype.childNodes=function(e){return e.childNodes},BrowserDomAdapter.prototype.childNodesAsList=function(e){for(var t=e.childNodes,n=new Array(t.length),o=0;o<t.length;o++)n[o]=t[o];return n},BrowserDomAdapter.prototype.clearNodes=function(e){for(;e.firstChild;)e.removeChild(e.firstChild)},BrowserDomAdapter.prototype.appendChild=function(e,t){e.appendChild(t)},BrowserDomAdapter.prototype.removeChild=function(e,t){e.removeChild(t)},BrowserDomAdapter.prototype.replaceChild=function(e,t,n){e.replaceChild(t,n)},BrowserDomAdapter.prototype.remove=function(e){return e.parentNode&&e.parentNode.removeChild(e),e},BrowserDomAdapter.prototype.insertBefore=function(e,t){e.parentNode.insertBefore(t,e)},BrowserDomAdapter.prototype.insertAllBefore=function(e,t){t.forEach(function(t){return e.parentNode.insertBefore(t,e)})},BrowserDomAdapter.prototype.insertAfter=function(e,t){e.parentNode.insertBefore(t,e.nextSibling)},BrowserDomAdapter.prototype.setInnerHTML=function(e,t){e.innerHTML=t},BrowserDomAdapter.prototype.getText=function(e){return e.textContent},BrowserDomAdapter.prototype.setText=function(e,t){e.textContent=t},BrowserDomAdapter.prototype.getValue=function(e){return e.value},BrowserDomAdapter.prototype.setValue=function(e,t){e.value=t},BrowserDomAdapter.prototype.getChecked=function(e){return e.checked},BrowserDomAdapter.prototype.setChecked=function(e,t){e.checked=t},BrowserDomAdapter.prototype.createComment=function(e){return document.createComment(e)},BrowserDomAdapter.prototype.createTemplate=function(e){var t=document.createElement("template");return t.innerHTML=e,t},BrowserDomAdapter.prototype.createElement=function(e,t){return void 0===t&&(t=document),t.createElement(e)},BrowserDomAdapter.prototype.createElementNS=function(e,t,n){return void 0===n&&(n=document),n.createElementNS(e,t)},BrowserDomAdapter.prototype.createTextNode=function(e,t){return void 0===t&&(t=document),t.createTextNode(e)},BrowserDomAdapter.prototype.createScriptTag=function(e,t,n){void 0===n&&(n=document);var o=n.createElement("SCRIPT");return o.setAttribute(e,t),o},BrowserDomAdapter.prototype.createStyleElement=function(e,t){void 0===t&&(t=document);var n=t.createElement("style");return this.appendChild(n,this.createTextNode(e)),n},BrowserDomAdapter.prototype.createShadowRoot=function(e){return e.createShadowRoot()},BrowserDomAdapter.prototype.getShadowRoot=function(e){return e.shadowRoot},BrowserDomAdapter.prototype.getHost=function(e){return e.host},BrowserDomAdapter.prototype.clone=function(e){return e.cloneNode(!0)},BrowserDomAdapter.prototype.getElementsByClassName=function(e,t){return e.getElementsByClassName(t)},BrowserDomAdapter.prototype.getElementsByTagName=function(e,t){return e.getElementsByTagName(t)},BrowserDomAdapter.prototype.classList=function(e){return Array.prototype.slice.call(e.classList,0)},BrowserDomAdapter.prototype.addClass=function(e,t){e.classList.add(t)},BrowserDomAdapter.prototype.removeClass=function(e,t){e.classList.remove(t)},BrowserDomAdapter.prototype.hasClass=function(e,t){return e.classList.contains(t)},BrowserDomAdapter.prototype.setStyle=function(e,t,n){e.style[t]=n},BrowserDomAdapter.prototype.removeStyle=function(e,t){e.style[t]=""},BrowserDomAdapter.prototype.getStyle=function(e,t){return e.style[t]},BrowserDomAdapter.prototype.hasStyle=function(e,t,n){void 0===n&&(n=null);var o=this.getStyle(e,t)||"";return n?o==n:o.length>0},BrowserDomAdapter.prototype.tagName=function(e){return e.tagName},BrowserDomAdapter.prototype.attributeMap=function(e){for(var t=new Map,n=e.attributes,o=0;o<n.length;o++){var r=n[o];t.set(r.name,r.value)}return t},BrowserDomAdapter.prototype.hasAttribute=function(e,t){return e.hasAttribute(t)},BrowserDomAdapter.prototype.hasAttributeNS=function(e,t,n){return e.hasAttributeNS(t,n)},BrowserDomAdapter.prototype.getAttribute=function(e,t){return e.getAttribute(t)},BrowserDomAdapter.prototype.getAttributeNS=function(e,t,n){return e.getAttributeNS(t,n)},BrowserDomAdapter.prototype.setAttribute=function(e,t,n){e.setAttribute(t,n)},BrowserDomAdapter.prototype.setAttributeNS=function(e,t,n,o){e.setAttributeNS(t,n,o)},BrowserDomAdapter.prototype.removeAttribute=function(e,t){e.removeAttribute(t)},BrowserDomAdapter.prototype.removeAttributeNS=function(e,t,n){e.removeAttributeNS(t,n)},BrowserDomAdapter.prototype.templateAwareRoot=function(e){return this.isTemplateElement(e)?this.content(e):e},BrowserDomAdapter.prototype.createHtmlDocument=function(){return document.implementation.createHTMLDocument("fakeTitle")},BrowserDomAdapter.prototype.defaultDoc=function(){return document},BrowserDomAdapter.prototype.getBoundingClientRect=function(e){try{return e.getBoundingClientRect()}catch(t){return{top:0,bottom:0,left:0,right:0,width:0,height:0}}},BrowserDomAdapter.prototype.getTitle=function(){return document.title},BrowserDomAdapter.prototype.setTitle=function(e){document.title=e||""},BrowserDomAdapter.prototype.elementMatches=function(e,t){return e instanceof HTMLElement&&(e.matches&&e.matches(t)||e.msMatchesSelector&&e.msMatchesSelector(t)||e.webkitMatchesSelector&&e.webkitMatchesSelector(t))},BrowserDomAdapter.prototype.isTemplateElement=function(e){return e instanceof HTMLElement&&"TEMPLATE"==e.nodeName},BrowserDomAdapter.prototype.isTextNode=function(e){return e.nodeType===Node.TEXT_NODE},BrowserDomAdapter.prototype.isCommentNode=function(e){return e.nodeType===Node.COMMENT_NODE},BrowserDomAdapter.prototype.isElementNode=function(e){return e.nodeType===Node.ELEMENT_NODE},BrowserDomAdapter.prototype.hasShadowRoot=function(e){return n.i(r.a)(e.shadowRoot)&&e instanceof HTMLElement},BrowserDomAdapter.prototype.isShadowRoot=function(e){return e instanceof DocumentFragment},BrowserDomAdapter.prototype.importIntoDoc=function(e){return document.importNode(this.templateAwareRoot(e),!0)},BrowserDomAdapter.prototype.adoptNode=function(e){return document.adoptNode(e)},BrowserDomAdapter.prototype.getHref=function(e){return e.href},BrowserDomAdapter.prototype.getEventKey=function(e){var t=e.key;if(n.i(r.b)(t)){if(t=e.keyIdentifier,n.i(r.b)(t))return"Unidentified";t.startsWith("U+")&&(t=String.fromCharCode(parseInt(t.substring(2),16)),e.location===l&&d.hasOwnProperty(t)&&(t=d[t]))}return c[t]||t},BrowserDomAdapter.prototype.getGlobalEventTarget=function(e){return"window"===e?window:"document"===e?document:"body"===e?document.body:void 0},BrowserDomAdapter.prototype.getHistory=function(){return window.history},BrowserDomAdapter.prototype.getLocation=function(){return window.location},BrowserDomAdapter.prototype.getBaseHref=function(){var e=getBaseElementHref();return n.i(r.b)(e)?null:relativePath(e)},BrowserDomAdapter.prototype.resetBaseElement=function(){g=null},BrowserDomAdapter.prototype.getUserAgent=function(){return window.navigator.userAgent},BrowserDomAdapter.prototype.setData=function(e,t,n){this.setAttribute(e,"data-"+t,n)},BrowserDomAdapter.prototype.getData=function(e,t){return this.getAttribute(e,"data-"+t)},BrowserDomAdapter.prototype.getComputedStyle=function(e){return getComputedStyle(e)},BrowserDomAdapter.prototype.setGlobalVar=function(e,t){n.i(r.c)(r.d,e,t)},BrowserDomAdapter.prototype.supportsWebAnimation=function(){return"function"==typeof Element.prototype.animate},BrowserDomAdapter.prototype.performanceNow=function(){return window.performance&&window.performance.now?window.performance.now():(new Date).getTime()},BrowserDomAdapter.prototype.supportsCookies=function(){return!0},BrowserDomAdapter.prototype.getCookie=function(e){return parseCookieValue(document.cookie,e)},BrowserDomAdapter.prototype.setCookie=function(e,t){document.cookie=encodeURIComponent(e)+"="+encodeURIComponent(t)},BrowserDomAdapter}(i.a),g=null},function(e,t,n){"use strict";var o=n(68),r=n(1),i=n(23),a=n(680);n.d(t,"a",function(){return u});var s=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},u=function(e){function BrowserPlatformLocation(){e.call(this),this._init()}return s(BrowserPlatformLocation,e),BrowserPlatformLocation.prototype._init=function(){this._location=n.i(i.a)().getLocation(),this._history=n.i(i.a)().getHistory()},Object.defineProperty(BrowserPlatformLocation.prototype,"location",{get:function(){return this._location},enumerable:!0,configurable:!0}),BrowserPlatformLocation.prototype.getBaseHrefFromDOM=function(){return n.i(i.a)().getBaseHref()},BrowserPlatformLocation.prototype.onPopState=function(e){n.i(i.a)().getGlobalEventTarget("window").addEventListener("popstate",e,!1)},BrowserPlatformLocation.prototype.onHashChange=function(e){n.i(i.a)().getGlobalEventTarget("window").addEventListener("hashchange",e,!1)},Object.defineProperty(BrowserPlatformLocation.prototype,"pathname",{get:function(){return this._location.pathname},set:function(e){this._location.pathname=e},enumerable:!0,configurable:!0}),Object.defineProperty(BrowserPlatformLocation.prototype,"search",{get:function(){return this._location.search},enumerable:!0,configurable:!0}),Object.defineProperty(BrowserPlatformLocation.prototype,"hash",{get:function(){return this._location.hash},enumerable:!0,configurable:!0}),BrowserPlatformLocation.prototype.pushState=function(e,t,o){n.i(a.a)()?this._history.pushState(e,t,o):this._location.hash=o},BrowserPlatformLocation.prototype.replaceState=function(e,t,o){n.i(a.a)()?this._history.replaceState(e,t,o):this._location.hash=o},BrowserPlatformLocation.prototype.forward=function(){this._history.forward()},BrowserPlatformLocation.prototype.back=function(){this._history.back()},BrowserPlatformLocation.decorators=[{type:r.Injectable}],BrowserPlatformLocation.ctorParameters=function(){return[]},BrowserPlatformLocation}(o.PlatformLocation)},function(e,t,n){"use strict";var o=n(1),r=n(23),i=n(50);n.d(t,"a",function(){return a});var a=function(){function BrowserGetTestability(){}return BrowserGetTestability.init=function(){n.i(o.setTestabilityGetter)(new BrowserGetTestability)},BrowserGetTestability.prototype.addToWindow=function(e){i.d.getAngularTestability=function(t,n){void 0===n&&(n=!0);var o=e.findTestabilityInTree(t,n);if(null==o)throw new Error("Could not find testability for element.");return o},i.d.getAllAngularTestabilities=function(){return e.getAllTestabilities()},i.d.getAllAngularRootElements=function(){return e.getAllRootElements()};var t=function(e){var t=i.d.getAllAngularTestabilities(),n=t.length,o=!1,r=function(t){o=o||t,n--,0==n&&e(o)};t.forEach(function(e){e.whenStable(r)})};i.d.frameworkStabilizers||(i.d.frameworkStabilizers=[]),i.d.frameworkStabilizers.push(t)},BrowserGetTestability.prototype.findTestabilityInTree=function(e,t,o){if(null==t)return null;var a=e.getTestability(t);return n.i(i.a)(a)?a:o?n.i(r.a)().isShadowRoot(t)?this.findTestabilityInTree(e,n.i(r.a)().getHost(t),!0):this.findTestabilityInTree(e,n.i(r.a)().parentElement(t),!0):null},BrowserGetTestability}()},function(e,t,n){"use strict";var o=n(23);n.d(t,"a",function(){return r});var r=function(){function Title(){}return Title.prototype.getTitle=function(){return n.i(o.a)().getTitle()},Title.prototype.setTitle=function(e){n.i(o.a)().setTitle(e)},Title}()},function(e,t,n){"use strict";var o=n(1),r=n(112);n.d(t,"a",function(){return a});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=function(e){function DomEventsPlugin(){e.apply(this,arguments)}return i(DomEventsPlugin,e),DomEventsPlugin.prototype.supports=function(e){return!0},DomEventsPlugin.prototype.addEventListener=function(e,t,n){return e.addEventListener(t,n,!1),function(){return e.removeEventListener(t,n,!1)}},DomEventsPlugin.decorators=[{type:o.Injectable}],DomEventsPlugin.ctorParameters=function(){return[]},DomEventsPlugin}(r.b)},function(e,t,n){"use strict";var o=n(1),r=n(23),i=n(112);n.d(t,"a",function(){return l});var a=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},s=["alt","control","meta","shift"],u={alt:function(e){return e.altKey},control:function(e){return e.ctrlKey},meta:function(e){return e.metaKey},shift:function(e){return e.shiftKey}},l=function(e){function KeyEventsPlugin(){e.call(this)}return a(KeyEventsPlugin,e),KeyEventsPlugin.prototype.supports=function(e){return null!=KeyEventsPlugin.parseEventName(e)},KeyEventsPlugin.prototype.addEventListener=function(e,t,o){var i=KeyEventsPlugin.parseEventName(t),a=KeyEventsPlugin.eventCallback(i.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(function(){return n.i(r.a)().onAndCancel(e,i.domEventName,a)})},KeyEventsPlugin.parseEventName=function(e){var t=e.toLowerCase().split("."),n=t.shift();if(0===t.length||"keydown"!==n&&"keyup"!==n)return null;var o=KeyEventsPlugin._normalizeKey(t.pop()),r="";if(s.forEach(function(e){var n=t.indexOf(e);n>-1&&(t.splice(n,1),r+=e+".")}),r+=o,0!=t.length||0===o.length)return null;var i={};return i.domEventName=n,i.fullKey=r,i},KeyEventsPlugin.getEventFullKey=function(e){var t="",o=n.i(r.a)().getEventKey(e);return o=o.toLowerCase()," "===o?o="space":"."===o&&(o="dot"),s.forEach(function(n){if(n!=o){var r=u[n];r(e)&&(t+=n+".")}}),t+=o},KeyEventsPlugin.eventCallback=function(e,t,n){return function(o){KeyEventsPlugin.getEventFullKey(o)===e&&n.runGuarded(function(){return t(o)})}},KeyEventsPlugin._normalizeKey=function(e){switch(e){case"esc":return"escape";default:return e}},KeyEventsPlugin.decorators=[{type:o.Injectable}],KeyEventsPlugin.ctorParameters=function(){return[]},KeyEventsPlugin}(i.b)},function(e,t,n){"use strict";function _populateStyles(e,t){var r={};return e.styles.forEach(function(e){Object.keys(e).forEach(function(t){r[t]=e[t]})}),Object.keys(t).forEach(function(e){n.i(o.a)(r[e])||(r[e]=t[e])}),r}function filterWebAnimationPlayerFn(e){return e instanceof r.a}var o=n(50),r=n(684);n.d(t,"a",function(){return i});var i=function(){function WebAnimationsDriver(){}return WebAnimationsDriver.prototype.animate=function(e,t,i,a,s,u,l){void 0===l&&(l=[]);var c=[],d={};if(n.i(o.a)(t)&&(d=_populateStyles(t,{})),i.forEach(function(e){var t=_populateStyles(e.styles,d);t.offset=Math.max(0,Math.min(1,e.offset)),c.push(t)}),0==c.length)c=[d,d];else if(1==c.length){var p=d,g=c[0];g.offset=null,c=[p,g]}var f={duration:a,delay:s,fill:"both"};return u&&(f.easing=u),l=l.filter(filterWebAnimationPlayerFn),new r.a(e,c,f,l)},WebAnimationsDriver}()},function(e,t,n){"use strict";var o=n(1),r=n(689),i=n(690),a=n(287);n.d(t,"a",function(){return u}),n.d(t,"b",function(){return l});var s=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},u=function(){function DomSanitizer(){}return DomSanitizer.prototype.sanitize=function(e,t){},DomSanitizer.prototype.bypassSecurityTrustHtml=function(e){},DomSanitizer.prototype.bypassSecurityTrustStyle=function(e){},DomSanitizer.prototype.bypassSecurityTrustScript=function(e){},DomSanitizer.prototype.bypassSecurityTrustUrl=function(e){},DomSanitizer.prototype.bypassSecurityTrustResourceUrl=function(e){},DomSanitizer}(),l=function(e){function DomSanitizerImpl(){e.apply(this,arguments)}return s(DomSanitizerImpl,e),DomSanitizerImpl.prototype.sanitize=function(e,t){if(null==t)return null;switch(e){case o.SecurityContext.NONE:return t;case o.SecurityContext.HTML:return t instanceof d?t.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(t,"HTML"),n.i(r.a)(String(t)));case o.SecurityContext.STYLE:return t instanceof p?t.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(t,"Style"),n.i(i.a)(t));case o.SecurityContext.SCRIPT:if(t instanceof g)return t.changingThisBreaksApplicationSecurity;throw this.checkNotSafeValue(t,"Script"),new Error("unsafe value used in a script context");case o.SecurityContext.URL:return t instanceof h||t instanceof f?t.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(t,"URL"),n.i(a.a)(String(t)));case o.SecurityContext.RESOURCE_URL:if(t instanceof h)return t.changingThisBreaksApplicationSecurity;throw this.checkNotSafeValue(t,"ResourceURL"),new Error("unsafe value used in a resource URL context (see http://g.co/ng/security#xss)");default:throw new Error("Unexpected SecurityContext "+e+" (see http://g.co/ng/security#xss)")}},DomSanitizerImpl.prototype.checkNotSafeValue=function(e,t){if(e instanceof c)throw new Error("Required a safe "+t+", got a "+e.getTypeName()+" (see http://g.co/ng/security#xss)")},DomSanitizerImpl.prototype.bypassSecurityTrustHtml=function(e){return new d(e)},DomSanitizerImpl.prototype.bypassSecurityTrustStyle=function(e){return new p(e)},DomSanitizerImpl.prototype.bypassSecurityTrustScript=function(e){return new g(e)},DomSanitizerImpl.prototype.bypassSecurityTrustUrl=function(e){return new f(e)},DomSanitizerImpl.prototype.bypassSecurityTrustResourceUrl=function(e){return new h(e)},DomSanitizerImpl.decorators=[{type:o.Injectable}],DomSanitizerImpl.ctorParameters=function(){return[]},DomSanitizerImpl}(u),c=function(){function SafeValueImpl(e){this.changingThisBreaksApplicationSecurity=e}return SafeValueImpl.prototype.getTypeName=function(){},SafeValueImpl.prototype.toString=function(){return"SafeValue must use [property]=binding: "+this.changingThisBreaksApplicationSecurity+" (see http://g.co/ng/security#xss)"},SafeValueImpl}(),d=function(e){function SafeHtmlImpl(){e.apply(this,arguments)}return s(SafeHtmlImpl,e),SafeHtmlImpl.prototype.getTypeName=function(){return"HTML"},SafeHtmlImpl}(c),p=function(e){function SafeStyleImpl(){e.apply(this,arguments)}return s(SafeStyleImpl,e),SafeStyleImpl.prototype.getTypeName=function(){return"Style"},SafeStyleImpl}(c),g=function(e){function SafeScriptImpl(){e.apply(this,arguments)}return s(SafeScriptImpl,e),SafeScriptImpl.prototype.getTypeName=function(){return"Script"},SafeScriptImpl}(c),f=function(e){function SafeUrlImpl(){e.apply(this,arguments)}return s(SafeUrlImpl,e),SafeUrlImpl.prototype.getTypeName=function(){return"URL"},SafeUrlImpl}(c),h=function(e){function SafeResourceUrlImpl(){e.apply(this,arguments)}return s(SafeResourceUrlImpl,e),SafeResourceUrlImpl.prototype.getTypeName=function(){return"ResourceURL"},SafeResourceUrlImpl}(c)},function(e,t,n){"use strict";var o=n(1),r=n(198),i=n(288);n.d(t,"a",function(){return a});var a=function(){function RouterLinkActive(e,t,n){var o=this;this.router=e,this.element=t,this.renderer=n,this.classes=[],this.routerLinkActiveOptions={exact:!1},this.subscription=e.events.subscribe(function(e){e instanceof r.b&&o.update()})}return RouterLinkActive.prototype.ngAfterContentInit=function(){var e=this;this.links.changes.subscribe(function(t){return e.update()}),this.linksWithHrefs.changes.subscribe(function(t){return e.update()}),this.update()},Object.defineProperty(RouterLinkActive.prototype,"routerLinkActive",{set:function(e){Array.isArray(e)?this.classes=e:this.classes=e.split(" ")},enumerable:!0,configurable:!0}),RouterLinkActive.prototype.ngOnChanges=function(e){this.update()},RouterLinkActive.prototype.ngOnDestroy=function(){this.subscription.unsubscribe()},RouterLinkActive.prototype.update=function(){var e=this;if(this.links&&this.linksWithHrefs&&this.router.navigated){var t=this.reduceList(this.links),n=this.reduceList(this.linksWithHrefs);this.classes.forEach(function(o){return e.renderer.setElementClass(e.element.nativeElement,o,t||n)})}},RouterLinkActive.prototype.reduceList=function(e){var t=this;return e.reduce(function(e,n){return e||t.router.isActive(n.urlTree,t.routerLinkActiveOptions.exact)},!1)},RouterLinkActive.decorators=[{type:o.Directive,args:[{selector:"[routerLinkActive]"}]}],RouterLinkActive.ctorParameters=[{type:r.a},{type:o.ElementRef},{type:o.Renderer}],RouterLinkActive.propDecorators={links:[{type:o.ContentChildren,args:[i.a,{descendants:!0}]}],linksWithHrefs:[{type:o.ContentChildren,args:[i.b,{descendants:!0}]}],routerLinkActiveOptions:[{type:o.Input}],routerLinkActive:[{type:o.Input}]},RouterLinkActive}()},function(e,t,n){"use strict";var o=n(1),r=n(200),i=n(58);n.d(t,"a",function(){return a});var a=function(){function RouterOutlet(e,t,n,r){this.parentOutletMap=e,this.location=t,this.resolver=n,this.name=r,this.activateEvents=new o.EventEmitter,this.deactivateEvents=new o.EventEmitter,e.registerOutlet(r?r:i.a,this)}return RouterOutlet.prototype.ngOnDestroy=function(){this.parentOutletMap.removeOutlet(this.name?this.name:i.a)},Object.defineProperty(RouterOutlet.prototype,"isActivated",{get:function(){return!!this.activated},enumerable:!0,configurable:!0}),Object.defineProperty(RouterOutlet.prototype,"component",{get:function(){if(!this.activated)throw new Error("Outlet is not activated");return this.activated.instance},enumerable:!0,configurable:!0}),Object.defineProperty(RouterOutlet.prototype,"activatedRoute",{get:function(){if(!this.activated)throw new Error("Outlet is not activated");return this._activatedRoute},enumerable:!0,configurable:!0}),RouterOutlet.prototype.deactivate=function(){if(this.activated){var e=this.component;this.activated.destroy(),this.activated=null,this.deactivateEvents.emit(e)}},RouterOutlet.prototype.activate=function(e,t,n,r,i){this.outletMap=i,this._activatedRoute=e;var a,s=e._futureSnapshot,u=s._routeConfig.component;a=t?t.resolveComponentFactory(u):this.resolver.resolveComponentFactory(u);var l=n?n:this.location.parentInjector,c=o.ReflectiveInjector.fromResolvedProviders(r,l);this.activated=this.location.createComponent(a,this.location.length,c,[]),this.activated.changeDetectorRef.detectChanges(),this.activateEvents.emit(this.activated.instance)},RouterOutlet.decorators=[{type:o.Directive,args:[{selector:"router-outlet"}]}],RouterOutlet.ctorParameters=[{type:r.a},{type:o.ViewContainerRef},{type:o.ComponentFactoryResolver},{type:void 0,decorators:[{type:o.Attribute,args:["name"]}]}],RouterOutlet.propDecorators={activateEvents:[{type:o.Output,args:["activate"]}],deactivateEvents:[{type:o.Output,args:["deactivate"]}]},RouterOutlet}()},function(e,t,n){"use strict";function provideLocationStrategy(e,t,n){return void 0===n&&(n={}),n.useHash?new o.HashLocationStrategy(e,t):new o.PathLocationStrategy(e,t)}function provideForRootGuard(e){if(e)throw new Error("RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() instead.");return"guarded"}function provideRoutes(e){return[{provide:r.ANALYZE_FOR_ENTRY_COMPONENTS,multi:!0,useValue:e},{provide:l.c,multi:!0,useValue:e}]}function setupRouter(e,t,o,r,i,a,s,l,c){if(void 0===c&&(c={}),0==e.componentTypes.length)throw new Error("Bootstrap at least one component before injecting Router.");var d=e.componentTypes[0],p=new u.a(d,t,o,r,i,a,s,n.i(g.a)(l));return c.errorHandler&&(p.errorHandler=c.errorHandler),c.enableTracing&&p.events.subscribe(function(e){console.group("Router Event: "+e.constructor.name),console.log(e.toString()),console.log(e),console.groupEnd()}),p}function rootRoute(e){return e.routerState.root}function initialRouterNavigation(e,t){return function(){t.initialNavigation===!1?e.setUpLocationChangeListener():e.initialNavigation()}}function provideRouterInitializer(){return{provide:r.APP_BOOTSTRAP_LISTENER,multi:!0,useFactory:initialRouterNavigation,deps:[u.a,h]}}var o=n(68),r=n(1),i=n(288),a=n(424),s=n(425),u=n(198),l=n(199),c=n(200),d=n(113),p=n(91),g=n(59);n.d(t,"a",function(){return y}),n.d(t,"b",function(){return b}),t.c=provideRoutes;var f=[s.a,i.a,i.b,a.a],h=new r.OpaqueToken("ROUTER_CONFIGURATION"),m=new r.OpaqueToken("ROUTER_FORROOT_GUARD"),y=({provide:o.LocationStrategy,useClass:o.PathLocationStrategy},{provide:o.LocationStrategy,useClass:o.HashLocationStrategy},[o.Location,{provide:p.g,useClass:p.h},{provide:u.a,useFactory:setupRouter,deps:[r.ApplicationRef,p.g,c.a,o.Location,r.Injector,r.NgModuleFactoryLoader,r.Compiler,l.c,h]},c.a,{provide:d.b,useFactory:rootRoute,deps:[u.a]},{provide:r.NgModuleFactoryLoader,useClass:r.SystemJsNgModuleLoader},{provide:h,useValue:{enableTracing:!1}}]),b=function(){function RouterModule(e){}return RouterModule.forRoot=function(e,t){return{ngModule:RouterModule,providers:[y,provideRoutes(e),{provide:m,useFactory:provideForRootGuard,deps:[[u.a,new r.Optional,new r.SkipSelf]]},{provide:h,useValue:t?t:{}},{provide:o.LocationStrategy,useFactory:provideLocationStrategy,deps:[o.PlatformLocation,[new r.Inject(o.APP_BASE_HREF),new r.Optional],h]},provideRouterInitializer()]}},RouterModule.forChild=function(e){return{ngModule:RouterModule,providers:[provideRoutes(e)]}},RouterModule.decorators=[{type:r.NgModule,args:[{declarations:f,exports:f}]}],RouterModule.ctorParameters=[{type:void 0,decorators:[{type:r.Optional},{type:r.Inject,args:[m]}]}],RouterModule}()},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t){"use strict";t.empty={closed:!0,next:function(e){},error:function(e){throw e},complete:function(){}}},function(e,t,n){"use strict";var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(22),i=function(e){function SubjectSubscription(t,n){e.call(this),this.subject=t,this.subscriber=n,this.closed=!1}return o(SubjectSubscription,e),SubjectSubscription.prototype.unsubscribe=function(){if(!this.closed){this.closed=!0;var e=this.subject,t=e.observers;if(this.subject=null,t&&0!==t.length&&!e.isStopped&&!e.closed){var n=t.indexOf(this.subscriber);n!==-1&&t.splice(n,1)}}},SubjectSubscription}(r.Subscription);t.SubjectSubscription=i},,,,function(e,t,n){"use strict";var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(66),i=n(522),a=n(524),s=n(496),u=n(1072),l=n(65),c=n(1061),d=n(155),p=n(0),g=n(152),f=n(156),h=function(e){function FromObservable(t,n){e.call(this,null),this.ish=t,this.scheduler=n}return o(FromObservable,e),FromObservable.create=function(e,t){if(null!=e){if("function"==typeof e[f.observable])return e instanceof p.Observable&&!t?e:new FromObservable(e,t);if(r.isArray(e))return new l.ArrayObservable(e,t);if(a.isPromise(e))return new s.PromiseObservable(e,t);if("function"==typeof e[d.iterator]||"string"==typeof e)return new u.IteratorObservable(e,t);if(i.isArrayLike(e))return new c.ArrayLikeObservable(e,t)}throw new TypeError((null!==e&&typeof e||e)+" is not observable")},FromObservable.prototype._subscribe=function(e){var t=this.ish,n=this.scheduler;return null==n?t[f.observable]().subscribe(e):t[f.observable]().subscribe(new g.ObserveOnSubscriber(e,n,0))},FromObservable}(p.Observable);t.FromObservable=h},function(e,t,n){"use strict";function dispatchNext(e){var t=e.value,n=e.subscriber;n.closed||(n.next(t),n.complete())}function dispatchError(e){var t=e.err,n=e.subscriber;n.closed||n.error(t)}var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);
e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(26),i=n(0),a=function(e){function PromiseObservable(t,n){e.call(this),this.promise=t,this.scheduler=n}return o(PromiseObservable,e),PromiseObservable.create=function(e,t){return new PromiseObservable(e,t)},PromiseObservable.prototype._subscribe=function(e){var t=this,n=this.promise,o=this.scheduler;if(null==o)this._isScalar?e.closed||(e.next(this.value),e.complete()):n.then(function(n){t.value=n,t._isScalar=!0,e.closed||(e.next(n),e.complete())},function(t){e.closed||e.error(t)}).then(null,function(e){r.root.setTimeout(function(){throw e})});else if(this._isScalar){if(!e.closed)return o.schedule(dispatchNext,0,{value:this.value,subscriber:e})}else n.then(function(n){t.value=n,t._isScalar=!0,e.closed||e.add(o.schedule(dispatchNext,0,{value:n,subscriber:e}))},function(t){e.closed||e.add(o.schedule(dispatchError,0,{err:t,subscriber:e}))}).then(null,function(e){r.root.setTimeout(function(){throw e})})},PromiseObservable}(i.Observable);t.PromiseObservable=a},,,function(e,t,n){"use strict";function _catch(e){var t=new a(e),n=this.lift(t);return t.caught=n}var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(4),i=n(5);t._catch=_catch;var a=function(){function CatchOperator(e){this.selector=e}return CatchOperator.prototype.call=function(e,t){return t.subscribe(new s(e,this.selector,this.caught))},CatchOperator}(),s=function(e){function CatchSubscriber(t,n,o){e.call(this,t),this.selector=n,this.caught=o}return o(CatchSubscriber,e),CatchSubscriber.prototype.error=function(t){if(!this.isStopped){var n=void 0;try{n=this.selector(t,this.caught)}catch(o){return void e.prototype.error.call(this,o)}this._unsubscribeAndRecycle(),this.add(i.subscribeToResult(this,n))}},CatchSubscriber}(r.OuterSubscriber)},,function(e,t,n){"use strict";function first(e,t,n){return this.lift(new a(e,t,n,this))}var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(3),i=n(158);t.first=first;var a=function(){function FirstOperator(e,t,n,o){this.predicate=e,this.resultSelector=t,this.defaultValue=n,this.source=o}return FirstOperator.prototype.call=function(e,t){return t.subscribe(new s(e,this.predicate,this.resultSelector,this.defaultValue,this.source))},FirstOperator}(),s=function(e){function FirstSubscriber(t,n,o,r,i){e.call(this,t),this.predicate=n,this.resultSelector=o,this.defaultValue=r,this.source=i,this.index=0,this.hasCompleted=!1,this._emitted=!1}return o(FirstSubscriber,e),FirstSubscriber.prototype._next=function(e){var t=this.index++;this.predicate?this._tryPredicate(e,t):this._emit(e,t)},FirstSubscriber.prototype._tryPredicate=function(e,t){var n;try{n=this.predicate(e,t,this.source)}catch(o){return void this.destination.error(o)}n&&this._emit(e,t)},FirstSubscriber.prototype._emit=function(e,t){return this.resultSelector?void this._tryResultSelector(e,t):void this._emitFinal(e)},FirstSubscriber.prototype._tryResultSelector=function(e,t){var n;try{n=this.resultSelector(e,t)}catch(o){return void this.destination.error(o)}this._emitFinal(n)},FirstSubscriber.prototype._emitFinal=function(e){var t=this.destination;this._emitted||(this._emitted=!0,t.next(e),t.complete(),this.hasCompleted=!0)},FirstSubscriber.prototype._complete=function(){var e=this.destination;this.hasCompleted||"undefined"==typeof this.defaultValue?this.hasCompleted||e.error(new i.EmptyError):(e.next(this.defaultValue),e.complete())},FirstSubscriber}(r.Subscriber)},function(e,t,n){"use strict";function last(e,t,n){return this.lift(new a(e,t,n,this))}var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(3),i=n(158);t.last=last;var a=function(){function LastOperator(e,t,n,o){this.predicate=e,this.resultSelector=t,this.defaultValue=n,this.source=o}return LastOperator.prototype.call=function(e,t){return t.subscribe(new s(e,this.predicate,this.resultSelector,this.defaultValue,this.source))},LastOperator}(),s=function(e){function LastSubscriber(t,n,o,r,i){e.call(this,t),this.predicate=n,this.resultSelector=o,this.defaultValue=r,this.source=i,this.hasValue=!1,this.index=0,"undefined"!=typeof r&&(this.lastValue=r,this.hasValue=!0)}return o(LastSubscriber,e),LastSubscriber.prototype._next=function(e){var t=this.index++;if(this.predicate)this._tryPredicate(e,t);else{if(this.resultSelector)return void this._tryResultSelector(e,t);this.lastValue=e,this.hasValue=!0}},LastSubscriber.prototype._tryPredicate=function(e,t){var n;try{n=this.predicate(e,t,this.source)}catch(o){return void this.destination.error(o)}if(n){if(this.resultSelector)return void this._tryResultSelector(e,t);this.lastValue=e,this.hasValue=!0}},LastSubscriber.prototype._tryResultSelector=function(e,t){var n;try{n=this.resultSelector(e,t)}catch(o){return void this.destination.error(o)}this.lastValue=n,this.hasValue=!0},LastSubscriber.prototype._complete=function(){var e=this.destination;this.hasValue?(e.next(this.lastValue),e.complete()):e.error(new i.EmptyError)},LastSubscriber}(r.Subscriber)},,,,,,,,,,,,function(e,t,n){"use strict";function toPromise(e){var t=this;if(e||(o.root.Rx&&o.root.Rx.config&&o.root.Rx.config.Promise?e=o.root.Rx.config.Promise:o.root.Promise&&(e=o.root.Promise)),!e)throw new Error("no Promise impl found");return new e(function(e,n){var o;t.subscribe(function(e){return o=e},function(e){return n(e)},function(){return e(o)})})}var o=n(26);t.toPromise=toPromise},,,,,,function(e,t){"use strict";var n=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},o=function(e){function UnsubscriptionError(t){e.call(this),this.errors=t;var n=Error.call(this,t?t.length+" errors occurred during unsubscription:\n  "+t.map(function(e,t){return t+1+") "+e.toString()}).join("\n  "):"");this.name=n.name="UnsubscriptionError",this.stack=n.stack,this.message=n.message}return n(UnsubscriptionError,e),UnsubscriptionError}(Error);t.UnsubscriptionError=o},,function(e,t){"use strict";t.isArrayLike=function(e){return e&&"number"==typeof e.length}},function(e,t){"use strict";function isObject(e){return null!=e&&"object"==typeof e}t.isObject=isObject},function(e,t){"use strict";function isPromise(e){return e&&"function"!=typeof e.subscribe&&"function"==typeof e.then}t.isPromise=isPromise},,,function(e,t){function webpackEmptyContext(e){throw new Error("Cannot find module '"+e+"'.")}webpackEmptyContext.keys=function(){return[]},webpackEmptyContext.resolve=webpackEmptyContext,e.exports=webpackEmptyContext,webpackEmptyContext.id=527},,,,,,,,,,,,,,,,,,,,function(e,t,n){n(121)(n(584))},function(e,t,n){n(121)(n(585))},function(e,t,n){n(121)(n(586))},function(e,t,n){n(121)(n(587))},function(e,t,n){n(121)(n(588))},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t){e.exports='/*** IMPORTS FROM imports-loader ***/\nvar module = undefined;\n\n// Do not edit this file; automatically generated by build.py.\n\'use strict\';\n\nvar COMPILED=!0,goog=goog||{};goog.global=this;goog.isDef=function(a){return void 0!==a};goog.exportPath_=function(a,b,c){a=a.split(".");c=c||goog.global;a[0]in c||!c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)!a.length&&goog.isDef(b)?c[d]=b:c=c[d]?c[d]:c[d]={}};\ngoog.define=function(a,b){var c=b;COMPILED||(goog.global.CLOSURE_UNCOMPILED_DEFINES&&Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_UNCOMPILED_DEFINES,a)?c=goog.global.CLOSURE_UNCOMPILED_DEFINES[a]:goog.global.CLOSURE_DEFINES&&Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_DEFINES,a)&&(c=goog.global.CLOSURE_DEFINES[a]));goog.exportPath_(a,c)};goog.DEBUG=!1;goog.LOCALE="en";goog.TRUSTED_SITE=!0;goog.STRICT_MODE_COMPATIBLE=!1;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;\ngoog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;goog.provide=function(a){if(goog.isInModuleLoader_())throw Error("goog.provide can not be used within a goog.module.");if(!COMPILED&&goog.isProvided_(a))throw Error(\'Namespace "\'+a+\'" already declared.\');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var c=a;(c=c.substring(0,c.lastIndexOf(".")))&&!goog.getObjectByName(c);)goog.implicitNamespaces_[c]=!0}goog.exportPath_(a,b)};\ngoog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\ngoog.module=function(a){if(!goog.isString(a)||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInModuleLoader_())throw Error("Module "+a+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You\'re likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");\ngoog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error(\'Namespace "\'+a+\'" already declared.\');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};goog.module.getInternal_=function(a){if(!COMPILED)return goog.isProvided_(a)?a in goog.loadedModules_?goog.loadedModules_[a]:goog.getObjectByName(a):null};goog.moduleLoaderState_=null;goog.isInModuleLoader_=function(){return null!=goog.moduleLoaderState_};\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0};\ngoog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||"",Error("Importing test-only code into non-debug environment"+(a?": "+a:"."));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&goog.isDefAndNotNull(goog.getObjectByName(a))},goog.implicitNamespaces_={"goog.module":!0});\ngoog.getObjectByName=function(a,b){for(var c=a.split("."),d=b||goog.global,e;e=c.shift();)if(goog.isDefAndNotNull(d[e]))d=d[e];else return null;return d};goog.globalize=function(a,b){var c=b||goog.global,d;for(d in a)c[d]=a[d]};\ngoog.addDependency=function(a,b,c,d){if(goog.DEPENDENCIES_ENABLED){var e;a=a.replace(/\\\\/g,"/");var f=goog.dependencies_;d&&"boolean"!==typeof d||(d=d?{module:"goog"}:{});for(var g=0;e=b[g];g++)f.nameToPath[e]=a,f.loadFlags[a]=d;for(d=0;b=c[d];d++)a in f.requires||(f.requires[a]={}),f.requires[a][b]=!0}};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};\ngoog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.IS_OLD_IE_&&goog.maybeProcessDeferredDep_(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.getPathFromDeps_(a);if(b)goog.writeScripts_(b);else throw a="goog.require could not find: "+a,goog.logToConsole_(a),Error(a);}return null}};goog.basePath="";goog.nullFunction=function(){};\ngoog.abstractMethod=function(){throw Error("unimplemented abstract method");};goog.addSingletonGetter=function(a){a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE="detect";\ngoog.TRANSPILER="transpile.js";\ngoog.DEPENDENCIES_ENABLED&&(goog.dependencies_={loadFlags:{},nameToPath:{},requires:{},visited:{},written:{},deferred:{}},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&"write"in a},goog.findBasePath_=function(){if(goog.isDef(goog.global.CLOSURE_BASE_PATH))goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_())for(var a=goog.global.document.getElementsByTagName("SCRIPT"),b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?"),d=-1==d?c.length:d;if("base.js"==\nc.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}},goog.importScript_=function(a,b){(goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_)(a,b)&&(goog.dependencies_.written[a]=!0)},goog.IS_OLD_IE_=!(goog.global.atob||!goog.global.document||!goog.global.document.all),goog.importProcessedScript_=function(a,b,c){goog.importScript_("",\'goog.retrieveAndExec_("\'+a+\'", \'+b+", "+c+");")},goog.queuedModules_=[],goog.wrapModule_=function(a,b){return goog.LOAD_MODULE_USING_EVAL&&goog.isDef(goog.global.JSON)?\n"goog.loadModule("+goog.global.JSON.stringify(b+"\\n//# sourceURL="+a+"\\n")+");":\'goog.loadModule(function(exports) {"use strict";\'+b+"\\n;return exports});\\n//# sourceURL="+a+"\\n"},goog.loadQueuedModules_=function(){var a=goog.queuedModules_.length;if(0<a){var b=goog.queuedModules_;goog.queuedModules_=[];for(var c=0;c<a;c++)goog.maybeProcessDeferredPath_(b[c])}},goog.maybeProcessDeferredDep_=function(a){goog.isDeferredModule_(a)&&goog.allDepsAreAvailable_(a)&&(a=goog.getPathFromDeps_(a),goog.maybeProcessDeferredPath_(goog.basePath+\na))},goog.isDeferredModule_=function(a){var b=(a=goog.getPathFromDeps_(a))&&goog.dependencies_.loadFlags[a]||{},c=b.lang||"es3";return a&&("goog"==b.module||goog.needsTranspile_(c))?goog.basePath+a in goog.dependencies_.deferred:!1},goog.allDepsAreAvailable_=function(a){if((a=goog.getPathFromDeps_(a))&&a in goog.dependencies_.requires)for(var b in goog.dependencies_.requires[a])if(!goog.isProvided_(b)&&!goog.isDeferredModule_(b))return!1;return!0},goog.maybeProcessDeferredPath_=function(a){if(a in\ngoog.dependencies_.deferred){var b=goog.dependencies_.deferred[a];delete goog.dependencies_.deferred[a];goog.globalEval(b)}},goog.loadModuleFromUrl=function(a){goog.retrieveAndExec_(a,!0,!1)},goog.writeScriptSrcNode_=function(a){goog.global.document.write(\'<script type="text/javascript" src="\'+a+\'">\\x3c/script>\')},goog.appendScriptSrcNode_=function(a){var b=goog.global.document,c=b.createElement("script");c.type="text/javascript";c.src=a;c.defer=!1;c.async=!1;b.head.appendChild(c)},goog.writeScriptTag_=\nfunction(a,b){if(goog.inHtmlDocument_()){var c=goog.global.document;if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&"complete"==c.readyState){if(/\\bdeps.js$/.test(a))return!1;throw Error(\'Cannot write "\'+a+\'" after document load\');}if(void 0===b)if(goog.IS_OLD_IE_){var d=" onreadystatechange=\'goog.onScriptLoad_(this, "+ ++goog.lastNonModuleScriptIndex_+")\' ";c.write(\'<script type="text/javascript" src="\'+a+\'"\'+d+">\\x3c/script>")}else goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING?goog.appendScriptSrcNode_(a):\ngoog.writeScriptSrcNode_(a);else c.write(\'<script type="text/javascript">\'+b+"\\x3c/script>");return!0}return!1},goog.needsTranspile_=function(a){if("always"==goog.TRANSPILE)return!0;if("never"==goog.TRANSPILE)return!1;goog.requiresTranspilation_||(goog.requiresTranspilation_=goog.createRequiresTranspilation_());if(a in goog.requiresTranspilation_)return goog.requiresTranspilation_[a];throw Error("Unknown language mode: "+a);},goog.requiresTranspilation_=null,goog.lastNonModuleScriptIndex_=0,goog.onScriptLoad_=\nfunction(a,b){"complete"==a.readyState&&goog.lastNonModuleScriptIndex_==b&&goog.loadQueuedModules_();return!0},goog.writeScripts_=function(a){function b(a){if(!(a in e.written||a in e.visited)){e.visited[a]=!0;if(a in e.requires)for(var f in e.requires[a])if(!goog.isProvided_(f))if(f in e.nameToPath)b(e.nameToPath[f]);else throw Error("Undefined nameToPath for "+f);a in d||(d[a]=!0,c.push(a))}}var c=[],d={},e=goog.dependencies_;b(a);for(a=0;a<c.length;a++){var f=c[a];goog.dependencies_.written[f]=\n!0}var g=goog.moduleLoaderState_;goog.moduleLoaderState_=null;for(a=0;a<c.length;a++)if(f=c[a]){var h=e.loadFlags[f]||{},k=goog.needsTranspile_(h.lang||"es3");"goog"==h.module||k?goog.importProcessedScript_(goog.basePath+f,"goog"==h.module,k):goog.importScript_(goog.basePath+f)}else throw goog.moduleLoaderState_=g,Error("Undefined script input");goog.moduleLoaderState_=g},goog.getPathFromDeps_=function(a){return a in goog.dependencies_.nameToPath?goog.dependencies_.nameToPath[a]:null},goog.findBasePath_(),\ngoog.global.CLOSURE_NO_DEPS||goog.importScript_(goog.basePath+"deps.js"));\ngoog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:void 0,declareLegacyNamespace:!1};var c;if(goog.isFunction(a))c=a.call(void 0,{});else if(goog.isString(a))c=goog.loadModuleFromSource_.call(void 0,a);else throw Error("Invalid module definition");var d=goog.moduleLoaderState_.moduleName;if(!goog.isString(d)||!d)throw Error(\'Invalid module name "\'+d+\'"\');goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(d,c):goog.SEAL_MODULE_EXPORTS&&\nObject.seal&&goog.isObject(c)&&Object.seal(c);goog.loadedModules_[d]=c}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a){eval(a);return{}};goog.normalizePath_=function(a){a=a.split("/");for(var b=0;b<a.length;)"."==a[b]?a.splice(b,1):b&&".."==a[b]&&a[b-1]&&".."!=a[b-1]?a.splice(--b,2):b++;return a.join("/")};\ngoog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open("get",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};\ngoog.retrieveAndExec_=function(a,b,c){if(!COMPILED){var d=a;a=goog.normalizePath_(a);var e=goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_,f=goog.loadFileSync_(a);if(null==f)throw Error(\'Load of "\'+a+\'" failed\');c&&(f=goog.transpile_.call(goog.global,f,a));f=b?goog.wrapModule_(a,f):f+("\\n//# sourceURL="+a);goog.IS_OLD_IE_?(goog.dependencies_.deferred[d]=f,goog.queuedModules_.push(d)):e(a,f)}};\ngoog.transpile_=function(a,b){var c=goog.global.$jscomp;c||(goog.global.$jscomp=c={});var d=c.transpile;if(!d){var e=goog.basePath+goog.TRANSPILER,f=goog.loadFileSync_(e);if(f){eval(f+"\\n//# sourceURL="+e);if(goog.global.$gwtExport&&goog.global.$gwtExport.$jscomp&&!goog.global.$gwtExport.$jscomp.transpile)throw Error(\'The transpiler did not properly export the "transpile" method. $gwtExport: \'+JSON.stringify(goog.global.$gwtExport));goog.global.$jscomp.transpile=goog.global.$gwtExport.$jscomp.transpile;\nc=goog.global.$jscomp;d=c.transpile}}d||(d=c.transpile=function(a,b){goog.logToConsole_(b+" requires transpilation but no transpiler was found.");return a});return d(a,b)};\ngoog.typeOf=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";\nelse if("function"==b&&"undefined"==typeof a.call)return"object";return b};goog.isNull=function(a){return null===a};goog.isDefAndNotNull=function(a){return null!=a};goog.isArray=function(a){return"array"==goog.typeOf(a)};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&&"number"==typeof a.length};goog.isDateLike=function(a){return goog.isObject(a)&&"function"==typeof a.getFullYear};goog.isString=function(a){return"string"==typeof a};\ngoog.isBoolean=function(a){return"boolean"==typeof a};goog.isNumber=function(a){return"number"==typeof a};goog.isFunction=function(a){return"function"==goog.typeOf(a)};goog.isObject=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};goog.getUid=function(a){return a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};\ngoog.removeUid=function(a){null!==a&&"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};goog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.getHashCode=goog.getUid;goog.removeHashCode=goog.removeUid;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if(a.clone)return a.clone();var b="array"==b?[]:{},c;for(c in a)b[c]=goog.cloneObject(a[c]);return b}return a};\ngoog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};goog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}};\ngoog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};goog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=c.slice();b.push.apply(b,arguments);return a.apply(this,b)}};goog.mixin=function(a,b){for(var c in b)a[c]=b[c]};goog.now=goog.TRUSTED_SITE&&Date.now||function(){return+new Date};\ngoog.globalEval=function(a){if(goog.global.execScript)goog.global.execScript(a,"JavaScript");else if(goog.global.eval){if(null==goog.evalWorksForGlobals_)if(goog.global.eval("var _evalTest_ = 1;"),"undefined"!=typeof goog.global._evalTest_){try{delete goog.global._evalTest_}catch(d){}goog.evalWorksForGlobals_=!0}else goog.evalWorksForGlobals_=!1;if(goog.evalWorksForGlobals_)goog.global.eval(a);else{var b=goog.global.document,c=b.createElement("SCRIPT");c.type="text/javascript";c.defer=!1;c.appendChild(b.createTextNode(a));\nb.body.appendChild(c);b.body.removeChild(c)}}else throw Error("goog.globalEval not available");};goog.evalWorksForGlobals_=null;\ngoog.getCssName=function(a,b){if("."==String(a).charAt(0))throw Error(\'className passed in goog.getCssName must not start with ".". You passed: \'+a);var c=function(a){return goog.cssNameMapping_[a]||a},d=function(a){a=a.split("-");for(var b=[],d=0;d<a.length;d++)b.push(c(a[d]));return b.join("-")},d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(a){return a},d=b?a+"-"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(d):d};\ngoog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.getMsg=function(a,b){b&&(a=a.replace(/\\{\\$([^}]+)}/g,function(a,d){return null!=b&&d in b?b[d]:a}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,c)};goog.exportProperty=function(a,b,c){a[b]=c};\ngoog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(a,c,f){for(var d=Array(arguments.length-2),e=2;e<arguments.length;e++)d[e-2]=arguments[e];return b.prototype[c].apply(a,d)}};\ngoog.base=function(a,b,c){var d=arguments.callee.caller;if(goog.STRICT_MODE_COMPATIBLE||goog.DEBUG&&!d)throw Error("arguments.caller not defined.  goog.base() cannot be used with strict mode code. See http://www.ecma-international.org/ecma-262/5.1/#sec-C");if(d.superClass_){for(var e=Array(arguments.length-1),f=1;f<arguments.length;f++)e[f-1]=arguments[f];return d.superClass_.constructor.apply(a,e)}e=Array(arguments.length-2);for(f=2;f<arguments.length;f++)e[f-2]=arguments[f];for(var f=!1,g=a.constructor;g;g=\ng.superClass_&&g.superClass_.constructor)if(g.prototype[b]===d)f=!0;else if(f)return g.prototype[b].apply(a,e);if(a[b]===d)return a.constructor.prototype[b].apply(a,e);throw Error("goog.base called from a method of one name to a method of a different name");};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error("goog.scope is not supported within a goog.module.");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);\ngoog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error("cannot instantiate an interface (no constructor defined).");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;\ngoog.defineClass.createSealingConstructor_=function(a,b){if(!goog.defineClass.SEAL_CLASS_INSTANCES)return a;var c=!goog.defineClass.isUnsealable_(b),d=function(){var b=a.apply(this,arguments)||this;b[goog.UID_PROPERTY_]=b[goog.UID_PROPERTY_];this.constructor===d&&c&&Object.seal instanceof Function&&Object.seal(b);return b};return d};goog.defineClass.isUnsealable_=function(a){return a&&a.prototype&&a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");\ngoog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};goog.tagUnsealableClass=function(a){!COMPILED&&goog.defineClass.SEAL_CLASS_INSTANCES&&(a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]=!0)};goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_="goog_defineClass_legacy_unsealable";\ngoog.createRequiresTranspilation_=function(){function a(a,b){d?c[a]=!0:b()?c[a]=!1:d=c[a]=!0}function b(a){try{return!!eval(a)}catch(f){return!1}}var c={es3:!1},d=!1;a("es5",function(){return b("[1,].length==1")});a("es6",function(){return b(\'(()=>{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()\')});\na("es6-impl",function(){return!0});a("es7",function(){return b("2 ** 2 == 4")});a("es8",function(){return b("async () => 1, true")});return c};goog.debug={};goog.debug.Error=function(a){if(Error.captureStackTrace)Error.captureStackTrace(this,goog.debug.Error);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a));this.reportErrorToServer=!0};goog.inherits(goog.debug.Error,Error);goog.debug.Error.prototype.name="CustomError";goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.string={};goog.string.DETECT_DOUBLE_ESCAPING=!1;goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1;goog.string.Unicode={NBSP:"\\u00a0"};goog.string.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.endsWith=function(a,b){var c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.caseInsensitiveCompare(b,a.substr(0,b.length))};\ngoog.string.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.caseInsensitiveCompare(b,a.substr(a.length-b.length,b.length))};goog.string.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.subs=function(a,b){for(var c=a.split("%s"),d="",e=Array.prototype.slice.call(arguments,1);e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};goog.string.collapseWhitespace=function(a){return a.replace(/[\\s\\xa0]+/g," ").replace(/^\\s+|\\s+$/g,"")};\ngoog.string.isEmptyOrWhitespace=function(a){return/^[\\s\\xa0]*$/.test(a)};goog.string.isEmptyString=function(a){return 0==a.length};goog.string.isEmpty=goog.string.isEmptyOrWhitespace;goog.string.isEmptyOrWhitespaceSafe=function(a){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a))};goog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe;goog.string.isBreakingWhitespace=function(a){return!/[^\\t\\n\\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};\ngoog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return" "==a};goog.string.isUnicodeChar=function(a){return 1==a.length&&" "<=a&&"~">=a||"\\u0080"<=a&&"\\ufffd">=a};goog.string.stripNewlines=function(a){return a.replace(/(\\r\\n|\\r|\\n)+/g," ")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\\r\\n|\\r|\\n)/g,"\\n")};\ngoog.string.normalizeWhitespace=function(a){return a.replace(/\\xa0|\\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\\xa0|[ \\t]+/g," ")};goog.string.collapseBreakingSpaces=function(a){return a.replace(/[\\t\\r\\n ]+/g," ").replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g,"")};goog.string.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(a){return a.trim()}:function(a){return a.replace(/^[\\s\\xa0]+|[\\s\\xa0]+$/g,"")};goog.string.trimLeft=function(a){return a.replace(/^[\\s\\xa0]+/,"")};\ngoog.string.trimRight=function(a){return a.replace(/[\\s\\xa0]+$/,"")};goog.string.caseInsensitiveCompare=function(a,b){var c=String(a).toLowerCase(),d=String(b).toLowerCase();return c<d?-1:c==d?0:1};\ngoog.string.numberAwareCompare_=function(a,b,c){if(a==b)return 0;if(!a)return-1;if(!b)return 1;for(var d=a.toLowerCase().match(c),e=b.toLowerCase().match(c),f=Math.min(d.length,e.length),g=0;g<f;g++){c=d[g];var h=e[g];if(c!=h)return a=parseInt(c,10),!isNaN(a)&&(b=parseInt(h,10),!isNaN(b)&&a-b)?a-b:c<h?-1:1}return d.length!=e.length?d.length-e.length:a<b?-1:1};goog.string.intAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\d+|\\D+/g)};\ngoog.string.floatAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\d+|\\.\\d+|\\D+/g)};goog.string.numerateCompare=goog.string.floatAwareCompare;goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\\+/g," "))};goog.string.newLineToBr=function(a,b){return a.replace(/(\\r\\n|\\r|\\n)/g,b?"<br />":"<br>")};\ngoog.string.htmlEscape=function(a,b){if(b)a=a.replace(goog.string.AMP_RE_,"&amp;").replace(goog.string.LT_RE_,"&lt;").replace(goog.string.GT_RE_,"&gt;").replace(goog.string.QUOT_RE_,"&quot;").replace(goog.string.SINGLE_QUOTE_RE_,"&#39;").replace(goog.string.NULL_RE_,"&#0;"),goog.string.DETECT_DOUBLE_ESCAPING&&(a=a.replace(goog.string.E_RE_,"&#101;"));else{if(!goog.string.ALL_RE_.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(goog.string.AMP_RE_,"&amp;"));-1!=a.indexOf("<")&&(a=a.replace(goog.string.LT_RE_,\n"&lt;"));-1!=a.indexOf(">")&&(a=a.replace(goog.string.GT_RE_,"&gt;"));-1!=a.indexOf(\'"\')&&(a=a.replace(goog.string.QUOT_RE_,"&quot;"));-1!=a.indexOf("\'")&&(a=a.replace(goog.string.SINGLE_QUOTE_RE_,"&#39;"));-1!=a.indexOf("\\x00")&&(a=a.replace(goog.string.NULL_RE_,"&#0;"));goog.string.DETECT_DOUBLE_ESCAPING&&-1!=a.indexOf("e")&&(a=a.replace(goog.string.E_RE_,"&#101;"))}return a};goog.string.AMP_RE_=/&/g;goog.string.LT_RE_=/</g;goog.string.GT_RE_=/>/g;goog.string.QUOT_RE_=/"/g;\ngoog.string.SINGLE_QUOTE_RE_=/\'/g;goog.string.NULL_RE_=/\\x00/g;goog.string.E_RE_=/e/g;goog.string.ALL_RE_=goog.string.DETECT_DOUBLE_ESCAPING?/[\\x00&<>"\'e]/:/[\\x00&<>"\']/;goog.string.unescapeEntities=function(a){return goog.string.contains(a,"&")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};\ngoog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,"&")?goog.string.unescapeEntitiesUsingDom_(a,b):a};\ngoog.string.unescapeEntitiesUsingDom_=function(a,b){var c={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":\'"\'},d;d=b?b.createElement("div"):goog.global.document.createElement("div");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(a,b){var e=c[a];if(e)return e;if("#"==b.charAt(0)){var f=Number("0"+b.substr(1));isNaN(f)||(e=String.fromCharCode(f))}e||(d.innerHTML=a+" ",e=d.firstChild.nodeValue.slice(0,-1));return c[a]=e})};\ngoog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(a,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return\'"\';default:if("#"==c.charAt(0)){var b=Number("0"+c.substr(1));if(!isNaN(b))return String.fromCharCode(b)}return a}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/  /g," &#160;"),b)};\ngoog.string.preserveSpaces=function(a){return a.replace(/(^|[\\n ]) /g,"$1"+goog.string.Unicode.NBSP)};goog.string.stripQuotes=function(a,b){for(var c=b.length,d=0;d<c;d++){var e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+"...");c&&(a=goog.string.htmlEscape(a));return a};\ngoog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;a=a.substring(0,b-d)+"..."+a.substring(e)}else a.length>b&&(d=Math.floor(b/2),e=a.length-d,a=a.substring(0,d+b%2)+"..."+a.substring(e));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\\x00":"\\\\0","\\b":"\\\\b","\\f":"\\\\f","\\n":"\\\\n","\\r":"\\\\r","\\t":"\\\\t","\\x0B":"\\\\x0B",\'"\':\'\\\\"\',"\\\\":"\\\\\\\\","<":"<"};goog.string.jsEscapeCache_={"\'":"\\\\\'"};\ngoog.string.quote=function(a){a=String(a);for(var b=[\'"\'],c=0;c<a.length;c++){var d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push(\'"\');return b.join("")};goog.string.escapeString=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join("")};\ngoog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];var b,c=a.charCodeAt(0);if(31<c&&127>c)b=a;else{if(256>c){if(b="\\\\x",16>c||256<c)b+="0"}else b="\\\\u",4096>c&&(b+="0");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.contains=function(a,b){return-1!=a.indexOf(b)};\ngoog.string.caseInsensitiveContains=function(a,b){return goog.string.contains(a.toLowerCase(),b.toLowerCase())};goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){var d=a;0<=b&&b<a.length&&0<c&&(d=a.substr(0,b)+a.substr(b+c,a.length-b-c));return d};goog.string.remove=function(a,b){return a.replace(b,"")};goog.string.removeAll=function(a,b){var c=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(c,"")};\ngoog.string.replaceAll=function(a,b,c){b=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(b,c.replace(/\\$/g,"$$$$"))};goog.string.regExpEscape=function(a){return String(a).replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g,"\\\\$1").replace(/\\x08/g,"\\\\x08")};goog.string.repeat=String.prototype.repeat?function(a,b){return a.repeat(b)}:function(a,b){return Array(b+1).join(a)};\ngoog.string.padNumber=function(a,b,c){a=goog.isDef(c)?a.toFixed(c):String(a);c=a.indexOf(".");-1==c&&(c=a.length);return goog.string.repeat("0",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?"":String(a)};goog.string.buildString=function(a){return Array.prototype.join.call(arguments,"")};goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)};\ngoog.string.compareVersions=function(a,b){for(var c=0,d=goog.string.trim(String(a)).split("."),e=goog.string.trim(String(b)).split("."),f=Math.max(d.length,e.length),g=0;0==c&&g<f;g++){var h=d[g]||"",k=e[g]||"";do{h=/(\\d*)(\\D*)(.*)/.exec(h)||["","","",""];k=/(\\d*)(\\D*)(.*)/.exec(k)||["","","",""];if(0==h[0].length&&0==k[0].length)break;var c=0==h[1].length?0:parseInt(h[1],10),l=0==k[1].length?0:parseInt(k[1],10),c=goog.string.compareElements_(c,l)||goog.string.compareElements_(0==h[2].length,0==k[2].length)||\ngoog.string.compareElements_(h[2],k[2]),h=h[3],k=k[3]}while(0==c)}return c};goog.string.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.string.hashCode=function(a){for(var b=0,c=0;c<a.length;++c)b=31*b+a.charCodeAt(c)>>>0;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};goog.string.toNumber=function(a){var b=Number(a);return 0==b&&goog.string.isEmptyOrWhitespace(a)?NaN:b};\ngoog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};goog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\\-([a-z])/g,function(a,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,"-$1").toLowerCase()};\ngoog.string.toTitleCase=function(a,b){var c=goog.isString(b)?goog.string.regExpEscape(b):"\\\\s";return a.replace(new RegExp("(^"+(c?"|["+c+"]+":"")+")([a-z])","g"),function(a,b,c){return b+c.toUpperCase()})};goog.string.capitalize=function(a){return String(a.charAt(0)).toUpperCase()+String(a.substr(1)).toLowerCase()};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return goog.isString(a)?/^\\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};\ngoog.string.splitLimit=function(a,b,c){a=a.split(b);for(var d=[];0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};goog.string.lastComponent=function(a,b){if(b)"string"==typeof b&&(b=[b]);else return a;for(var c=-1,d=0;d<b.length;d++)if(""!=b[d]){var e=a.lastIndexOf(b[d]);e>c&&(c=e)}return-1==c?a:a.slice(c+1)};\ngoog.string.editDistance=function(a,b){var c=[],d=[];if(a==b)return 0;if(!a.length||!b.length)return Math.max(a.length,b.length);for(var e=0;e<b.length+1;e++)c[e]=e;for(e=0;e<a.length;e++){d[0]=e+1;for(var f=0;f<b.length;f++)d[f+1]=Math.min(d[f]+1,c[f+1]+1,c[f]+Number(a[e]!=b[f]));for(f=0;f<c.length;f++)c[f]=d[f]}return d[b.length]};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;goog.asserts.AssertionError=function(a,b){b.unshift(a);goog.debug.Error.call(this,goog.string.subs.apply(null,b));b.shift();this.messagePattern=a};goog.inherits(goog.asserts.AssertionError,goog.debug.Error);goog.asserts.AssertionError.prototype.name="AssertionError";goog.asserts.DEFAULT_ERROR_HANDLER=function(a){throw a;};goog.asserts.errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER;\ngoog.asserts.doAssertFailure_=function(a,b,c,d){var e="Assertion failed";if(c)var e=e+(": "+c),f=d;else a&&(e+=": "+a,f=b);a=new goog.asserts.AssertionError(""+e,f||[]);goog.asserts.errorHandler_(a)};goog.asserts.setErrorHandler=function(a){goog.asserts.ENABLE_ASSERTS&&(goog.asserts.errorHandler_=a)};goog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&goog.asserts.doAssertFailure_("",null,b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.fail=function(a,b){goog.asserts.ENABLE_ASSERTS&&goog.asserts.errorHandler_(new goog.asserts.AssertionError("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1)))};goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isNumber(a)&&goog.asserts.doAssertFailure_("Expected number but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isString(a)&&goog.asserts.doAssertFailure_("Expected string but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isFunction(a)&&goog.asserts.doAssertFailure_("Expected function but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&goog.asserts.doAssertFailure_("Expected object but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isArray(a)&&goog.asserts.doAssertFailure_("Expected array but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isBoolean(a)&&goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||goog.asserts.doAssertFailure_("Expected Element but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||goog.asserts.doAssertFailure_("Expected instanceof %s but got %s.",[goog.asserts.getType_(b),goog.asserts.getType_(a)],c,Array.prototype.slice.call(arguments,3));return a};goog.asserts.assertObjectPrototypeIsIntact=function(){for(var a in Object.prototype)goog.asserts.fail(a+" should not be enumerable in Object.prototype.")};\ngoog.asserts.getType_=function(a){return a instanceof Function?a.displayName||a.name||"unknown type name":a instanceof Object?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):null===a?"null":typeof a};goog.debug.entryPointRegistry={};goog.debug.EntryPointMonitor=function(){};goog.debug.entryPointRegistry.refList_=[];goog.debug.entryPointRegistry.monitors_=[];goog.debug.entryPointRegistry.monitorsMayExist_=!1;goog.debug.entryPointRegistry.register=function(a){goog.debug.entryPointRegistry.refList_[goog.debug.entryPointRegistry.refList_.length]=a;if(goog.debug.entryPointRegistry.monitorsMayExist_)for(var b=goog.debug.entryPointRegistry.monitors_,c=0;c<b.length;c++)a(goog.bind(b[c].wrap,b[c]))};\ngoog.debug.entryPointRegistry.monitorAll=function(a){goog.debug.entryPointRegistry.monitorsMayExist_=!0;for(var b=goog.bind(a.wrap,a),c=0;c<goog.debug.entryPointRegistry.refList_.length;c++)goog.debug.entryPointRegistry.refList_[c](b);goog.debug.entryPointRegistry.monitors_.push(a)};\ngoog.debug.entryPointRegistry.unmonitorAllIfPossible=function(a){var b=goog.debug.entryPointRegistry.monitors_;goog.asserts.assert(a==b[b.length-1],"Only the most recent monitor can be unwrapped.");a=goog.bind(a.unwrap,a);for(var c=0;c<goog.debug.entryPointRegistry.refList_.length;c++)goog.debug.entryPointRegistry.refList_[c](a);b.length--};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;goog.array.ASSUME_NATIVE_FUNCTIONS=!1;goog.array.peek=function(a){return a[a.length-1]};goog.array.last=goog.array.peek;\ngoog.array.indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(goog.isString(a))return goog.isString(b)&&1==b.length?a.indexOf(b,c):-1;for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};\ngoog.array.lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.lastIndexOf.call(a,b,null==c?a.length-1:c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if(goog.isString(a))return goog.isString(b)&&1==b.length?a.lastIndexOf(b,c):-1;for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};\ngoog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(a,b,c){goog.asserts.assert(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEachRight=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,d=d-1;0<=d;--d)d in e&&b.call(c,e[d],d,a)};\ngoog.array.filter=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.filter.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=[],f=0,g=goog.isString(a)?a.split(""):a,h=0;h<d;h++)if(h in g){var k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};\ngoog.array.map=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.map.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=Array(d),f=goog.isString(a)?a.split(""):a,g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};\ngoog.array.reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return Array.prototype.reduce.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEach(a,function(c,g){e=b.call(d,e,c,g,a)});return e};\ngoog.array.reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(a,b,c,d){goog.asserts.assert(null!=a.length);goog.asserts.assert(null!=b);d&&(b=goog.bind(b,d));return Array.prototype.reduceRight.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEachRight(a,function(c,g){e=b.call(d,e,c,g,a)});return e};\ngoog.array.some=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.some.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};\ngoog.array.every=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.every.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.count=function(a,b,c){var d=0;goog.array.forEach(a,function(a,f,g){b.call(c,a,f,g)&&++d},c);return d};\ngoog.array.find=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};goog.array.findIndex=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1};goog.array.findRight=function(a,b,c){b=goog.array.findIndexRight(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};\ngoog.array.findIndexRight=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,d=d-1;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1};goog.array.contains=function(a,b){return 0<=goog.array.indexOf(a,b)};goog.array.isEmpty=function(a){return 0==a.length};goog.array.clear=function(a){if(!goog.isArray(a))for(var b=a.length-1;0<=b;b--)delete a[b];a.length=0};goog.array.insert=function(a,b){goog.array.contains(a,b)||a.push(b)};\ngoog.array.insertAt=function(a,b,c){goog.array.splice(a,c,0,b)};goog.array.insertArrayAt=function(a,b,c){goog.partial(goog.array.splice,a,c,0).apply(null,b)};goog.array.insertBefore=function(a,b,c){var d;2==arguments.length||0>(d=goog.array.indexOf(a,c))?a.push(b):goog.array.insertAt(a,b,d)};goog.array.remove=function(a,b){var c=goog.array.indexOf(a,b),d;(d=0<=c)&&goog.array.removeAt(a,c);return d};\ngoog.array.removeLast=function(a,b){var c=goog.array.lastIndexOf(a,b);return 0<=c?(goog.array.removeAt(a,c),!0):!1};goog.array.removeAt=function(a,b){goog.asserts.assert(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length};goog.array.removeIf=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0<=b?(goog.array.removeAt(a,b),!0):!1};goog.array.removeAllIf=function(a,b,c){var d=0;goog.array.forEachRight(a,function(e,f){b.call(c,e,f,a)&&goog.array.removeAt(a,f)&&d++});return d};\ngoog.array.concat=function(a){return Array.prototype.concat.apply(Array.prototype,arguments)};goog.array.join=function(a){return Array.prototype.concat.apply(Array.prototype,arguments)};goog.array.toArray=function(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d]=a[d];return c}return[]};goog.array.clone=goog.array.toArray;\ngoog.array.extend=function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c];if(goog.isArrayLike(d)){var e=a.length||0,f=d.length||0;a.length=e+f;for(var g=0;g<f;g++)a[e+g]=d[g]}else a.push(d)}};goog.array.splice=function(a,b,c,d){goog.asserts.assert(null!=a.length);return Array.prototype.splice.apply(a,goog.array.slice(arguments,1))};\ngoog.array.slice=function(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)};goog.array.removeDuplicates=function(a,b,c){b=b||a;var d=function(a){return goog.isObject(a)?"o"+goog.getUid(a):(typeof a).charAt(0)+a};c=c||d;for(var d={},e=0,f=0;f<a.length;){var g=a[f++],h=c(g);Object.prototype.hasOwnProperty.call(d,h)||(d[h]=!0,b[e++]=g)}b.length=e};\ngoog.array.binarySearch=function(a,b,c){return goog.array.binarySearch_(a,c||goog.array.defaultCompare,!1,b)};goog.array.binarySelect=function(a,b,c){return goog.array.binarySearch_(a,b,!0,void 0,c)};goog.array.binarySearch_=function(a,b,c,d,e){for(var f=0,g=a.length,h;f<g;){var k=f+g>>1,l;l=c?b.call(e,a[k],k,a):b(d,a[k]);0<l?f=k+1:(g=k,h=!l)}return h?f:~f};goog.array.sort=function(a,b){a.sort(b||goog.array.defaultCompare)};\ngoog.array.stableSort=function(a,b){for(var c=Array(a.length),d=0;d<a.length;d++)c[d]={index:d,value:a[d]};var e=b||goog.array.defaultCompare;goog.array.sort(c,function(a,b){return e(a.value,b.value)||a.index-b.index});for(d=0;d<a.length;d++)a[d]=c[d].value};goog.array.sortByKey=function(a,b,c){var d=c||goog.array.defaultCompare;goog.array.sort(a,function(a,c){return d(b(a),b(c))})};goog.array.sortObjectsByKey=function(a,b,c){goog.array.sortByKey(a,function(a){return a[b]},c)};\ngoog.array.isSorted=function(a,b,c){b=b||goog.array.defaultCompare;for(var d=1;d<a.length;d++){var e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0};goog.array.equals=function(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;var d=a.length;c=c||goog.array.defaultCompareEquality;for(var e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0};\ngoog.array.compare3=function(a,b,c){c=c||goog.array.defaultCompare;for(var d=Math.min(a.length,b.length),e=0;e<d;e++){var f=c(a[e],b[e]);if(0!=f)return f}return goog.array.defaultCompare(a.length,b.length)};goog.array.defaultCompare=function(a,b){return a>b?1:a<b?-1:0};goog.array.inverseDefaultCompare=function(a,b){return-goog.array.defaultCompare(a,b)};goog.array.defaultCompareEquality=function(a,b){return a===b};\ngoog.array.binaryInsert=function(a,b,c){c=goog.array.binarySearch(a,b,c);return 0>c?(goog.array.insertAt(a,b,-(c+1)),!0):!1};goog.array.binaryRemove=function(a,b,c){b=goog.array.binarySearch(a,b,c);return 0<=b?goog.array.removeAt(a,b):!1};goog.array.bucket=function(a,b,c){for(var d={},e=0;e<a.length;e++){var f=a[e],g=b.call(c,f,e,a);goog.isDef(g)&&(d[g]||(d[g]=[])).push(f)}return d};goog.array.toObject=function(a,b,c){var d={};goog.array.forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d};\ngoog.array.range=function(a,b,c){var d=[],e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d};goog.array.repeat=function(a,b){for(var c=[],d=0;d<b;d++)c[d]=a;return c};goog.array.flatten=function(a){for(var b=[],c=0;c<arguments.length;c++){var d=arguments[c];if(goog.isArray(d))for(var e=0;e<d.length;e+=8192)for(var f=goog.array.slice(d,e,e+8192),f=goog.array.flatten.apply(null,f),g=0;g<f.length;g++)b.push(f[g]);else b.push(d)}return b};\ngoog.array.rotate=function(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?Array.prototype.unshift.apply(a,a.splice(-b,b)):0>b&&Array.prototype.push.apply(a,a.splice(0,-b)));return a};goog.array.moveItem=function(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=Array.prototype.splice.call(a,b,1);Array.prototype.splice.call(a,c,0,b[0])};\ngoog.array.zip=function(a){if(!arguments.length)return[];for(var b=[],c=arguments[0].length,d=1;d<arguments.length;d++)arguments[d].length<c&&(c=arguments[d].length);for(d=0;d<c;d++){for(var e=[],f=0;f<arguments.length;f++)e.push(arguments[f][d]);b.push(e)}return b};goog.array.shuffle=function(a,b){for(var c=b||Math.random,d=a.length-1;0<d;d--){var e=Math.floor(c()*(d+1)),f=a[d];a[d]=a[e];a[e]=f}};goog.array.copyByIndex=function(a,b){var c=[];goog.array.forEach(b,function(b){c.push(a[b])});return c};\ngoog.array.concatMap=function(a,b,c){return goog.array.concat.apply([],goog.array.map(a,b,c))};goog.labs={};goog.labs.userAgent={};goog.labs.userAgent.util={};goog.labs.userAgent.util.getNativeUserAgentString_=function(){var a=goog.labs.userAgent.util.getNavigator_();return a&&(a=a.userAgent)?a:""};goog.labs.userAgent.util.getNavigator_=function(){return goog.global.navigator};goog.labs.userAgent.util.userAgent_=goog.labs.userAgent.util.getNativeUserAgentString_();goog.labs.userAgent.util.setUserAgent=function(a){goog.labs.userAgent.util.userAgent_=a||goog.labs.userAgent.util.getNativeUserAgentString_()};\ngoog.labs.userAgent.util.getUserAgent=function(){return goog.labs.userAgent.util.userAgent_};goog.labs.userAgent.util.matchUserAgent=function(a){var b=goog.labs.userAgent.util.getUserAgent();return goog.string.contains(b,a)};goog.labs.userAgent.util.matchUserAgentIgnoreCase=function(a){var b=goog.labs.userAgent.util.getUserAgent();return goog.string.caseInsensitiveContains(b,a)};\ngoog.labs.userAgent.util.extractVersionTuples=function(a){for(var b=RegExp("(\\\\w[\\\\w ]+)/([^\\\\s]+)\\\\s*(?:\\\\((.*?)\\\\))?","g"),c=[],d;d=b.exec(a);)c.push([d[1],d[2],d[3]||void 0]);return c};goog.object={};goog.object.is=function(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b};goog.object.forEach=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)};goog.object.filter=function(a,b,c){var d={},e;for(e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d};goog.object.map=function(a,b,c){var d={},e;for(e in a)d[e]=b.call(c,a[e],e,a);return d};goog.object.some=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return!0;return!1};\ngoog.object.every=function(a,b,c){for(var d in a)if(!b.call(c,a[d],d,a))return!1;return!0};goog.object.getCount=function(a){var b=0,c;for(c in a)b++;return b};goog.object.getAnyKey=function(a){for(var b in a)return b};goog.object.getAnyValue=function(a){for(var b in a)return a[b]};goog.object.contains=function(a,b){return goog.object.containsValue(a,b)};goog.object.getValues=function(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b};\ngoog.object.getKeys=function(a){var b=[],c=0,d;for(d in a)b[c++]=d;return b};goog.object.getValueByKeys=function(a,b){for(var c=goog.isArrayLike(b),d=c?b:arguments,c=c?0:1;c<d.length&&(a=a[d[c]],goog.isDef(a));c++);return a};goog.object.containsKey=function(a,b){return null!==a&&b in a};goog.object.containsValue=function(a,b){for(var c in a)if(a[c]==b)return!0;return!1};goog.object.findKey=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return d};\ngoog.object.findValue=function(a,b,c){return(b=goog.object.findKey(a,b,c))&&a[b]};goog.object.isEmpty=function(a){for(var b in a)return!1;return!0};goog.object.clear=function(a){for(var b in a)delete a[b]};goog.object.remove=function(a,b){var c;(c=b in a)&&delete a[b];return c};goog.object.add=function(a,b,c){if(null!==a&&b in a)throw Error(\'The object already contains the key "\'+b+\'"\');goog.object.set(a,b,c)};goog.object.get=function(a,b,c){return null!==a&&b in a?a[b]:c};\ngoog.object.set=function(a,b,c){a[b]=c};goog.object.setIfUndefined=function(a,b,c){return b in a?a[b]:a[b]=c};goog.object.setWithReturnValueIfNotSet=function(a,b,c){if(b in a)return a[b];c=c();return a[b]=c};goog.object.equals=function(a,b){for(var c in a)if(!(c in b)||a[c]!==b[c])return!1;for(c in b)if(!(c in a))return!1;return!0};goog.object.clone=function(a){var b={},c;for(c in a)b[c]=a[c];return b};\ngoog.object.unsafeClone=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if(goog.isFunction(a.clone))return a.clone();var b="array"==b?[]:{},c;for(c in a)b[c]=goog.object.unsafeClone(a[c]);return b}return a};goog.object.transpose=function(a){var b={},c;for(c in a)b[a[c]]=c;return b};goog.object.PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");\ngoog.object.extend=function(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f<goog.object.PROTOTYPE_FIELDS_.length;f++)c=goog.object.PROTOTYPE_FIELDS_[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}};\ngoog.object.create=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.create.apply(null,arguments[0]);if(b%2)throw Error("Uneven number of arguments");for(var c={},d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c};goog.object.createSet=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.createSet.apply(null,arguments[0]);for(var c={},d=0;d<b;d++)c[arguments[d]]=!0;return c};\ngoog.object.createImmutableView=function(a){var b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b};goog.object.isImmutableView=function(a){return!!Object.isFrozen&&Object.isFrozen(a)};goog.labs.userAgent.browser={};goog.labs.userAgent.browser.matchOpera_=function(){return goog.labs.userAgent.util.matchUserAgent("Opera")};goog.labs.userAgent.browser.matchIE_=function(){return goog.labs.userAgent.util.matchUserAgent("Trident")||goog.labs.userAgent.util.matchUserAgent("MSIE")};goog.labs.userAgent.browser.matchEdge_=function(){return goog.labs.userAgent.util.matchUserAgent("Edge")};goog.labs.userAgent.browser.matchFirefox_=function(){return goog.labs.userAgent.util.matchUserAgent("Firefox")};\ngoog.labs.userAgent.browser.matchSafari_=function(){return goog.labs.userAgent.util.matchUserAgent("Safari")&&!(goog.labs.userAgent.browser.matchChrome_()||goog.labs.userAgent.browser.matchCoast_()||goog.labs.userAgent.browser.matchOpera_()||goog.labs.userAgent.browser.matchEdge_()||goog.labs.userAgent.browser.isSilk()||goog.labs.userAgent.util.matchUserAgent("Android"))};goog.labs.userAgent.browser.matchCoast_=function(){return goog.labs.userAgent.util.matchUserAgent("Coast")};\ngoog.labs.userAgent.browser.matchIosWebview_=function(){return(goog.labs.userAgent.util.matchUserAgent("iPad")||goog.labs.userAgent.util.matchUserAgent("iPhone"))&&!goog.labs.userAgent.browser.matchSafari_()&&!goog.labs.userAgent.browser.matchChrome_()&&!goog.labs.userAgent.browser.matchCoast_()&&goog.labs.userAgent.util.matchUserAgent("AppleWebKit")};\ngoog.labs.userAgent.browser.matchChrome_=function(){return(goog.labs.userAgent.util.matchUserAgent("Chrome")||goog.labs.userAgent.util.matchUserAgent("CriOS"))&&!goog.labs.userAgent.browser.matchEdge_()};goog.labs.userAgent.browser.matchAndroidBrowser_=function(){return goog.labs.userAgent.util.matchUserAgent("Android")&&!(goog.labs.userAgent.browser.isChrome()||goog.labs.userAgent.browser.isFirefox()||goog.labs.userAgent.browser.isOpera()||goog.labs.userAgent.browser.isSilk())};\ngoog.labs.userAgent.browser.isOpera=goog.labs.userAgent.browser.matchOpera_;goog.labs.userAgent.browser.isIE=goog.labs.userAgent.browser.matchIE_;goog.labs.userAgent.browser.isEdge=goog.labs.userAgent.browser.matchEdge_;goog.labs.userAgent.browser.isFirefox=goog.labs.userAgent.browser.matchFirefox_;goog.labs.userAgent.browser.isSafari=goog.labs.userAgent.browser.matchSafari_;goog.labs.userAgent.browser.isCoast=goog.labs.userAgent.browser.matchCoast_;goog.labs.userAgent.browser.isIosWebview=goog.labs.userAgent.browser.matchIosWebview_;\ngoog.labs.userAgent.browser.isChrome=goog.labs.userAgent.browser.matchChrome_;goog.labs.userAgent.browser.isAndroidBrowser=goog.labs.userAgent.browser.matchAndroidBrowser_;goog.labs.userAgent.browser.isSilk=function(){return goog.labs.userAgent.util.matchUserAgent("Silk")};\ngoog.labs.userAgent.browser.getVersion=function(){function a(a){a=goog.array.find(a,d);return c[a]||""}var b=goog.labs.userAgent.util.getUserAgent();if(goog.labs.userAgent.browser.isIE())return goog.labs.userAgent.browser.getIEVersion_(b);var b=goog.labs.userAgent.util.extractVersionTuples(b),c={};goog.array.forEach(b,function(a){c[a[0]]=a[1]});var d=goog.partial(goog.object.containsKey,c);return goog.labs.userAgent.browser.isOpera()?a(["Version","Opera"]):goog.labs.userAgent.browser.isEdge()?a(["Edge"]):\ngoog.labs.userAgent.browser.isChrome()?a(["Chrome","CriOS"]):(b=b[2])&&b[1]||""};goog.labs.userAgent.browser.isVersionOrHigher=function(a){return 0<=goog.string.compareVersions(goog.labs.userAgent.browser.getVersion(),a)};\ngoog.labs.userAgent.browser.getIEVersion_=function(a){var b=/rv: *([\\d\\.]*)/.exec(a);if(b&&b[1])return b[1];var b="",c=/MSIE +([\\d\\.]+)/.exec(a);if(c&&c[1])if(a=/Trident\\/(\\d.\\d)/.exec(a),"7.0"==c[1])if(a&&a[1])switch(a[1]){case "4.0":b="8.0";break;case "5.0":b="9.0";break;case "6.0":b="10.0";break;case "7.0":b="11.0"}else b="7.0";else b=c[1];return b};goog.labs.userAgent.engine={};goog.labs.userAgent.engine.isPresto=function(){return goog.labs.userAgent.util.matchUserAgent("Presto")};goog.labs.userAgent.engine.isTrident=function(){return goog.labs.userAgent.util.matchUserAgent("Trident")||goog.labs.userAgent.util.matchUserAgent("MSIE")};goog.labs.userAgent.engine.isEdge=function(){return goog.labs.userAgent.util.matchUserAgent("Edge")};\ngoog.labs.userAgent.engine.isWebKit=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase("WebKit")&&!goog.labs.userAgent.engine.isEdge()};goog.labs.userAgent.engine.isGecko=function(){return goog.labs.userAgent.util.matchUserAgent("Gecko")&&!goog.labs.userAgent.engine.isWebKit()&&!goog.labs.userAgent.engine.isTrident()&&!goog.labs.userAgent.engine.isEdge()};\ngoog.labs.userAgent.engine.getVersion=function(){var a=goog.labs.userAgent.util.getUserAgent();if(a){var a=goog.labs.userAgent.util.extractVersionTuples(a),b=goog.labs.userAgent.engine.getEngineTuple_(a);if(b)return"Gecko"==b[0]?goog.labs.userAgent.engine.getVersionForKey_(a,"Firefox"):b[1];var a=a[0],c;if(a&&(c=a[2])&&(c=/Trident\\/([^\\s;]+)/.exec(c)))return c[1]}return""};\ngoog.labs.userAgent.engine.getEngineTuple_=function(a){if(!goog.labs.userAgent.engine.isEdge())return a[1];for(var b=0;b<a.length;b++){var c=a[b];if("Edge"==c[0])return c}};goog.labs.userAgent.engine.isVersionOrHigher=function(a){return 0<=goog.string.compareVersions(goog.labs.userAgent.engine.getVersion(),a)};goog.labs.userAgent.engine.getVersionForKey_=function(a,b){var c=goog.array.find(a,function(a){return b==a[0]});return c&&c[1]||""};goog.labs.userAgent.platform={};goog.labs.userAgent.platform.isAndroid=function(){return goog.labs.userAgent.util.matchUserAgent("Android")};goog.labs.userAgent.platform.isIpod=function(){return goog.labs.userAgent.util.matchUserAgent("iPod")};goog.labs.userAgent.platform.isIphone=function(){return goog.labs.userAgent.util.matchUserAgent("iPhone")&&!goog.labs.userAgent.util.matchUserAgent("iPod")&&!goog.labs.userAgent.util.matchUserAgent("iPad")};goog.labs.userAgent.platform.isIpad=function(){return goog.labs.userAgent.util.matchUserAgent("iPad")};\ngoog.labs.userAgent.platform.isIos=function(){return goog.labs.userAgent.platform.isIphone()||goog.labs.userAgent.platform.isIpad()||goog.labs.userAgent.platform.isIpod()};goog.labs.userAgent.platform.isMacintosh=function(){return goog.labs.userAgent.util.matchUserAgent("Macintosh")};goog.labs.userAgent.platform.isLinux=function(){return goog.labs.userAgent.util.matchUserAgent("Linux")};goog.labs.userAgent.platform.isWindows=function(){return goog.labs.userAgent.util.matchUserAgent("Windows")};\ngoog.labs.userAgent.platform.isChromeOS=function(){return goog.labs.userAgent.util.matchUserAgent("CrOS")};\ngoog.labs.userAgent.platform.getVersion=function(){var a=goog.labs.userAgent.util.getUserAgent(),b="";goog.labs.userAgent.platform.isWindows()?(b=/Windows (?:NT|Phone) ([0-9.]+)/,b=(a=b.exec(a))?a[1]:"0.0"):goog.labs.userAgent.platform.isIos()?(b=/(?:iPhone|iPod|iPad|CPU)\\s+OS\\s+(\\S+)/,b=(a=b.exec(a))&&a[1].replace(/_/g,".")):goog.labs.userAgent.platform.isMacintosh()?(b=/Mac OS X ([0-9_.]+)/,b=(a=b.exec(a))?a[1].replace(/_/g,"."):"10"):goog.labs.userAgent.platform.isAndroid()?(b=/Android\\s+([^\\);]+)(\\)|;)/,\nb=(a=b.exec(a))&&a[1]):goog.labs.userAgent.platform.isChromeOS()&&(b=/(?:CrOS\\s+(?:i686|x86_64)\\s+([0-9.]+))/,b=(a=b.exec(a))&&a[1]);return b||""};goog.labs.userAgent.platform.isVersionOrHigher=function(a){return 0<=goog.string.compareVersions(goog.labs.userAgent.platform.getVersion(),a)};goog.reflect={};goog.reflect.object=function(a,b){return b};goog.reflect.objectProperty=function(a,b){return a};goog.reflect.sinkValue=function(a){goog.reflect.sinkValue[" "](a);return a};goog.reflect.sinkValue[" "]=goog.nullFunction;goog.reflect.canAccessProperty=function(a,b){try{return goog.reflect.sinkValue(a[b]),!0}catch(c){}return!1};goog.reflect.cache=function(a,b,c,d){d=d?d(b):b;return Object.prototype.hasOwnProperty.call(a,d)?a[d]:a[d]=c(b)};goog.userAgent={};goog.userAgent.ASSUME_IE=!1;goog.userAgent.ASSUME_EDGE=!1;goog.userAgent.ASSUME_GECKO=!1;goog.userAgent.ASSUME_WEBKIT=!1;goog.userAgent.ASSUME_MOBILE_WEBKIT=!1;goog.userAgent.ASSUME_OPERA=!1;goog.userAgent.ASSUME_ANY_VERSION=!1;goog.userAgent.BROWSER_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_EDGE||goog.userAgent.ASSUME_GECKO||goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_OPERA;goog.userAgent.getUserAgentString=function(){return goog.labs.userAgent.util.getUserAgent()};\ngoog.userAgent.getNavigator=function(){return goog.global.navigator||null};goog.userAgent.OPERA=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_OPERA:goog.labs.userAgent.browser.isOpera();goog.userAgent.IE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_IE:goog.labs.userAgent.browser.isIE();goog.userAgent.EDGE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_EDGE:goog.labs.userAgent.engine.isEdge();goog.userAgent.EDGE_OR_IE=goog.userAgent.EDGE||goog.userAgent.IE;\ngoog.userAgent.GECKO=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_GECKO:goog.labs.userAgent.engine.isGecko();goog.userAgent.WEBKIT=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_MOBILE_WEBKIT:goog.labs.userAgent.engine.isWebKit();goog.userAgent.isMobile_=function(){return goog.userAgent.WEBKIT&&goog.labs.userAgent.util.matchUserAgent("Mobile")};goog.userAgent.MOBILE=goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.isMobile_();goog.userAgent.SAFARI=goog.userAgent.WEBKIT;\ngoog.userAgent.determinePlatform_=function(){var a=goog.userAgent.getNavigator();return a&&a.platform||""};goog.userAgent.PLATFORM=goog.userAgent.determinePlatform_();goog.userAgent.ASSUME_MAC=!1;goog.userAgent.ASSUME_WINDOWS=!1;goog.userAgent.ASSUME_LINUX=!1;goog.userAgent.ASSUME_X11=!1;goog.userAgent.ASSUME_ANDROID=!1;goog.userAgent.ASSUME_IPHONE=!1;goog.userAgent.ASSUME_IPAD=!1;goog.userAgent.ASSUME_IPOD=!1;\ngoog.userAgent.PLATFORM_KNOWN_=goog.userAgent.ASSUME_MAC||goog.userAgent.ASSUME_WINDOWS||goog.userAgent.ASSUME_LINUX||goog.userAgent.ASSUME_X11||goog.userAgent.ASSUME_ANDROID||goog.userAgent.ASSUME_IPHONE||goog.userAgent.ASSUME_IPAD||goog.userAgent.ASSUME_IPOD;goog.userAgent.MAC=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_MAC:goog.labs.userAgent.platform.isMacintosh();goog.userAgent.WINDOWS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_WINDOWS:goog.labs.userAgent.platform.isWindows();\ngoog.userAgent.isLegacyLinux_=function(){return goog.labs.userAgent.platform.isLinux()||goog.labs.userAgent.platform.isChromeOS()};goog.userAgent.LINUX=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_LINUX:goog.userAgent.isLegacyLinux_();goog.userAgent.isX11_=function(){var a=goog.userAgent.getNavigator();return!!a&&goog.string.contains(a.appVersion||"","X11")};goog.userAgent.X11=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_X11:goog.userAgent.isX11_();\ngoog.userAgent.ANDROID=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_ANDROID:goog.labs.userAgent.platform.isAndroid();goog.userAgent.IPHONE=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPHONE:goog.labs.userAgent.platform.isIphone();goog.userAgent.IPAD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPAD:goog.labs.userAgent.platform.isIpad();goog.userAgent.IPOD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPOD:goog.labs.userAgent.platform.isIpod();\ngoog.userAgent.IOS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPHONE||goog.userAgent.ASSUME_IPAD||goog.userAgent.ASSUME_IPOD:goog.labs.userAgent.platform.isIos();goog.userAgent.determineVersion_=function(){var a="",b=goog.userAgent.getVersionRegexResult_();b&&(a=b?b[1]:"");return goog.userAgent.IE&&(b=goog.userAgent.getDocumentMode_(),null!=b&&b>parseFloat(a))?String(b):a};\ngoog.userAgent.getVersionRegexResult_=function(){var a=goog.userAgent.getUserAgentString();if(goog.userAgent.GECKO)return/rv\\:([^\\);]+)(\\)|;)/.exec(a);if(goog.userAgent.EDGE)return/Edge\\/([\\d\\.]+)/.exec(a);if(goog.userAgent.IE)return/\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(a);if(goog.userAgent.WEBKIT)return/WebKit\\/(\\S+)/.exec(a);if(goog.userAgent.OPERA)return/(?:Version)[ \\/]?(\\S+)/.exec(a)};goog.userAgent.getDocumentMode_=function(){var a=goog.global.document;return a?a.documentMode:void 0};\ngoog.userAgent.VERSION=goog.userAgent.determineVersion_();goog.userAgent.compare=function(a,b){return goog.string.compareVersions(a,b)};goog.userAgent.isVersionOrHigherCache_={};goog.userAgent.isVersionOrHigher=function(a){return goog.userAgent.ASSUME_ANY_VERSION||goog.reflect.cache(goog.userAgent.isVersionOrHigherCache_,a,function(){return 0<=goog.string.compareVersions(goog.userAgent.VERSION,a)})};goog.userAgent.isVersion=goog.userAgent.isVersionOrHigher;\ngoog.userAgent.isDocumentModeOrHigher=function(a){return Number(goog.userAgent.DOCUMENT_MODE)>=a};goog.userAgent.isDocumentMode=goog.userAgent.isDocumentModeOrHigher;goog.userAgent.DOCUMENT_MODE=function(){var a=goog.global.document,b=goog.userAgent.getDocumentMode_();if(a&&goog.userAgent.IE)return b||("CSS1Compat"==a.compatMode?parseInt(goog.userAgent.VERSION,10):5)}();goog.events={};\ngoog.events.BrowserFeature={HAS_W3C_BUTTON:!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9),HAS_W3C_EVENT_SUPPORT:!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9),SET_KEY_CODE_TO_PREVENT_DEFAULT:goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("9"),HAS_NAVIGATOR_ONLINE_PROPERTY:!goog.userAgent.WEBKIT||goog.userAgent.isVersionOrHigher("528"),HAS_HTML5_NETWORK_EVENT_SUPPORT:goog.userAgent.GECKO&&goog.userAgent.isVersionOrHigher("1.9b")||goog.userAgent.IE&&goog.userAgent.isVersionOrHigher("8")||\ngoog.userAgent.OPERA&&goog.userAgent.isVersionOrHigher("9.5")||goog.userAgent.WEBKIT&&goog.userAgent.isVersionOrHigher("528"),HTML5_NETWORK_EVENTS_FIRE_ON_BODY:goog.userAgent.GECKO&&!goog.userAgent.isVersionOrHigher("8")||goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("9"),TOUCH_ENABLED:"ontouchstart"in goog.global||!!(goog.global.document&&document.documentElement&&"ontouchstart"in document.documentElement)||!(!goog.global.navigator||!goog.global.navigator.msMaxTouchPoints)};goog.disposable={};goog.disposable.IDisposable=function(){};goog.disposable.IDisposable.prototype.dispose=goog.abstractMethod;goog.disposable.IDisposable.prototype.isDisposed=goog.abstractMethod;goog.Disposable=function(){goog.Disposable.MONITORING_MODE!=goog.Disposable.MonitoringMode.OFF&&(goog.Disposable.INCLUDE_STACK_ON_CREATION&&(this.creationStack=Error().stack),goog.Disposable.instances_[goog.getUid(this)]=this);this.disposed_=this.disposed_;this.onDisposeCallbacks_=this.onDisposeCallbacks_};goog.Disposable.MonitoringMode={OFF:0,PERMANENT:1,INTERACTIVE:2};goog.Disposable.MONITORING_MODE=0;goog.Disposable.INCLUDE_STACK_ON_CREATION=!0;goog.Disposable.instances_={};\ngoog.Disposable.getUndisposedObjects=function(){var a=[],b;for(b in goog.Disposable.instances_)goog.Disposable.instances_.hasOwnProperty(b)&&a.push(goog.Disposable.instances_[Number(b)]);return a};goog.Disposable.clearUndisposedObjects=function(){goog.Disposable.instances_={}};goog.Disposable.prototype.disposed_=!1;goog.Disposable.prototype.isDisposed=function(){return this.disposed_};goog.Disposable.prototype.getDisposed=goog.Disposable.prototype.isDisposed;\ngoog.Disposable.prototype.dispose=function(){if(!this.disposed_&&(this.disposed_=!0,this.disposeInternal(),goog.Disposable.MONITORING_MODE!=goog.Disposable.MonitoringMode.OFF)){var a=goog.getUid(this);if(goog.Disposable.MONITORING_MODE==goog.Disposable.MonitoringMode.PERMANENT&&!goog.Disposable.instances_.hasOwnProperty(a))throw Error(this+" did not call the goog.Disposable base constructor or was disposed of after a clearUndisposedObjects call");delete goog.Disposable.instances_[a]}};\ngoog.Disposable.prototype.registerDisposable=function(a){this.addOnDisposeCallback(goog.partial(goog.dispose,a))};goog.Disposable.prototype.addOnDisposeCallback=function(a,b){this.disposed_?goog.isDef(b)?a.call(b):a():(this.onDisposeCallbacks_||(this.onDisposeCallbacks_=[]),this.onDisposeCallbacks_.push(goog.isDef(b)?goog.bind(a,b):a))};goog.Disposable.prototype.disposeInternal=function(){if(this.onDisposeCallbacks_)for(;this.onDisposeCallbacks_.length;)this.onDisposeCallbacks_.shift()()};\ngoog.Disposable.isDisposed=function(a){return a&&"function"==typeof a.isDisposed?a.isDisposed():!1};goog.dispose=function(a){a&&"function"==typeof a.dispose&&a.dispose()};goog.disposeAll=function(a){for(var b=0,c=arguments.length;b<c;++b){var d=arguments[b];goog.isArrayLike(d)?goog.disposeAll.apply(null,d):goog.dispose(d)}};goog.events.EventId=function(a){this.id=a};goog.events.EventId.prototype.toString=function(){return this.id};goog.events.Event=function(a,b){this.type=a instanceof goog.events.EventId?String(a):a;this.currentTarget=this.target=b;this.defaultPrevented=this.propagationStopped_=!1;this.returnValue_=!0};goog.events.Event.prototype.stopPropagation=function(){this.propagationStopped_=!0};goog.events.Event.prototype.preventDefault=function(){this.defaultPrevented=!0;this.returnValue_=!1};goog.events.Event.stopPropagation=function(a){a.stopPropagation()};goog.events.Event.preventDefault=function(a){a.preventDefault()};goog.events.getVendorPrefixedName_=function(a){return goog.userAgent.WEBKIT?"webkit"+a:goog.userAgent.OPERA?"o"+a.toLowerCase():a.toLowerCase()};\ngoog.events.EventType={CLICK:"click",RIGHTCLICK:"rightclick",DBLCLICK:"dblclick",MOUSEDOWN:"mousedown",MOUSEUP:"mouseup",MOUSEOVER:"mouseover",MOUSEOUT:"mouseout",MOUSEMOVE:"mousemove",MOUSEENTER:"mouseenter",MOUSELEAVE:"mouseleave",SELECTIONCHANGE:"selectionchange",SELECTSTART:"selectstart",WHEEL:"wheel",KEYPRESS:"keypress",KEYDOWN:"keydown",KEYUP:"keyup",BLUR:"blur",FOCUS:"focus",DEACTIVATE:"deactivate",FOCUSIN:goog.userAgent.IE?"focusin":"DOMFocusIn",FOCUSOUT:goog.userAgent.IE?"focusout":"DOMFocusOut",\nCHANGE:"change",RESET:"reset",SELECT:"select",SUBMIT:"submit",INPUT:"input",PROPERTYCHANGE:"propertychange",DRAGSTART:"dragstart",DRAG:"drag",DRAGENTER:"dragenter",DRAGOVER:"dragover",DRAGLEAVE:"dragleave",DROP:"drop",DRAGEND:"dragend",TOUCHSTART:"touchstart",TOUCHMOVE:"touchmove",TOUCHEND:"touchend",TOUCHCANCEL:"touchcancel",BEFOREUNLOAD:"beforeunload",CONSOLEMESSAGE:"consolemessage",CONTEXTMENU:"contextmenu",DEVICEORIENTATION:"deviceorientation",DOMCONTENTLOADED:"DOMContentLoaded",ERROR:"error",\nHELP:"help",LOAD:"load",LOSECAPTURE:"losecapture",ORIENTATIONCHANGE:"orientationchange",READYSTATECHANGE:"readystatechange",RESIZE:"resize",SCROLL:"scroll",UNLOAD:"unload",CANPLAY:"canplay",CANPLAYTHROUGH:"canplaythrough",DURATIONCHANGE:"durationchange",EMPTIED:"emptied",ENDED:"ended",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",PAUSE:"pause",PLAY:"play",PLAYING:"playing",RATECHANGE:"ratechange",SEEKED:"seeked",SEEKING:"seeking",STALLED:"stalled",SUSPEND:"suspend",TIMEUPDATE:"timeupdate",\nVOLUMECHANGE:"volumechange",WAITING:"waiting",HASHCHANGE:"hashchange",PAGEHIDE:"pagehide",PAGESHOW:"pageshow",POPSTATE:"popstate",COPY:"copy",PASTE:"paste",CUT:"cut",BEFORECOPY:"beforecopy",BEFORECUT:"beforecut",BEFOREPASTE:"beforepaste",ONLINE:"online",OFFLINE:"offline",MESSAGE:"message",CONNECT:"connect",ANIMATIONSTART:goog.events.getVendorPrefixedName_("AnimationStart"),ANIMATIONEND:goog.events.getVendorPrefixedName_("AnimationEnd"),ANIMATIONITERATION:goog.events.getVendorPrefixedName_("AnimationIteration"),\nTRANSITIONEND:goog.events.getVendorPrefixedName_("TransitionEnd"),POINTERDOWN:"pointerdown",POINTERUP:"pointerup",POINTERCANCEL:"pointercancel",POINTERMOVE:"pointermove",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",GOTPOINTERCAPTURE:"gotpointercapture",LOSTPOINTERCAPTURE:"lostpointercapture",MSGESTURECHANGE:"MSGestureChange",MSGESTUREEND:"MSGestureEnd",MSGESTUREHOLD:"MSGestureHold",MSGESTURESTART:"MSGestureStart",MSGESTURETAP:"MSGestureTap",\nMSGOTPOINTERCAPTURE:"MSGotPointerCapture",MSINERTIASTART:"MSInertiaStart",MSLOSTPOINTERCAPTURE:"MSLostPointerCapture",MSPOINTERCANCEL:"MSPointerCancel",MSPOINTERDOWN:"MSPointerDown",MSPOINTERENTER:"MSPointerEnter",MSPOINTERHOVER:"MSPointerHover",MSPOINTERLEAVE:"MSPointerLeave",MSPOINTERMOVE:"MSPointerMove",MSPOINTEROUT:"MSPointerOut",MSPOINTEROVER:"MSPointerOver",MSPOINTERUP:"MSPointerUp",TEXT:"text",TEXTINPUT:"textInput",COMPOSITIONSTART:"compositionstart",COMPOSITIONUPDATE:"compositionupdate",COMPOSITIONEND:"compositionend",\nEXIT:"exit",LOADABORT:"loadabort",LOADCOMMIT:"loadcommit",LOADREDIRECT:"loadredirect",LOADSTART:"loadstart",LOADSTOP:"loadstop",RESPONSIVE:"responsive",SIZECHANGED:"sizechanged",UNRESPONSIVE:"unresponsive",VISIBILITYCHANGE:"visibilitychange",STORAGE:"storage",DOMSUBTREEMODIFIED:"DOMSubtreeModified",DOMNODEINSERTED:"DOMNodeInserted",DOMNODEREMOVED:"DOMNodeRemoved",DOMNODEREMOVEDFROMDOCUMENT:"DOMNodeRemovedFromDocument",DOMNODEINSERTEDINTODOCUMENT:"DOMNodeInsertedIntoDocument",DOMATTRMODIFIED:"DOMAttrModified",\nDOMCHARACTERDATAMODIFIED:"DOMCharacterDataModified",BEFOREPRINT:"beforeprint",AFTERPRINT:"afterprint"};goog.events.BrowserEvent=function(a,b){goog.events.Event.call(this,a?a.type:"");this.relatedTarget=this.currentTarget=this.target=null;this.charCode=this.keyCode=this.button=this.screenY=this.screenX=this.clientY=this.clientX=this.offsetY=this.offsetX=0;this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.state=null;this.platformModifierKey=!1;this.event_=null;a&&this.init(a,b)};goog.inherits(goog.events.BrowserEvent,goog.events.Event);\ngoog.events.BrowserEvent.MouseButton={LEFT:0,MIDDLE:1,RIGHT:2};goog.events.BrowserEvent.IEButtonMap=[1,4,2];\ngoog.events.BrowserEvent.prototype.init=function(a,b){var c=this.type=a.type,d=a.changedTouches?a.changedTouches[0]:null;this.target=a.target||a.srcElement;this.currentTarget=b;var e=a.relatedTarget;e?goog.userAgent.GECKO&&(goog.reflect.canAccessProperty(e,"nodeName")||(e=null)):c==goog.events.EventType.MOUSEOVER?e=a.fromElement:c==goog.events.EventType.MOUSEOUT&&(e=a.toElement);this.relatedTarget=e;goog.isNull(d)?(this.offsetX=goog.userAgent.WEBKIT||void 0!==a.offsetX?a.offsetX:a.layerX,this.offsetY=\ngoog.userAgent.WEBKIT||void 0!==a.offsetY?a.offsetY:a.layerY,this.clientX=void 0!==a.clientX?a.clientX:a.pageX,this.clientY=void 0!==a.clientY?a.clientY:a.pageY,this.screenX=a.screenX||0,this.screenY=a.screenY||0):(this.clientX=void 0!==d.clientX?d.clientX:d.pageX,this.clientY=void 0!==d.clientY?d.clientY:d.pageY,this.screenX=d.screenX||0,this.screenY=d.screenY||0);this.button=a.button;this.keyCode=a.keyCode||0;this.charCode=a.charCode||("keypress"==c?a.keyCode:0);this.ctrlKey=a.ctrlKey;this.altKey=\na.altKey;this.shiftKey=a.shiftKey;this.metaKey=a.metaKey;this.platformModifierKey=goog.userAgent.MAC?a.metaKey:a.ctrlKey;this.state=a.state;this.event_=a;a.defaultPrevented&&this.preventDefault()};goog.events.BrowserEvent.prototype.isButton=function(a){return goog.events.BrowserFeature.HAS_W3C_BUTTON?this.event_.button==a:"click"==this.type?a==goog.events.BrowserEvent.MouseButton.LEFT:!!(this.event_.button&goog.events.BrowserEvent.IEButtonMap[a])};\ngoog.events.BrowserEvent.prototype.isMouseActionButton=function(){return this.isButton(goog.events.BrowserEvent.MouseButton.LEFT)&&!(goog.userAgent.WEBKIT&&goog.userAgent.MAC&&this.ctrlKey)};goog.events.BrowserEvent.prototype.stopPropagation=function(){goog.events.BrowserEvent.superClass_.stopPropagation.call(this);this.event_.stopPropagation?this.event_.stopPropagation():this.event_.cancelBubble=!0};\ngoog.events.BrowserEvent.prototype.preventDefault=function(){goog.events.BrowserEvent.superClass_.preventDefault.call(this);var a=this.event_;if(a.preventDefault)a.preventDefault();else if(a.returnValue=!1,goog.events.BrowserFeature.SET_KEY_CODE_TO_PREVENT_DEFAULT)try{if(a.ctrlKey||112<=a.keyCode&&123>=a.keyCode)a.keyCode=-1}catch(b){}};goog.events.BrowserEvent.prototype.getBrowserEvent=function(){return this.event_};goog.events.Listenable=function(){};goog.events.Listenable.IMPLEMENTED_BY_PROP="closure_listenable_"+(1E6*Math.random()|0);goog.events.Listenable.addImplementation=function(a){a.prototype[goog.events.Listenable.IMPLEMENTED_BY_PROP]=!0};goog.events.Listenable.isImplementedBy=function(a){return!(!a||!a[goog.events.Listenable.IMPLEMENTED_BY_PROP])};goog.events.ListenableKey=function(){};goog.events.ListenableKey.counter_=0;goog.events.ListenableKey.reserveKey=function(){return++goog.events.ListenableKey.counter_};goog.events.Listener=function(a,b,c,d,e,f){goog.events.Listener.ENABLE_MONITORING&&(this.creationStack=Error().stack);this.listener=a;this.proxy=b;this.src=c;this.type=d;this.capture=!!e;this.handler=f;this.key=goog.events.ListenableKey.reserveKey();this.removed=this.callOnce=!1};goog.events.Listener.ENABLE_MONITORING=!1;goog.events.Listener.prototype.markAsRemoved=function(){this.removed=!0;this.handler=this.src=this.proxy=this.listener=null};goog.events.ListenerMap=function(a){this.src=a;this.listeners={};this.typeCount_=0};goog.events.ListenerMap.prototype.getTypeCount=function(){return this.typeCount_};goog.events.ListenerMap.prototype.getListenerCount=function(){var a=0,b;for(b in this.listeners)a+=this.listeners[b].length;return a};\ngoog.events.ListenerMap.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.listeners[f];a||(a=this.listeners[f]=[],this.typeCount_++);var g=goog.events.ListenerMap.findListenerIndex_(a,b,d,e);-1<g?(b=a[g],c||(b.callOnce=!1)):(b=new goog.events.Listener(b,null,this.src,f,!!d,e),b.callOnce=c,a.push(b));return b};\ngoog.events.ListenerMap.prototype.remove=function(a,b,c,d){a=a.toString();if(!(a in this.listeners))return!1;var e=this.listeners[a];b=goog.events.ListenerMap.findListenerIndex_(e,b,c,d);return-1<b?(e[b].markAsRemoved(),goog.array.removeAt(e,b),0==e.length&&(delete this.listeners[a],this.typeCount_--),!0):!1};\ngoog.events.ListenerMap.prototype.removeByKey=function(a){var b=a.type;if(!(b in this.listeners))return!1;var c=goog.array.remove(this.listeners[b],a);c&&(a.markAsRemoved(),0==this.listeners[b].length&&(delete this.listeners[b],this.typeCount_--));return c};goog.events.ListenerMap.prototype.removeAll=function(a){a=a&&a.toString();var b=0,c;for(c in this.listeners)if(!a||c==a){for(var d=this.listeners[c],e=0;e<d.length;e++)++b,d[e].markAsRemoved();delete this.listeners[c];this.typeCount_--}return b};\ngoog.events.ListenerMap.prototype.getListeners=function(a,b){var c=this.listeners[a.toString()],d=[];if(c)for(var e=0;e<c.length;++e){var f=c[e];f.capture==b&&d.push(f)}return d};goog.events.ListenerMap.prototype.getListener=function(a,b,c,d){a=this.listeners[a.toString()];var e=-1;a&&(e=goog.events.ListenerMap.findListenerIndex_(a,b,c,d));return-1<e?a[e]:null};\ngoog.events.ListenerMap.prototype.hasListener=function(a,b){var c=goog.isDef(a),d=c?a.toString():"",e=goog.isDef(b);return goog.object.some(this.listeners,function(a,g){for(var f=0;f<a.length;++f)if(!(c&&a[f].type!=d||e&&a[f].capture!=b))return!0;return!1})};goog.events.ListenerMap.findListenerIndex_=function(a,b,c,d){for(var e=0;e<a.length;++e){var f=a[e];if(!f.removed&&f.listener==b&&f.capture==!!c&&f.handler==d)return e}return-1};goog.events.LISTENER_MAP_PROP_="closure_lm_"+(1E6*Math.random()|0);goog.events.onString_="on";goog.events.onStringMap_={};goog.events.CaptureSimulationMode={OFF_AND_FAIL:0,OFF_AND_SILENT:1,ON:2};goog.events.CAPTURE_SIMULATION_MODE=2;goog.events.listenerCountEstimate_=0;\ngoog.events.listen=function(a,b,c,d,e){if(goog.isArray(b)){for(var f=0;f<b.length;f++)goog.events.listen(a,b[f],c,d,e);return null}c=goog.events.wrapListener(c);return goog.events.Listenable.isImplementedBy(a)?a.listen(b,c,d,e):goog.events.listen_(a,b,c,!1,d,e)};\ngoog.events.listen_=function(a,b,c,d,e,f){if(!b)throw Error("Invalid event type");var g=!!e;if(g&&!goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT){if(goog.events.CAPTURE_SIMULATION_MODE==goog.events.CaptureSimulationMode.OFF_AND_FAIL)return goog.asserts.fail("Can not register capture listener in IE8-."),null;if(goog.events.CAPTURE_SIMULATION_MODE==goog.events.CaptureSimulationMode.OFF_AND_SILENT)return null}var h=goog.events.getListenerMap_(a);h||(a[goog.events.LISTENER_MAP_PROP_]=h=new goog.events.ListenerMap(a));\nc=h.add(b,c,d,e,f);if(c.proxy)return c;d=goog.events.getProxy();c.proxy=d;d.src=a;d.listener=c;if(a.addEventListener)a.addEventListener(b.toString(),d,g);else if(a.attachEvent)a.attachEvent(goog.events.getOnString_(b.toString()),d);else throw Error("addEventListener and attachEvent are unavailable.");goog.events.listenerCountEstimate_++;return c};\ngoog.events.getProxy=function(){var a=goog.events.handleBrowserEvent_,b=goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT?function(c){return a.call(b.src,b.listener,c)}:function(c){c=a.call(b.src,b.listener,c);if(!c)return c};return b};\ngoog.events.listenOnce=function(a,b,c,d,e){if(goog.isArray(b)){for(var f=0;f<b.length;f++)goog.events.listenOnce(a,b[f],c,d,e);return null}c=goog.events.wrapListener(c);return goog.events.Listenable.isImplementedBy(a)?a.listenOnce(b,c,d,e):goog.events.listen_(a,b,c,!0,d,e)};goog.events.listenWithWrapper=function(a,b,c,d,e){b.listen(a,c,d,e)};\ngoog.events.unlisten=function(a,b,c,d,e){if(goog.isArray(b)){for(var f=0;f<b.length;f++)goog.events.unlisten(a,b[f],c,d,e);return null}c=goog.events.wrapListener(c);if(goog.events.Listenable.isImplementedBy(a))return a.unlisten(b,c,d,e);if(!a)return!1;d=!!d;if(a=goog.events.getListenerMap_(a))if(b=a.getListener(b,c,d,e))return goog.events.unlistenByKey(b);return!1};\ngoog.events.unlistenByKey=function(a){if(goog.isNumber(a)||!a||a.removed)return!1;var b=a.src;if(goog.events.Listenable.isImplementedBy(b))return b.unlistenByKey(a);var c=a.type,d=a.proxy;b.removeEventListener?b.removeEventListener(c,d,a.capture):b.detachEvent&&b.detachEvent(goog.events.getOnString_(c),d);goog.events.listenerCountEstimate_--;(c=goog.events.getListenerMap_(b))?(c.removeByKey(a),0==c.getTypeCount()&&(c.src=null,b[goog.events.LISTENER_MAP_PROP_]=null)):a.markAsRemoved();return!0};\ngoog.events.unlistenWithWrapper=function(a,b,c,d,e){b.unlisten(a,c,d,e)};goog.events.removeAll=function(a,b){if(!a)return 0;if(goog.events.Listenable.isImplementedBy(a))return a.removeAllListeners(b);var c=goog.events.getListenerMap_(a);if(!c)return 0;var d=0,e=b&&b.toString(),f;for(f in c.listeners)if(!e||f==e)for(var g=c.listeners[f].concat(),h=0;h<g.length;++h)goog.events.unlistenByKey(g[h])&&++d;return d};\ngoog.events.getListeners=function(a,b,c){return goog.events.Listenable.isImplementedBy(a)?a.getListeners(b,c):a?(a=goog.events.getListenerMap_(a))?a.getListeners(b,c):[]:[]};goog.events.getListener=function(a,b,c,d,e){c=goog.events.wrapListener(c);d=!!d;return goog.events.Listenable.isImplementedBy(a)?a.getListener(b,c,d,e):a?(a=goog.events.getListenerMap_(a))?a.getListener(b,c,d,e):null:null};\ngoog.events.hasListener=function(a,b,c){if(goog.events.Listenable.isImplementedBy(a))return a.hasListener(b,c);a=goog.events.getListenerMap_(a);return!!a&&a.hasListener(b,c)};goog.events.expose=function(a){var b=[],c;for(c in a)a[c]&&a[c].id?b.push(c+" = "+a[c]+" ("+a[c].id+")"):b.push(c+" = "+a[c]);return b.join("\\n")};goog.events.getOnString_=function(a){return a in goog.events.onStringMap_?goog.events.onStringMap_[a]:goog.events.onStringMap_[a]=goog.events.onString_+a};\ngoog.events.fireListeners=function(a,b,c,d){return goog.events.Listenable.isImplementedBy(a)?a.fireListeners(b,c,d):goog.events.fireListeners_(a,b,c,d)};goog.events.fireListeners_=function(a,b,c,d){var e=!0;if(a=goog.events.getListenerMap_(a))if(b=a.listeners[b.toString()])for(b=b.concat(),a=0;a<b.length;a++){var f=b[a];f&&f.capture==c&&!f.removed&&(f=goog.events.fireListener(f,d),e=e&&!1!==f)}return e};\ngoog.events.fireListener=function(a,b){var c=a.listener,d=a.handler||a.src;a.callOnce&&goog.events.unlistenByKey(a);return c.call(d,b)};goog.events.getTotalListenerCount=function(){return goog.events.listenerCountEstimate_};goog.events.dispatchEvent=function(a,b){goog.asserts.assert(goog.events.Listenable.isImplementedBy(a),"Can not use goog.events.dispatchEvent with non-goog.events.Listenable instance.");return a.dispatchEvent(b)};\ngoog.events.protectBrowserEventEntryPoint=function(a){goog.events.handleBrowserEvent_=a.protectEntryPoint(goog.events.handleBrowserEvent_)};\ngoog.events.handleBrowserEvent_=function(a,b){if(a.removed)return!0;if(!goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT){var c=b||goog.getObjectByName("window.event"),d=new goog.events.BrowserEvent(c,this),e=!0;if(goog.events.CAPTURE_SIMULATION_MODE==goog.events.CaptureSimulationMode.ON){if(!goog.events.isMarkedIeEvent_(c)){goog.events.markIeEvent_(c);for(var c=[],f=d.currentTarget;f;f=f.parentNode)c.push(f);for(var f=a.type,g=c.length-1;!d.propagationStopped_&&0<=g;g--){d.currentTarget=c[g];var h=\ngoog.events.fireListeners_(c[g],f,!0,d),e=e&&h}for(g=0;!d.propagationStopped_&&g<c.length;g++)d.currentTarget=c[g],h=goog.events.fireListeners_(c[g],f,!1,d),e=e&&h}}else e=goog.events.fireListener(a,d);return e}return goog.events.fireListener(a,new goog.events.BrowserEvent(b,this))};goog.events.markIeEvent_=function(a){var b=!1;if(0==a.keyCode)try{a.keyCode=-1;return}catch(c){b=!0}if(b||void 0==a.returnValue)a.returnValue=!0};goog.events.isMarkedIeEvent_=function(a){return 0>a.keyCode||void 0!=a.returnValue};\ngoog.events.uniqueIdCounter_=0;goog.events.getUniqueId=function(a){return a+"_"+goog.events.uniqueIdCounter_++};goog.events.getListenerMap_=function(a){a=a[goog.events.LISTENER_MAP_PROP_];return a instanceof goog.events.ListenerMap?a:null};goog.events.LISTENER_WRAPPER_PROP_="__closure_events_fn_"+(1E9*Math.random()>>>0);\ngoog.events.wrapListener=function(a){goog.asserts.assert(a,"Listener can not be null.");if(goog.isFunction(a))return a;goog.asserts.assert(a.handleEvent,"An object listener must have handleEvent method.");a[goog.events.LISTENER_WRAPPER_PROP_]||(a[goog.events.LISTENER_WRAPPER_PROP_]=function(b){return a.handleEvent(b)});return a[goog.events.LISTENER_WRAPPER_PROP_]};goog.debug.entryPointRegistry.register(function(a){goog.events.handleBrowserEvent_=a(goog.events.handleBrowserEvent_)});goog.math={};goog.math.randomInt=function(a){return Math.floor(Math.random()*a)};goog.math.uniformRandom=function(a,b){return a+Math.random()*(b-a)};goog.math.clamp=function(a,b,c){return Math.min(Math.max(a,b),c)};goog.math.modulo=function(a,b){var c=a%b;return 0>c*b?c+b:c};goog.math.lerp=function(a,b,c){return a+c*(b-a)};goog.math.nearlyEquals=function(a,b,c){return Math.abs(a-b)<=(c||1E-6)};goog.math.standardAngle=function(a){return goog.math.modulo(a,360)};\ngoog.math.standardAngleInRadians=function(a){return goog.math.modulo(a,2*Math.PI)};goog.math.toRadians=function(a){return a*Math.PI/180};goog.math.toDegrees=function(a){return 180*a/Math.PI};goog.math.angleDx=function(a,b){return b*Math.cos(goog.math.toRadians(a))};goog.math.angleDy=function(a,b){return b*Math.sin(goog.math.toRadians(a))};goog.math.angle=function(a,b,c,d){return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(d-b,c-a)))};\ngoog.math.angleDifference=function(a,b){var c=goog.math.standardAngle(b)-goog.math.standardAngle(a);180<c?c-=360:-180>=c&&(c=360+c);return c};goog.math.sign=function(a){return 0<a?1:0>a?-1:a};\ngoog.math.longestCommonSubsequence=function(a,b,c,d){c=c||function(a,b){return a==b};d=d||function(b,c){return a[b]};for(var e=a.length,f=b.length,g=[],h=0;h<e+1;h++)g[h]=[],g[h][0]=0;for(var k=0;k<f+1;k++)g[0][k]=0;for(h=1;h<=e;h++)for(k=1;k<=f;k++)c(a[h-1],b[k-1])?g[h][k]=g[h-1][k-1]+1:g[h][k]=Math.max(g[h-1][k],g[h][k-1]);for(var l=[],h=e,k=f;0<h&&0<k;)c(a[h-1],b[k-1])?(l.unshift(d(h-1,k-1)),h--,k--):g[h-1][k]>g[h][k-1]?h--:k--;return l};\ngoog.math.sum=function(a){return goog.array.reduce(arguments,function(a,c){return a+c},0)};goog.math.average=function(a){return goog.math.sum.apply(null,arguments)/arguments.length};goog.math.sampleVariance=function(a){var b=arguments.length;if(2>b)return 0;var c=goog.math.average.apply(null,arguments);return goog.math.sum.apply(null,goog.array.map(arguments,function(a){return Math.pow(a-c,2)}))/(b-1)};goog.math.standardDeviation=function(a){return Math.sqrt(goog.math.sampleVariance.apply(null,arguments))};\ngoog.math.isInt=function(a){return isFinite(a)&&0==a%1};goog.math.isFiniteNumber=function(a){return isFinite(a)&&!isNaN(a)};goog.math.isNegativeZero=function(a){return 0==a&&0>1/a};goog.math.log10Floor=function(a){if(0<a){var b=Math.round(Math.log(a)*Math.LOG10E);return b-(parseFloat("1e"+b)>a?1:0)}return 0==a?-Infinity:NaN};goog.math.safeFloor=function(a,b){goog.asserts.assert(!goog.isDef(b)||0<b);return Math.floor(a+(b||2E-15))};\ngoog.math.safeCeil=function(a,b){goog.asserts.assert(!goog.isDef(b)||0<b);return Math.ceil(a-(b||2E-15))};goog.dom.BrowserFeature={CAN_ADD_NAME_OR_TYPE_ATTRIBUTES:!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9),CAN_USE_CHILDREN_ATTRIBUTE:!goog.userAgent.GECKO&&!goog.userAgent.IE||goog.userAgent.IE&&goog.userAgent.isDocumentModeOrHigher(9)||goog.userAgent.GECKO&&goog.userAgent.isVersionOrHigher("1.9.1"),CAN_USE_INNER_TEXT:goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("9"),CAN_USE_PARENT_ELEMENT_PROPERTY:goog.userAgent.IE||goog.userAgent.OPERA||goog.userAgent.WEBKIT,INNER_HTML_NEEDS_SCOPED_ELEMENT:goog.userAgent.IE,\nLEGACY_IE_RANGES:goog.userAgent.IE&&!goog.userAgent.isDocumentModeOrHigher(9)};goog.dom.TagName=function(a){this.tagName_=a};goog.dom.TagName.prototype.toString=function(){return this.tagName_};goog.dom.TagName.A=new goog.dom.TagName("A");goog.dom.TagName.ABBR=new goog.dom.TagName("ABBR");goog.dom.TagName.ACRONYM=new goog.dom.TagName("ACRONYM");goog.dom.TagName.ADDRESS=new goog.dom.TagName("ADDRESS");goog.dom.TagName.APPLET=new goog.dom.TagName("APPLET");goog.dom.TagName.AREA=new goog.dom.TagName("AREA");goog.dom.TagName.ARTICLE=new goog.dom.TagName("ARTICLE");\ngoog.dom.TagName.ASIDE=new goog.dom.TagName("ASIDE");goog.dom.TagName.AUDIO=new goog.dom.TagName("AUDIO");goog.dom.TagName.B=new goog.dom.TagName("B");goog.dom.TagName.BASE=new goog.dom.TagName("BASE");goog.dom.TagName.BASEFONT=new goog.dom.TagName("BASEFONT");goog.dom.TagName.BDI=new goog.dom.TagName("BDI");goog.dom.TagName.BDO=new goog.dom.TagName("BDO");goog.dom.TagName.BIG=new goog.dom.TagName("BIG");goog.dom.TagName.BLOCKQUOTE=new goog.dom.TagName("BLOCKQUOTE");goog.dom.TagName.BODY=new goog.dom.TagName("BODY");\ngoog.dom.TagName.BR=new goog.dom.TagName("BR");goog.dom.TagName.BUTTON=new goog.dom.TagName("BUTTON");goog.dom.TagName.CANVAS=new goog.dom.TagName("CANVAS");goog.dom.TagName.CAPTION=new goog.dom.TagName("CAPTION");goog.dom.TagName.CENTER=new goog.dom.TagName("CENTER");goog.dom.TagName.CITE=new goog.dom.TagName("CITE");goog.dom.TagName.CODE=new goog.dom.TagName("CODE");goog.dom.TagName.COL=new goog.dom.TagName("COL");goog.dom.TagName.COLGROUP=new goog.dom.TagName("COLGROUP");\ngoog.dom.TagName.COMMAND=new goog.dom.TagName("COMMAND");goog.dom.TagName.DATA=new goog.dom.TagName("DATA");goog.dom.TagName.DATALIST=new goog.dom.TagName("DATALIST");goog.dom.TagName.DD=new goog.dom.TagName("DD");goog.dom.TagName.DEL=new goog.dom.TagName("DEL");goog.dom.TagName.DETAILS=new goog.dom.TagName("DETAILS");goog.dom.TagName.DFN=new goog.dom.TagName("DFN");goog.dom.TagName.DIALOG=new goog.dom.TagName("DIALOG");goog.dom.TagName.DIR=new goog.dom.TagName("DIR");goog.dom.TagName.DIV=new goog.dom.TagName("DIV");\ngoog.dom.TagName.DL=new goog.dom.TagName("DL");goog.dom.TagName.DT=new goog.dom.TagName("DT");goog.dom.TagName.EM=new goog.dom.TagName("EM");goog.dom.TagName.EMBED=new goog.dom.TagName("EMBED");goog.dom.TagName.FIELDSET=new goog.dom.TagName("FIELDSET");goog.dom.TagName.FIGCAPTION=new goog.dom.TagName("FIGCAPTION");goog.dom.TagName.FIGURE=new goog.dom.TagName("FIGURE");goog.dom.TagName.FONT=new goog.dom.TagName("FONT");goog.dom.TagName.FOOTER=new goog.dom.TagName("FOOTER");goog.dom.TagName.FORM=new goog.dom.TagName("FORM");\ngoog.dom.TagName.FRAME=new goog.dom.TagName("FRAME");goog.dom.TagName.FRAMESET=new goog.dom.TagName("FRAMESET");goog.dom.TagName.H1=new goog.dom.TagName("H1");goog.dom.TagName.H2=new goog.dom.TagName("H2");goog.dom.TagName.H3=new goog.dom.TagName("H3");goog.dom.TagName.H4=new goog.dom.TagName("H4");goog.dom.TagName.H5=new goog.dom.TagName("H5");goog.dom.TagName.H6=new goog.dom.TagName("H6");goog.dom.TagName.HEAD=new goog.dom.TagName("HEAD");goog.dom.TagName.HEADER=new goog.dom.TagName("HEADER");\ngoog.dom.TagName.HGROUP=new goog.dom.TagName("HGROUP");goog.dom.TagName.HR=new goog.dom.TagName("HR");goog.dom.TagName.HTML=new goog.dom.TagName("HTML");goog.dom.TagName.I=new goog.dom.TagName("I");goog.dom.TagName.IFRAME=new goog.dom.TagName("IFRAME");goog.dom.TagName.IMG=new goog.dom.TagName("IMG");goog.dom.TagName.INPUT=new goog.dom.TagName("INPUT");goog.dom.TagName.INS=new goog.dom.TagName("INS");goog.dom.TagName.ISINDEX=new goog.dom.TagName("ISINDEX");goog.dom.TagName.KBD=new goog.dom.TagName("KBD");\ngoog.dom.TagName.KEYGEN=new goog.dom.TagName("KEYGEN");goog.dom.TagName.LABEL=new goog.dom.TagName("LABEL");goog.dom.TagName.LEGEND=new goog.dom.TagName("LEGEND");goog.dom.TagName.LI=new goog.dom.TagName("LI");goog.dom.TagName.LINK=new goog.dom.TagName("LINK");goog.dom.TagName.MAP=new goog.dom.TagName("MAP");goog.dom.TagName.MARK=new goog.dom.TagName("MARK");goog.dom.TagName.MATH=new goog.dom.TagName("MATH");goog.dom.TagName.MENU=new goog.dom.TagName("MENU");goog.dom.TagName.META=new goog.dom.TagName("META");\ngoog.dom.TagName.METER=new goog.dom.TagName("METER");goog.dom.TagName.NAV=new goog.dom.TagName("NAV");goog.dom.TagName.NOFRAMES=new goog.dom.TagName("NOFRAMES");goog.dom.TagName.NOSCRIPT=new goog.dom.TagName("NOSCRIPT");goog.dom.TagName.OBJECT=new goog.dom.TagName("OBJECT");goog.dom.TagName.OL=new goog.dom.TagName("OL");goog.dom.TagName.OPTGROUP=new goog.dom.TagName("OPTGROUP");goog.dom.TagName.OPTION=new goog.dom.TagName("OPTION");goog.dom.TagName.OUTPUT=new goog.dom.TagName("OUTPUT");\ngoog.dom.TagName.P=new goog.dom.TagName("P");goog.dom.TagName.PARAM=new goog.dom.TagName("PARAM");goog.dom.TagName.PRE=new goog.dom.TagName("PRE");goog.dom.TagName.PROGRESS=new goog.dom.TagName("PROGRESS");goog.dom.TagName.Q=new goog.dom.TagName("Q");goog.dom.TagName.RP=new goog.dom.TagName("RP");goog.dom.TagName.RT=new goog.dom.TagName("RT");goog.dom.TagName.RUBY=new goog.dom.TagName("RUBY");goog.dom.TagName.S=new goog.dom.TagName("S");goog.dom.TagName.SAMP=new goog.dom.TagName("SAMP");\ngoog.dom.TagName.SCRIPT=new goog.dom.TagName("SCRIPT");goog.dom.TagName.SECTION=new goog.dom.TagName("SECTION");goog.dom.TagName.SELECT=new goog.dom.TagName("SELECT");goog.dom.TagName.SMALL=new goog.dom.TagName("SMALL");goog.dom.TagName.SOURCE=new goog.dom.TagName("SOURCE");goog.dom.TagName.SPAN=new goog.dom.TagName("SPAN");goog.dom.TagName.STRIKE=new goog.dom.TagName("STRIKE");goog.dom.TagName.STRONG=new goog.dom.TagName("STRONG");goog.dom.TagName.STYLE=new goog.dom.TagName("STYLE");\ngoog.dom.TagName.SUB=new goog.dom.TagName("SUB");goog.dom.TagName.SUMMARY=new goog.dom.TagName("SUMMARY");goog.dom.TagName.SUP=new goog.dom.TagName("SUP");goog.dom.TagName.SVG=new goog.dom.TagName("SVG");goog.dom.TagName.TABLE=new goog.dom.TagName("TABLE");goog.dom.TagName.TBODY=new goog.dom.TagName("TBODY");goog.dom.TagName.TD=new goog.dom.TagName("TD");goog.dom.TagName.TEMPLATE=new goog.dom.TagName("TEMPLATE");goog.dom.TagName.TEXTAREA=new goog.dom.TagName("TEXTAREA");goog.dom.TagName.TFOOT=new goog.dom.TagName("TFOOT");\ngoog.dom.TagName.TH=new goog.dom.TagName("TH");goog.dom.TagName.THEAD=new goog.dom.TagName("THEAD");goog.dom.TagName.TIME=new goog.dom.TagName("TIME");goog.dom.TagName.TITLE=new goog.dom.TagName("TITLE");goog.dom.TagName.TR=new goog.dom.TagName("TR");goog.dom.TagName.TRACK=new goog.dom.TagName("TRACK");goog.dom.TagName.TT=new goog.dom.TagName("TT");goog.dom.TagName.U=new goog.dom.TagName("U");goog.dom.TagName.UL=new goog.dom.TagName("UL");goog.dom.TagName.VAR=new goog.dom.TagName("VAR");\ngoog.dom.TagName.VIDEO=new goog.dom.TagName("VIDEO");goog.dom.TagName.WBR=new goog.dom.TagName("WBR");goog.dom.tags={};goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};goog.dom.tags.isVoidTag=function(a){return!0===goog.dom.tags.VOID_TAGS_[a]};goog.string.TypedString=function(){};goog.string.Const=function(){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_="";this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_};goog.string.Const.prototype.implementsGoogStringTypedString=!0;goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_};\ngoog.string.Const.prototype.toString=function(){return"Const{"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+"}"};goog.string.Const.unwrap=function(a){if(a instanceof goog.string.Const&&a.constructor===goog.string.Const&&a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_)return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;goog.asserts.fail("expected object of type Const, got \'"+a+"\'");return"type_error:Const"};\ngoog.string.Const.from=function(a){return goog.string.Const.create__googStringSecurityPrivate_(a)};goog.string.Const.TYPE_MARKER_={};goog.string.Const.create__googStringSecurityPrivate_=function(a){var b=new goog.string.Const;b.stringConstValueWithSecurityContract__googStringSecurityPrivate_=a;return b};goog.string.Const.EMPTY=goog.string.Const.from("");goog.html={};goog.html.SafeStyle=function(){this.privateDoNotAccessOrElseSafeStyleWrappedValue_="";this.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeStyle.prototype.implementsGoogStringTypedString=!0;goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};\ngoog.html.SafeStyle.fromConstant=function(a){a=goog.string.Const.unwrap(a);if(0===a.length)return goog.html.SafeStyle.EMPTY;goog.html.SafeStyle.checkStyle_(a);goog.asserts.assert(goog.string.endsWith(a,";"),"Last character of style string is not \';\': "+a);goog.asserts.assert(goog.string.contains(a,":"),"Style string must contain at least one \':\', to specify a \\"name: value\\" pair: "+a);return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeStyle.checkStyle_=function(a){goog.asserts.assert(!/[<>]/.test(a),"Forbidden characters in style string: "+a)};goog.html.SafeStyle.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_};goog.DEBUG&&(goog.html.SafeStyle.prototype.toString=function(){return"SafeStyle{"+this.privateDoNotAccessOrElseSafeStyleWrappedValue_+"}"});\ngoog.html.SafeStyle.unwrap=function(a){if(a instanceof goog.html.SafeStyle&&a.constructor===goog.html.SafeStyle&&a.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;goog.asserts.fail("expected object of type SafeStyle, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeStyle"};goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse=function(a){return(new goog.html.SafeStyle).initSecurityPrivateDoNotAccessOrElse_(a)};\ngoog.html.SafeStyle.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a){this.privateDoNotAccessOrElseSafeStyleWrappedValue_=a;return this};goog.html.SafeStyle.EMPTY=goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse("");goog.html.SafeStyle.INNOCUOUS_STRING="zClosurez";\ngoog.html.SafeStyle.create=function(a){var b="",c;for(c in a){if(!/^[-_a-zA-Z0-9]+$/.test(c))throw Error("Name allows only [-_a-zA-Z0-9], got: "+c);var d=a[c];null!=d&&(d instanceof goog.string.Const?(d=goog.string.Const.unwrap(d),goog.asserts.assert(!/[{;}]/.test(d),"Value does not allow [{;}].")):goog.html.SafeStyle.VALUE_RE_.test(d)?goog.html.SafeStyle.hasBalancedQuotes_(d)||(goog.asserts.fail("String value requires balanced quotes, got: "+d),d=goog.html.SafeStyle.INNOCUOUS_STRING):(goog.asserts.fail("String value allows only [-,.\\"\'%_!# a-zA-Z0-9], rgb() and rgba(), got: "+\nd),d=goog.html.SafeStyle.INNOCUOUS_STRING),b+=c+":"+d+";")}if(!b)return goog.html.SafeStyle.EMPTY;goog.html.SafeStyle.checkStyle_(b);return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)};goog.html.SafeStyle.hasBalancedQuotes_=function(a){for(var b=!0,c=!0,d=0;d<a.length;d++){var e=a.charAt(d);"\'"==e&&c?b=!b:\'"\'==e&&b&&(c=!c)}return b&&c};goog.html.SafeStyle.VALUE_RE_=/^([-,."\'%_!# a-zA-Z0-9]+|(?:rgb|hsl)a?\\([0-9.%, ]+\\))$/;\ngoog.html.SafeStyle.concat=function(a){var b="",c=function(a){goog.isArray(a)?goog.array.forEach(a,c):b+=goog.html.SafeStyle.unwrap(a)};goog.array.forEach(arguments,c);return b?goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):goog.html.SafeStyle.EMPTY};goog.html.SafeStyleSheet=function(){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_="";this.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeStyleSheet.prototype.implementsGoogStringTypedString=!0;goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};\ngoog.html.SafeStyleSheet.concat=function(a){var b="",c=function(a){goog.isArray(a)?goog.array.forEach(a,c):b+=goog.html.SafeStyleSheet.unwrap(a)};goog.array.forEach(arguments,c);return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.SafeStyleSheet.fromConstant=function(a){a=goog.string.Const.unwrap(a);if(0===a.length)return goog.html.SafeStyleSheet.EMPTY;goog.asserts.assert(!goog.string.contains(a,"<"),"Forbidden \'<\' character in style sheet string: "+a);return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeStyleSheet.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_};\ngoog.DEBUG&&(goog.html.SafeStyleSheet.prototype.toString=function(){return"SafeStyleSheet{"+this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_+"}"});\ngoog.html.SafeStyleSheet.unwrap=function(a){if(a instanceof goog.html.SafeStyleSheet&&a.constructor===goog.html.SafeStyleSheet&&a.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;goog.asserts.fail("expected object of type SafeStyleSheet, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeStyleSheet"};\ngoog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse=function(a){return(new goog.html.SafeStyleSheet).initSecurityPrivateDoNotAccessOrElse_(a)};goog.html.SafeStyleSheet.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=a;return this};goog.html.SafeStyleSheet.EMPTY=goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse("");goog.fs={};goog.fs.url={};goog.fs.url.createObjectUrl=function(a){return goog.fs.url.getUrlObject_().createObjectURL(a)};goog.fs.url.revokeObjectUrl=function(a){goog.fs.url.getUrlObject_().revokeObjectURL(a)};goog.fs.url.getUrlObject_=function(){var a=goog.fs.url.findUrlObject_();if(null!=a)return a;throw Error("This browser doesn\'t seem to support blob URLs");};\ngoog.fs.url.findUrlObject_=function(){return goog.isDef(goog.global.URL)&&goog.isDef(goog.global.URL.createObjectURL)?goog.global.URL:goog.isDef(goog.global.webkitURL)&&goog.isDef(goog.global.webkitURL.createObjectURL)?goog.global.webkitURL:goog.isDef(goog.global.createObjectURL)?goog.global:null};goog.fs.url.browserSupportsObjectUrls=function(){return null!=goog.fs.url.findUrlObject_()};goog.i18n={};goog.i18n.bidi={};goog.i18n.bidi.FORCE_RTL=!1;\ngoog.i18n.bidi.IS_RTL=goog.i18n.bidi.FORCE_RTL||("ar"==goog.LOCALE.substring(0,2).toLowerCase()||"fa"==goog.LOCALE.substring(0,2).toLowerCase()||"he"==goog.LOCALE.substring(0,2).toLowerCase()||"iw"==goog.LOCALE.substring(0,2).toLowerCase()||"ps"==goog.LOCALE.substring(0,2).toLowerCase()||"sd"==goog.LOCALE.substring(0,2).toLowerCase()||"ug"==goog.LOCALE.substring(0,2).toLowerCase()||"ur"==goog.LOCALE.substring(0,2).toLowerCase()||"yi"==goog.LOCALE.substring(0,2).toLowerCase())&&(2==goog.LOCALE.length||\n"-"==goog.LOCALE.substring(2,3)||"_"==goog.LOCALE.substring(2,3))||3<=goog.LOCALE.length&&"ckb"==goog.LOCALE.substring(0,3).toLowerCase()&&(3==goog.LOCALE.length||"-"==goog.LOCALE.substring(3,4)||"_"==goog.LOCALE.substring(3,4));goog.i18n.bidi.Format={LRE:"\\u202a",RLE:"\\u202b",PDF:"\\u202c",LRM:"\\u200e",RLM:"\\u200f"};goog.i18n.bidi.Dir={LTR:1,RTL:-1,NEUTRAL:0};goog.i18n.bidi.RIGHT="right";goog.i18n.bidi.LEFT="left";goog.i18n.bidi.I18N_RIGHT=goog.i18n.bidi.IS_RTL?goog.i18n.bidi.LEFT:goog.i18n.bidi.RIGHT;\ngoog.i18n.bidi.I18N_LEFT=goog.i18n.bidi.IS_RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT;goog.i18n.bidi.toDir=function(a,b){return"number"==typeof a?0<a?goog.i18n.bidi.Dir.LTR:0>a?goog.i18n.bidi.Dir.RTL:b?null:goog.i18n.bidi.Dir.NEUTRAL:null==a?null:a?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR};goog.i18n.bidi.ltrChars_="A-Za-z\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u02b8\\u0300-\\u0590\\u0800-\\u1fff\\u200e\\u2c00-\\ufb1c\\ufe00-\\ufe6f\\ufefd-\\uffff";goog.i18n.bidi.rtlChars_="\\u0591-\\u06ef\\u06fa-\\u07ff\\u200f\\ufb1d-\\ufdff\\ufe70-\\ufefc";\ngoog.i18n.bidi.htmlSkipReg_=/<[^>]*>|&[^;]+;/g;goog.i18n.bidi.stripHtmlIfNeeded_=function(a,b){return b?a.replace(goog.i18n.bidi.htmlSkipReg_,""):a};goog.i18n.bidi.rtlCharReg_=new RegExp("["+goog.i18n.bidi.rtlChars_+"]");goog.i18n.bidi.ltrCharReg_=new RegExp("["+goog.i18n.bidi.ltrChars_+"]");goog.i18n.bidi.hasAnyRtl=function(a,b){return goog.i18n.bidi.rtlCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.hasRtlChar=goog.i18n.bidi.hasAnyRtl;\ngoog.i18n.bidi.hasAnyLtr=function(a,b){return goog.i18n.bidi.ltrCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.ltrRe_=new RegExp("^["+goog.i18n.bidi.ltrChars_+"]");goog.i18n.bidi.rtlRe_=new RegExp("^["+goog.i18n.bidi.rtlChars_+"]");goog.i18n.bidi.isRtlChar=function(a){return goog.i18n.bidi.rtlRe_.test(a)};goog.i18n.bidi.isLtrChar=function(a){return goog.i18n.bidi.ltrRe_.test(a)};goog.i18n.bidi.isNeutralChar=function(a){return!goog.i18n.bidi.isLtrChar(a)&&!goog.i18n.bidi.isRtlChar(a)};\ngoog.i18n.bidi.ltrDirCheckRe_=new RegExp("^[^"+goog.i18n.bidi.rtlChars_+"]*["+goog.i18n.bidi.ltrChars_+"]");goog.i18n.bidi.rtlDirCheckRe_=new RegExp("^[^"+goog.i18n.bidi.ltrChars_+"]*["+goog.i18n.bidi.rtlChars_+"]");goog.i18n.bidi.startsWithRtl=function(a,b){return goog.i18n.bidi.rtlDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isRtlText=goog.i18n.bidi.startsWithRtl;\ngoog.i18n.bidi.startsWithLtr=function(a,b){return goog.i18n.bidi.ltrDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isLtrText=goog.i18n.bidi.startsWithLtr;goog.i18n.bidi.isRequiredLtrRe_=/^http:\\/\\/.*/;goog.i18n.bidi.isNeutralText=function(a,b){a=goog.i18n.bidi.stripHtmlIfNeeded_(a,b);return goog.i18n.bidi.isRequiredLtrRe_.test(a)||!goog.i18n.bidi.hasAnyLtr(a)&&!goog.i18n.bidi.hasAnyRtl(a)};\ngoog.i18n.bidi.ltrExitDirCheckRe_=new RegExp("["+goog.i18n.bidi.ltrChars_+"][^"+goog.i18n.bidi.rtlChars_+"]*$");goog.i18n.bidi.rtlExitDirCheckRe_=new RegExp("["+goog.i18n.bidi.rtlChars_+"][^"+goog.i18n.bidi.ltrChars_+"]*$");goog.i18n.bidi.endsWithLtr=function(a,b){return goog.i18n.bidi.ltrExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isLtrExitText=goog.i18n.bidi.endsWithLtr;\ngoog.i18n.bidi.endsWithRtl=function(a,b){return goog.i18n.bidi.rtlExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isRtlExitText=goog.i18n.bidi.endsWithRtl;goog.i18n.bidi.rtlLocalesRe_=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Arab|Hebr|Thaa|Nkoo|Tfng))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;goog.i18n.bidi.isRtlLanguage=function(a){return goog.i18n.bidi.rtlLocalesRe_.test(a)};goog.i18n.bidi.bracketGuardTextRe_=/(\\(.*?\\)+)|(\\[.*?\\]+)|(\\{.*?\\}+)|(<.*?>+)/g;\ngoog.i18n.bidi.guardBracketInText=function(a,b){var c=(void 0===b?goog.i18n.bidi.hasAnyRtl(a):b)?goog.i18n.bidi.Format.RLM:goog.i18n.bidi.Format.LRM;return a.replace(goog.i18n.bidi.bracketGuardTextRe_,c+"$&"+c)};goog.i18n.bidi.enforceRtlInHtml=function(a){return"<"==a.charAt(0)?a.replace(/<\\w+/,"$& dir=rtl"):"\\n<span dir=rtl>"+a+"</span>"};goog.i18n.bidi.enforceRtlInText=function(a){return goog.i18n.bidi.Format.RLE+a+goog.i18n.bidi.Format.PDF};\ngoog.i18n.bidi.enforceLtrInHtml=function(a){return"<"==a.charAt(0)?a.replace(/<\\w+/,"$& dir=ltr"):"\\n<span dir=ltr>"+a+"</span>"};goog.i18n.bidi.enforceLtrInText=function(a){return goog.i18n.bidi.Format.LRE+a+goog.i18n.bidi.Format.PDF};goog.i18n.bidi.dimensionsRe_=/:\\s*([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)/g;goog.i18n.bidi.leftRe_=/left/gi;goog.i18n.bidi.rightRe_=/right/gi;goog.i18n.bidi.tempRe_=/%%%%/g;\ngoog.i18n.bidi.mirrorCSS=function(a){return a.replace(goog.i18n.bidi.dimensionsRe_,":$1 $4 $3 $2").replace(goog.i18n.bidi.leftRe_,"%%%%").replace(goog.i18n.bidi.rightRe_,goog.i18n.bidi.LEFT).replace(goog.i18n.bidi.tempRe_,goog.i18n.bidi.RIGHT)};goog.i18n.bidi.doubleQuoteSubstituteRe_=/([\\u0591-\\u05f2])"/g;goog.i18n.bidi.singleQuoteSubstituteRe_=/([\\u0591-\\u05f2])\'/g;\ngoog.i18n.bidi.normalizeHebrewQuote=function(a){return a.replace(goog.i18n.bidi.doubleQuoteSubstituteRe_,"$1\\u05f4").replace(goog.i18n.bidi.singleQuoteSubstituteRe_,"$1\\u05f3")};goog.i18n.bidi.wordSeparatorRe_=/\\s+/;goog.i18n.bidi.hasNumeralsRe_=/[\\d\\u06f0-\\u06f9]/;goog.i18n.bidi.rtlDetectionThreshold_=.4;\ngoog.i18n.bidi.estimateDirection=function(a,b){for(var c=0,d=0,e=!1,f=goog.i18n.bidi.stripHtmlIfNeeded_(a,b).split(goog.i18n.bidi.wordSeparatorRe_),g=0;g<f.length;g++){var h=f[g];goog.i18n.bidi.startsWithRtl(h)?(c++,d++):goog.i18n.bidi.isRequiredLtrRe_.test(h)?e=!0:goog.i18n.bidi.hasAnyLtr(h)?d++:goog.i18n.bidi.hasNumeralsRe_.test(h)&&(e=!0)}return 0==d?e?goog.i18n.bidi.Dir.LTR:goog.i18n.bidi.Dir.NEUTRAL:c/d>goog.i18n.bidi.rtlDetectionThreshold_?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR};\ngoog.i18n.bidi.detectRtlDirectionality=function(a,b){return goog.i18n.bidi.estimateDirection(a,b)==goog.i18n.bidi.Dir.RTL};goog.i18n.bidi.setElementDirAndAlign=function(a,b){a&&(b=goog.i18n.bidi.toDir(b))&&(a.style.textAlign=b==goog.i18n.bidi.Dir.RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT,a.dir=b==goog.i18n.bidi.Dir.RTL?"rtl":"ltr")};\ngoog.i18n.bidi.setElementDirByTextDirectionality=function(a,b){switch(goog.i18n.bidi.estimateDirection(b)){case goog.i18n.bidi.Dir.LTR:a.dir="ltr";break;case goog.i18n.bidi.Dir.RTL:a.dir="rtl";break;default:a.removeAttribute("dir")}};goog.i18n.bidi.DirectionalString=function(){};goog.html.SafeUrl=function(){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_="";this.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeUrl.INNOCUOUS_STRING="about:invalid#zClosurez";goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0;goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_};\ngoog.html.SafeUrl.prototype.implementsGoogI18nBidiDirectionalString=!0;goog.html.SafeUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR};goog.DEBUG&&(goog.html.SafeUrl.prototype.toString=function(){return"SafeUrl{"+this.privateDoNotAccessOrElseSafeHtmlWrappedValue_+"}"});\ngoog.html.SafeUrl.unwrap=function(a){if(a instanceof goog.html.SafeUrl&&a.constructor===goog.html.SafeUrl&&a.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail("expected object of type SafeUrl, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeUrl"};goog.html.SafeUrl.fromConstant=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};\ngoog.html.SAFE_MIME_TYPE_PATTERN_=/^(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm))$/i;goog.html.SafeUrl.fromBlob=function(a){a=goog.html.SAFE_MIME_TYPE_PATTERN_.test(a.type)?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.DATA_URL_PATTERN_=/^data:([^;,]*);base64,[a-z0-9+\\/]+=*$/i;\ngoog.html.SafeUrl.fromDataUrl=function(a){var b=a.match(goog.html.DATA_URL_PATTERN_),b=b&&goog.html.SAFE_MIME_TYPE_PATTERN_.test(b[1]);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b?a:goog.html.SafeUrl.INNOCUOUS_STRING)};goog.html.SafeUrl.fromTelUrl=function(a){goog.string.caseInsensitiveStartsWith(a,"tel:")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^&:/?#]*(?:[/?#]|$))/i;\ngoog.html.SafeUrl.sanitize=function(a){if(a instanceof goog.html.SafeUrl)return a;a=a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);goog.html.SAFE_URL_PATTERN_.test(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};\ngoog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(a){var b=new goog.html.SafeUrl;b.privateDoNotAccessOrElseSafeHtmlWrappedValue_=a;return b};goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank");goog.html.TrustedResourceUrl=function(){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_="";this.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0;goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_};\ngoog.html.TrustedResourceUrl.prototype.implementsGoogI18nBidiDirectionalString=!0;goog.html.TrustedResourceUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR};goog.DEBUG&&(goog.html.TrustedResourceUrl.prototype.toString=function(){return"TrustedResourceUrl{"+this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+"}"});\ngoog.html.TrustedResourceUrl.unwrap=function(a){if(a instanceof goog.html.TrustedResourceUrl&&a.constructor===goog.html.TrustedResourceUrl&&a.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;goog.asserts.fail("expected object of type TrustedResourceUrl, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:TrustedResourceUrl"};\ngoog.html.TrustedResourceUrl.format=function(a,b){var c=goog.string.Const.unwrap(a);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(c))throw Error("Invalid TrustedResourceUrl format: "+c);var d=c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,function(a,d){if(!Object.prototype.hasOwnProperty.call(b,d))throw Error(\'Found marker, "\'+d+\'", in format string, "\'+c+\'", but no valid label mapping found in args: \'+JSON.stringify(b));var e=b[d];return e instanceof goog.string.Const?goog.string.Const.unwrap(e):\nencodeURIComponent(String(e))});return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(d)};goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\\w+)}/g;goog.html.TrustedResourceUrl.SCHEME_AND_ORIGIN_="(?:(?:https:)?//[0-9a-z.:[\\\\]-]+)?";goog.html.TrustedResourceUrl.BASE_ABSOLUTE_PATH_="(?:/[0-9a-z_~-]+(?:[/#?]|$))";\ngoog.html.TrustedResourceUrl.BASE_URL_=new RegExp("^"+goog.html.TrustedResourceUrl.SCHEME_AND_ORIGIN_+goog.html.TrustedResourceUrl.BASE_ABSOLUTE_PATH_,"i");goog.html.TrustedResourceUrl.fromConstant=function(a){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};goog.html.TrustedResourceUrl.fromConstants=function(a){for(var b="",c=0;c<a.length;c++)b+=goog.string.Const.unwrap(a[c]);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse=function(a){var b=new goog.html.TrustedResourceUrl;b.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=a;return b};goog.html.SafeHtml=function(){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_="";this.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;this.dir_=null};goog.html.SafeHtml.prototype.implementsGoogI18nBidiDirectionalString=!0;goog.html.SafeHtml.prototype.getDirection=function(){return this.dir_};goog.html.SafeHtml.prototype.implementsGoogStringTypedString=!0;goog.html.SafeHtml.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_};\ngoog.DEBUG&&(goog.html.SafeHtml.prototype.toString=function(){return"SafeHtml{"+this.privateDoNotAccessOrElseSafeHtmlWrappedValue_+"}"});\ngoog.html.SafeHtml.unwrap=function(a){if(a instanceof goog.html.SafeHtml&&a.constructor===goog.html.SafeHtml&&a.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail("expected object of type SafeHtml, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeHtml"};\ngoog.html.SafeHtml.htmlEscape=function(a){if(a instanceof goog.html.SafeHtml)return a;var b=null;a.implementsGoogI18nBidiDirectionalString&&(b=a.getDirection());a=a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.htmlEscape(a),b)};\ngoog.html.SafeHtml.htmlEscapePreservingNewlines=function(a){if(a instanceof goog.html.SafeHtml)return a;a=goog.html.SafeHtml.htmlEscape(a);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.newLineToBr(goog.html.SafeHtml.unwrap(a)),a.getDirection())};\ngoog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces=function(a){if(a instanceof goog.html.SafeHtml)return a;a=goog.html.SafeHtml.htmlEscape(a);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.whitespaceEscape(goog.html.SafeHtml.unwrap(a)),a.getDirection())};goog.html.SafeHtml.from=goog.html.SafeHtml.htmlEscape;goog.html.SafeHtml.VALID_NAMES_IN_TAG_=/^[a-zA-Z0-9-]+$/;\ngoog.html.SafeHtml.URL_ATTRIBUTES_={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0};goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_={APPLET:!0,BASE:!0,EMBED:!0,IFRAME:!0,LINK:!0,MATH:!0,META:!0,OBJECT:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};goog.html.SafeHtml.create=function(a,b,c){goog.html.SafeHtml.verifyTagName(String(a));return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a),b,c)};\ngoog.html.SafeHtml.verifyTagName=function(a){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(a))throw Error("Invalid tag name <"+a+">.");if(a.toUpperCase()in goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_)throw Error("Tag name <"+a+"> is not allowed for SafeHtml.");};\ngoog.html.SafeHtml.createIframe=function(a,b,c,d){a&&goog.html.TrustedResourceUrl.unwrap(a);var e={};e.src=a||null;e.srcdoc=b&&goog.html.SafeHtml.unwrap(b);a=goog.html.SafeHtml.combineAttributes(e,{sandbox:""},c);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)};\ngoog.html.SafeHtml.createSandboxIframe=function(a,b,c,d){if(!goog.html.SafeHtml.canUseSandboxIframe())throw Error("The browser does not support sandboxed iframes.");var e={};e.src=a?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)):null;e.srcdoc=b||null;e.sandbox="";a=goog.html.SafeHtml.combineAttributes(e,{},c);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)};\ngoog.html.SafeHtml.canUseSandboxIframe=function(){return goog.global.HTMLIFrameElement&&"sandbox"in goog.global.HTMLIFrameElement.prototype};goog.html.SafeHtml.createScriptSrc=function(a,b){goog.html.TrustedResourceUrl.unwrap(a);var c=goog.html.SafeHtml.combineAttributes({src:a},{},b);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",c)};\ngoog.html.SafeHtml.createStyle=function(a,b){var c=goog.html.SafeHtml.combineAttributes({type:"text/css"},{},b),d="";a=goog.array.concat(a);for(var e=0;e<a.length;e++)d+=goog.html.SafeStyleSheet.unwrap(a[e]);d=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(d,goog.i18n.bidi.Dir.NEUTRAL);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style",c,d)};\ngoog.html.SafeHtml.createMetaRefresh=function(a,b){var c=goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a));(goog.labs.userAgent.browser.isIE()||goog.labs.userAgent.browser.isEdge())&&goog.string.contains(c,";")&&(c="\'"+c.replace(/\'/g,"%27")+"\'");return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta",{"http-equiv":"refresh",content:(b||0)+"; url="+c})};\ngoog.html.SafeHtml.getAttrNameAndValue_=function(a,b,c){if(c instanceof goog.string.Const)c=goog.string.Const.unwrap(c);else if("style"==b.toLowerCase())c=goog.html.SafeHtml.getStyleValue_(c);else{if(/^on/i.test(b))throw Error(\'Attribute "\'+b+\'" requires goog.string.Const value, "\'+c+\'" given.\');if(b.toLowerCase()in goog.html.SafeHtml.URL_ATTRIBUTES_)if(c instanceof goog.html.TrustedResourceUrl)c=goog.html.TrustedResourceUrl.unwrap(c);else if(c instanceof goog.html.SafeUrl)c=goog.html.SafeUrl.unwrap(c);\nelse if(goog.isString(c))c=goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error(\'Attribute "\'+b+\'" on tag "\'+a+\'" requires goog.html.SafeUrl, goog.string.Const, or string, value "\'+c+\'" given.\');}c.implementsGoogStringTypedString&&(c=c.getTypedStringValue());goog.asserts.assert(goog.isString(c)||goog.isNumber(c),"String or number value expected, got "+typeof c+" with value: "+c);return b+\'="\'+goog.string.htmlEscape(String(c))+\'"\'};\ngoog.html.SafeHtml.getStyleValue_=function(a){if(!goog.isObject(a))throw Error(\'The "style" attribute requires goog.html.SafeStyle or map of style properties, \'+typeof a+" given: "+a);a instanceof goog.html.SafeStyle||(a=goog.html.SafeStyle.create(a));return goog.html.SafeStyle.unwrap(a)};goog.html.SafeHtml.createWithDir=function(a,b,c,d){b=goog.html.SafeHtml.create(b,c,d);b.dir_=a;return b};\ngoog.html.SafeHtml.concat=function(a){var b=goog.i18n.bidi.Dir.NEUTRAL,c="",d=function(a){goog.isArray(a)?goog.array.forEach(a,d):(a=goog.html.SafeHtml.htmlEscape(a),c+=goog.html.SafeHtml.unwrap(a),a=a.getDirection(),b==goog.i18n.bidi.Dir.NEUTRAL?b=a:a!=goog.i18n.bidi.Dir.NEUTRAL&&b!=a&&(b=null))};goog.array.forEach(arguments,d);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c,b)};\ngoog.html.SafeHtml.concatWithDir=function(a,b){var c=goog.html.SafeHtml.concat(goog.array.slice(arguments,1));c.dir_=a;return c};goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse=function(a,b){return(new goog.html.SafeHtml).initSecurityPrivateDoNotAccessOrElse_(a,b)};goog.html.SafeHtml.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a,b){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=a;this.dir_=b;return this};\ngoog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse=function(a,b,c){var d=null,e;e="<"+a+goog.html.SafeHtml.stringifyAttributes(a,b);goog.isDefAndNotNull(c)?goog.isArray(c)||(c=[c]):c=[];goog.dom.tags.isVoidTag(a.toLowerCase())?(goog.asserts.assert(!c.length,"Void tag <"+a+"> does not allow content."),e+=">"):(d=goog.html.SafeHtml.concat(c),e+=">"+goog.html.SafeHtml.unwrap(d)+"</"+a+">",d=d.getDirection());(a=b&&b.dir)&&(d=/^(ltr|rtl|auto)$/i.test(a)?goog.i18n.bidi.Dir.NEUTRAL:null);\nreturn goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(e,d)};goog.html.SafeHtml.stringifyAttributes=function(a,b){var c="";if(b)for(var d in b){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(d))throw Error(\'Invalid attribute name "\'+d+\'".\');var e=b[d];goog.isDefAndNotNull(e)&&(c+=" "+goog.html.SafeHtml.getAttrNameAndValue_(a,d,e))}return c};\ngoog.html.SafeHtml.combineAttributes=function(a,b,c){var d={},e;for(e in a)goog.asserts.assert(e.toLowerCase()==e,"Must be lower case"),d[e]=a[e];for(e in b)goog.asserts.assert(e.toLowerCase()==e,"Must be lower case"),d[e]=b[e];for(e in c){var f=e.toLowerCase();if(f in a)throw Error(\'Cannot override "\'+f+\'" attribute, got "\'+e+\'" with value "\'+c[e]+\'"\');f in b&&delete d[f];d[e]=c[e]}return d};\ngoog.html.SafeHtml.DOCTYPE_HTML=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<!DOCTYPE html>",goog.i18n.bidi.Dir.NEUTRAL);goog.html.SafeHtml.EMPTY=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("",goog.i18n.bidi.Dir.NEUTRAL);goog.html.SafeHtml.BR=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<br>",goog.i18n.bidi.Dir.NEUTRAL);goog.dom.safe={};goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:"afterbegin",AFTEREND:"afterend",BEFOREBEGIN:"beforebegin",BEFOREEND:"beforeend"};goog.dom.safe.insertAdjacentHtml=function(a,b,c){a.insertAdjacentHTML(b,goog.html.SafeHtml.unwrap(c))};goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};\ngoog.dom.safe.setInnerHtml=function(a,b){if(goog.asserts.ENABLE_ASSERTS){var c=a.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+a.tagName+".");}a.innerHTML=goog.html.SafeHtml.unwrap(b)};goog.dom.safe.setOuterHtml=function(a,b){a.outerHTML=goog.html.SafeHtml.unwrap(b)};goog.dom.safe.setStyle=function(a,b){a.style.cssText=goog.html.SafeStyle.unwrap(b)};goog.dom.safe.documentWrite=function(a,b){a.write(goog.html.SafeHtml.unwrap(b))};\ngoog.dom.safe.setAnchorHref=function(a,b){goog.dom.safe.assertIsHTMLAnchorElement_(a);var c;c=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitize(b);a.href=goog.html.SafeUrl.unwrap(c)};goog.dom.safe.setImageSrc=function(a,b){goog.dom.safe.assertIsHTMLImageElement_(a);var c;c=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitize(b);a.src=goog.html.SafeUrl.unwrap(c)};goog.dom.safe.setEmbedSrc=function(a,b){goog.dom.safe.assertIsHTMLEmbedElement_(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};\ngoog.dom.safe.setFrameSrc=function(a,b){goog.dom.safe.assertIsHTMLFrameElement_(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setIframeSrc=function(a,b){goog.dom.safe.assertIsHTMLIFrameElement_(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};\ngoog.dom.safe.setLinkHrefAndRel=function(a,b,c){goog.dom.safe.assertIsHTMLLinkElement_(a);a.rel=c;goog.string.caseInsensitiveContains(c,"stylesheet")?(goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl,\'URL must be TrustedResourceUrl because "rel" contains "stylesheet"\'),a.href=goog.html.TrustedResourceUrl.unwrap(b)):a.href=b instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrap(b):b instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrap(b):goog.html.SafeUrl.sanitize(b).getTypedStringValue()};\ngoog.dom.safe.setObjectData=function(a,b){goog.dom.safe.assertIsHTMLObjectElement_(a);a.data=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setScriptSrc=function(a,b){goog.dom.safe.assertIsHTMLScriptElement_(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setLocationHref=function(a,b){goog.dom.safe.assertIsLocation_(a);var c;c=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitize(b);a.href=goog.html.SafeUrl.unwrap(c)};\ngoog.dom.safe.openInWindow=function(a,b,c,d,e){a=a instanceof goog.html.SafeUrl?a:goog.html.SafeUrl.sanitize(a);return(b||window).open(goog.html.SafeUrl.unwrap(a),c?goog.string.Const.unwrap(c):"",d,e)};\ngoog.dom.safe.assertIsLocation_=function(a){goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof Location&&"undefined"!=typeof Element&&goog.asserts.assert(a&&(a instanceof Location||!(a instanceof Element)),"Argument is not a Location (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};\ngoog.dom.safe.assertIsHTMLAnchorElement_=function(a){goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLAnchorElement&&"undefined"!=typeof Location&&"undefined"!=typeof Element&&goog.asserts.assert(a&&(a instanceof HTMLAnchorElement||!(a instanceof Location||a instanceof Element)),"Argument is not a HTMLAnchorElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};\ngoog.dom.safe.assertIsHTMLLinkElement_=function(a){goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLLinkElement&&"undefined"!=typeof Location&&"undefined"!=typeof Element&&goog.asserts.assert(a&&(a instanceof HTMLLinkElement||!(a instanceof Location||a instanceof Element)),"Argument is not a HTMLLinkElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};\ngoog.dom.safe.assertIsHTMLImageElement_=function(a){goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLImageElement&&"undefined"!=typeof Element&&goog.asserts.assert(a&&(a instanceof HTMLImageElement||!(a instanceof Element)),"Argument is not a HTMLImageElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};\ngoog.dom.safe.assertIsHTMLEmbedElement_=function(a){goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLEmbedElement&&"undefined"!=typeof Element&&goog.asserts.assert(a&&(a instanceof HTMLEmbedElement||!(a instanceof Element)),"Argument is not a HTMLEmbedElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};\ngoog.dom.safe.assertIsHTMLFrameElement_=function(a){goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLFrameElement&&"undefined"!=typeof Element&&goog.asserts.assert(a&&(a instanceof HTMLFrameElement||!(a instanceof Element)),"Argument is not a HTMLFrameElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};\ngoog.dom.safe.assertIsHTMLIFrameElement_=function(a){goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLIFrameElement&&"undefined"!=typeof Element&&goog.asserts.assert(a&&(a instanceof HTMLIFrameElement||!(a instanceof Element)),"Argument is not a HTMLIFrameElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};\ngoog.dom.safe.assertIsHTMLObjectElement_=function(a){goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLObjectElement&&"undefined"!=typeof Element&&goog.asserts.assert(a&&(a instanceof HTMLObjectElement||!(a instanceof Element)),"Argument is not a HTMLObjectElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};\ngoog.dom.safe.assertIsHTMLScriptElement_=function(a){goog.asserts.ENABLE_ASSERTS&&"undefined"!=typeof HTMLScriptElement&&"undefined"!=typeof Element&&goog.asserts.assert(a&&(a instanceof HTMLScriptElement||!(a instanceof Element)),"Argument is not a HTMLScriptElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};\ngoog.dom.safe.debugStringForType_=function(a){return goog.isObject(a)?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):void 0===a?"undefined":null===a?"null":typeof a};goog.html.SafeScript=function(){this.privateDoNotAccessOrElseSafeScriptWrappedValue_="";this.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeScript.prototype.implementsGoogStringTypedString=!0;goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};goog.html.SafeScript.fromConstant=function(a){a=goog.string.Const.unwrap(a);return 0===a.length?goog.html.SafeScript.EMPTY:goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeScript.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_};goog.DEBUG&&(goog.html.SafeScript.prototype.toString=function(){return"SafeScript{"+this.privateDoNotAccessOrElseSafeScriptWrappedValue_+"}"});\ngoog.html.SafeScript.unwrap=function(a){if(a instanceof goog.html.SafeScript&&a.constructor===goog.html.SafeScript&&a.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;goog.asserts.fail("expected object of type SafeScript, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeScript"};goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse=function(a){return(new goog.html.SafeScript).initSecurityPrivateDoNotAccessOrElse_(a)};\ngoog.html.SafeScript.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=a;return this};goog.html.SafeScript.EMPTY=goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("");goog.html.uncheckedconversions={};goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(a,b,c){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b,c||null)};\ngoog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.isEmpty(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};goog.math.Coordinate=function(a,b){this.x=goog.isDef(a)?a:0;this.y=goog.isDef(b)?b:0};goog.math.Coordinate.prototype.clone=function(){return new goog.math.Coordinate(this.x,this.y)};goog.DEBUG&&(goog.math.Coordinate.prototype.toString=function(){return"("+this.x+", "+this.y+")"});goog.math.Coordinate.prototype.equals=function(a){return a instanceof goog.math.Coordinate&&goog.math.Coordinate.equals(this,a)};goog.math.Coordinate.equals=function(a,b){return a==b?!0:a&&b?a.x==b.x&&a.y==b.y:!1};\ngoog.math.Coordinate.distance=function(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)};goog.math.Coordinate.magnitude=function(a){return Math.sqrt(a.x*a.x+a.y*a.y)};goog.math.Coordinate.azimuth=function(a){return goog.math.angle(0,0,a.x,a.y)};goog.math.Coordinate.squaredDistance=function(a,b){var c=a.x-b.x,d=a.y-b.y;return c*c+d*d};goog.math.Coordinate.difference=function(a,b){return new goog.math.Coordinate(a.x-b.x,a.y-b.y)};\ngoog.math.Coordinate.sum=function(a,b){return new goog.math.Coordinate(a.x+b.x,a.y+b.y)};goog.math.Coordinate.prototype.ceil=function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this};goog.math.Coordinate.prototype.floor=function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this};goog.math.Coordinate.prototype.round=function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this};\ngoog.math.Coordinate.prototype.translate=function(a,b){a instanceof goog.math.Coordinate?(this.x+=a.x,this.y+=a.y):(this.x+=Number(a),goog.isNumber(b)&&(this.y+=b));return this};goog.math.Coordinate.prototype.scale=function(a,b){var c=goog.isNumber(b)?b:a;this.x*=a;this.y*=c;return this};goog.math.Coordinate.prototype.rotateRadians=function(a,b){var c=b||new goog.math.Coordinate(0,0),d=this.x,e=this.y,f=Math.cos(a),g=Math.sin(a);this.x=(d-c.x)*f-(e-c.y)*g+c.x;this.y=(d-c.x)*g+(e-c.y)*f+c.y};\ngoog.math.Coordinate.prototype.rotateDegrees=function(a,b){this.rotateRadians(goog.math.toRadians(a),b)};goog.math.Size=function(a,b){this.width=a;this.height=b};goog.math.Size.equals=function(a,b){return a==b?!0:a&&b?a.width==b.width&&a.height==b.height:!1};goog.math.Size.prototype.clone=function(){return new goog.math.Size(this.width,this.height)};goog.DEBUG&&(goog.math.Size.prototype.toString=function(){return"("+this.width+" x "+this.height+")"});goog.math.Size.prototype.getLongest=function(){return Math.max(this.width,this.height)};\ngoog.math.Size.prototype.getShortest=function(){return Math.min(this.width,this.height)};goog.math.Size.prototype.area=function(){return this.width*this.height};goog.math.Size.prototype.perimeter=function(){return 2*(this.width+this.height)};goog.math.Size.prototype.aspectRatio=function(){return this.width/this.height};goog.math.Size.prototype.isEmpty=function(){return!this.area()};goog.math.Size.prototype.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};\ngoog.math.Size.prototype.fitsInside=function(a){return this.width<=a.width&&this.height<=a.height};goog.math.Size.prototype.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};goog.math.Size.prototype.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};goog.math.Size.prototype.scale=function(a,b){var c=goog.isNumber(b)?b:a;this.width*=a;this.height*=c;return this};\ngoog.math.Size.prototype.scaleToCover=function(a){a=this.aspectRatio()<=a.aspectRatio()?a.width/this.width:a.height/this.height;return this.scale(a)};goog.math.Size.prototype.scaleToFit=function(a){a=this.aspectRatio()>a.aspectRatio()?a.width/this.width:a.height/this.height;return this.scale(a)};goog.dom.ASSUME_QUIRKS_MODE=!1;goog.dom.ASSUME_STANDARDS_MODE=!1;goog.dom.COMPAT_MODE_KNOWN_=goog.dom.ASSUME_QUIRKS_MODE||goog.dom.ASSUME_STANDARDS_MODE;goog.dom.getDomHelper=function(a){return a?new goog.dom.DomHelper(goog.dom.getOwnerDocument(a)):goog.dom.defaultDomHelper_||(goog.dom.defaultDomHelper_=new goog.dom.DomHelper)};goog.dom.getDocument=function(){return document};goog.dom.getElement=function(a){return goog.dom.getElementHelper_(document,a)};\ngoog.dom.getElementHelper_=function(a,b){return goog.isString(b)?a.getElementById(b):b};goog.dom.getRequiredElement=function(a){return goog.dom.getRequiredElementHelper_(document,a)};goog.dom.getRequiredElementHelper_=function(a,b){goog.asserts.assertString(b);var c=goog.dom.getElementHelper_(a,b);return c=goog.asserts.assertElement(c,"No element found with id: "+b)};goog.dom.$=goog.dom.getElement;goog.dom.getElementsByTagName=function(a,b){return(b||document).getElementsByTagName(String(a))};\ngoog.dom.getElementsByTagNameAndClass=function(a,b,c){return goog.dom.getElementsByTagNameAndClass_(document,a,b,c)};goog.dom.getElementsByClass=function(a,b){var c=b||document;return goog.dom.canUseQuerySelector_(c)?c.querySelectorAll("."+a):goog.dom.getElementsByTagNameAndClass_(document,"*",a,b)};\ngoog.dom.getElementByClass=function(a,b){var c=b||document;return(c.getElementsByClassName?c.getElementsByClassName(a)[0]:goog.dom.canUseQuerySelector_(c)?c.querySelector("."+a):goog.dom.getElementsByTagNameAndClass_(document,"*",a,b)[0])||null};goog.dom.getRequiredElementByClass=function(a,b){var c=goog.dom.getElementByClass(a,b);return goog.asserts.assert(c,"No element found with className: "+a)};goog.dom.canUseQuerySelector_=function(a){return!(!a.querySelectorAll||!a.querySelector)};\ngoog.dom.getElementsByTagNameAndClass_=function(a,b,c,d){a=d||a;b=b&&"*"!=b?String(b).toUpperCase():"";if(goog.dom.canUseQuerySelector_(a)&&(b||c))return a.querySelectorAll(b+(c?"."+c:""));if(c&&a.getElementsByClassName){a=a.getElementsByClassName(c);if(b){d={};for(var e=0,f=0,g;g=a[f];f++)b==g.nodeName&&(d[e++]=g);d.length=e;return d}return a}a=a.getElementsByTagName(b||"*");if(c){d={};for(f=e=0;g=a[f];f++)b=g.className,"function"==typeof b.split&&goog.array.contains(b.split(/\\s+/),c)&&(d[e++]=g);\nd.length=e;return d}return a};goog.dom.$$=goog.dom.getElementsByTagNameAndClass;goog.dom.setProperties=function(a,b){goog.object.forEach(b,function(b,d){"style"==d?a.style.cssText=b:"class"==d?a.className=b:"for"==d?a.htmlFor=b:goog.dom.DIRECT_ATTRIBUTE_MAP_.hasOwnProperty(d)?a.setAttribute(goog.dom.DIRECT_ATTRIBUTE_MAP_[d],b):goog.string.startsWith(d,"aria-")||goog.string.startsWith(d,"data-")?a.setAttribute(d,b):a[d]=b})};\ngoog.dom.DIRECT_ATTRIBUTE_MAP_={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",nonce:"nonce",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",width:"width"};goog.dom.getViewportSize=function(a){return goog.dom.getViewportSize_(a||window)};goog.dom.getViewportSize_=function(a){a=a.document;a=goog.dom.isCss1CompatMode_(a)?a.documentElement:a.body;return new goog.math.Size(a.clientWidth,a.clientHeight)};\ngoog.dom.getDocumentHeight=function(){return goog.dom.getDocumentHeight_(window)};goog.dom.getDocumentHeightForWindow=function(a){return goog.dom.getDocumentHeight_(a)};\ngoog.dom.getDocumentHeight_=function(a){var b=a.document,c=0;if(b){var c=b.body,d=b.documentElement;if(!d||!c)return 0;a=goog.dom.getViewportSize_(a).height;if(goog.dom.isCss1CompatMode_(b)&&d.scrollHeight)c=d.scrollHeight!=a?d.scrollHeight:d.offsetHeight;else{var b=d.scrollHeight,e=d.offsetHeight;d.clientHeight!=e&&(b=c.scrollHeight,e=c.offsetHeight);c=b>a?b>e?b:e:b<e?b:e}}return c};goog.dom.getPageScroll=function(a){return goog.dom.getDomHelper((a||goog.global||window).document).getDocumentScroll()};\ngoog.dom.getDocumentScroll=function(){return goog.dom.getDocumentScroll_(document)};goog.dom.getDocumentScroll_=function(a){var b=goog.dom.getDocumentScrollElement_(a);a=goog.dom.getWindow_(a);return goog.userAgent.IE&&goog.userAgent.isVersionOrHigher("10")&&a.pageYOffset!=b.scrollTop?new goog.math.Coordinate(b.scrollLeft,b.scrollTop):new goog.math.Coordinate(a.pageXOffset||b.scrollLeft,a.pageYOffset||b.scrollTop)};goog.dom.getDocumentScrollElement=function(){return goog.dom.getDocumentScrollElement_(document)};\ngoog.dom.getDocumentScrollElement_=function(a){return a.scrollingElement?a.scrollingElement:!goog.userAgent.WEBKIT&&goog.dom.isCss1CompatMode_(a)?a.documentElement:a.body||a.documentElement};goog.dom.getWindow=function(a){return a?goog.dom.getWindow_(a):window};goog.dom.getWindow_=function(a){return a.parentWindow||a.defaultView};goog.dom.createDom=function(a,b,c){return goog.dom.createDom_(document,arguments)};\ngoog.dom.createDom_=function(a,b){var c=String(b[0]),d=b[1];if(!goog.dom.BrowserFeature.CAN_ADD_NAME_OR_TYPE_ATTRIBUTES&&d&&(d.name||d.type)){c=["<",c];d.name&&c.push(\' name="\',goog.string.htmlEscape(d.name),\'"\');if(d.type){c.push(\' type="\',goog.string.htmlEscape(d.type),\'"\');var e={};goog.object.extend(e,d);delete e.type;d=e}c.push(">");c=c.join("")}c=a.createElement(c);d&&(goog.isString(d)?c.className=d:goog.isArray(d)?c.className=d.join(" "):goog.dom.setProperties(c,d));2<b.length&&goog.dom.append_(a,\nc,b,2);return c};goog.dom.append_=function(a,b,c,d){function e(c){c&&b.appendChild(goog.isString(c)?a.createTextNode(c):c)}for(;d<c.length;d++){var f=c[d];goog.isArrayLike(f)&&!goog.dom.isNodeLike(f)?goog.array.forEach(goog.dom.isNodeList(f)?goog.array.toArray(f):f,e):e(f)}};goog.dom.$dom=goog.dom.createDom;goog.dom.createElement=function(a){return goog.dom.createElement_(document,a)};goog.dom.createElement_=function(a,b){return a.createElement(String(b))};goog.dom.createTextNode=function(a){return document.createTextNode(String(a))};\ngoog.dom.createTable=function(a,b,c){return goog.dom.createTable_(document,a,b,!!c)};goog.dom.createTable_=function(a,b,c,d){for(var e=goog.dom.createElement_(a,"TABLE"),f=e.appendChild(goog.dom.createElement_(a,"TBODY")),g=0;g<b;g++){for(var h=goog.dom.createElement_(a,"TR"),k=0;k<c;k++){var l=goog.dom.createElement_(a,"TD");d&&goog.dom.setTextContent(l,goog.string.Unicode.NBSP);h.appendChild(l)}f.appendChild(h)}return e};\ngoog.dom.constHtmlToNode=function(a){var b=goog.array.map(arguments,goog.string.Const.unwrap),b=goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Constant HTML string, that gets turned into a Node later, so it will be automatically balanced."),b.join(""));return goog.dom.safeHtmlToNode(b)};goog.dom.safeHtmlToNode=function(a){return goog.dom.safeHtmlToNode_(document,a)};\ngoog.dom.safeHtmlToNode_=function(a,b){var c=goog.dom.createElement_(a,"DIV");goog.dom.BrowserFeature.INNER_HTML_NEEDS_SCOPED_ELEMENT?(goog.dom.safe.setInnerHtml(c,goog.html.SafeHtml.concat(goog.html.SafeHtml.BR,b)),c.removeChild(c.firstChild)):goog.dom.safe.setInnerHtml(c,b);return goog.dom.childrenToNode_(a,c)};goog.dom.childrenToNode_=function(a,b){if(1==b.childNodes.length)return b.removeChild(b.firstChild);for(var c=a.createDocumentFragment();b.firstChild;)c.appendChild(b.firstChild);return c};\ngoog.dom.isCss1CompatMode=function(){return goog.dom.isCss1CompatMode_(document)};goog.dom.isCss1CompatMode_=function(a){return goog.dom.COMPAT_MODE_KNOWN_?goog.dom.ASSUME_STANDARDS_MODE:"CSS1Compat"==a.compatMode};goog.dom.canHaveChildren=function(a){if(a.nodeType!=goog.dom.NodeType.ELEMENT)return!1;switch(a.tagName){case "APPLET":case "AREA":case "BASE":case "BR":case "COL":case "COMMAND":case "EMBED":case "FRAME":case "HR":case "IMG":case "INPUT":case "IFRAME":case "ISINDEX":case "KEYGEN":case "LINK":case "NOFRAMES":case "NOSCRIPT":case "META":case "OBJECT":case "PARAM":case "SCRIPT":case "SOURCE":case "STYLE":case "TRACK":case "WBR":return!1}return!0};\ngoog.dom.appendChild=function(a,b){a.appendChild(b)};goog.dom.append=function(a,b){goog.dom.append_(goog.dom.getOwnerDocument(a),a,arguments,1)};goog.dom.removeChildren=function(a){for(var b;b=a.firstChild;)a.removeChild(b)};goog.dom.insertSiblingBefore=function(a,b){b.parentNode&&b.parentNode.insertBefore(a,b)};goog.dom.insertSiblingAfter=function(a,b){b.parentNode&&b.parentNode.insertBefore(a,b.nextSibling)};goog.dom.insertChildAt=function(a,b,c){a.insertBefore(b,a.childNodes[c]||null)};\ngoog.dom.removeNode=function(a){return a&&a.parentNode?a.parentNode.removeChild(a):null};goog.dom.replaceNode=function(a,b){var c=b.parentNode;c&&c.replaceChild(a,b)};goog.dom.flattenElement=function(a){var b,c=a.parentNode;if(c&&c.nodeType!=goog.dom.NodeType.DOCUMENT_FRAGMENT){if(a.removeNode)return a.removeNode(!1);for(;b=a.firstChild;)c.insertBefore(b,a);return goog.dom.removeNode(a)}};\ngoog.dom.getChildren=function(a){return goog.dom.BrowserFeature.CAN_USE_CHILDREN_ATTRIBUTE&&void 0!=a.children?a.children:goog.array.filter(a.childNodes,function(a){return a.nodeType==goog.dom.NodeType.ELEMENT})};goog.dom.getFirstElementChild=function(a){return goog.isDef(a.firstElementChild)?a.firstElementChild:goog.dom.getNextElementNode_(a.firstChild,!0)};goog.dom.getLastElementChild=function(a){return goog.isDef(a.lastElementChild)?a.lastElementChild:goog.dom.getNextElementNode_(a.lastChild,!1)};\ngoog.dom.getNextElementSibling=function(a){return goog.isDef(a.nextElementSibling)?a.nextElementSibling:goog.dom.getNextElementNode_(a.nextSibling,!0)};goog.dom.getPreviousElementSibling=function(a){return goog.isDef(a.previousElementSibling)?a.previousElementSibling:goog.dom.getNextElementNode_(a.previousSibling,!1)};goog.dom.getNextElementNode_=function(a,b){for(;a&&a.nodeType!=goog.dom.NodeType.ELEMENT;)a=b?a.nextSibling:a.previousSibling;return a};\ngoog.dom.getNextNode=function(a){if(!a)return null;if(a.firstChild)return a.firstChild;for(;a&&!a.nextSibling;)a=a.parentNode;return a?a.nextSibling:null};goog.dom.getPreviousNode=function(a){if(!a)return null;if(!a.previousSibling)return a.parentNode;for(a=a.previousSibling;a&&a.lastChild;)a=a.lastChild;return a};goog.dom.isNodeLike=function(a){return goog.isObject(a)&&0<a.nodeType};goog.dom.isElement=function(a){return goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT};\ngoog.dom.isWindow=function(a){return goog.isObject(a)&&a.window==a};goog.dom.getParentElement=function(a){var b;if(goog.dom.BrowserFeature.CAN_USE_PARENT_ELEMENT_PROPERTY&&!(goog.userAgent.IE&&goog.userAgent.isVersionOrHigher("9")&&!goog.userAgent.isVersionOrHigher("10")&&goog.global.SVGElement&&a instanceof goog.global.SVGElement)&&(b=a.parentElement))return b;b=a.parentNode;return goog.dom.isElement(b)?b:null};\ngoog.dom.contains=function(a,b){if(!a||!b)return!1;if(a.contains&&b.nodeType==goog.dom.NodeType.ELEMENT)return a==b||a.contains(b);if("undefined"!=typeof a.compareDocumentPosition)return a==b||!!(a.compareDocumentPosition(b)&16);for(;b&&a!=b;)b=b.parentNode;return b==a};\ngoog.dom.compareNodeOrder=function(a,b){if(a==b)return 0;if(a.compareDocumentPosition)return a.compareDocumentPosition(b)&2?1:-1;if(goog.userAgent.IE&&!goog.userAgent.isDocumentModeOrHigher(9)){if(a.nodeType==goog.dom.NodeType.DOCUMENT)return-1;if(b.nodeType==goog.dom.NodeType.DOCUMENT)return 1}if("sourceIndex"in a||a.parentNode&&"sourceIndex"in a.parentNode){var c=a.nodeType==goog.dom.NodeType.ELEMENT,d=b.nodeType==goog.dom.NodeType.ELEMENT;if(c&&d)return a.sourceIndex-b.sourceIndex;var e=a.parentNode,\nf=b.parentNode;return e==f?goog.dom.compareSiblingOrder_(a,b):!c&&goog.dom.contains(e,b)?-1*goog.dom.compareParentsDescendantNodeIe_(a,b):!d&&goog.dom.contains(f,a)?goog.dom.compareParentsDescendantNodeIe_(b,a):(c?a.sourceIndex:e.sourceIndex)-(d?b.sourceIndex:f.sourceIndex)}d=goog.dom.getOwnerDocument(a);c=d.createRange();c.selectNode(a);c.collapse(!0);d=d.createRange();d.selectNode(b);d.collapse(!0);return c.compareBoundaryPoints(goog.global.Range.START_TO_END,d)};\ngoog.dom.compareParentsDescendantNodeIe_=function(a,b){var c=a.parentNode;if(c==b)return-1;for(var d=b;d.parentNode!=c;)d=d.parentNode;return goog.dom.compareSiblingOrder_(d,a)};goog.dom.compareSiblingOrder_=function(a,b){for(var c=b;c=c.previousSibling;)if(c==a)return-1;return 1};\ngoog.dom.findCommonAncestor=function(a){var b,c=arguments.length;if(!c)return null;if(1==c)return arguments[0];var d=[],e=Infinity;for(b=0;b<c;b++){for(var f=[],g=arguments[b];g;)f.unshift(g),g=g.parentNode;d.push(f);e=Math.min(e,f.length)}f=null;for(b=0;b<e;b++){for(var g=d[0][b],h=1;h<c;h++)if(g!=d[h][b])return f;f=g}return f};goog.dom.getOwnerDocument=function(a){goog.asserts.assert(a,"Node cannot be null or undefined.");return a.nodeType==goog.dom.NodeType.DOCUMENT?a:a.ownerDocument||a.document};\ngoog.dom.getFrameContentDocument=function(a){return a.contentDocument||a.contentWindow.document};goog.dom.getFrameContentWindow=function(a){try{return a.contentWindow||(a.contentDocument?goog.dom.getWindow(a.contentDocument):null)}catch(b){}return null};\ngoog.dom.setTextContent=function(a,b){goog.asserts.assert(null!=a,"goog.dom.setTextContent expects a non-null value for node");if("textContent"in a)a.textContent=b;else if(a.nodeType==goog.dom.NodeType.TEXT)a.data=b;else if(a.firstChild&&a.firstChild.nodeType==goog.dom.NodeType.TEXT){for(;a.lastChild!=a.firstChild;)a.removeChild(a.lastChild);a.firstChild.data=b}else{goog.dom.removeChildren(a);var c=goog.dom.getOwnerDocument(a);a.appendChild(c.createTextNode(String(b)))}};\ngoog.dom.getOuterHtml=function(a){goog.asserts.assert(null!==a,"goog.dom.getOuterHtml expects a non-null value for element");if("outerHTML"in a)return a.outerHTML;var b=goog.dom.getOwnerDocument(a),b=goog.dom.createElement_(b,"DIV");b.appendChild(a.cloneNode(!0));return b.innerHTML};goog.dom.findNode=function(a,b){var c=[];return goog.dom.findNodes_(a,b,c,!0)?c[0]:void 0};goog.dom.findNodes=function(a,b){var c=[];goog.dom.findNodes_(a,b,c,!1);return c};\ngoog.dom.findNodes_=function(a,b,c,d){if(null!=a)for(a=a.firstChild;a;){if(b(a)&&(c.push(a),d)||goog.dom.findNodes_(a,b,c,d))return!0;a=a.nextSibling}return!1};goog.dom.TAGS_TO_IGNORE_={SCRIPT:1,STYLE:1,HEAD:1,IFRAME:1,OBJECT:1};goog.dom.PREDEFINED_TAG_VALUES_={IMG:" ",BR:"\\n"};goog.dom.isFocusableTabIndex=function(a){return goog.dom.hasSpecifiedTabIndex_(a)&&goog.dom.isTabIndexFocusable_(a)};goog.dom.setFocusableTabIndex=function(a,b){b?a.tabIndex=0:(a.tabIndex=-1,a.removeAttribute("tabIndex"))};\ngoog.dom.isFocusable=function(a){var b;return(b=goog.dom.nativelySupportsFocus_(a)?!a.disabled&&(!goog.dom.hasSpecifiedTabIndex_(a)||goog.dom.isTabIndexFocusable_(a)):goog.dom.isFocusableTabIndex(a))&&goog.userAgent.IE?goog.dom.hasNonZeroBoundingRect_(a):b};goog.dom.hasSpecifiedTabIndex_=function(a){return goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("9")?(a=a.getAttributeNode("tabindex"),goog.isDefAndNotNull(a)&&a.specified):a.hasAttribute("tabindex")};\ngoog.dom.isTabIndexFocusable_=function(a){a=a.tabIndex;return goog.isNumber(a)&&0<=a&&32768>a};goog.dom.nativelySupportsFocus_=function(a){return"A"==a.tagName||"INPUT"==a.tagName||"TEXTAREA"==a.tagName||"SELECT"==a.tagName||"BUTTON"==a.tagName};goog.dom.hasNonZeroBoundingRect_=function(a){a=!goog.isFunction(a.getBoundingClientRect)||goog.userAgent.IE&&null==a.parentElement?{height:a.offsetHeight,width:a.offsetWidth}:a.getBoundingClientRect();return goog.isDefAndNotNull(a)&&0<a.height&&0<a.width};\ngoog.dom.getTextContent=function(a){if(goog.dom.BrowserFeature.CAN_USE_INNER_TEXT&&null!==a&&"innerText"in a)a=goog.string.canonicalizeNewlines(a.innerText);else{var b=[];goog.dom.getTextContent_(a,b,!0);a=b.join("")}a=a.replace(/ \\xAD /g," ").replace(/\\xAD/g,"");a=a.replace(/\\u200B/g,"");goog.dom.BrowserFeature.CAN_USE_INNER_TEXT||(a=a.replace(/ +/g," "));" "!=a&&(a=a.replace(/^\\s*/,""));return a};goog.dom.getRawTextContent=function(a){var b=[];goog.dom.getTextContent_(a,b,!1);return b.join("")};\ngoog.dom.getTextContent_=function(a,b,c){if(!(a.nodeName in goog.dom.TAGS_TO_IGNORE_))if(a.nodeType==goog.dom.NodeType.TEXT)c?b.push(String(a.nodeValue).replace(/(\\r\\n|\\r|\\n)/g,"")):b.push(a.nodeValue);else if(a.nodeName in goog.dom.PREDEFINED_TAG_VALUES_)b.push(goog.dom.PREDEFINED_TAG_VALUES_[a.nodeName]);else for(a=a.firstChild;a;)goog.dom.getTextContent_(a,b,c),a=a.nextSibling};goog.dom.getNodeTextLength=function(a){return goog.dom.getTextContent(a).length};\ngoog.dom.getNodeTextOffset=function(a,b){for(var c=b||goog.dom.getOwnerDocument(a).body,d=[];a&&a!=c;){for(var e=a;e=e.previousSibling;)d.unshift(goog.dom.getTextContent(e));a=a.parentNode}return goog.string.trimLeft(d.join("")).replace(/ +/g," ").length};\ngoog.dom.getNodeAtOffset=function(a,b,c){a=[a];for(var d=0,e=null;0<a.length&&d<b;)if(e=a.pop(),!(e.nodeName in goog.dom.TAGS_TO_IGNORE_))if(e.nodeType==goog.dom.NodeType.TEXT)var f=e.nodeValue.replace(/(\\r\\n|\\r|\\n)/g,"").replace(/ +/g," "),d=d+f.length;else if(e.nodeName in goog.dom.PREDEFINED_TAG_VALUES_)d+=goog.dom.PREDEFINED_TAG_VALUES_[e.nodeName].length;else for(f=e.childNodes.length-1;0<=f;f--)a.push(e.childNodes[f]);goog.isObject(c)&&(c.remainder=e?e.nodeValue.length+b-d-1:0,c.node=e);return e};\ngoog.dom.isNodeList=function(a){if(a&&"number"==typeof a.length){if(goog.isObject(a))return"function"==typeof a.item||"string"==typeof a.item;if(goog.isFunction(a))return"function"==typeof a.item}return!1};goog.dom.getAncestorByTagNameAndClass=function(a,b,c,d){if(!b&&!c)return null;var e=b?String(b).toUpperCase():null;return goog.dom.getAncestor(a,function(a){return(!e||a.nodeName==e)&&(!c||goog.isString(a.className)&&goog.array.contains(a.className.split(/\\s+/),c))},!0,d)};\ngoog.dom.getAncestorByClass=function(a,b,c){return goog.dom.getAncestorByTagNameAndClass(a,null,b,c)};goog.dom.getAncestor=function(a,b,c,d){c||(a=a.parentNode);for(c=0;a&&(null==d||c<=d);){goog.asserts.assert("parentNode"!=a.name);if(b(a))return a;a=a.parentNode;c++}return null};goog.dom.getActiveElement=function(a){try{return a&&a.activeElement}catch(b){}return null};\ngoog.dom.getPixelRatio=function(){var a=goog.dom.getWindow();return goog.isDef(a.devicePixelRatio)?a.devicePixelRatio:a.matchMedia?goog.dom.matchesPixelRatio_(3)||goog.dom.matchesPixelRatio_(2)||goog.dom.matchesPixelRatio_(1.5)||goog.dom.matchesPixelRatio_(1)||.75:1};goog.dom.matchesPixelRatio_=function(a){return goog.dom.getWindow().matchMedia("(min-resolution: "+a+"dppx),(min--moz-device-pixel-ratio: "+a+"),(min-resolution: "+96*a+"dpi)").matches?a:0};goog.dom.getCanvasContext2D=function(a){return a.getContext("2d")};\ngoog.dom.DomHelper=function(a){this.document_=a||goog.global.document||document};goog.dom.DomHelper.prototype.getDomHelper=goog.dom.getDomHelper;goog.dom.DomHelper.prototype.setDocument=function(a){this.document_=a};goog.dom.DomHelper.prototype.getDocument=function(){return this.document_};goog.dom.DomHelper.prototype.getElement=function(a){return goog.dom.getElementHelper_(this.document_,a)};\ngoog.dom.DomHelper.prototype.getRequiredElement=function(a){return goog.dom.getRequiredElementHelper_(this.document_,a)};goog.dom.DomHelper.prototype.$=goog.dom.DomHelper.prototype.getElement;goog.dom.DomHelper.prototype.getElementsByTagName=function(a,b){return(b||this.document_).getElementsByTagName(String(a))};goog.dom.DomHelper.prototype.getElementsByTagNameAndClass=function(a,b,c){return goog.dom.getElementsByTagNameAndClass_(this.document_,a,b,c)};\ngoog.dom.DomHelper.prototype.getElementsByClass=function(a,b){return goog.dom.getElementsByClass(a,b||this.document_)};goog.dom.DomHelper.prototype.getElementByClass=function(a,b){return goog.dom.getElementByClass(a,b||this.document_)};goog.dom.DomHelper.prototype.getRequiredElementByClass=function(a,b){return goog.dom.getRequiredElementByClass(a,b||this.document_)};goog.dom.DomHelper.prototype.$$=goog.dom.DomHelper.prototype.getElementsByTagNameAndClass;\ngoog.dom.DomHelper.prototype.setProperties=goog.dom.setProperties;goog.dom.DomHelper.prototype.getViewportSize=function(a){return goog.dom.getViewportSize(a||this.getWindow())};goog.dom.DomHelper.prototype.getDocumentHeight=function(){return goog.dom.getDocumentHeight_(this.getWindow())};goog.dom.DomHelper.prototype.createDom=function(a,b,c){return goog.dom.createDom_(this.document_,arguments)};goog.dom.DomHelper.prototype.$dom=goog.dom.DomHelper.prototype.createDom;\ngoog.dom.DomHelper.prototype.createElement=function(a){return goog.dom.createElement_(this.document_,a)};goog.dom.DomHelper.prototype.createTextNode=function(a){return this.document_.createTextNode(String(a))};goog.dom.DomHelper.prototype.createTable=function(a,b,c){return goog.dom.createTable_(this.document_,a,b,!!c)};goog.dom.DomHelper.prototype.safeHtmlToNode=function(a){return goog.dom.safeHtmlToNode_(this.document_,a)};goog.dom.DomHelper.prototype.isCss1CompatMode=function(){return goog.dom.isCss1CompatMode_(this.document_)};\ngoog.dom.DomHelper.prototype.getWindow=function(){return goog.dom.getWindow_(this.document_)};goog.dom.DomHelper.prototype.getDocumentScrollElement=function(){return goog.dom.getDocumentScrollElement_(this.document_)};goog.dom.DomHelper.prototype.getDocumentScroll=function(){return goog.dom.getDocumentScroll_(this.document_)};goog.dom.DomHelper.prototype.getActiveElement=function(a){return goog.dom.getActiveElement(a||this.document_)};goog.dom.DomHelper.prototype.appendChild=goog.dom.appendChild;\ngoog.dom.DomHelper.prototype.append=goog.dom.append;goog.dom.DomHelper.prototype.canHaveChildren=goog.dom.canHaveChildren;goog.dom.DomHelper.prototype.removeChildren=goog.dom.removeChildren;goog.dom.DomHelper.prototype.insertSiblingBefore=goog.dom.insertSiblingBefore;goog.dom.DomHelper.prototype.insertSiblingAfter=goog.dom.insertSiblingAfter;goog.dom.DomHelper.prototype.insertChildAt=goog.dom.insertChildAt;goog.dom.DomHelper.prototype.removeNode=goog.dom.removeNode;\ngoog.dom.DomHelper.prototype.replaceNode=goog.dom.replaceNode;goog.dom.DomHelper.prototype.flattenElement=goog.dom.flattenElement;goog.dom.DomHelper.prototype.getChildren=goog.dom.getChildren;goog.dom.DomHelper.prototype.getFirstElementChild=goog.dom.getFirstElementChild;goog.dom.DomHelper.prototype.getLastElementChild=goog.dom.getLastElementChild;goog.dom.DomHelper.prototype.getNextElementSibling=goog.dom.getNextElementSibling;goog.dom.DomHelper.prototype.getPreviousElementSibling=goog.dom.getPreviousElementSibling;\ngoog.dom.DomHelper.prototype.getNextNode=goog.dom.getNextNode;goog.dom.DomHelper.prototype.getPreviousNode=goog.dom.getPreviousNode;goog.dom.DomHelper.prototype.isNodeLike=goog.dom.isNodeLike;goog.dom.DomHelper.prototype.isElement=goog.dom.isElement;goog.dom.DomHelper.prototype.isWindow=goog.dom.isWindow;goog.dom.DomHelper.prototype.getParentElement=goog.dom.getParentElement;goog.dom.DomHelper.prototype.contains=goog.dom.contains;goog.dom.DomHelper.prototype.compareNodeOrder=goog.dom.compareNodeOrder;\ngoog.dom.DomHelper.prototype.findCommonAncestor=goog.dom.findCommonAncestor;goog.dom.DomHelper.prototype.getOwnerDocument=goog.dom.getOwnerDocument;goog.dom.DomHelper.prototype.getFrameContentDocument=goog.dom.getFrameContentDocument;goog.dom.DomHelper.prototype.getFrameContentWindow=goog.dom.getFrameContentWindow;goog.dom.DomHelper.prototype.setTextContent=goog.dom.setTextContent;goog.dom.DomHelper.prototype.getOuterHtml=goog.dom.getOuterHtml;goog.dom.DomHelper.prototype.findNode=goog.dom.findNode;\ngoog.dom.DomHelper.prototype.findNodes=goog.dom.findNodes;goog.dom.DomHelper.prototype.isFocusableTabIndex=goog.dom.isFocusableTabIndex;goog.dom.DomHelper.prototype.setFocusableTabIndex=goog.dom.setFocusableTabIndex;goog.dom.DomHelper.prototype.isFocusable=goog.dom.isFocusable;goog.dom.DomHelper.prototype.getTextContent=goog.dom.getTextContent;goog.dom.DomHelper.prototype.getNodeTextLength=goog.dom.getNodeTextLength;goog.dom.DomHelper.prototype.getNodeTextOffset=goog.dom.getNodeTextOffset;\ngoog.dom.DomHelper.prototype.getNodeAtOffset=goog.dom.getNodeAtOffset;goog.dom.DomHelper.prototype.isNodeList=goog.dom.isNodeList;goog.dom.DomHelper.prototype.getAncestorByTagNameAndClass=goog.dom.getAncestorByTagNameAndClass;goog.dom.DomHelper.prototype.getAncestorByClass=goog.dom.getAncestorByClass;goog.dom.DomHelper.prototype.getAncestor=goog.dom.getAncestor;goog.dom.DomHelper.prototype.getCanvasContext2D=goog.dom.getCanvasContext2D;goog.dom.vendor={};goog.dom.vendor.getVendorJsPrefix=function(){return goog.userAgent.WEBKIT?"Webkit":goog.userAgent.GECKO?"Moz":goog.userAgent.IE?"ms":goog.userAgent.OPERA?"O":null};goog.dom.vendor.getVendorPrefix=function(){return goog.userAgent.WEBKIT?"-webkit":goog.userAgent.GECKO?"-moz":goog.userAgent.IE?"-ms":goog.userAgent.OPERA?"-o":null};\ngoog.dom.vendor.getPrefixedPropertyName=function(a,b){if(b&&a in b)return a;var c=goog.dom.vendor.getVendorJsPrefix();return c?(c=c.toLowerCase(),c+=goog.string.toTitleCase(a),!goog.isDef(b)||c in b?c:null):null};goog.dom.vendor.getPrefixedEventType=function(a){return((goog.dom.vendor.getVendorJsPrefix()||"")+a).toLowerCase()};goog.html.legacyconversions={};goog.html.legacyconversions.safeHtmlFromString=function(a){goog.html.legacyconversions.reportCallback_();return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(a,null)};goog.html.legacyconversions.safeStyleFromString=function(a){goog.html.legacyconversions.reportCallback_();return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.legacyconversions.safeStyleSheetFromString=function(a){goog.html.legacyconversions.reportCallback_();return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)};goog.html.legacyconversions.safeUrlFromString=function(a){goog.html.legacyconversions.reportCallback_();return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.legacyconversions.trustedResourceUrlFromString=function(a){goog.html.legacyconversions.reportCallback_();return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.legacyconversions.reportCallback_=goog.nullFunction;goog.html.legacyconversions.setReportCallback=function(a){goog.html.legacyconversions.reportCallback_=a};goog.math.Box=function(a,b,c,d){this.top=a;this.right=b;this.bottom=c;this.left=d};goog.math.Box.boundingBox=function(a){for(var b=new goog.math.Box(arguments[0].y,arguments[0].x,arguments[0].y,arguments[0].x),c=1;c<arguments.length;c++)b.expandToIncludeCoordinate(arguments[c]);return b};goog.math.Box.prototype.getWidth=function(){return this.right-this.left};goog.math.Box.prototype.getHeight=function(){return this.bottom-this.top};\ngoog.math.Box.prototype.clone=function(){return new goog.math.Box(this.top,this.right,this.bottom,this.left)};goog.DEBUG&&(goog.math.Box.prototype.toString=function(){return"("+this.top+"t, "+this.right+"r, "+this.bottom+"b, "+this.left+"l)"});goog.math.Box.prototype.contains=function(a){return goog.math.Box.contains(this,a)};\ngoog.math.Box.prototype.expand=function(a,b,c,d){goog.isObject(a)?(this.top-=a.top,this.right+=a.right,this.bottom+=a.bottom,this.left-=a.left):(this.top-=a,this.right+=Number(b),this.bottom+=Number(c),this.left-=Number(d));return this};goog.math.Box.prototype.expandToInclude=function(a){this.left=Math.min(this.left,a.left);this.top=Math.min(this.top,a.top);this.right=Math.max(this.right,a.right);this.bottom=Math.max(this.bottom,a.bottom)};\ngoog.math.Box.prototype.expandToIncludeCoordinate=function(a){this.top=Math.min(this.top,a.y);this.right=Math.max(this.right,a.x);this.bottom=Math.max(this.bottom,a.y);this.left=Math.min(this.left,a.x)};goog.math.Box.equals=function(a,b){return a==b?!0:a&&b?a.top==b.top&&a.right==b.right&&a.bottom==b.bottom&&a.left==b.left:!1};\ngoog.math.Box.contains=function(a,b){return a&&b?b instanceof goog.math.Box?b.left>=a.left&&b.right<=a.right&&b.top>=a.top&&b.bottom<=a.bottom:b.x>=a.left&&b.x<=a.right&&b.y>=a.top&&b.y<=a.bottom:!1};goog.math.Box.relativePositionX=function(a,b){return b.x<a.left?b.x-a.left:b.x>a.right?b.x-a.right:0};goog.math.Box.relativePositionY=function(a,b){return b.y<a.top?b.y-a.top:b.y>a.bottom?b.y-a.bottom:0};\ngoog.math.Box.distance=function(a,b){var c=goog.math.Box.relativePositionX(a,b),d=goog.math.Box.relativePositionY(a,b);return Math.sqrt(c*c+d*d)};goog.math.Box.intersects=function(a,b){return a.left<=b.right&&b.left<=a.right&&a.top<=b.bottom&&b.top<=a.bottom};goog.math.Box.intersectsWithPadding=function(a,b,c){return a.left<=b.right+c&&b.left<=a.right+c&&a.top<=b.bottom+c&&b.top<=a.bottom+c};\ngoog.math.Box.prototype.ceil=function(){this.top=Math.ceil(this.top);this.right=Math.ceil(this.right);this.bottom=Math.ceil(this.bottom);this.left=Math.ceil(this.left);return this};goog.math.Box.prototype.floor=function(){this.top=Math.floor(this.top);this.right=Math.floor(this.right);this.bottom=Math.floor(this.bottom);this.left=Math.floor(this.left);return this};\ngoog.math.Box.prototype.round=function(){this.top=Math.round(this.top);this.right=Math.round(this.right);this.bottom=Math.round(this.bottom);this.left=Math.round(this.left);return this};goog.math.Box.prototype.translate=function(a,b){a instanceof goog.math.Coordinate?(this.left+=a.x,this.right+=a.x,this.top+=a.y,this.bottom+=a.y):(goog.asserts.assertNumber(a),this.left+=a,this.right+=a,goog.isNumber(b)&&(this.top+=b,this.bottom+=b));return this};\ngoog.math.Box.prototype.scale=function(a,b){var c=goog.isNumber(b)?b:a;this.left*=a;this.right*=a;this.top*=c;this.bottom*=c;return this};goog.math.IRect=function(){};goog.math.Rect=function(a,b,c,d){this.left=a;this.top=b;this.width=c;this.height=d};goog.math.Rect.prototype.clone=function(){return new goog.math.Rect(this.left,this.top,this.width,this.height)};goog.math.Rect.prototype.toBox=function(){return new goog.math.Box(this.top,this.left+this.width,this.top+this.height,this.left)};goog.math.Rect.createFromPositionAndSize=function(a,b){return new goog.math.Rect(a.x,a.y,b.width,b.height)};\ngoog.math.Rect.createFromBox=function(a){return new goog.math.Rect(a.left,a.top,a.right-a.left,a.bottom-a.top)};goog.DEBUG&&(goog.math.Rect.prototype.toString=function(){return"("+this.left+", "+this.top+" - "+this.width+"w x "+this.height+"h)"});goog.math.Rect.equals=function(a,b){return a==b?!0:a&&b?a.left==b.left&&a.width==b.width&&a.top==b.top&&a.height==b.height:!1};\ngoog.math.Rect.prototype.intersection=function(a){var b=Math.max(this.left,a.left),c=Math.min(this.left+this.width,a.left+a.width);if(b<=c){var d=Math.max(this.top,a.top);a=Math.min(this.top+this.height,a.top+a.height);if(d<=a)return this.left=b,this.top=d,this.width=c-b,this.height=a-d,!0}return!1};\ngoog.math.Rect.intersection=function(a,b){var c=Math.max(a.left,b.left),d=Math.min(a.left+a.width,b.left+b.width);if(c<=d){var e=Math.max(a.top,b.top),f=Math.min(a.top+a.height,b.top+b.height);if(e<=f)return new goog.math.Rect(c,e,d-c,f-e)}return null};goog.math.Rect.intersects=function(a,b){return a.left<=b.left+b.width&&b.left<=a.left+a.width&&a.top<=b.top+b.height&&b.top<=a.top+a.height};goog.math.Rect.prototype.intersects=function(a){return goog.math.Rect.intersects(this,a)};\ngoog.math.Rect.difference=function(a,b){var c=goog.math.Rect.intersection(a,b);if(!c||!c.height||!c.width)return[a.clone()];var c=[],d=a.top,e=a.height,f=a.left+a.width,g=a.top+a.height,h=b.left+b.width,k=b.top+b.height;b.top>a.top&&(c.push(new goog.math.Rect(a.left,a.top,a.width,b.top-a.top)),d=b.top,e-=b.top-a.top);k<g&&(c.push(new goog.math.Rect(a.left,k,a.width,g-k)),e=k-d);b.left>a.left&&c.push(new goog.math.Rect(a.left,d,b.left-a.left,e));h<f&&c.push(new goog.math.Rect(h,d,f-h,e));return c};\ngoog.math.Rect.prototype.difference=function(a){return goog.math.Rect.difference(this,a)};goog.math.Rect.prototype.boundingRect=function(a){var b=Math.max(this.left+this.width,a.left+a.width),c=Math.max(this.top+this.height,a.top+a.height);this.left=Math.min(this.left,a.left);this.top=Math.min(this.top,a.top);this.width=b-this.left;this.height=c-this.top};goog.math.Rect.boundingRect=function(a,b){if(!a||!b)return null;var c=new goog.math.Rect(a.left,a.top,a.width,a.height);c.boundingRect(b);return c};\ngoog.math.Rect.prototype.contains=function(a){return a instanceof goog.math.Coordinate?a.x>=this.left&&a.x<=this.left+this.width&&a.y>=this.top&&a.y<=this.top+this.height:this.left<=a.left&&this.left+this.width>=a.left+a.width&&this.top<=a.top&&this.top+this.height>=a.top+a.height};goog.math.Rect.prototype.squaredDistance=function(a){var b=a.x<this.left?this.left-a.x:Math.max(a.x-(this.left+this.width),0);a=a.y<this.top?this.top-a.y:Math.max(a.y-(this.top+this.height),0);return b*b+a*a};\ngoog.math.Rect.prototype.distance=function(a){return Math.sqrt(this.squaredDistance(a))};goog.math.Rect.prototype.getSize=function(){return new goog.math.Size(this.width,this.height)};goog.math.Rect.prototype.getTopLeft=function(){return new goog.math.Coordinate(this.left,this.top)};goog.math.Rect.prototype.getCenter=function(){return new goog.math.Coordinate(this.left+this.width/2,this.top+this.height/2)};\ngoog.math.Rect.prototype.getBottomRight=function(){return new goog.math.Coordinate(this.left+this.width,this.top+this.height)};goog.math.Rect.prototype.ceil=function(){this.left=Math.ceil(this.left);this.top=Math.ceil(this.top);this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};goog.math.Rect.prototype.floor=function(){this.left=Math.floor(this.left);this.top=Math.floor(this.top);this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};\ngoog.math.Rect.prototype.round=function(){this.left=Math.round(this.left);this.top=Math.round(this.top);this.width=Math.round(this.width);this.height=Math.round(this.height);return this};goog.math.Rect.prototype.translate=function(a,b){a instanceof goog.math.Coordinate?(this.left+=a.x,this.top+=a.y):(this.left+=goog.asserts.assertNumber(a),goog.isNumber(b)&&(this.top+=b));return this};\ngoog.math.Rect.prototype.scale=function(a,b){var c=goog.isNumber(b)?b:a;this.left*=a;this.width*=a;this.top*=c;this.height*=c;return this};goog.style={};goog.style.setStyle=function(a,b,c){if(goog.isString(b))goog.style.setStyle_(a,c,b);else for(var d in b)goog.style.setStyle_(a,b[d],d)};goog.style.setStyle_=function(a,b,c){(c=goog.style.getVendorJsStyleName_(a,c))&&(a.style[c]=b)};goog.style.styleNameCache_={};\ngoog.style.getVendorJsStyleName_=function(a,b){var c=goog.style.styleNameCache_[b];if(!c){var d=goog.string.toCamelCase(b),c=d;void 0===a.style[d]&&(d=goog.dom.vendor.getVendorJsPrefix()+goog.string.toTitleCase(d),void 0!==a.style[d]&&(c=d));goog.style.styleNameCache_[b]=c}return c};\ngoog.style.getVendorStyleName_=function(a,b){var c=goog.string.toCamelCase(b);return void 0===a.style[c]&&(c=goog.dom.vendor.getVendorJsPrefix()+goog.string.toTitleCase(c),void 0!==a.style[c])?goog.dom.vendor.getVendorPrefix()+"-"+b:b};goog.style.getStyle=function(a,b){var c=a.style[goog.string.toCamelCase(b)];return"undefined"!==typeof c?c:a.style[goog.style.getVendorJsStyleName_(a,b)]||""};\ngoog.style.getComputedStyle=function(a,b){var c=goog.dom.getOwnerDocument(a);return c.defaultView&&c.defaultView.getComputedStyle&&(c=c.defaultView.getComputedStyle(a,null))?c[b]||c.getPropertyValue(b)||"":""};goog.style.getCascadedStyle=function(a,b){return a.currentStyle?a.currentStyle[b]:null};goog.style.getStyle_=function(a,b){return goog.style.getComputedStyle(a,b)||goog.style.getCascadedStyle(a,b)||a.style&&a.style[b]};\ngoog.style.getComputedBoxSizing=function(a){return goog.style.getStyle_(a,"boxSizing")||goog.style.getStyle_(a,"MozBoxSizing")||goog.style.getStyle_(a,"WebkitBoxSizing")||null};goog.style.getComputedPosition=function(a){return goog.style.getStyle_(a,"position")};goog.style.getBackgroundColor=function(a){return goog.style.getStyle_(a,"backgroundColor")};goog.style.getComputedOverflowX=function(a){return goog.style.getStyle_(a,"overflowX")};\ngoog.style.getComputedOverflowY=function(a){return goog.style.getStyle_(a,"overflowY")};goog.style.getComputedZIndex=function(a){return goog.style.getStyle_(a,"zIndex")};goog.style.getComputedTextAlign=function(a){return goog.style.getStyle_(a,"textAlign")};goog.style.getComputedCursor=function(a){return goog.style.getStyle_(a,"cursor")};goog.style.getComputedTransform=function(a){var b=goog.style.getVendorStyleName_(a,"transform");return goog.style.getStyle_(a,b)||goog.style.getStyle_(a,"transform")};\ngoog.style.setPosition=function(a,b,c){var d;b instanceof goog.math.Coordinate?(d=b.x,b=b.y):(d=b,b=c);a.style.left=goog.style.getPixelStyleValue_(d,!1);a.style.top=goog.style.getPixelStyleValue_(b,!1)};goog.style.getPosition=function(a){return new goog.math.Coordinate(a.offsetLeft,a.offsetTop)};\ngoog.style.getClientViewportElement=function(a){a=a?goog.dom.getOwnerDocument(a):goog.dom.getDocument();return!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9)||goog.dom.getDomHelper(a).isCss1CompatMode()?a.documentElement:a.body};goog.style.getViewportPageOffset=function(a){var b=a.body;a=a.documentElement;return new goog.math.Coordinate(b.scrollLeft||a.scrollLeft,b.scrollTop||a.scrollTop)};\ngoog.style.getBoundingClientRect_=function(a){var b;try{b=a.getBoundingClientRect()}catch(c){return{left:0,top:0,right:0,bottom:0}}goog.userAgent.IE&&a.ownerDocument.body&&(a=a.ownerDocument,b.left-=a.documentElement.clientLeft+a.body.clientLeft,b.top-=a.documentElement.clientTop+a.body.clientTop);return b};\ngoog.style.getOffsetParent=function(a){if(goog.userAgent.IE&&!goog.userAgent.isDocumentModeOrHigher(8))return goog.asserts.assert(a&&"offsetParent"in a),a.offsetParent;var b=goog.dom.getOwnerDocument(a),c=goog.style.getStyle_(a,"position"),d="fixed"==c||"absolute"==c;for(a=a.parentNode;a&&a!=b;a=a.parentNode)if(a.nodeType==goog.dom.NodeType.DOCUMENT_FRAGMENT&&a.host&&(a=a.host),c=goog.style.getStyle_(a,"position"),d=d&&"static"==c&&a!=b.documentElement&&a!=b.body,!d&&(a.scrollWidth>a.clientWidth||\na.scrollHeight>a.clientHeight||"fixed"==c||"absolute"==c||"relative"==c))return a;return null};\ngoog.style.getVisibleRectForElement=function(a){for(var b=new goog.math.Box(0,Infinity,Infinity,0),c=goog.dom.getDomHelper(a),d=c.getDocument().body,e=c.getDocument().documentElement,f=c.getDocumentScrollElement();a=goog.style.getOffsetParent(a);)if(!(goog.userAgent.IE&&0==a.clientWidth||goog.userAgent.WEBKIT&&0==a.clientHeight&&a==d)&&a!=d&&a!=e&&"visible"!=goog.style.getStyle_(a,"overflow")){var g=goog.style.getPageOffset(a),h=goog.style.getClientLeftTop(a);g.x+=h.x;g.y+=h.y;b.top=Math.max(b.top,\ng.y);b.right=Math.min(b.right,g.x+a.clientWidth);b.bottom=Math.min(b.bottom,g.y+a.clientHeight);b.left=Math.max(b.left,g.x)}d=f.scrollLeft;f=f.scrollTop;b.left=Math.max(b.left,d);b.top=Math.max(b.top,f);c=c.getViewportSize();b.right=Math.min(b.right,d+c.width);b.bottom=Math.min(b.bottom,f+c.height);return 0<=b.top&&0<=b.left&&b.bottom>b.top&&b.right>b.left?b:null};\ngoog.style.getContainerOffsetToScrollInto=function(a,b,c){var d=b||goog.dom.getDocumentScrollElement(),e=goog.style.getPageOffset(a),f=goog.style.getPageOffset(d),g=goog.style.getBorderBox(d);d==goog.dom.getDocumentScrollElement()?(b=e.x-d.scrollLeft,e=e.y-d.scrollTop,goog.userAgent.IE&&!goog.userAgent.isDocumentModeOrHigher(10)&&(b+=g.left,e+=g.top)):(b=e.x-f.x-g.left,e=e.y-f.y-g.top);g=goog.style.getSizeWithDisplay_(a);a=d.clientWidth-g.width;g=d.clientHeight-g.height;f=d.scrollLeft;d=d.scrollTop;\nc?(f+=b-a/2,d+=e-g/2):(f+=Math.min(b,Math.max(b-a,0)),d+=Math.min(e,Math.max(e-g,0)));return new goog.math.Coordinate(f,d)};goog.style.scrollIntoContainerView=function(a,b,c){b=b||goog.dom.getDocumentScrollElement();a=goog.style.getContainerOffsetToScrollInto(a,b,c);b.scrollLeft=a.x;b.scrollTop=a.y};goog.style.getClientLeftTop=function(a){return new goog.math.Coordinate(a.clientLeft,a.clientTop)};\ngoog.style.getPageOffset=function(a){var b=goog.dom.getOwnerDocument(a);goog.asserts.assertObject(a,"Parameter is required");var c=new goog.math.Coordinate(0,0),d=goog.style.getClientViewportElement(b);if(a==d)return c;a=goog.style.getBoundingClientRect_(a);b=goog.dom.getDomHelper(b).getDocumentScroll();c.x=a.left+b.x;c.y=a.top+b.y;return c};goog.style.getPageOffsetLeft=function(a){return goog.style.getPageOffset(a).x};goog.style.getPageOffsetTop=function(a){return goog.style.getPageOffset(a).y};\ngoog.style.getFramedPageOffset=function(a,b){var c=new goog.math.Coordinate(0,0),d=goog.dom.getWindow(goog.dom.getOwnerDocument(a));if(!goog.reflect.canAccessProperty(d,"parent"))return c;var e=a;do{var f=d==b?goog.style.getPageOffset(e):goog.style.getClientPositionForElement_(goog.asserts.assert(e));c.x+=f.x;c.y+=f.y}while(d&&d!=b&&d!=d.parent&&(e=d.frameElement)&&(d=d.parent));return c};\ngoog.style.translateRectForAnotherFrame=function(a,b,c){if(b.getDocument()!=c.getDocument()){var d=b.getDocument().body;c=goog.style.getFramedPageOffset(d,c.getWindow());c=goog.math.Coordinate.difference(c,goog.style.getPageOffset(d));!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9)||b.isCss1CompatMode()||(c=goog.math.Coordinate.difference(c,b.getDocumentScroll()));a.left+=c.x;a.top+=c.y}};\ngoog.style.getRelativePosition=function(a,b){var c=goog.style.getClientPosition(a),d=goog.style.getClientPosition(b);return new goog.math.Coordinate(c.x-d.x,c.y-d.y)};goog.style.getClientPositionForElement_=function(a){a=goog.style.getBoundingClientRect_(a);return new goog.math.Coordinate(a.left,a.top)};\ngoog.style.getClientPosition=function(a){goog.asserts.assert(a);if(a.nodeType==goog.dom.NodeType.ELEMENT)return goog.style.getClientPositionForElement_(a);a=a.changedTouches?a.changedTouches[0]:a;return new goog.math.Coordinate(a.clientX,a.clientY)};goog.style.setPageOffset=function(a,b,c){var d=goog.style.getPageOffset(a);b instanceof goog.math.Coordinate&&(c=b.y,b=b.x);b=goog.asserts.assertNumber(b)-d.x;goog.style.setPosition(a,a.offsetLeft+b,a.offsetTop+(Number(c)-d.y))};\ngoog.style.setSize=function(a,b,c){if(b instanceof goog.math.Size)c=b.height,b=b.width;else if(void 0==c)throw Error("missing height argument");goog.style.setWidth(a,b);goog.style.setHeight(a,c)};goog.style.getPixelStyleValue_=function(a,b){"number"==typeof a&&(a=(b?Math.round(a):a)+"px");return a};goog.style.setHeight=function(a,b){a.style.height=goog.style.getPixelStyleValue_(b,!0)};goog.style.setWidth=function(a,b){a.style.width=goog.style.getPixelStyleValue_(b,!0)};\ngoog.style.getSize=function(a){return goog.style.evaluateWithTemporaryDisplay_(goog.style.getSizeWithDisplay_,a)};goog.style.evaluateWithTemporaryDisplay_=function(a,b){if("none"!=goog.style.getStyle_(b,"display"))return a(b);var c=b.style,d=c.display,e=c.visibility,f=c.position;c.visibility="hidden";c.position="absolute";c.display="inline";var g=a(b);c.display=d;c.position=f;c.visibility=e;return g};\ngoog.style.getSizeWithDisplay_=function(a){var b=a.offsetWidth,c=a.offsetHeight,d=goog.userAgent.WEBKIT&&!b&&!c;return goog.isDef(b)&&!d||!a.getBoundingClientRect?new goog.math.Size(b,c):(a=goog.style.getBoundingClientRect_(a),new goog.math.Size(a.right-a.left,a.bottom-a.top))};goog.style.getTransformedSize=function(a){if(!a.getBoundingClientRect)return null;a=goog.style.evaluateWithTemporaryDisplay_(goog.style.getBoundingClientRect_,a);return new goog.math.Size(a.right-a.left,a.bottom-a.top)};\ngoog.style.getBounds=function(a){var b=goog.style.getPageOffset(a);a=goog.style.getSize(a);return new goog.math.Rect(b.x,b.y,a.width,a.height)};goog.style.toCamelCase=function(a){return goog.string.toCamelCase(String(a))};goog.style.toSelectorCase=function(a){return goog.string.toSelectorCase(a)};\ngoog.style.getOpacity=function(a){goog.asserts.assert(a);var b=a.style;a="";"opacity"in b?a=b.opacity:"MozOpacity"in b?a=b.MozOpacity:"filter"in b&&(b=b.filter.match(/alpha\\(opacity=([\\d.]+)\\)/))&&(a=String(b[1]/100));return""==a?a:Number(a)};goog.style.setOpacity=function(a,b){goog.asserts.assert(a);var c=a.style;"opacity"in c?c.opacity=b:"MozOpacity"in c?c.MozOpacity=b:"filter"in c&&(c.filter=""===b?"":"alpha(opacity="+100*Number(b)+")")};\ngoog.style.setTransparentBackgroundImage=function(a,b){var c=a.style;goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("8")?c.filter=\'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="\'+b+\'", sizingMethod="crop")\':(c.backgroundImage="url("+b+")",c.backgroundPosition="top left",c.backgroundRepeat="no-repeat")};goog.style.clearTransparentBackgroundImage=function(a){a=a.style;"filter"in a?a.filter="":a.backgroundImage="none"};\ngoog.style.showElement=function(a,b){goog.style.setElementShown(a,b)};goog.style.setElementShown=function(a,b){a.style.display=b?"":"none"};goog.style.isElementShown=function(a){return"none"!=a.style.display};goog.style.installStyles=function(a,b){return goog.style.installSafeStyleSheet(goog.html.legacyconversions.safeStyleSheetFromString(a),b)};\ngoog.style.installSafeStyleSheet=function(a,b){var c=goog.dom.getDomHelper(b),d,e=c.getDocument();goog.userAgent.IE&&e.createStyleSheet?(d=e.createStyleSheet(),goog.style.setSafeStyleSheet(d,a)):(e=c.getElementsByTagNameAndClass("HEAD")[0],e||(d=c.getElementsByTagNameAndClass("BODY")[0],e=c.createDom("HEAD"),d.parentNode.insertBefore(e,d)),d=c.createDom("STYLE"),goog.style.setSafeStyleSheet(d,a),c.appendChild(e,d));return d};\ngoog.style.uninstallStyles=function(a){goog.dom.removeNode(a.ownerNode||a.owningElement||a)};goog.style.setStyles=function(a,b){goog.style.setSafeStyleSheet(a,goog.html.legacyconversions.safeStyleSheetFromString(b))};goog.style.setSafeStyleSheet=function(a,b){var c=goog.html.SafeStyleSheet.unwrap(b);goog.userAgent.IE&&goog.isDef(a.cssText)?a.cssText=c:a.innerHTML=c};\ngoog.style.setPreWrap=function(a){a=a.style;goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("8")?(a.whiteSpace="pre",a.wordWrap="break-word"):a.whiteSpace=goog.userAgent.GECKO?"-moz-pre-wrap":"pre-wrap"};goog.style.setInlineBlock=function(a){a=a.style;a.position="relative";goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("8")?(a.zoom="1",a.display="inline"):a.display="inline-block"};goog.style.isRightToLeft=function(a){return"rtl"==goog.style.getStyle_(a,"direction")};\ngoog.style.unselectableStyle_=goog.userAgent.GECKO?"MozUserSelect":goog.userAgent.WEBKIT||goog.userAgent.EDGE?"WebkitUserSelect":null;goog.style.isUnselectable=function(a){return goog.style.unselectableStyle_?"none"==a.style[goog.style.unselectableStyle_].toLowerCase():goog.userAgent.IE||goog.userAgent.OPERA?"on"==a.getAttribute("unselectable"):!1};\ngoog.style.setUnselectable=function(a,b,c){c=c?null:a.getElementsByTagName("*");var d=goog.style.unselectableStyle_;if(d){if(b=b?"none":"",a.style&&(a.style[d]=b),c){a=0;for(var e;e=c[a];a++)e.style&&(e.style[d]=b)}}else if(goog.userAgent.IE||goog.userAgent.OPERA)if(b=b?"on":"",a.setAttribute("unselectable",b),c)for(a=0;e=c[a];a++)e.setAttribute("unselectable",b)};goog.style.getBorderBoxSize=function(a){return new goog.math.Size(a.offsetWidth,a.offsetHeight)};\ngoog.style.setBorderBoxSize=function(a,b){var c=goog.dom.getOwnerDocument(a),d=goog.dom.getDomHelper(c).isCss1CompatMode();if(!goog.userAgent.IE||goog.userAgent.isVersionOrHigher("10")||d&&goog.userAgent.isVersionOrHigher("8"))goog.style.setBoxSizingSize_(a,b,"border-box");else if(c=a.style,d){var d=goog.style.getPaddingBox(a),e=goog.style.getBorderBox(a);c.pixelWidth=b.width-e.left-d.left-d.right-e.right;c.pixelHeight=b.height-e.top-d.top-d.bottom-e.bottom}else c.pixelWidth=b.width,c.pixelHeight=\nb.height};\ngoog.style.getContentBoxSize=function(a){var b=goog.dom.getOwnerDocument(a),c=goog.userAgent.IE&&a.currentStyle;if(c&&goog.dom.getDomHelper(b).isCss1CompatMode()&&"auto"!=c.width&&"auto"!=c.height&&!c.boxSizing)return b=goog.style.getIePixelValue_(a,c.width,"width","pixelWidth"),a=goog.style.getIePixelValue_(a,c.height,"height","pixelHeight"),new goog.math.Size(b,a);c=goog.style.getBorderBoxSize(a);b=goog.style.getPaddingBox(a);a=goog.style.getBorderBox(a);return new goog.math.Size(c.width-a.left-\nb.left-b.right-a.right,c.height-a.top-b.top-b.bottom-a.bottom)};\ngoog.style.setContentBoxSize=function(a,b){var c=goog.dom.getOwnerDocument(a),d=goog.dom.getDomHelper(c).isCss1CompatMode();if(!goog.userAgent.IE||goog.userAgent.isVersionOrHigher("10")||d&&goog.userAgent.isVersionOrHigher("8"))goog.style.setBoxSizingSize_(a,b,"content-box");else if(c=a.style,d)c.pixelWidth=b.width,c.pixelHeight=b.height;else{var d=goog.style.getPaddingBox(a),e=goog.style.getBorderBox(a);c.pixelWidth=b.width+e.left+d.left+d.right+e.right;c.pixelHeight=b.height+e.top+d.top+d.bottom+\ne.bottom}};goog.style.setBoxSizingSize_=function(a,b,c){a=a.style;goog.userAgent.GECKO?a.MozBoxSizing=c:goog.userAgent.WEBKIT?a.WebkitBoxSizing=c:a.boxSizing=c;a.width=Math.max(b.width,0)+"px";a.height=Math.max(b.height,0)+"px"};goog.style.getIePixelValue_=function(a,b,c,d){if(/^\\d+px?$/.test(b))return parseInt(b,10);var e=a.style[c],f=a.runtimeStyle[c];a.runtimeStyle[c]=a.currentStyle[c];a.style[c]=b;b=a.style[d];a.style[c]=e;a.runtimeStyle[c]=f;return b};\ngoog.style.getIePixelDistance_=function(a,b){var c=goog.style.getCascadedStyle(a,b);return c?goog.style.getIePixelValue_(a,c,"left","pixelLeft"):0};\ngoog.style.getBox_=function(a,b){if(goog.userAgent.IE){var c=goog.style.getIePixelDistance_(a,b+"Left"),d=goog.style.getIePixelDistance_(a,b+"Right"),e=goog.style.getIePixelDistance_(a,b+"Top"),f=goog.style.getIePixelDistance_(a,b+"Bottom");return new goog.math.Box(e,d,f,c)}c=goog.style.getComputedStyle(a,b+"Left");d=goog.style.getComputedStyle(a,b+"Right");e=goog.style.getComputedStyle(a,b+"Top");f=goog.style.getComputedStyle(a,b+"Bottom");return new goog.math.Box(parseFloat(e),parseFloat(d),parseFloat(f),\nparseFloat(c))};goog.style.getPaddingBox=function(a){return goog.style.getBox_(a,"padding")};goog.style.getMarginBox=function(a){return goog.style.getBox_(a,"margin")};goog.style.ieBorderWidthKeywords_={thin:2,medium:4,thick:6};\ngoog.style.getIePixelBorder_=function(a,b){if("none"==goog.style.getCascadedStyle(a,b+"Style"))return 0;var c=goog.style.getCascadedStyle(a,b+"Width");return c in goog.style.ieBorderWidthKeywords_?goog.style.ieBorderWidthKeywords_[c]:goog.style.getIePixelValue_(a,c,"left","pixelLeft")};\ngoog.style.getBorderBox=function(a){if(goog.userAgent.IE&&!goog.userAgent.isDocumentModeOrHigher(9)){var b=goog.style.getIePixelBorder_(a,"borderLeft"),c=goog.style.getIePixelBorder_(a,"borderRight"),d=goog.style.getIePixelBorder_(a,"borderTop");a=goog.style.getIePixelBorder_(a,"borderBottom");return new goog.math.Box(d,c,a,b)}b=goog.style.getComputedStyle(a,"borderLeftWidth");c=goog.style.getComputedStyle(a,"borderRightWidth");d=goog.style.getComputedStyle(a,"borderTopWidth");a=goog.style.getComputedStyle(a,\n"borderBottomWidth");return new goog.math.Box(parseFloat(d),parseFloat(c),parseFloat(a),parseFloat(b))};goog.style.getFontFamily=function(a){var b=goog.dom.getOwnerDocument(a),c="";if(b.body.createTextRange&&goog.dom.contains(b,a)){b=b.body.createTextRange();b.moveToElementText(a);try{c=b.queryCommandValue("FontName")}catch(d){c=""}}c||(c=goog.style.getStyle_(a,"fontFamily"));a=c.split(",");1<a.length&&(c=a[0]);return goog.string.stripQuotes(c,"\\"\'")};goog.style.lengthUnitRegex_=/[^\\d]+$/;\ngoog.style.getLengthUnits=function(a){return(a=a.match(goog.style.lengthUnitRegex_))&&a[0]||null};goog.style.ABSOLUTE_CSS_LENGTH_UNITS_={cm:1,"in":1,mm:1,pc:1,pt:1};goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_={em:1,ex:1};\ngoog.style.getFontSize=function(a){var b=goog.style.getStyle_(a,"fontSize"),c=goog.style.getLengthUnits(b);if(b&&"px"==c)return parseInt(b,10);if(goog.userAgent.IE){if(String(c)in goog.style.ABSOLUTE_CSS_LENGTH_UNITS_)return goog.style.getIePixelValue_(a,b,"left","pixelLeft");if(a.parentNode&&a.parentNode.nodeType==goog.dom.NodeType.ELEMENT&&String(c)in goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_)return a=a.parentNode,c=goog.style.getStyle_(a,"fontSize"),goog.style.getIePixelValue_(a,b==c?"1em":b,\n"left","pixelLeft")}c=goog.dom.createDom("SPAN",{style:"visibility:hidden;position:absolute;line-height:0;padding:0;margin:0;border:0;height:1em;"});goog.dom.appendChild(a,c);b=c.offsetHeight;goog.dom.removeNode(c);return b};goog.style.parseStyleAttribute=function(a){var b={};goog.array.forEach(a.split(/\\s*;\\s*/),function(a){var c=a.match(/\\s*([\\w-]+)\\s*\\:(.+)/);c&&(a=c[1],c=goog.string.trim(c[2]),b[goog.string.toCamelCase(a.toLowerCase())]=c)});return b};\ngoog.style.toStyleAttribute=function(a){var b=[];goog.object.forEach(a,function(a,d){b.push(goog.string.toSelectorCase(d),":",a,";")});return b.join("")};goog.style.setFloat=function(a,b){a.style[goog.userAgent.IE?"styleFloat":"cssFloat"]=b};goog.style.getFloat=function(a){return a.style[goog.userAgent.IE?"styleFloat":"cssFloat"]||""};\ngoog.style.getScrollbarWidth=function(a){var b=goog.dom.createElement("DIV");a&&(b.className=a);b.style.cssText="overflow:auto;position:absolute;top:0;width:100px;height:100px";a=goog.dom.createElement("DIV");goog.style.setSize(a,"200px","200px");b.appendChild(a);goog.dom.appendChild(goog.dom.getDocument().body,b);a=b.offsetWidth-b.clientWidth;goog.dom.removeNode(b);return a};goog.style.MATRIX_TRANSLATION_REGEX_=/matrix\\([0-9\\.\\-]+, [0-9\\.\\-]+, [0-9\\.\\-]+, [0-9\\.\\-]+, ([0-9\\.\\-]+)p?x?, ([0-9\\.\\-]+)p?x?\\)/;\ngoog.style.getCssTranslation=function(a){a=goog.style.getComputedTransform(a);return a?(a=a.match(goog.style.MATRIX_TRANSLATION_REGEX_))?new goog.math.Coordinate(parseFloat(a[1]),parseFloat(a[2])):new goog.math.Coordinate(0,0):new goog.math.Coordinate(0,0)};goog.Thenable=function(){};goog.Thenable.prototype.then=function(a,b,c){};goog.Thenable.IMPLEMENTED_BY_PROP="$goog_Thenable";goog.Thenable.addImplementation=function(a){a.prototype.then=a.prototype.then;COMPILED?a.prototype[goog.Thenable.IMPLEMENTED_BY_PROP]=!0:a.prototype.$goog_Thenable=!0};goog.Thenable.isImplementedBy=function(a){if(!a)return!1;try{return COMPILED?!!a[goog.Thenable.IMPLEMENTED_BY_PROP]:!!a.$goog_Thenable}catch(b){return!1}};goog.async={};goog.async.FreeList=function(a,b,c){this.limit_=c;this.create_=a;this.reset_=b;this.occupants_=0;this.head_=null};goog.async.FreeList.prototype.get=function(){var a;0<this.occupants_?(this.occupants_--,a=this.head_,this.head_=a.next,a.next=null):a=this.create_();return a};goog.async.FreeList.prototype.put=function(a){this.reset_(a);this.occupants_<this.limit_&&(this.occupants_++,a.next=this.head_,this.head_=a)};goog.async.FreeList.prototype.occupants=function(){return this.occupants_};goog.async.WorkQueue=function(){this.workTail_=this.workHead_=null};goog.async.WorkQueue.DEFAULT_MAX_UNUSED=100;goog.async.WorkQueue.freelist_=new goog.async.FreeList(function(){return new goog.async.WorkItem},function(a){a.reset()},goog.async.WorkQueue.DEFAULT_MAX_UNUSED);goog.async.WorkQueue.prototype.add=function(a,b){var c=this.getUnusedItem_();c.set(a,b);this.workTail_?this.workTail_.next=c:(goog.asserts.assert(!this.workHead_),this.workHead_=c);this.workTail_=c};\ngoog.async.WorkQueue.prototype.remove=function(){var a=null;this.workHead_&&(a=this.workHead_,this.workHead_=this.workHead_.next,this.workHead_||(this.workTail_=null),a.next=null);return a};goog.async.WorkQueue.prototype.returnUnused=function(a){goog.async.WorkQueue.freelist_.put(a)};goog.async.WorkQueue.prototype.getUnusedItem_=function(){return goog.async.WorkQueue.freelist_.get()};goog.async.WorkItem=function(){this.next=this.scope=this.fn=null};\ngoog.async.WorkItem.prototype.set=function(a,b){this.fn=a;this.scope=b;this.next=null};goog.async.WorkItem.prototype.reset=function(){this.next=this.scope=this.fn=null};goog.functions={};goog.functions.constant=function(a){return function(){return a}};goog.functions.FALSE=goog.functions.constant(!1);goog.functions.TRUE=goog.functions.constant(!0);goog.functions.NULL=goog.functions.constant(null);goog.functions.identity=function(a,b){return a};goog.functions.error=function(a){return function(){throw Error(a);}};goog.functions.fail=function(a){return function(){throw a;}};\ngoog.functions.lock=function(a,b){b=b||0;return function(){return a.apply(this,Array.prototype.slice.call(arguments,0,b))}};goog.functions.nth=function(a){return function(){return arguments[a]}};goog.functions.partialRight=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=Array.prototype.slice.call(arguments);b.push.apply(b,c);return a.apply(this,b)}};goog.functions.withReturnValue=function(a,b){return goog.functions.sequence(a,goog.functions.constant(b))};\ngoog.functions.equalTo=function(a,b){return function(c){return b?a==c:a===c}};goog.functions.compose=function(a,b){var c=arguments,d=c.length;return function(){var a;d&&(a=c[d-1].apply(this,arguments));for(var b=d-2;0<=b;b--)a=c[b].call(this,a);return a}};goog.functions.sequence=function(a){var b=arguments,c=b.length;return function(){for(var a,e=0;e<c;e++)a=b[e].apply(this,arguments);return a}};\ngoog.functions.and=function(a){var b=arguments,c=b.length;return function(){for(var a=0;a<c;a++)if(!b[a].apply(this,arguments))return!1;return!0}};goog.functions.or=function(a){var b=arguments,c=b.length;return function(){for(var a=0;a<c;a++)if(b[a].apply(this,arguments))return!0;return!1}};goog.functions.not=function(a){return function(){return!a.apply(this,arguments)}};\ngoog.functions.create=function(a,b){var c=function(){};c.prototype=a.prototype;c=new c;a.apply(c,Array.prototype.slice.call(arguments,1));return c};goog.functions.CACHE_RETURN_VALUE=!0;goog.functions.cacheReturnValue=function(a){var b=!1,c;return function(){if(!goog.functions.CACHE_RETURN_VALUE)return a();b||(c=a(),b=!0);return c}};goog.functions.once=function(a){var b=a;return function(){if(b){var a=b;b=null;a()}}};\ngoog.functions.debounce=function(a,b,c){c&&(a=goog.bind(a,c));var d=null;return function(c){goog.global.clearTimeout(d);var e=arguments;d=goog.global.setTimeout(function(){a.apply(null,e)},b)}};goog.functions.throttle=function(a,b,c){c&&(a=goog.bind(a,c));var d=null,e=!1,f=[],g=function(){d=null;e&&(e=!1,h())},h=function(){d=goog.global.setTimeout(g,b);a.apply(null,f)};return function(a){f=arguments;d?e=!0:h()}};goog.async.throwException=function(a){goog.global.setTimeout(function(){throw a;},0)};goog.async.nextTick=function(a,b,c){var d=a;b&&(d=goog.bind(a,b));d=goog.async.nextTick.wrapCallback_(d);goog.isFunction(goog.global.setImmediate)&&(c||goog.async.nextTick.useSetImmediate_())?goog.global.setImmediate(d):(goog.async.nextTick.setImmediate_||(goog.async.nextTick.setImmediate_=goog.async.nextTick.getSetImmediateEmulator_()),goog.async.nextTick.setImmediate_(d))};\ngoog.async.nextTick.useSetImmediate_=function(){return goog.global.Window&&goog.global.Window.prototype&&!goog.labs.userAgent.browser.isEdge()&&goog.global.Window.prototype.setImmediate==goog.global.setImmediate?!1:!0};\ngoog.async.nextTick.getSetImmediateEmulator_=function(){var a=goog.global.MessageChannel;"undefined"===typeof a&&"undefined"!==typeof window&&window.postMessage&&window.addEventListener&&!goog.labs.userAgent.engine.isPresto()&&(a=function(){var a=document.createElement("IFRAME");a.style.display="none";a.src="";document.documentElement.appendChild(a);var b=a.contentWindow,a=b.document;a.open();a.write("");a.close();var c="callImmediate"+Math.random(),d="file:"==b.location.protocol?"*":b.location.protocol+\n"//"+b.location.host,a=goog.bind(function(a){if(("*"==d||a.origin==d)&&a.data==c)this.port1.onmessage()},this);b.addEventListener("message",a,!1);this.port1={};this.port2={postMessage:function(){b.postMessage(c,d)}}});if("undefined"!==typeof a&&!goog.labs.userAgent.browser.isIE()){var b=new a,c={},d=c;b.port1.onmessage=function(){if(goog.isDef(c.next)){c=c.next;var a=c.cb;c.cb=null;a()}};return function(a){d.next={cb:a};d=d.next;b.port2.postMessage(0)}}return"undefined"!==typeof document&&"onreadystatechange"in\ndocument.createElement("SCRIPT")?function(a){var b=document.createElement("SCRIPT");b.onreadystatechange=function(){b.onreadystatechange=null;b.parentNode.removeChild(b);b=null;a();a=null};document.documentElement.appendChild(b)}:function(a){goog.global.setTimeout(a,0)}};goog.async.nextTick.wrapCallback_=goog.functions.identity;goog.debug.entryPointRegistry.register(function(a){goog.async.nextTick.wrapCallback_=a});goog.async.run=function(a,b){goog.async.run.schedule_||goog.async.run.initializeRunner_();goog.async.run.workQueueScheduled_||(goog.async.run.schedule_(),goog.async.run.workQueueScheduled_=!0);goog.async.run.workQueue_.add(a,b)};goog.async.run.initializeRunner_=function(){var a=goog.global.Promise;if(-1!=String(a).indexOf("[native code]")){var b=a.resolve(void 0);goog.async.run.schedule_=function(){b.then(goog.async.run.processWorkQueue)}}else goog.async.run.schedule_=function(){goog.async.nextTick(goog.async.run.processWorkQueue)}};\ngoog.async.run.forceNextTick=function(a){goog.async.run.schedule_=function(){goog.async.nextTick(goog.async.run.processWorkQueue);a&&a(goog.async.run.processWorkQueue)}};goog.async.run.workQueueScheduled_=!1;goog.async.run.workQueue_=new goog.async.WorkQueue;goog.DEBUG&&(goog.async.run.resetQueue=function(){goog.async.run.workQueueScheduled_=!1;goog.async.run.workQueue_=new goog.async.WorkQueue});\ngoog.async.run.processWorkQueue=function(){for(var a;a=goog.async.run.workQueue_.remove();){try{a.fn.call(a.scope)}catch(b){goog.async.throwException(b)}goog.async.run.workQueue_.returnUnused(a)}goog.async.run.workQueueScheduled_=!1};goog.promise={};goog.promise.Resolver=function(){};goog.Promise=function(a,b){this.state_=goog.Promise.State_.PENDING;this.result_=void 0;this.callbackEntriesTail_=this.callbackEntries_=this.parent_=null;this.executing_=!1;0<goog.Promise.UNHANDLED_REJECTION_DELAY?this.unhandledRejectionId_=0:0==goog.Promise.UNHANDLED_REJECTION_DELAY&&(this.hadUnhandledRejection_=!1);goog.Promise.LONG_STACK_TRACES&&(this.stack_=[],this.addStackTrace_(Error("created")),this.currentStep_=0);if(a!=goog.nullFunction)try{var c=this;a.call(b,function(a){c.resolve_(goog.Promise.State_.FULFILLED,\na)},function(a){if(goog.DEBUG&&!(a instanceof goog.Promise.CancellationError))try{if(a instanceof Error)throw a;throw Error("Promise rejected.");}catch(e){}c.resolve_(goog.Promise.State_.REJECTED,a)})}catch(d){this.resolve_(goog.Promise.State_.REJECTED,d)}};goog.Promise.LONG_STACK_TRACES=!1;goog.Promise.UNHANDLED_REJECTION_DELAY=0;goog.Promise.State_={PENDING:0,BLOCKED:1,FULFILLED:2,REJECTED:3};\ngoog.Promise.CallbackEntry_=function(){this.next=this.context=this.onRejected=this.onFulfilled=this.child=null;this.always=!1};goog.Promise.CallbackEntry_.prototype.reset=function(){this.context=this.onRejected=this.onFulfilled=this.child=null;this.always=!1};goog.Promise.DEFAULT_MAX_UNUSED=100;goog.Promise.freelist_=new goog.async.FreeList(function(){return new goog.Promise.CallbackEntry_},function(a){a.reset()},goog.Promise.DEFAULT_MAX_UNUSED);\ngoog.Promise.getCallbackEntry_=function(a,b,c){var d=goog.Promise.freelist_.get();d.onFulfilled=a;d.onRejected=b;d.context=c;return d};goog.Promise.returnEntry_=function(a){goog.Promise.freelist_.put(a)};goog.Promise.resolve=function(a){if(a instanceof goog.Promise)return a;var b=new goog.Promise(goog.nullFunction);b.resolve_(goog.Promise.State_.FULFILLED,a);return b};goog.Promise.reject=function(a){return new goog.Promise(function(b,c){c(a)})};\ngoog.Promise.resolveThen_=function(a,b,c){goog.Promise.maybeThen_(a,b,c,null)||goog.async.run(goog.partial(b,a))};goog.Promise.race=function(a){return new goog.Promise(function(b,c){a.length||b(void 0);for(var d=0,e;d<a.length;d++)e=a[d],goog.Promise.resolveThen_(e,b,c)})};\ngoog.Promise.all=function(a){return new goog.Promise(function(b,c){var d=a.length,e=[];if(d)for(var f=function(a,c){d--;e[a]=c;0==d&&b(e)},g=function(a){c(a)},h=0,k;h<a.length;h++)k=a[h],goog.Promise.resolveThen_(k,goog.partial(f,h),g);else b(e)})};\ngoog.Promise.allSettled=function(a){return new goog.Promise(function(b,c){var d=a.length,e=[];if(d)for(var f=function(a,c,f){d--;e[a]=c?{fulfilled:!0,value:f}:{fulfilled:!1,reason:f};0==d&&b(e)},g=0,h;g<a.length;g++)h=a[g],goog.Promise.resolveThen_(h,goog.partial(f,g,!0),goog.partial(f,g,!1));else b(e)})};\ngoog.Promise.firstFulfilled=function(a){return new goog.Promise(function(b,c){var d=a.length,e=[];if(d)for(var f=function(a){b(a)},g=function(a,b){d--;e[a]=b;0==d&&c(e)},h=0,k;h<a.length;h++)k=a[h],goog.Promise.resolveThen_(k,f,goog.partial(g,h));else b(void 0)})};goog.Promise.withResolver=function(){var a,b,c=new goog.Promise(function(c,e){a=c;b=e});return new goog.Promise.Resolver_(c,a,b)};\ngoog.Promise.prototype.then=function(a,b,c){null!=a&&goog.asserts.assertFunction(a,"opt_onFulfilled should be a function.");null!=b&&goog.asserts.assertFunction(b,"opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?");goog.Promise.LONG_STACK_TRACES&&this.addStackTrace_(Error("then"));return this.addChildPromise_(goog.isFunction(a)?a:null,goog.isFunction(b)?b:null,c)};goog.Thenable.addImplementation(goog.Promise);\ngoog.Promise.prototype.thenVoid=function(a,b,c){null!=a&&goog.asserts.assertFunction(a,"opt_onFulfilled should be a function.");null!=b&&goog.asserts.assertFunction(b,"opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?");goog.Promise.LONG_STACK_TRACES&&this.addStackTrace_(Error("then"));this.addCallbackEntry_(goog.Promise.getCallbackEntry_(a||goog.nullFunction,b||null,c))};\ngoog.Promise.prototype.thenAlways=function(a,b){goog.Promise.LONG_STACK_TRACES&&this.addStackTrace_(Error("thenAlways"));var c=goog.Promise.getCallbackEntry_(a,a,b);c.always=!0;this.addCallbackEntry_(c);return this};goog.Promise.prototype.thenCatch=function(a,b){goog.Promise.LONG_STACK_TRACES&&this.addStackTrace_(Error("thenCatch"));return this.addChildPromise_(null,a,b)};\ngoog.Promise.prototype.cancel=function(a){this.state_==goog.Promise.State_.PENDING&&goog.async.run(function(){var b=new goog.Promise.CancellationError(a);this.cancelInternal_(b)},this)};goog.Promise.prototype.cancelInternal_=function(a){this.state_==goog.Promise.State_.PENDING&&(this.parent_?(this.parent_.cancelChild_(this,a),this.parent_=null):this.resolve_(goog.Promise.State_.REJECTED,a))};\ngoog.Promise.prototype.cancelChild_=function(a,b){if(this.callbackEntries_){for(var c=0,d=null,e=null,f=this.callbackEntries_;f&&(f.always||(c++,f.child==a&&(d=f),!(d&&1<c)));f=f.next)d||(e=f);d&&(this.state_==goog.Promise.State_.PENDING&&1==c?this.cancelInternal_(b):(e?this.removeEntryAfter_(e):this.popEntry_(),this.executeCallback_(d,goog.Promise.State_.REJECTED,b)))}};\ngoog.Promise.prototype.addCallbackEntry_=function(a){this.hasEntry_()||this.state_!=goog.Promise.State_.FULFILLED&&this.state_!=goog.Promise.State_.REJECTED||this.scheduleCallbacks_();this.queueEntry_(a)};\ngoog.Promise.prototype.addChildPromise_=function(a,b,c){var d=goog.Promise.getCallbackEntry_(null,null,null);d.child=new goog.Promise(function(e,f){d.onFulfilled=a?function(b){try{var d=a.call(c,b);e(d)}catch(k){f(k)}}:e;d.onRejected=b?function(a){try{var d=b.call(c,a);!goog.isDef(d)&&a instanceof goog.Promise.CancellationError?f(a):e(d)}catch(k){f(k)}}:f});d.child.parent_=this;this.addCallbackEntry_(d);return d.child};\ngoog.Promise.prototype.unblockAndFulfill_=function(a){goog.asserts.assert(this.state_==goog.Promise.State_.BLOCKED);this.state_=goog.Promise.State_.PENDING;this.resolve_(goog.Promise.State_.FULFILLED,a)};goog.Promise.prototype.unblockAndReject_=function(a){goog.asserts.assert(this.state_==goog.Promise.State_.BLOCKED);this.state_=goog.Promise.State_.PENDING;this.resolve_(goog.Promise.State_.REJECTED,a)};\ngoog.Promise.prototype.resolve_=function(a,b){this.state_==goog.Promise.State_.PENDING&&(this===b&&(a=goog.Promise.State_.REJECTED,b=new TypeError("Promise cannot resolve to itself")),this.state_=goog.Promise.State_.BLOCKED,goog.Promise.maybeThen_(b,this.unblockAndFulfill_,this.unblockAndReject_,this)||(this.result_=b,this.state_=a,this.parent_=null,this.scheduleCallbacks_(),a!=goog.Promise.State_.REJECTED||b instanceof goog.Promise.CancellationError||goog.Promise.addUnhandledRejection_(this,b)))};\ngoog.Promise.maybeThen_=function(a,b,c,d){if(a instanceof goog.Promise)return a.thenVoid(b,c,d),!0;if(goog.Thenable.isImplementedBy(a))return a.then(b,c,d),!0;if(goog.isObject(a))try{var e=a.then;if(goog.isFunction(e))return goog.Promise.tryThen_(a,e,b,c,d),!0}catch(f){return c.call(d,f),!0}return!1};goog.Promise.tryThen_=function(a,b,c,d,e){var f=!1,g=function(a){f||(f=!0,c.call(e,a))},h=function(a){f||(f=!0,d.call(e,a))};try{b.call(a,g,h)}catch(k){h(k)}};\ngoog.Promise.prototype.scheduleCallbacks_=function(){this.executing_||(this.executing_=!0,goog.async.run(this.executeCallbacks_,this))};goog.Promise.prototype.hasEntry_=function(){return!!this.callbackEntries_};goog.Promise.prototype.queueEntry_=function(a){goog.asserts.assert(null!=a.onFulfilled);this.callbackEntriesTail_?this.callbackEntriesTail_.next=a:this.callbackEntries_=a;this.callbackEntriesTail_=a};\ngoog.Promise.prototype.popEntry_=function(){var a=null;this.callbackEntries_&&(a=this.callbackEntries_,this.callbackEntries_=a.next,a.next=null);this.callbackEntries_||(this.callbackEntriesTail_=null);null!=a&&goog.asserts.assert(null!=a.onFulfilled);return a};goog.Promise.prototype.removeEntryAfter_=function(a){goog.asserts.assert(this.callbackEntries_);goog.asserts.assert(null!=a);a.next==this.callbackEntriesTail_&&(this.callbackEntriesTail_=a);a.next=a.next.next};\ngoog.Promise.prototype.executeCallbacks_=function(){for(var a;a=this.popEntry_();)goog.Promise.LONG_STACK_TRACES&&this.currentStep_++,this.executeCallback_(a,this.state_,this.result_);this.executing_=!1};\ngoog.Promise.prototype.executeCallback_=function(a,b,c){b==goog.Promise.State_.REJECTED&&a.onRejected&&!a.always&&this.removeUnhandledRejection_();if(a.child)a.child.parent_=null,goog.Promise.invokeCallback_(a,b,c);else try{a.always?a.onFulfilled.call(a.context):goog.Promise.invokeCallback_(a,b,c)}catch(d){goog.Promise.handleRejection_.call(null,d)}goog.Promise.returnEntry_(a)};\ngoog.Promise.invokeCallback_=function(a,b,c){b==goog.Promise.State_.FULFILLED?a.onFulfilled.call(a.context,c):a.onRejected&&a.onRejected.call(a.context,c)};goog.Promise.prototype.addStackTrace_=function(a){if(goog.Promise.LONG_STACK_TRACES&&goog.isString(a.stack)){var b=a.stack.split("\\n",4)[3];a=a.message;a+=Array(11-a.length).join(" ");this.stack_.push(a+b)}};\ngoog.Promise.prototype.appendLongStack_=function(a){if(goog.Promise.LONG_STACK_TRACES&&a&&goog.isString(a.stack)&&this.stack_.length){for(var b=["Promise trace:"],c=this;c;c=c.parent_){for(var d=this.currentStep_;0<=d;d--)b.push(c.stack_[d]);b.push("Value: ["+(c.state_==goog.Promise.State_.REJECTED?"REJECTED":"FULFILLED")+"] <"+String(c.result_)+">")}a.stack+="\\n\\n"+b.join("\\n")}};\ngoog.Promise.prototype.removeUnhandledRejection_=function(){if(0<goog.Promise.UNHANDLED_REJECTION_DELAY)for(var a=this;a&&a.unhandledRejectionId_;a=a.parent_)goog.global.clearTimeout(a.unhandledRejectionId_),a.unhandledRejectionId_=0;else if(0==goog.Promise.UNHANDLED_REJECTION_DELAY)for(a=this;a&&a.hadUnhandledRejection_;a=a.parent_)a.hadUnhandledRejection_=!1};\ngoog.Promise.addUnhandledRejection_=function(a,b){0<goog.Promise.UNHANDLED_REJECTION_DELAY?a.unhandledRejectionId_=goog.global.setTimeout(function(){a.appendLongStack_(b);goog.Promise.handleRejection_.call(null,b)},goog.Promise.UNHANDLED_REJECTION_DELAY):0==goog.Promise.UNHANDLED_REJECTION_DELAY&&(a.hadUnhandledRejection_=!0,goog.async.run(function(){a.hadUnhandledRejection_&&(a.appendLongStack_(b),goog.Promise.handleRejection_.call(null,b))}))};goog.Promise.handleRejection_=goog.async.throwException;\ngoog.Promise.setUnhandledRejectionHandler=function(a){goog.Promise.handleRejection_=a};goog.Promise.CancellationError=function(a){goog.debug.Error.call(this,a)};goog.inherits(goog.Promise.CancellationError,goog.debug.Error);goog.Promise.CancellationError.prototype.name="cancel";goog.Promise.Resolver_=function(a,b,c){this.promise=a;this.resolve=b;this.reject=c};goog.events.EventTarget=function(){goog.Disposable.call(this);this.eventTargetListeners_=new goog.events.ListenerMap(this);this.actualEventTarget_=this;this.parentEventTarget_=null};goog.inherits(goog.events.EventTarget,goog.Disposable);goog.events.Listenable.addImplementation(goog.events.EventTarget);goog.events.EventTarget.MAX_ANCESTORS_=1E3;goog.events.EventTarget.prototype.getParentEventTarget=function(){return this.parentEventTarget_};\ngoog.events.EventTarget.prototype.setParentEventTarget=function(a){this.parentEventTarget_=a};goog.events.EventTarget.prototype.addEventListener=function(a,b,c,d){goog.events.listen(this,a,b,c,d)};goog.events.EventTarget.prototype.removeEventListener=function(a,b,c,d){goog.events.unlisten(this,a,b,c,d)};\ngoog.events.EventTarget.prototype.dispatchEvent=function(a){this.assertInitialized_();var b,c=this.getParentEventTarget();if(c){b=[];for(var d=1;c;c=c.getParentEventTarget())b.push(c),goog.asserts.assert(++d<goog.events.EventTarget.MAX_ANCESTORS_,"infinite loop")}return goog.events.EventTarget.dispatchEventInternal_(this.actualEventTarget_,a,b)};\ngoog.events.EventTarget.prototype.disposeInternal=function(){goog.events.EventTarget.superClass_.disposeInternal.call(this);this.removeAllListeners();this.parentEventTarget_=null};goog.events.EventTarget.prototype.listen=function(a,b,c,d){this.assertInitialized_();return this.eventTargetListeners_.add(String(a),b,!1,c,d)};goog.events.EventTarget.prototype.listenOnce=function(a,b,c,d){return this.eventTargetListeners_.add(String(a),b,!0,c,d)};\ngoog.events.EventTarget.prototype.unlisten=function(a,b,c,d){return this.eventTargetListeners_.remove(String(a),b,c,d)};goog.events.EventTarget.prototype.unlistenByKey=function(a){return this.eventTargetListeners_.removeByKey(a)};goog.events.EventTarget.prototype.removeAllListeners=function(a){return this.eventTargetListeners_?this.eventTargetListeners_.removeAll(a):0};\ngoog.events.EventTarget.prototype.fireListeners=function(a,b,c){a=this.eventTargetListeners_.listeners[String(a)];if(!a)return!0;a=a.concat();for(var d=!0,e=0;e<a.length;++e){var f=a[e];if(f&&!f.removed&&f.capture==b){var g=f.listener,h=f.handler||f.src;f.callOnce&&this.unlistenByKey(f);d=!1!==g.call(h,c)&&d}}return d&&0!=c.returnValue_};goog.events.EventTarget.prototype.getListeners=function(a,b){return this.eventTargetListeners_.getListeners(String(a),b)};\ngoog.events.EventTarget.prototype.getListener=function(a,b,c,d){return this.eventTargetListeners_.getListener(String(a),b,c,d)};goog.events.EventTarget.prototype.hasListener=function(a,b){var c=goog.isDef(a)?String(a):void 0;return this.eventTargetListeners_.hasListener(c,b)};goog.events.EventTarget.prototype.setTargetForTesting=function(a){this.actualEventTarget_=a};goog.events.EventTarget.prototype.assertInitialized_=function(){goog.asserts.assert(this.eventTargetListeners_,"Event target is not initialized. Did you call the superclass (goog.events.EventTarget) constructor?")};\ngoog.events.EventTarget.dispatchEventInternal_=function(a,b,c){var d=b.type||b;if(goog.isString(b))b=new goog.events.Event(b,a);else if(b instanceof goog.events.Event)b.target=b.target||a;else{var e=b;b=new goog.events.Event(d,a);goog.object.extend(b,e)}var e=!0,f;if(c)for(var g=c.length-1;!b.propagationStopped_&&0<=g;g--)f=b.currentTarget=c[g],e=f.fireListeners(d,!0,b)&&e;b.propagationStopped_||(f=b.currentTarget=a,e=f.fireListeners(d,!0,b)&&e,b.propagationStopped_||(e=f.fireListeners(d,!1,b)&&e));\nif(c)for(g=0;!b.propagationStopped_&&g<c.length;g++)f=b.currentTarget=c[g],e=f.fireListeners(d,!1,b)&&e;return e};goog.Timer=function(a,b){goog.events.EventTarget.call(this);this.interval_=a||1;this.timerObject_=b||goog.Timer.defaultTimerObject;this.boundTick_=goog.bind(this.tick_,this);this.last_=goog.now()};goog.inherits(goog.Timer,goog.events.EventTarget);goog.Timer.MAX_TIMEOUT_=2147483647;goog.Timer.INVALID_TIMEOUT_ID_=-1;goog.Timer.prototype.enabled=!1;goog.Timer.defaultTimerObject=goog.global;goog.Timer.intervalScale=.8;goog.Timer.prototype.timer_=null;goog.Timer.prototype.getInterval=function(){return this.interval_};\ngoog.Timer.prototype.setInterval=function(a){this.interval_=a;this.timer_&&this.enabled?(this.stop(),this.start()):this.timer_&&this.stop()};\ngoog.Timer.prototype.tick_=function(){if(this.enabled){var a=goog.now()-this.last_;0<a&&a<this.interval_*goog.Timer.intervalScale?this.timer_=this.timerObject_.setTimeout(this.boundTick_,this.interval_-a):(this.timer_&&(this.timerObject_.clearTimeout(this.timer_),this.timer_=null),this.dispatchTick(),this.enabled&&(this.timer_=this.timerObject_.setTimeout(this.boundTick_,this.interval_),this.last_=goog.now()))}};goog.Timer.prototype.dispatchTick=function(){this.dispatchEvent(goog.Timer.TICK)};\ngoog.Timer.prototype.start=function(){this.enabled=!0;this.timer_||(this.timer_=this.timerObject_.setTimeout(this.boundTick_,this.interval_),this.last_=goog.now())};goog.Timer.prototype.stop=function(){this.enabled=!1;this.timer_&&(this.timerObject_.clearTimeout(this.timer_),this.timer_=null)};goog.Timer.prototype.disposeInternal=function(){goog.Timer.superClass_.disposeInternal.call(this);this.stop();delete this.timerObject_};goog.Timer.TICK="tick";\ngoog.Timer.callOnce=function(a,b,c){if(goog.isFunction(a))c&&(a=goog.bind(a,c));else if(a&&"function"==typeof a.handleEvent)a=goog.bind(a.handleEvent,a);else throw Error("Invalid listener argument");return Number(b)>goog.Timer.MAX_TIMEOUT_?goog.Timer.INVALID_TIMEOUT_ID_:goog.Timer.defaultTimerObject.setTimeout(a,b||0)};goog.Timer.clear=function(a){goog.Timer.defaultTimerObject.clearTimeout(a)};\ngoog.Timer.promise=function(a,b){var c=null;return(new goog.Promise(function(d,e){c=goog.Timer.callOnce(function(){d(b)},a);c==goog.Timer.INVALID_TIMEOUT_ID_&&e(Error("Failed to schedule timer."))})).thenCatch(function(a){goog.Timer.clear(c);throw a;})};goog.events.EventHandler=function(a){goog.Disposable.call(this);this.handler_=a;this.keys_={}};goog.inherits(goog.events.EventHandler,goog.Disposable);goog.events.EventHandler.typeArray_=[];goog.events.EventHandler.prototype.listen=function(a,b,c,d){return this.listen_(a,b,c,d)};goog.events.EventHandler.prototype.listenWithScope=function(a,b,c,d,e){return this.listen_(a,b,c,d,e)};\ngoog.events.EventHandler.prototype.listen_=function(a,b,c,d,e){goog.isArray(b)||(b&&(goog.events.EventHandler.typeArray_[0]=b.toString()),b=goog.events.EventHandler.typeArray_);for(var f=0;f<b.length;f++){var g=goog.events.listen(a,b[f],c||this.handleEvent,d||!1,e||this.handler_||this);if(!g)break;this.keys_[g.key]=g}return this};goog.events.EventHandler.prototype.listenOnce=function(a,b,c,d){return this.listenOnce_(a,b,c,d)};\ngoog.events.EventHandler.prototype.listenOnceWithScope=function(a,b,c,d,e){return this.listenOnce_(a,b,c,d,e)};goog.events.EventHandler.prototype.listenOnce_=function(a,b,c,d,e){if(goog.isArray(b))for(var f=0;f<b.length;f++)this.listenOnce_(a,b[f],c,d,e);else{a=goog.events.listenOnce(a,b,c||this.handleEvent,d,e||this.handler_||this);if(!a)return this;this.keys_[a.key]=a}return this};goog.events.EventHandler.prototype.listenWithWrapper=function(a,b,c,d){return this.listenWithWrapper_(a,b,c,d)};\ngoog.events.EventHandler.prototype.listenWithWrapperAndScope=function(a,b,c,d,e){return this.listenWithWrapper_(a,b,c,d,e)};goog.events.EventHandler.prototype.listenWithWrapper_=function(a,b,c,d,e){b.listen(a,c,d,e||this.handler_||this,this);return this};goog.events.EventHandler.prototype.getListenerCount=function(){var a=0,b;for(b in this.keys_)Object.prototype.hasOwnProperty.call(this.keys_,b)&&a++;return a};\ngoog.events.EventHandler.prototype.unlisten=function(a,b,c,d,e){if(goog.isArray(b))for(var f=0;f<b.length;f++)this.unlisten(a,b[f],c,d,e);else if(a=goog.events.getListener(a,b,c||this.handleEvent,d,e||this.handler_||this))goog.events.unlistenByKey(a),delete this.keys_[a.key];return this};goog.events.EventHandler.prototype.unlistenWithWrapper=function(a,b,c,d,e){b.unlisten(a,c,d,e||this.handler_||this,this);return this};\ngoog.events.EventHandler.prototype.removeAll=function(){goog.object.forEach(this.keys_,function(a,b){this.keys_.hasOwnProperty(b)&&goog.events.unlistenByKey(a)},this);this.keys_={}};goog.events.EventHandler.prototype.disposeInternal=function(){goog.events.EventHandler.superClass_.disposeInternal.call(this);this.removeAll()};goog.events.EventHandler.prototype.handleEvent=function(a){throw Error("EventHandler.handleEvent not implemented");};goog.ui={};goog.ui.IdGenerator=function(){};goog.addSingletonGetter(goog.ui.IdGenerator);goog.ui.IdGenerator.prototype.nextId_=0;goog.ui.IdGenerator.prototype.getNextUniqueId=function(){return":"+(this.nextId_++).toString(36)};goog.ui.Component=function(a){goog.events.EventTarget.call(this);this.dom_=a||goog.dom.getDomHelper();this.rightToLeft_=goog.ui.Component.defaultRightToLeft_;this.id_=null;this.inDocument_=!1;this.element_=null;this.googUiComponentHandler_=void 0;this.childIndex_=this.children_=this.parent_=this.model_=null;this.wasDecorated_=!1};goog.inherits(goog.ui.Component,goog.events.EventTarget);goog.ui.Component.ALLOW_DETACHED_DECORATION=!1;goog.ui.Component.prototype.idGenerator_=goog.ui.IdGenerator.getInstance();\ngoog.ui.Component.DEFAULT_BIDI_DIR=0;goog.ui.Component.defaultRightToLeft_=1==goog.ui.Component.DEFAULT_BIDI_DIR?!1:-1==goog.ui.Component.DEFAULT_BIDI_DIR?!0:null;\ngoog.ui.Component.EventType={BEFORE_SHOW:"beforeshow",SHOW:"show",HIDE:"hide",DISABLE:"disable",ENABLE:"enable",HIGHLIGHT:"highlight",UNHIGHLIGHT:"unhighlight",ACTIVATE:"activate",DEACTIVATE:"deactivate",SELECT:"select",UNSELECT:"unselect",CHECK:"check",UNCHECK:"uncheck",FOCUS:"focus",BLUR:"blur",OPEN:"open",CLOSE:"close",ENTER:"enter",LEAVE:"leave",ACTION:"action",CHANGE:"change"};\ngoog.ui.Component.Error={NOT_SUPPORTED:"Method not supported",DECORATE_INVALID:"Invalid element to decorate",ALREADY_RENDERED:"Component already rendered",PARENT_UNABLE_TO_BE_SET:"Unable to set parent component",CHILD_INDEX_OUT_OF_BOUNDS:"Child component index out of bounds",NOT_OUR_CHILD:"Child is not in parent component",NOT_IN_DOCUMENT:"Operation not supported while component is not in document",STATE_INVALID:"Invalid component state"};\ngoog.ui.Component.State={ALL:255,DISABLED:1,HOVER:2,ACTIVE:4,SELECTED:8,CHECKED:16,FOCUSED:32,OPENED:64};\ngoog.ui.Component.getStateTransitionEvent=function(a,b){switch(a){case goog.ui.Component.State.DISABLED:return b?goog.ui.Component.EventType.DISABLE:goog.ui.Component.EventType.ENABLE;case goog.ui.Component.State.HOVER:return b?goog.ui.Component.EventType.HIGHLIGHT:goog.ui.Component.EventType.UNHIGHLIGHT;case goog.ui.Component.State.ACTIVE:return b?goog.ui.Component.EventType.ACTIVATE:goog.ui.Component.EventType.DEACTIVATE;case goog.ui.Component.State.SELECTED:return b?goog.ui.Component.EventType.SELECT:\ngoog.ui.Component.EventType.UNSELECT;case goog.ui.Component.State.CHECKED:return b?goog.ui.Component.EventType.CHECK:goog.ui.Component.EventType.UNCHECK;case goog.ui.Component.State.FOCUSED:return b?goog.ui.Component.EventType.FOCUS:goog.ui.Component.EventType.BLUR;case goog.ui.Component.State.OPENED:return b?goog.ui.Component.EventType.OPEN:goog.ui.Component.EventType.CLOSE}throw Error(goog.ui.Component.Error.STATE_INVALID);};\ngoog.ui.Component.setDefaultRightToLeft=function(a){goog.ui.Component.defaultRightToLeft_=a};goog.ui.Component.prototype.getId=function(){return this.id_||(this.id_=this.idGenerator_.getNextUniqueId())};goog.ui.Component.prototype.setId=function(a){this.parent_&&this.parent_.childIndex_&&(goog.object.remove(this.parent_.childIndex_,this.id_),goog.object.add(this.parent_.childIndex_,a,this));this.id_=a};goog.ui.Component.prototype.getElement=function(){return this.element_};\ngoog.ui.Component.prototype.getElementStrict=function(){var a=this.element_;goog.asserts.assert(a,"Can not call getElementStrict before rendering/decorating.");return a};goog.ui.Component.prototype.setElementInternal=function(a){this.element_=a};goog.ui.Component.prototype.getElementsByClass=function(a){return this.element_?this.dom_.getElementsByClass(a,this.element_):[]};goog.ui.Component.prototype.getElementByClass=function(a){return this.element_?this.dom_.getElementByClass(a,this.element_):null};\ngoog.ui.Component.prototype.getRequiredElementByClass=function(a){var b=this.getElementByClass(a);goog.asserts.assert(b,"Expected element in component with class: %s",a);return b};goog.ui.Component.prototype.getHandler=function(){this.googUiComponentHandler_||(this.googUiComponentHandler_=new goog.events.EventHandler(this));return this.googUiComponentHandler_};\ngoog.ui.Component.prototype.setParent=function(a){if(this==a)throw Error(goog.ui.Component.Error.PARENT_UNABLE_TO_BE_SET);if(a&&this.parent_&&this.id_&&this.parent_.getChild(this.id_)&&this.parent_!=a)throw Error(goog.ui.Component.Error.PARENT_UNABLE_TO_BE_SET);this.parent_=a;goog.ui.Component.superClass_.setParentEventTarget.call(this,a)};goog.ui.Component.prototype.getParent=function(){return this.parent_};\ngoog.ui.Component.prototype.setParentEventTarget=function(a){if(this.parent_&&this.parent_!=a)throw Error(goog.ui.Component.Error.NOT_SUPPORTED);goog.ui.Component.superClass_.setParentEventTarget.call(this,a)};goog.ui.Component.prototype.getDomHelper=function(){return this.dom_};goog.ui.Component.prototype.isInDocument=function(){return this.inDocument_};goog.ui.Component.prototype.createDom=function(){this.element_=this.dom_.createElement("DIV")};goog.ui.Component.prototype.render=function(a){this.render_(a)};\ngoog.ui.Component.prototype.renderBefore=function(a){this.render_(a.parentNode,a)};goog.ui.Component.prototype.render_=function(a,b){if(this.inDocument_)throw Error(goog.ui.Component.Error.ALREADY_RENDERED);this.element_||this.createDom();a?a.insertBefore(this.element_,b||null):this.dom_.getDocument().body.appendChild(this.element_);this.parent_&&!this.parent_.isInDocument()||this.enterDocument()};\ngoog.ui.Component.prototype.decorate=function(a){if(this.inDocument_)throw Error(goog.ui.Component.Error.ALREADY_RENDERED);if(a&&this.canDecorate(a)){this.wasDecorated_=!0;var b=goog.dom.getOwnerDocument(a);this.dom_&&this.dom_.getDocument()==b||(this.dom_=goog.dom.getDomHelper(a));this.decorateInternal(a);goog.ui.Component.ALLOW_DETACHED_DECORATION&&!goog.dom.contains(b,a)||this.enterDocument()}else throw Error(goog.ui.Component.Error.DECORATE_INVALID);};goog.ui.Component.prototype.canDecorate=function(a){return!0};\ngoog.ui.Component.prototype.wasDecorated=function(){return this.wasDecorated_};goog.ui.Component.prototype.decorateInternal=function(a){this.element_=a};goog.ui.Component.prototype.enterDocument=function(){this.inDocument_=!0;this.forEachChild(function(a){!a.isInDocument()&&a.getElement()&&a.enterDocument()})};\ngoog.ui.Component.prototype.exitDocument=function(){this.forEachChild(function(a){a.isInDocument()&&a.exitDocument()});this.googUiComponentHandler_&&this.googUiComponentHandler_.removeAll();this.inDocument_=!1};\ngoog.ui.Component.prototype.disposeInternal=function(){this.inDocument_&&this.exitDocument();this.googUiComponentHandler_&&(this.googUiComponentHandler_.dispose(),delete this.googUiComponentHandler_);this.forEachChild(function(a){a.dispose()});!this.wasDecorated_&&this.element_&&goog.dom.removeNode(this.element_);this.parent_=this.model_=this.element_=this.childIndex_=this.children_=null;goog.ui.Component.superClass_.disposeInternal.call(this)};\ngoog.ui.Component.prototype.makeId=function(a){return this.getId()+"."+a};goog.ui.Component.prototype.makeIds=function(a){var b={},c;for(c in a)b[c]=this.makeId(a[c]);return b};goog.ui.Component.prototype.getModel=function(){return this.model_};goog.ui.Component.prototype.setModel=function(a){this.model_=a};goog.ui.Component.prototype.getFragmentFromId=function(a){return a.substring(this.getId().length+1)};\ngoog.ui.Component.prototype.getElementByFragment=function(a){if(!this.inDocument_)throw Error(goog.ui.Component.Error.NOT_IN_DOCUMENT);return this.dom_.getElement(this.makeId(a))};goog.ui.Component.prototype.addChild=function(a,b){this.addChildAt(a,this.getChildCount(),b)};\ngoog.ui.Component.prototype.addChildAt=function(a,b,c){goog.asserts.assert(!!a,"Provided element must not be null.");if(a.inDocument_&&(c||!this.inDocument_))throw Error(goog.ui.Component.Error.ALREADY_RENDERED);if(0>b||b>this.getChildCount())throw Error(goog.ui.Component.Error.CHILD_INDEX_OUT_OF_BOUNDS);this.childIndex_&&this.children_||(this.childIndex_={},this.children_=[]);a.getParent()==this?(goog.object.set(this.childIndex_,a.getId(),a),goog.array.remove(this.children_,a)):goog.object.add(this.childIndex_,\na.getId(),a);a.setParent(this);goog.array.insertAt(this.children_,a,b);a.inDocument_&&this.inDocument_&&a.getParent()==this?(c=this.getContentElement(),b=c.childNodes[b]||null,b!=a.getElement()&&c.insertBefore(a.getElement(),b)):c?(this.element_||this.createDom(),b=this.getChildAt(b+1),a.render_(this.getContentElement(),b?b.element_:null)):this.inDocument_&&!a.inDocument_&&a.element_&&a.element_.parentNode&&a.element_.parentNode.nodeType==goog.dom.NodeType.ELEMENT&&a.enterDocument()};\ngoog.ui.Component.prototype.getContentElement=function(){return this.element_};goog.ui.Component.prototype.isRightToLeft=function(){null==this.rightToLeft_&&(this.rightToLeft_=goog.style.isRightToLeft(this.inDocument_?this.element_:this.dom_.getDocument().body));return this.rightToLeft_};goog.ui.Component.prototype.setRightToLeft=function(a){if(this.inDocument_)throw Error(goog.ui.Component.Error.ALREADY_RENDERED);this.rightToLeft_=a};\ngoog.ui.Component.prototype.hasChildren=function(){return!!this.children_&&0!=this.children_.length};goog.ui.Component.prototype.getChildCount=function(){return this.children_?this.children_.length:0};goog.ui.Component.prototype.getChildIds=function(){var a=[];this.forEachChild(function(b){a.push(b.getId())});return a};goog.ui.Component.prototype.getChild=function(a){return this.childIndex_&&a?goog.object.get(this.childIndex_,a)||null:null};\ngoog.ui.Component.prototype.getChildAt=function(a){return this.children_?this.children_[a]||null:null};goog.ui.Component.prototype.forEachChild=function(a,b){this.children_&&goog.array.forEach(this.children_,a,b)};goog.ui.Component.prototype.indexOfChild=function(a){return this.children_&&a?goog.array.indexOf(this.children_,a):-1};\ngoog.ui.Component.prototype.removeChild=function(a,b){if(a){var c=goog.isString(a)?a:a.getId();a=this.getChild(c);c&&a&&(goog.object.remove(this.childIndex_,c),goog.array.remove(this.children_,a),b&&(a.exitDocument(),a.element_&&goog.dom.removeNode(a.element_)),a.setParent(null))}if(!a)throw Error(goog.ui.Component.Error.NOT_OUR_CHILD);return a};goog.ui.Component.prototype.removeChildAt=function(a,b){return this.removeChild(this.getChildAt(a),b)};\ngoog.ui.Component.prototype.removeChildren=function(a){for(var b=[];this.hasChildren();)b.push(this.removeChildAt(0,a));return b};goog.a11y={};goog.a11y.aria={};\ngoog.a11y.aria.Role={ALERT:"alert",ALERTDIALOG:"alertdialog",APPLICATION:"application",ARTICLE:"article",BANNER:"banner",BUTTON:"button",CHECKBOX:"checkbox",COLUMNHEADER:"columnheader",COMBOBOX:"combobox",COMPLEMENTARY:"complementary",CONTENTINFO:"contentinfo",DEFINITION:"definition",DIALOG:"dialog",DIRECTORY:"directory",DOCUMENT:"document",FORM:"form",GRID:"grid",GRIDCELL:"gridcell",GROUP:"group",HEADING:"heading",IMG:"img",LINK:"link",LIST:"list",LISTBOX:"listbox",LISTITEM:"listitem",LOG:"log",\nMAIN:"main",MARQUEE:"marquee",MATH:"math",MENU:"menu",MENUBAR:"menubar",MENU_ITEM:"menuitem",MENU_ITEM_CHECKBOX:"menuitemcheckbox",MENU_ITEM_RADIO:"menuitemradio",NAVIGATION:"navigation",NOTE:"note",OPTION:"option",PRESENTATION:"presentation",PROGRESSBAR:"progressbar",RADIO:"radio",RADIOGROUP:"radiogroup",REGION:"region",ROW:"row",ROWGROUP:"rowgroup",ROWHEADER:"rowheader",SCROLLBAR:"scrollbar",SEARCH:"search",SEPARATOR:"separator",SLIDER:"slider",SPINBUTTON:"spinbutton",STATUS:"status",TAB:"tab",\nTAB_LIST:"tablist",TAB_PANEL:"tabpanel",TEXTBOX:"textbox",TEXTINFO:"textinfo",TIMER:"timer",TOOLBAR:"toolbar",TOOLTIP:"tooltip",TREE:"tree",TREEGRID:"treegrid",TREEITEM:"treeitem"};goog.a11y.aria.State={ACTIVEDESCENDANT:"activedescendant",ATOMIC:"atomic",AUTOCOMPLETE:"autocomplete",BUSY:"busy",CHECKED:"checked",CONTROLS:"controls",DESCRIBEDBY:"describedby",DISABLED:"disabled",DROPEFFECT:"dropeffect",EXPANDED:"expanded",FLOWTO:"flowto",GRABBED:"grabbed",HASPOPUP:"haspopup",HIDDEN:"hidden",INVALID:"invalid",LABEL:"label",LABELLEDBY:"labelledby",LEVEL:"level",LIVE:"live",MULTILINE:"multiline",MULTISELECTABLE:"multiselectable",ORIENTATION:"orientation",OWNS:"owns",POSINSET:"posinset",\nPRESSED:"pressed",READONLY:"readonly",RELEVANT:"relevant",REQUIRED:"required",SELECTED:"selected",SETSIZE:"setsize",SORT:"sort",VALUEMAX:"valuemax",VALUEMIN:"valuemin",VALUENOW:"valuenow",VALUETEXT:"valuetext"};goog.a11y.aria.AutoCompleteValues={INLINE:"inline",LIST:"list",BOTH:"both",NONE:"none"};goog.a11y.aria.DropEffectValues={COPY:"copy",MOVE:"move",LINK:"link",EXECUTE:"execute",POPUP:"popup",NONE:"none"};goog.a11y.aria.LivePriority={OFF:"off",POLITE:"polite",ASSERTIVE:"assertive"};\ngoog.a11y.aria.OrientationValues={VERTICAL:"vertical",HORIZONTAL:"horizontal"};goog.a11y.aria.RelevantValues={ADDITIONS:"additions",REMOVALS:"removals",TEXT:"text",ALL:"all"};goog.a11y.aria.SortValues={ASCENDING:"ascending",DESCENDING:"descending",NONE:"none",OTHER:"other"};goog.a11y.aria.CheckedValues={TRUE:"true",FALSE:"false",MIXED:"mixed",UNDEFINED:"undefined"};goog.a11y.aria.ExpandedValues={TRUE:"true",FALSE:"false",UNDEFINED:"undefined"};\ngoog.a11y.aria.GrabbedValues={TRUE:"true",FALSE:"false",UNDEFINED:"undefined"};goog.a11y.aria.InvalidValues={FALSE:"false",TRUE:"true",GRAMMAR:"grammar",SPELLING:"spelling"};goog.a11y.aria.PressedValues={TRUE:"true",FALSE:"false",MIXED:"mixed",UNDEFINED:"undefined"};goog.a11y.aria.SelectedValues={TRUE:"true",FALSE:"false",UNDEFINED:"undefined"};goog.a11y.aria.datatables={};\ngoog.a11y.aria.datatables.getDefaultValuesMap=function(){goog.a11y.aria.DefaultStateValueMap_||(goog.a11y.aria.DefaultStateValueMap_=goog.object.create(goog.a11y.aria.State.ATOMIC,!1,goog.a11y.aria.State.AUTOCOMPLETE,"none",goog.a11y.aria.State.DROPEFFECT,"none",goog.a11y.aria.State.HASPOPUP,!1,goog.a11y.aria.State.LIVE,"off",goog.a11y.aria.State.MULTILINE,!1,goog.a11y.aria.State.MULTISELECTABLE,!1,goog.a11y.aria.State.ORIENTATION,"vertical",goog.a11y.aria.State.READONLY,!1,goog.a11y.aria.State.RELEVANT,\n"additions text",goog.a11y.aria.State.REQUIRED,!1,goog.a11y.aria.State.SORT,"none",goog.a11y.aria.State.BUSY,!1,goog.a11y.aria.State.DISABLED,!1,goog.a11y.aria.State.HIDDEN,!1,goog.a11y.aria.State.INVALID,"false"));return goog.a11y.aria.DefaultStateValueMap_};goog.a11y.aria.ARIA_PREFIX_="aria-";goog.a11y.aria.ROLE_ATTRIBUTE_="role";goog.a11y.aria.TAGS_WITH_ASSUMED_ROLES_=goog.object.createSet("A AREA BUTTON HEAD INPUT LINK MENU META OPTGROUP OPTION PROGRESS STYLE SELECT SOURCE TEXTAREA TITLE TRACK".split(" "));\ngoog.a11y.aria.CONTAINER_ROLES_=[goog.a11y.aria.Role.COMBOBOX,goog.a11y.aria.Role.GRID,goog.a11y.aria.Role.GROUP,goog.a11y.aria.Role.LISTBOX,goog.a11y.aria.Role.MENU,goog.a11y.aria.Role.MENUBAR,goog.a11y.aria.Role.RADIOGROUP,goog.a11y.aria.Role.ROW,goog.a11y.aria.Role.ROWGROUP,goog.a11y.aria.Role.TAB_LIST,goog.a11y.aria.Role.TEXTBOX,goog.a11y.aria.Role.TOOLBAR,goog.a11y.aria.Role.TREE,goog.a11y.aria.Role.TREEGRID];\ngoog.a11y.aria.setRole=function(a,b){b?(goog.asserts.ENABLE_ASSERTS&&goog.asserts.assert(goog.object.containsValue(goog.a11y.aria.Role,b),"No such ARIA role "+b),a.setAttribute(goog.a11y.aria.ROLE_ATTRIBUTE_,b)):goog.a11y.aria.removeRole(a)};goog.a11y.aria.getRole=function(a){return a.getAttribute(goog.a11y.aria.ROLE_ATTRIBUTE_)||null};goog.a11y.aria.removeRole=function(a){a.removeAttribute(goog.a11y.aria.ROLE_ATTRIBUTE_)};\ngoog.a11y.aria.setState=function(a,b,c){goog.isArray(c)&&(c=c.join(" "));var d=goog.a11y.aria.getAriaAttributeName_(b);""===c||void 0==c?(c=goog.a11y.aria.datatables.getDefaultValuesMap(),b in c?a.setAttribute(d,c[b]):a.removeAttribute(d)):a.setAttribute(d,c)};goog.a11y.aria.toggleState=function(a,b){var c=goog.a11y.aria.getState(a,b);goog.string.isEmptyOrWhitespace(goog.string.makeSafe(c))||"true"==c||"false"==c?goog.a11y.aria.setState(a,b,"true"==c?"false":"true"):goog.a11y.aria.removeState(a,b)};\ngoog.a11y.aria.removeState=function(a,b){a.removeAttribute(goog.a11y.aria.getAriaAttributeName_(b))};goog.a11y.aria.getState=function(a,b){var c=a.getAttribute(goog.a11y.aria.getAriaAttributeName_(b));return null==c||void 0==c?"":String(c)};goog.a11y.aria.getActiveDescendant=function(a){var b=goog.a11y.aria.getState(a,goog.a11y.aria.State.ACTIVEDESCENDANT);return goog.dom.getOwnerDocument(a).getElementById(b)};\ngoog.a11y.aria.setActiveDescendant=function(a,b){var c="";b&&(c=b.id,goog.asserts.assert(c,"The active element should have an id."));goog.a11y.aria.setState(a,goog.a11y.aria.State.ACTIVEDESCENDANT,c)};goog.a11y.aria.getLabel=function(a){return goog.a11y.aria.getState(a,goog.a11y.aria.State.LABEL)};goog.a11y.aria.setLabel=function(a,b){goog.a11y.aria.setState(a,goog.a11y.aria.State.LABEL,b)};\ngoog.a11y.aria.assertRoleIsSetInternalUtil=function(a,b){if(!goog.a11y.aria.TAGS_WITH_ASSUMED_ROLES_[a.tagName]){var c=goog.a11y.aria.getRole(a);goog.asserts.assert(null!=c,"The element ARIA role cannot be null.");goog.asserts.assert(goog.array.contains(b,c),\'Non existing or incorrect role set for element.The role set is "\'+c+\'". The role should be any of "\'+b+\'". Check the ARIA specification for more details http://www.w3.org/TR/wai-aria/roles.\')}};\ngoog.a11y.aria.getStateBoolean=function(a,b){var c=a.getAttribute(goog.a11y.aria.getAriaAttributeName_(b));goog.asserts.assert(goog.isBoolean(c)||null==c||"true"==c||"false"==c);return null==c?c:goog.isBoolean(c)?c:"true"==c};goog.a11y.aria.getStateNumber=function(a,b){var c=a.getAttribute(goog.a11y.aria.getAriaAttributeName_(b));goog.asserts.assert((null==c||!isNaN(Number(c)))&&!goog.isBoolean(c));return null==c?null:Number(c)};\ngoog.a11y.aria.getStateString=function(a,b){var c=a.getAttribute(goog.a11y.aria.getAriaAttributeName_(b));goog.asserts.assert((null==c||goog.isString(c))&&(""==c||isNaN(Number(c)))&&"true"!=c&&"false"!=c);return null==c||""==c?null:c};goog.a11y.aria.getStringArrayStateInternalUtil=function(a,b){var c=a.getAttribute(goog.a11y.aria.getAriaAttributeName_(b));return goog.a11y.aria.splitStringOnWhitespace_(c)};goog.a11y.aria.hasState=function(a,b){return a.hasAttribute(goog.a11y.aria.getAriaAttributeName_(b))};\ngoog.a11y.aria.isContainerRole=function(a){a=goog.a11y.aria.getRole(a);return goog.array.contains(goog.a11y.aria.CONTAINER_ROLES_,a)};goog.a11y.aria.splitStringOnWhitespace_=function(a){return a?a.split(/\\s+/):[]};goog.a11y.aria.getAriaAttributeName_=function(a){goog.asserts.ENABLE_ASSERTS&&(goog.asserts.assert(a,"ARIA attribute cannot be empty."),goog.asserts.assert(goog.object.containsValue(goog.a11y.aria.State,a),"No such ARIA attribute "+a));return goog.a11y.aria.ARIA_PREFIX_+a};goog.events.KeyCodes={WIN_KEY_FF_LINUX:0,MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PLUS_SIGN:43,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,FF_SEMICOLON:59,FF_EQUALS:61,FF_DASH:173,QUESTION_MARK:63,AT_SIGN:64,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,\nQ:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SCROLL_LOCK:145,FIRST_MEDIA_KEY:166,LAST_MEDIA_KEY:183,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,\nSLASH:191,APOSTROPHE:192,TILDE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,MAC_WK_CMD_LEFT:91,MAC_WK_CMD_RIGHT:93,WIN_IME:229,VK_NONAME:252,PHANTOM:255};\ngoog.events.KeyCodes.isTextModifyingKeyEvent=function(a){if(a.altKey&&!a.ctrlKey||a.metaKey||a.keyCode>=goog.events.KeyCodes.F1&&a.keyCode<=goog.events.KeyCodes.F12)return!1;switch(a.keyCode){case goog.events.KeyCodes.ALT:case goog.events.KeyCodes.CAPS_LOCK:case goog.events.KeyCodes.CONTEXT_MENU:case goog.events.KeyCodes.CTRL:case goog.events.KeyCodes.DOWN:case goog.events.KeyCodes.END:case goog.events.KeyCodes.ESC:case goog.events.KeyCodes.HOME:case goog.events.KeyCodes.INSERT:case goog.events.KeyCodes.LEFT:case goog.events.KeyCodes.MAC_FF_META:case goog.events.KeyCodes.META:case goog.events.KeyCodes.NUMLOCK:case goog.events.KeyCodes.NUM_CENTER:case goog.events.KeyCodes.PAGE_DOWN:case goog.events.KeyCodes.PAGE_UP:case goog.events.KeyCodes.PAUSE:case goog.events.KeyCodes.PHANTOM:case goog.events.KeyCodes.PRINT_SCREEN:case goog.events.KeyCodes.RIGHT:case goog.events.KeyCodes.SCROLL_LOCK:case goog.events.KeyCodes.SHIFT:case goog.events.KeyCodes.UP:case goog.events.KeyCodes.VK_NONAME:case goog.events.KeyCodes.WIN_KEY:case goog.events.KeyCodes.WIN_KEY_RIGHT:return!1;case goog.events.KeyCodes.WIN_KEY_FF_LINUX:return!goog.userAgent.GECKO;\ndefault:return a.keyCode<goog.events.KeyCodes.FIRST_MEDIA_KEY||a.keyCode>goog.events.KeyCodes.LAST_MEDIA_KEY}};\ngoog.events.KeyCodes.firesKeyPressEvent=function(a,b,c,d,e,f){if(!(goog.userAgent.IE||goog.userAgent.EDGE||goog.userAgent.WEBKIT&&goog.userAgent.isVersionOrHigher("525")))return!0;if(goog.userAgent.MAC&&e)return goog.events.KeyCodes.isCharacterKey(a);if(e&&!d)return!1;goog.isNumber(b)&&(b=goog.events.KeyCodes.normalizeKeyCode(b));e=b==goog.events.KeyCodes.CTRL||b==goog.events.KeyCodes.ALT||goog.userAgent.MAC&&b==goog.events.KeyCodes.META;f=b==goog.events.KeyCodes.SHIFT&&(d||f);if((!c||goog.userAgent.MAC)&&\ne||goog.userAgent.MAC&&f)return!1;if((goog.userAgent.WEBKIT||goog.userAgent.EDGE)&&d&&c)switch(a){case goog.events.KeyCodes.BACKSLASH:case goog.events.KeyCodes.OPEN_SQUARE_BRACKET:case goog.events.KeyCodes.CLOSE_SQUARE_BRACKET:case goog.events.KeyCodes.TILDE:case goog.events.KeyCodes.SEMICOLON:case goog.events.KeyCodes.DASH:case goog.events.KeyCodes.EQUALS:case goog.events.KeyCodes.COMMA:case goog.events.KeyCodes.PERIOD:case goog.events.KeyCodes.SLASH:case goog.events.KeyCodes.APOSTROPHE:case goog.events.KeyCodes.SINGLE_QUOTE:return!1}if(goog.userAgent.IE&&\nd&&b==a)return!1;switch(a){case goog.events.KeyCodes.ENTER:return!0;case goog.events.KeyCodes.ESC:return!(goog.userAgent.WEBKIT||goog.userAgent.EDGE)}return goog.events.KeyCodes.isCharacterKey(a)};\ngoog.events.KeyCodes.isCharacterKey=function(a){if(a>=goog.events.KeyCodes.ZERO&&a<=goog.events.KeyCodes.NINE||a>=goog.events.KeyCodes.NUM_ZERO&&a<=goog.events.KeyCodes.NUM_MULTIPLY||a>=goog.events.KeyCodes.A&&a<=goog.events.KeyCodes.Z||(goog.userAgent.WEBKIT||goog.userAgent.EDGE)&&0==a)return!0;switch(a){case goog.events.KeyCodes.SPACE:case goog.events.KeyCodes.PLUS_SIGN:case goog.events.KeyCodes.QUESTION_MARK:case goog.events.KeyCodes.AT_SIGN:case goog.events.KeyCodes.NUM_PLUS:case goog.events.KeyCodes.NUM_MINUS:case goog.events.KeyCodes.NUM_PERIOD:case goog.events.KeyCodes.NUM_DIVISION:case goog.events.KeyCodes.SEMICOLON:case goog.events.KeyCodes.FF_SEMICOLON:case goog.events.KeyCodes.DASH:case goog.events.KeyCodes.EQUALS:case goog.events.KeyCodes.FF_EQUALS:case goog.events.KeyCodes.COMMA:case goog.events.KeyCodes.PERIOD:case goog.events.KeyCodes.SLASH:case goog.events.KeyCodes.APOSTROPHE:case goog.events.KeyCodes.SINGLE_QUOTE:case goog.events.KeyCodes.OPEN_SQUARE_BRACKET:case goog.events.KeyCodes.BACKSLASH:case goog.events.KeyCodes.CLOSE_SQUARE_BRACKET:return!0;default:return!1}};\ngoog.events.KeyCodes.normalizeKeyCode=function(a){return goog.userAgent.GECKO?goog.events.KeyCodes.normalizeGeckoKeyCode(a):goog.userAgent.MAC&&goog.userAgent.WEBKIT?goog.events.KeyCodes.normalizeMacWebKitKeyCode(a):a};\ngoog.events.KeyCodes.normalizeGeckoKeyCode=function(a){switch(a){case goog.events.KeyCodes.FF_EQUALS:return goog.events.KeyCodes.EQUALS;case goog.events.KeyCodes.FF_SEMICOLON:return goog.events.KeyCodes.SEMICOLON;case goog.events.KeyCodes.FF_DASH:return goog.events.KeyCodes.DASH;case goog.events.KeyCodes.MAC_FF_META:return goog.events.KeyCodes.META;case goog.events.KeyCodes.WIN_KEY_FF_LINUX:return goog.events.KeyCodes.WIN_KEY;default:return a}};\ngoog.events.KeyCodes.normalizeMacWebKitKeyCode=function(a){switch(a){case goog.events.KeyCodes.MAC_WK_CMD_RIGHT:return goog.events.KeyCodes.META;default:return a}};goog.events.KeyHandler=function(a,b){goog.events.EventTarget.call(this);a&&this.attach(a,b)};goog.inherits(goog.events.KeyHandler,goog.events.EventTarget);goog.events.KeyHandler.prototype.element_=null;goog.events.KeyHandler.prototype.keyPressKey_=null;goog.events.KeyHandler.prototype.keyDownKey_=null;goog.events.KeyHandler.prototype.keyUpKey_=null;goog.events.KeyHandler.prototype.lastKey_=-1;goog.events.KeyHandler.prototype.keyCode_=-1;goog.events.KeyHandler.prototype.altKey_=!1;\ngoog.events.KeyHandler.EventType={KEY:"key"};\ngoog.events.KeyHandler.safariKey_={3:goog.events.KeyCodes.ENTER,12:goog.events.KeyCodes.NUMLOCK,63232:goog.events.KeyCodes.UP,63233:goog.events.KeyCodes.DOWN,63234:goog.events.KeyCodes.LEFT,63235:goog.events.KeyCodes.RIGHT,63236:goog.events.KeyCodes.F1,63237:goog.events.KeyCodes.F2,63238:goog.events.KeyCodes.F3,63239:goog.events.KeyCodes.F4,63240:goog.events.KeyCodes.F5,63241:goog.events.KeyCodes.F6,63242:goog.events.KeyCodes.F7,63243:goog.events.KeyCodes.F8,63244:goog.events.KeyCodes.F9,63245:goog.events.KeyCodes.F10,\n63246:goog.events.KeyCodes.F11,63247:goog.events.KeyCodes.F12,63248:goog.events.KeyCodes.PRINT_SCREEN,63272:goog.events.KeyCodes.DELETE,63273:goog.events.KeyCodes.HOME,63275:goog.events.KeyCodes.END,63276:goog.events.KeyCodes.PAGE_UP,63277:goog.events.KeyCodes.PAGE_DOWN,63289:goog.events.KeyCodes.NUMLOCK,63302:goog.events.KeyCodes.INSERT};\ngoog.events.KeyHandler.keyIdentifier_={Up:goog.events.KeyCodes.UP,Down:goog.events.KeyCodes.DOWN,Left:goog.events.KeyCodes.LEFT,Right:goog.events.KeyCodes.RIGHT,Enter:goog.events.KeyCodes.ENTER,F1:goog.events.KeyCodes.F1,F2:goog.events.KeyCodes.F2,F3:goog.events.KeyCodes.F3,F4:goog.events.KeyCodes.F4,F5:goog.events.KeyCodes.F5,F6:goog.events.KeyCodes.F6,F7:goog.events.KeyCodes.F7,F8:goog.events.KeyCodes.F8,F9:goog.events.KeyCodes.F9,F10:goog.events.KeyCodes.F10,F11:goog.events.KeyCodes.F11,F12:goog.events.KeyCodes.F12,\n"U+007F":goog.events.KeyCodes.DELETE,Home:goog.events.KeyCodes.HOME,End:goog.events.KeyCodes.END,PageUp:goog.events.KeyCodes.PAGE_UP,PageDown:goog.events.KeyCodes.PAGE_DOWN,Insert:goog.events.KeyCodes.INSERT};goog.events.KeyHandler.USES_KEYDOWN_=goog.userAgent.IE||goog.userAgent.EDGE||goog.userAgent.WEBKIT&&goog.userAgent.isVersionOrHigher("525");goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_=goog.userAgent.MAC&&goog.userAgent.GECKO;\ngoog.events.KeyHandler.prototype.handleKeyDown_=function(a){(goog.userAgent.WEBKIT||goog.userAgent.EDGE)&&(this.lastKey_==goog.events.KeyCodes.CTRL&&!a.ctrlKey||this.lastKey_==goog.events.KeyCodes.ALT&&!a.altKey||goog.userAgent.MAC&&this.lastKey_==goog.events.KeyCodes.META&&!a.metaKey)&&this.resetState();-1==this.lastKey_&&(a.ctrlKey&&a.keyCode!=goog.events.KeyCodes.CTRL?this.lastKey_=goog.events.KeyCodes.CTRL:a.altKey&&a.keyCode!=goog.events.KeyCodes.ALT?this.lastKey_=goog.events.KeyCodes.ALT:a.metaKey&&\na.keyCode!=goog.events.KeyCodes.META&&(this.lastKey_=goog.events.KeyCodes.META));goog.events.KeyHandler.USES_KEYDOWN_&&!goog.events.KeyCodes.firesKeyPressEvent(a.keyCode,this.lastKey_,a.shiftKey,a.ctrlKey,a.altKey,a.metaKey)?this.handleEvent(a):(this.keyCode_=goog.events.KeyCodes.normalizeKeyCode(a.keyCode),goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_&&(this.altKey_=a.altKey))};goog.events.KeyHandler.prototype.resetState=function(){this.keyCode_=this.lastKey_=-1};\ngoog.events.KeyHandler.prototype.handleKeyup_=function(a){this.resetState();this.altKey_=a.altKey};\ngoog.events.KeyHandler.prototype.handleEvent=function(a){var b=a.getBrowserEvent(),c,d,e=b.altKey;goog.userAgent.IE&&a.type==goog.events.EventType.KEYPRESS?(c=this.keyCode_,d=c!=goog.events.KeyCodes.ENTER&&c!=goog.events.KeyCodes.ESC?b.keyCode:0):(goog.userAgent.WEBKIT||goog.userAgent.EDGE)&&a.type==goog.events.EventType.KEYPRESS?(c=this.keyCode_,d=0<=b.charCode&&63232>b.charCode&&goog.events.KeyCodes.isCharacterKey(c)?b.charCode:0):goog.userAgent.OPERA&&!goog.userAgent.WEBKIT?(c=this.keyCode_,d=\ngoog.events.KeyCodes.isCharacterKey(c)?b.keyCode:0):(c=b.keyCode||this.keyCode_,d=b.charCode||0,goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_&&(e=this.altKey_),goog.userAgent.MAC&&d==goog.events.KeyCodes.QUESTION_MARK&&c==goog.events.KeyCodes.WIN_KEY&&(c=goog.events.KeyCodes.SLASH));var f=c=goog.events.KeyCodes.normalizeKeyCode(c);c?63232<=c&&c in goog.events.KeyHandler.safariKey_?f=goog.events.KeyHandler.safariKey_[c]:25==c&&a.shiftKey&&(f=9):b.keyIdentifier&&b.keyIdentifier in goog.events.KeyHandler.keyIdentifier_&&\n(f=goog.events.KeyHandler.keyIdentifier_[b.keyIdentifier]);a=f==this.lastKey_;this.lastKey_=f;b=new goog.events.KeyEvent(f,d,a,b);b.altKey=e;this.dispatchEvent(b)};goog.events.KeyHandler.prototype.getElement=function(){return this.element_};\ngoog.events.KeyHandler.prototype.attach=function(a,b){this.keyUpKey_&&this.detach();this.element_=a;this.keyPressKey_=goog.events.listen(this.element_,goog.events.EventType.KEYPRESS,this,b);this.keyDownKey_=goog.events.listen(this.element_,goog.events.EventType.KEYDOWN,this.handleKeyDown_,b,this);this.keyUpKey_=goog.events.listen(this.element_,goog.events.EventType.KEYUP,this.handleKeyup_,b,this)};\ngoog.events.KeyHandler.prototype.detach=function(){this.keyPressKey_&&(goog.events.unlistenByKey(this.keyPressKey_),goog.events.unlistenByKey(this.keyDownKey_),goog.events.unlistenByKey(this.keyUpKey_),this.keyUpKey_=this.keyDownKey_=this.keyPressKey_=null);this.element_=null;this.keyCode_=this.lastKey_=-1};goog.events.KeyHandler.prototype.disposeInternal=function(){goog.events.KeyHandler.superClass_.disposeInternal.call(this);this.detach()};\ngoog.events.KeyEvent=function(a,b,c,d){goog.events.BrowserEvent.call(this,d);this.type=goog.events.KeyHandler.EventType.KEY;this.keyCode=a;this.charCode=b;this.repeat=c};goog.inherits(goog.events.KeyEvent,goog.events.BrowserEvent);goog.dom.classlist={};goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST=!1;goog.dom.classlist.get=function(a){if(goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST||a.classList)return a.classList;a=a.className;return goog.isString(a)&&a.match(/\\S+/g)||[]};goog.dom.classlist.set=function(a,b){a.className=b};goog.dom.classlist.contains=function(a,b){return goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST||a.classList?a.classList.contains(b):goog.array.contains(goog.dom.classlist.get(a),b)};\ngoog.dom.classlist.add=function(a,b){goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST||a.classList?a.classList.add(b):goog.dom.classlist.contains(a,b)||(a.className+=0<a.className.length?" "+b:b)};\ngoog.dom.classlist.addAll=function(a,b){if(goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST||a.classList)goog.array.forEach(b,function(b){goog.dom.classlist.add(a,b)});else{var c={};goog.array.forEach(goog.dom.classlist.get(a),function(a){c[a]=!0});goog.array.forEach(b,function(a){c[a]=!0});a.className="";for(var d in c)a.className+=0<a.className.length?" "+d:d}};\ngoog.dom.classlist.remove=function(a,b){goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST||a.classList?a.classList.remove(b):goog.dom.classlist.contains(a,b)&&(a.className=goog.array.filter(goog.dom.classlist.get(a),function(a){return a!=b}).join(" "))};\ngoog.dom.classlist.removeAll=function(a,b){goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST||a.classList?goog.array.forEach(b,function(b){goog.dom.classlist.remove(a,b)}):a.className=goog.array.filter(goog.dom.classlist.get(a),function(a){return!goog.array.contains(b,a)}).join(" ")};goog.dom.classlist.enable=function(a,b,c){c?goog.dom.classlist.add(a,b):goog.dom.classlist.remove(a,b)};goog.dom.classlist.enableAll=function(a,b,c){(c?goog.dom.classlist.addAll:goog.dom.classlist.removeAll)(a,b)};\ngoog.dom.classlist.swap=function(a,b,c){return goog.dom.classlist.contains(a,b)?(goog.dom.classlist.remove(a,b),goog.dom.classlist.add(a,c),!0):!1};goog.dom.classlist.toggle=function(a,b){var c=!goog.dom.classlist.contains(a,b);goog.dom.classlist.enable(a,b,c);return c};goog.dom.classlist.addRemove=function(a,b,c){goog.dom.classlist.remove(a,b);goog.dom.classlist.add(a,c)};goog.ui.registry={};goog.ui.registry.getDefaultRenderer=function(a){for(var b;a;){b=goog.getUid(a);if(b=goog.ui.registry.defaultRenderers_[b])break;a=a.superClass_?a.superClass_.constructor:null}return b?goog.isFunction(b.getInstance)?b.getInstance():new b:null};\ngoog.ui.registry.setDefaultRenderer=function(a,b){if(!goog.isFunction(a))throw Error("Invalid component class "+a);if(!goog.isFunction(b))throw Error("Invalid renderer class "+b);var c=goog.getUid(a);goog.ui.registry.defaultRenderers_[c]=b};goog.ui.registry.getDecoratorByClassName=function(a){return a in goog.ui.registry.decoratorFunctions_?goog.ui.registry.decoratorFunctions_[a]():null};\ngoog.ui.registry.setDecoratorByClassName=function(a,b){if(!a)throw Error("Invalid class name "+a);if(!goog.isFunction(b))throw Error("Invalid decorator function "+b);goog.ui.registry.decoratorFunctions_[a]=b};goog.ui.registry.getDecorator=function(a){goog.asserts.assert(a);for(var b=goog.dom.classlist.get(a),c=0,d=b.length;c<d;c++)if(a=goog.ui.registry.getDecoratorByClassName(b[c]))return a;return null};\ngoog.ui.registry.reset=function(){goog.ui.registry.defaultRenderers_={};goog.ui.registry.decoratorFunctions_={}};goog.ui.registry.defaultRenderers_={};goog.ui.registry.decoratorFunctions_={};goog.ui.ContainerRenderer=function(a){this.ariaRole_=a};goog.addSingletonGetter(goog.ui.ContainerRenderer);goog.ui.ContainerRenderer.getCustomRenderer=function(a,b){var c=new a;c.getCssClass=function(){return b};return c};goog.ui.ContainerRenderer.CSS_CLASS="goog-container";goog.ui.ContainerRenderer.prototype.getAriaRole=function(){return this.ariaRole_};goog.ui.ContainerRenderer.prototype.enableTabIndex=function(a,b){a&&(a.tabIndex=b?0:-1)};\ngoog.ui.ContainerRenderer.prototype.createDom=function(a){return a.getDomHelper().createDom("DIV",this.getClassNames(a).join(" "))};goog.ui.ContainerRenderer.prototype.getContentElement=function(a){return a};goog.ui.ContainerRenderer.prototype.canDecorate=function(a){return"DIV"==a.tagName};\ngoog.ui.ContainerRenderer.prototype.decorate=function(a,b){b.id&&a.setId(b.id);var c=this.getCssClass(),d=!1,e=goog.dom.classlist.get(b);e&&goog.array.forEach(e,function(b){b==c?d=!0:b&&this.setStateFromClassName(a,b,c)},this);d||goog.dom.classlist.add(b,c);this.decorateChildren(a,this.getContentElement(b));return b};\ngoog.ui.ContainerRenderer.prototype.setStateFromClassName=function(a,b,c){b==c+"-disabled"?a.setEnabled(!1):b==c+"-horizontal"?a.setOrientation(goog.ui.Container.Orientation.HORIZONTAL):b==c+"-vertical"&&a.setOrientation(goog.ui.Container.Orientation.VERTICAL)};\ngoog.ui.ContainerRenderer.prototype.decorateChildren=function(a,b,c){if(b){c=c||b.firstChild;for(var d;c&&c.parentNode==b;){d=c.nextSibling;if(c.nodeType==goog.dom.NodeType.ELEMENT){var e=this.getDecoratorForChild(c);e&&(e.setElementInternal(c),a.isEnabled()||e.setEnabled(!1),a.addChild(e),e.decorate(c))}else c.nodeValue&&""!=goog.string.trim(c.nodeValue)||b.removeChild(c);c=d}}};goog.ui.ContainerRenderer.prototype.getDecoratorForChild=function(a){return goog.ui.registry.getDecorator(a)};\ngoog.ui.ContainerRenderer.prototype.initializeDom=function(a){a=a.getElement();goog.asserts.assert(a,"The container DOM element cannot be null.");goog.style.setUnselectable(a,!0,goog.userAgent.GECKO);goog.userAgent.IE&&(a.hideFocus=!0);var b=this.getAriaRole();b&&goog.a11y.aria.setRole(a,b)};goog.ui.ContainerRenderer.prototype.getKeyEventTarget=function(a){return a.getElement()};goog.ui.ContainerRenderer.prototype.getCssClass=function(){return goog.ui.ContainerRenderer.CSS_CLASS};\ngoog.ui.ContainerRenderer.prototype.getClassNames=function(a){var b=this.getCssClass(),c=a.getOrientation()==goog.ui.Container.Orientation.HORIZONTAL,c=[b,c?b+"-horizontal":b+"-vertical"];a.isEnabled()||c.push(b+"-disabled");return c};goog.ui.ContainerRenderer.prototype.getDefaultOrientation=function(){return goog.ui.Container.Orientation.VERTICAL};goog.ui.ControlRenderer=function(){};goog.addSingletonGetter(goog.ui.ControlRenderer);goog.tagUnsealableClass(goog.ui.ControlRenderer);goog.ui.ControlRenderer.getCustomRenderer=function(a,b){var c=new a;c.getCssClass=function(){return b};return c};goog.ui.ControlRenderer.CSS_CLASS="goog-control";goog.ui.ControlRenderer.IE6_CLASS_COMBINATIONS=[];\ngoog.ui.ControlRenderer.TOGGLE_ARIA_STATE_MAP_=goog.object.create(goog.a11y.aria.Role.BUTTON,goog.a11y.aria.State.PRESSED,goog.a11y.aria.Role.CHECKBOX,goog.a11y.aria.State.CHECKED,goog.a11y.aria.Role.MENU_ITEM,goog.a11y.aria.State.SELECTED,goog.a11y.aria.Role.MENU_ITEM_CHECKBOX,goog.a11y.aria.State.CHECKED,goog.a11y.aria.Role.MENU_ITEM_RADIO,goog.a11y.aria.State.CHECKED,goog.a11y.aria.Role.RADIO,goog.a11y.aria.State.CHECKED,goog.a11y.aria.Role.TAB,goog.a11y.aria.State.SELECTED,goog.a11y.aria.Role.TREEITEM,\ngoog.a11y.aria.State.SELECTED);goog.ui.ControlRenderer.prototype.getAriaRole=function(){};goog.ui.ControlRenderer.prototype.createDom=function(a){return a.getDomHelper().createDom("DIV",this.getClassNames(a).join(" "),a.getContent())};goog.ui.ControlRenderer.prototype.getContentElement=function(a){return a};\ngoog.ui.ControlRenderer.prototype.enableClassName=function(a,b,c){if(a=a.getElement?a.getElement():a){var d=[b];goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("7")&&(d=this.getAppliedCombinedClassNames_(goog.dom.classlist.get(a),b),d.push(b));goog.dom.classlist.enableAll(a,d,c)}};goog.ui.ControlRenderer.prototype.enableExtraClassName=function(a,b,c){this.enableClassName(a,b,c)};goog.ui.ControlRenderer.prototype.canDecorate=function(a){return!0};\ngoog.ui.ControlRenderer.prototype.decorate=function(a,b){b.id&&a.setId(b.id);var c=this.getContentElement(b);c&&c.firstChild?a.setContentInternal(c.firstChild.nextSibling?goog.array.clone(c.childNodes):c.firstChild):a.setContentInternal(null);var d=0,e=this.getCssClass(),f=this.getStructuralCssClass(),g=!1,h=!1,k=!1,l=goog.array.toArray(goog.dom.classlist.get(b));goog.array.forEach(l,function(a){g||a!=e?h||a!=f?d|=this.getStateFromClass(a):h=!0:(g=!0,f==e&&(h=!0));this.getStateFromClass(a)==goog.ui.Component.State.DISABLED&&\n(goog.asserts.assertElement(c),goog.dom.isFocusableTabIndex(c)&&goog.dom.setFocusableTabIndex(c,!1))},this);a.setStateInternal(d);g||(l.push(e),f==e&&(h=!0));h||l.push(f);var p=a.getExtraClassNames();p&&l.push.apply(l,p);if(goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("7")){var m=this.getAppliedCombinedClassNames_(l);0<m.length&&(l.push.apply(l,m),k=!0)}g&&h&&!p&&!k||goog.dom.classlist.set(b,l.join(" "));return b};\ngoog.ui.ControlRenderer.prototype.initializeDom=function(a){a.isRightToLeft()&&this.setRightToLeft(a.getElement(),!0);a.isEnabled()&&this.setFocusable(a,a.isVisible())};goog.ui.ControlRenderer.prototype.setAriaRole=function(a,b){var c=b||this.getAriaRole();if(c){goog.asserts.assert(a,"The element passed as a first parameter cannot be null.");var d=goog.a11y.aria.getRole(a);c!=d&&goog.a11y.aria.setRole(a,c)}};\ngoog.ui.ControlRenderer.prototype.setAriaStates=function(a,b){goog.asserts.assert(a);goog.asserts.assert(b);var c=a.getAriaLabel();goog.isDefAndNotNull(c)&&this.setAriaLabel(b,c);a.isVisible()||goog.a11y.aria.setState(b,goog.a11y.aria.State.HIDDEN,!a.isVisible());a.isEnabled()||this.updateAriaState(b,goog.ui.Component.State.DISABLED,!a.isEnabled());a.isSupportedState(goog.ui.Component.State.SELECTED)&&this.updateAriaState(b,goog.ui.Component.State.SELECTED,a.isSelected());a.isSupportedState(goog.ui.Component.State.CHECKED)&&\nthis.updateAriaState(b,goog.ui.Component.State.CHECKED,a.isChecked());a.isSupportedState(goog.ui.Component.State.OPENED)&&this.updateAriaState(b,goog.ui.Component.State.OPENED,a.isOpen())};goog.ui.ControlRenderer.prototype.setAriaLabel=function(a,b){goog.a11y.aria.setLabel(a,b)};goog.ui.ControlRenderer.prototype.setAllowTextSelection=function(a,b){goog.style.setUnselectable(a,!b,!goog.userAgent.IE&&!goog.userAgent.OPERA)};\ngoog.ui.ControlRenderer.prototype.setRightToLeft=function(a,b){this.enableClassName(a,this.getStructuralCssClass()+"-rtl",b)};goog.ui.ControlRenderer.prototype.isFocusable=function(a){var b;return a.isSupportedState(goog.ui.Component.State.FOCUSED)&&(b=a.getKeyEventTarget())?goog.dom.isFocusableTabIndex(b):!1};\ngoog.ui.ControlRenderer.prototype.setFocusable=function(a,b){var c;if(a.isSupportedState(goog.ui.Component.State.FOCUSED)&&(c=a.getKeyEventTarget())){if(!b&&a.isFocused()){try{c.blur()}catch(d){}a.isFocused()&&a.handleBlur(null)}goog.dom.isFocusableTabIndex(c)!=b&&goog.dom.setFocusableTabIndex(c,b)}};goog.ui.ControlRenderer.prototype.setVisible=function(a,b){goog.style.setElementShown(a,b);a&&goog.a11y.aria.setState(a,goog.a11y.aria.State.HIDDEN,!b)};\ngoog.ui.ControlRenderer.prototype.setState=function(a,b,c){var d=a.getElement();if(d){var e=this.getClassForState(b);e&&this.enableClassName(a,e,c);this.updateAriaState(d,b,c)}};\ngoog.ui.ControlRenderer.prototype.updateAriaState=function(a,b,c){goog.ui.ControlRenderer.ariaAttributeMap_||(goog.ui.ControlRenderer.ariaAttributeMap_=goog.object.create(goog.ui.Component.State.DISABLED,goog.a11y.aria.State.DISABLED,goog.ui.Component.State.SELECTED,goog.a11y.aria.State.SELECTED,goog.ui.Component.State.CHECKED,goog.a11y.aria.State.CHECKED,goog.ui.Component.State.OPENED,goog.a11y.aria.State.EXPANDED));goog.asserts.assert(a,"The element passed as a first parameter cannot be null.");\n(b=goog.ui.ControlRenderer.getAriaStateForAriaRole_(a,goog.ui.ControlRenderer.ariaAttributeMap_[b]))&&goog.a11y.aria.setState(a,b,c)};goog.ui.ControlRenderer.getAriaStateForAriaRole_=function(a,b){var c=goog.a11y.aria.getRole(a);if(!c)return b;c=goog.ui.ControlRenderer.TOGGLE_ARIA_STATE_MAP_[c]||b;return goog.ui.ControlRenderer.isAriaState_(b)?c:b};goog.ui.ControlRenderer.isAriaState_=function(a){return a==goog.a11y.aria.State.CHECKED||a==goog.a11y.aria.State.SELECTED};\ngoog.ui.ControlRenderer.prototype.setContent=function(a,b){var c=this.getContentElement(a);if(c&&(goog.dom.removeChildren(c),b))if(goog.isString(b))goog.dom.setTextContent(c,b);else{var d=function(a){if(a){var b=goog.dom.getOwnerDocument(c);c.appendChild(goog.isString(a)?b.createTextNode(a):a)}};goog.isArray(b)?goog.array.forEach(b,d):!goog.isArrayLike(b)||"nodeType"in b?d(b):goog.array.forEach(goog.array.clone(b),d)}};goog.ui.ControlRenderer.prototype.getKeyEventTarget=function(a){return a.getElement()};\ngoog.ui.ControlRenderer.prototype.getCssClass=function(){return goog.ui.ControlRenderer.CSS_CLASS};goog.ui.ControlRenderer.prototype.getIe6ClassCombinations=function(){return[]};goog.ui.ControlRenderer.prototype.getStructuralCssClass=function(){return this.getCssClass()};\ngoog.ui.ControlRenderer.prototype.getClassNames=function(a){var b=this.getCssClass(),c=[b],d=this.getStructuralCssClass();d!=b&&c.push(d);b=this.getClassNamesForState(a.getState());c.push.apply(c,b);(a=a.getExtraClassNames())&&c.push.apply(c,a);goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("7")&&c.push.apply(c,this.getAppliedCombinedClassNames_(c));return c};\ngoog.ui.ControlRenderer.prototype.getAppliedCombinedClassNames_=function(a,b){var c=[];b&&(a=goog.array.concat(a,[b]));goog.array.forEach(this.getIe6ClassCombinations(),function(d){!goog.array.every(d,goog.partial(goog.array.contains,a))||b&&!goog.array.contains(d,b)||c.push(d.join("_"))});return c};goog.ui.ControlRenderer.prototype.getClassNamesForState=function(a){for(var b=[];a;){var c=a&-a;b.push(this.getClassForState(c));a&=~c}return b};\ngoog.ui.ControlRenderer.prototype.getClassForState=function(a){this.classByState_||this.createClassByStateMap_();return this.classByState_[a]};goog.ui.ControlRenderer.prototype.getStateFromClass=function(a){this.stateByClass_||this.createStateByClassMap_();a=parseInt(this.stateByClass_[a],10);return isNaN(a)?0:a};\ngoog.ui.ControlRenderer.prototype.createClassByStateMap_=function(){var a=this.getStructuralCssClass(),b=!goog.string.contains(goog.string.normalizeWhitespace(a)," ");goog.asserts.assert(b,"ControlRenderer has an invalid css class: \'"+a+"\'");this.classByState_=goog.object.create(goog.ui.Component.State.DISABLED,a+"-disabled",goog.ui.Component.State.HOVER,a+"-hover",goog.ui.Component.State.ACTIVE,a+"-active",goog.ui.Component.State.SELECTED,a+"-selected",goog.ui.Component.State.CHECKED,a+"-checked",\ngoog.ui.Component.State.FOCUSED,a+"-focused",goog.ui.Component.State.OPENED,a+"-open")};goog.ui.ControlRenderer.prototype.createStateByClassMap_=function(){this.classByState_||this.createClassByStateMap_();this.stateByClass_=goog.object.transpose(this.classByState_)};goog.ui.Control=function(a,b,c){goog.ui.Component.call(this,c);this.renderer_=b||goog.ui.registry.getDefaultRenderer(this.constructor);this.setContentInternal(goog.isDef(a)?a:null);this.ariaLabel_=null};goog.inherits(goog.ui.Control,goog.ui.Component);goog.tagUnsealableClass(goog.ui.Control);goog.ui.Control.registerDecorator=goog.ui.registry.setDecoratorByClassName;goog.ui.Control.getDecorator=goog.ui.registry.getDecorator;goog.ui.Control.prototype.content_=null;goog.ui.Control.prototype.state_=0;\ngoog.ui.Control.prototype.supportedStates_=goog.ui.Component.State.DISABLED|goog.ui.Component.State.HOVER|goog.ui.Component.State.ACTIVE|goog.ui.Component.State.FOCUSED;goog.ui.Control.prototype.autoStates_=goog.ui.Component.State.ALL;goog.ui.Control.prototype.statesWithTransitionEvents_=0;goog.ui.Control.prototype.visible_=!0;goog.ui.Control.prototype.extraClassNames_=null;goog.ui.Control.prototype.handleMouseEvents_=!0;goog.ui.Control.prototype.allowTextSelection_=!1;\ngoog.ui.Control.prototype.preferredAriaRole_=null;goog.ui.Control.prototype.isHandleMouseEvents=function(){return this.handleMouseEvents_};goog.ui.Control.prototype.setHandleMouseEvents=function(a){this.isInDocument()&&a!=this.handleMouseEvents_&&this.enableMouseEventHandling_(a);this.handleMouseEvents_=a};goog.ui.Control.prototype.getKeyEventTarget=function(){return this.renderer_.getKeyEventTarget(this)};\ngoog.ui.Control.prototype.getKeyHandler=function(){return this.keyHandler_||(this.keyHandler_=new goog.events.KeyHandler)};goog.ui.Control.prototype.getRenderer=function(){return this.renderer_};goog.ui.Control.prototype.setRenderer=function(a){if(this.isInDocument())throw Error(goog.ui.Component.Error.ALREADY_RENDERED);this.getElement()&&this.setElementInternal(null);this.renderer_=a};goog.ui.Control.prototype.getExtraClassNames=function(){return this.extraClassNames_};\ngoog.ui.Control.prototype.addClassName=function(a){a&&(this.extraClassNames_?goog.array.contains(this.extraClassNames_,a)||this.extraClassNames_.push(a):this.extraClassNames_=[a],this.renderer_.enableExtraClassName(this,a,!0))};goog.ui.Control.prototype.removeClassName=function(a){a&&this.extraClassNames_&&goog.array.remove(this.extraClassNames_,a)&&(0==this.extraClassNames_.length&&(this.extraClassNames_=null),this.renderer_.enableExtraClassName(this,a,!1))};\ngoog.ui.Control.prototype.enableClassName=function(a,b){b?this.addClassName(a):this.removeClassName(a)};goog.ui.Control.prototype.createDom=function(){var a=this.renderer_.createDom(this);this.setElementInternal(a);this.renderer_.setAriaRole(a,this.getPreferredAriaRole());this.isAllowTextSelection()||this.renderer_.setAllowTextSelection(a,!1);this.isVisible()||this.renderer_.setVisible(a,!1)};goog.ui.Control.prototype.getPreferredAriaRole=function(){return this.preferredAriaRole_};\ngoog.ui.Control.prototype.setPreferredAriaRole=function(a){this.preferredAriaRole_=a};goog.ui.Control.prototype.getAriaLabel=function(){return this.ariaLabel_};goog.ui.Control.prototype.setAriaLabel=function(a){this.ariaLabel_=a;var b=this.getElement();b&&this.renderer_.setAriaLabel(b,a)};goog.ui.Control.prototype.getContentElement=function(){return this.renderer_.getContentElement(this.getElement())};goog.ui.Control.prototype.canDecorate=function(a){return this.renderer_.canDecorate(a)};\ngoog.ui.Control.prototype.decorateInternal=function(a){a=this.renderer_.decorate(this,a);this.setElementInternal(a);this.renderer_.setAriaRole(a,this.getPreferredAriaRole());this.isAllowTextSelection()||this.renderer_.setAllowTextSelection(a,!1);this.visible_="none"!=a.style.display};\ngoog.ui.Control.prototype.enterDocument=function(){goog.ui.Control.superClass_.enterDocument.call(this);this.renderer_.setAriaStates(this,this.getElementStrict());this.renderer_.initializeDom(this);if(this.supportedStates_&~goog.ui.Component.State.DISABLED&&(this.isHandleMouseEvents()&&this.enableMouseEventHandling_(!0),this.isSupportedState(goog.ui.Component.State.FOCUSED))){var a=this.getKeyEventTarget();if(a){var b=this.getKeyHandler();b.attach(a);this.getHandler().listen(b,goog.events.KeyHandler.EventType.KEY,\nthis.handleKeyEvent).listen(a,goog.events.EventType.FOCUS,this.handleFocus).listen(a,goog.events.EventType.BLUR,this.handleBlur)}}};\ngoog.ui.Control.prototype.enableMouseEventHandling_=function(a){var b=this.getHandler(),c=this.getElement();a?(b.listen(c,goog.events.EventType.MOUSEOVER,this.handleMouseOver).listen(c,goog.events.EventType.MOUSEDOWN,this.handleMouseDown).listen(c,goog.events.EventType.MOUSEUP,this.handleMouseUp).listen(c,goog.events.EventType.MOUSEOUT,this.handleMouseOut),this.handleContextMenu!=goog.nullFunction&&b.listen(c,goog.events.EventType.CONTEXTMENU,this.handleContextMenu),goog.userAgent.IE&&(goog.userAgent.isVersionOrHigher(9)||\nb.listen(c,goog.events.EventType.DBLCLICK,this.handleDblClick),this.ieMouseEventSequenceSimulator_||(this.ieMouseEventSequenceSimulator_=new goog.ui.Control.IeMouseEventSequenceSimulator_(this),this.registerDisposable(this.ieMouseEventSequenceSimulator_)))):(b.unlisten(c,goog.events.EventType.MOUSEOVER,this.handleMouseOver).unlisten(c,goog.events.EventType.MOUSEDOWN,this.handleMouseDown).unlisten(c,goog.events.EventType.MOUSEUP,this.handleMouseUp).unlisten(c,goog.events.EventType.MOUSEOUT,this.handleMouseOut),\nthis.handleContextMenu!=goog.nullFunction&&b.unlisten(c,goog.events.EventType.CONTEXTMENU,this.handleContextMenu),goog.userAgent.IE&&(goog.userAgent.isVersionOrHigher(9)||b.unlisten(c,goog.events.EventType.DBLCLICK,this.handleDblClick),goog.dispose(this.ieMouseEventSequenceSimulator_),this.ieMouseEventSequenceSimulator_=null))};\ngoog.ui.Control.prototype.exitDocument=function(){goog.ui.Control.superClass_.exitDocument.call(this);this.keyHandler_&&this.keyHandler_.detach();this.isVisible()&&this.isEnabled()&&this.renderer_.setFocusable(this,!1)};goog.ui.Control.prototype.disposeInternal=function(){goog.ui.Control.superClass_.disposeInternal.call(this);this.keyHandler_&&(this.keyHandler_.dispose(),delete this.keyHandler_);delete this.renderer_;this.ieMouseEventSequenceSimulator_=this.extraClassNames_=this.content_=null};\ngoog.ui.Control.prototype.getContent=function(){return this.content_};goog.ui.Control.prototype.setContent=function(a){this.renderer_.setContent(this.getElement(),a);this.setContentInternal(a)};goog.ui.Control.prototype.setContentInternal=function(a){this.content_=a};goog.ui.Control.prototype.getCaption=function(){var a=this.getContent();if(!a)return"";a=goog.isString(a)?a:goog.isArray(a)?goog.array.map(a,goog.dom.getRawTextContent).join(""):goog.dom.getTextContent(a);return goog.string.collapseBreakingSpaces(a)};\ngoog.ui.Control.prototype.setCaption=function(a){this.setContent(a)};goog.ui.Control.prototype.setRightToLeft=function(a){goog.ui.Control.superClass_.setRightToLeft.call(this,a);var b=this.getElement();b&&this.renderer_.setRightToLeft(b,a)};goog.ui.Control.prototype.isAllowTextSelection=function(){return this.allowTextSelection_};goog.ui.Control.prototype.setAllowTextSelection=function(a){this.allowTextSelection_=a;var b=this.getElement();b&&this.renderer_.setAllowTextSelection(b,a)};\ngoog.ui.Control.prototype.isVisible=function(){return this.visible_};goog.ui.Control.prototype.setVisible=function(a,b){if(b||this.visible_!=a&&this.dispatchEvent(a?goog.ui.Component.EventType.SHOW:goog.ui.Component.EventType.HIDE)){var c=this.getElement();c&&this.renderer_.setVisible(c,a);this.isEnabled()&&this.renderer_.setFocusable(this,a);this.visible_=a;return!0}return!1};goog.ui.Control.prototype.isEnabled=function(){return!this.hasState(goog.ui.Component.State.DISABLED)};\ngoog.ui.Control.prototype.isParentDisabled_=function(){var a=this.getParent();return!!a&&"function"==typeof a.isEnabled&&!a.isEnabled()};goog.ui.Control.prototype.setEnabled=function(a){!this.isParentDisabled_()&&this.isTransitionAllowed(goog.ui.Component.State.DISABLED,!a)&&(a||(this.setActive(!1),this.setHighlighted(!1)),this.isVisible()&&this.renderer_.setFocusable(this,a),this.setState(goog.ui.Component.State.DISABLED,!a,!0))};goog.ui.Control.prototype.isHighlighted=function(){return this.hasState(goog.ui.Component.State.HOVER)};\ngoog.ui.Control.prototype.setHighlighted=function(a){this.isTransitionAllowed(goog.ui.Component.State.HOVER,a)&&this.setState(goog.ui.Component.State.HOVER,a)};goog.ui.Control.prototype.isActive=function(){return this.hasState(goog.ui.Component.State.ACTIVE)};goog.ui.Control.prototype.setActive=function(a){this.isTransitionAllowed(goog.ui.Component.State.ACTIVE,a)&&this.setState(goog.ui.Component.State.ACTIVE,a)};goog.ui.Control.prototype.isSelected=function(){return this.hasState(goog.ui.Component.State.SELECTED)};\ngoog.ui.Control.prototype.setSelected=function(a){this.isTransitionAllowed(goog.ui.Component.State.SELECTED,a)&&this.setState(goog.ui.Component.State.SELECTED,a)};goog.ui.Control.prototype.isChecked=function(){return this.hasState(goog.ui.Component.State.CHECKED)};goog.ui.Control.prototype.setChecked=function(a){this.isTransitionAllowed(goog.ui.Component.State.CHECKED,a)&&this.setState(goog.ui.Component.State.CHECKED,a)};goog.ui.Control.prototype.isFocused=function(){return this.hasState(goog.ui.Component.State.FOCUSED)};\ngoog.ui.Control.prototype.setFocused=function(a){this.isTransitionAllowed(goog.ui.Component.State.FOCUSED,a)&&this.setState(goog.ui.Component.State.FOCUSED,a)};goog.ui.Control.prototype.isOpen=function(){return this.hasState(goog.ui.Component.State.OPENED)};goog.ui.Control.prototype.setOpen=function(a){this.isTransitionAllowed(goog.ui.Component.State.OPENED,a)&&this.setState(goog.ui.Component.State.OPENED,a)};goog.ui.Control.prototype.getState=function(){return this.state_};\ngoog.ui.Control.prototype.hasState=function(a){return!!(this.state_&a)};goog.ui.Control.prototype.setState=function(a,b,c){c||a!=goog.ui.Component.State.DISABLED?this.isSupportedState(a)&&b!=this.hasState(a)&&(this.renderer_.setState(this,a,b),this.state_=b?this.state_|a:this.state_&~a):this.setEnabled(!b)};goog.ui.Control.prototype.setStateInternal=function(a){this.state_=a};goog.ui.Control.prototype.isSupportedState=function(a){return!!(this.supportedStates_&a)};\ngoog.ui.Control.prototype.setSupportedState=function(a,b){if(this.isInDocument()&&this.hasState(a)&&!b)throw Error(goog.ui.Component.Error.ALREADY_RENDERED);!b&&this.hasState(a)&&this.setState(a,!1);this.supportedStates_=b?this.supportedStates_|a:this.supportedStates_&~a};goog.ui.Control.prototype.isAutoState=function(a){return!!(this.autoStates_&a)&&this.isSupportedState(a)};goog.ui.Control.prototype.setAutoStates=function(a,b){this.autoStates_=b?this.autoStates_|a:this.autoStates_&~a};\ngoog.ui.Control.prototype.isDispatchTransitionEvents=function(a){return!!(this.statesWithTransitionEvents_&a)&&this.isSupportedState(a)};goog.ui.Control.prototype.setDispatchTransitionEvents=function(a,b){this.statesWithTransitionEvents_=b?this.statesWithTransitionEvents_|a:this.statesWithTransitionEvents_&~a};\ngoog.ui.Control.prototype.isTransitionAllowed=function(a,b){return this.isSupportedState(a)&&this.hasState(a)!=b&&(!(this.statesWithTransitionEvents_&a)||this.dispatchEvent(goog.ui.Component.getStateTransitionEvent(a,b)))&&!this.isDisposed()};goog.ui.Control.prototype.handleMouseOver=function(a){!goog.ui.Control.isMouseEventWithinElement_(a,this.getElement())&&this.dispatchEvent(goog.ui.Component.EventType.ENTER)&&this.isEnabled()&&this.isAutoState(goog.ui.Component.State.HOVER)&&this.setHighlighted(!0)};\ngoog.ui.Control.prototype.handleMouseOut=function(a){!goog.ui.Control.isMouseEventWithinElement_(a,this.getElement())&&this.dispatchEvent(goog.ui.Component.EventType.LEAVE)&&(this.isAutoState(goog.ui.Component.State.ACTIVE)&&this.setActive(!1),this.isAutoState(goog.ui.Component.State.HOVER)&&this.setHighlighted(!1))};goog.ui.Control.prototype.handleContextMenu=goog.nullFunction;goog.ui.Control.isMouseEventWithinElement_=function(a,b){return!!a.relatedTarget&&goog.dom.contains(b,a.relatedTarget)};\ngoog.ui.Control.prototype.handleMouseDown=function(a){this.isEnabled()&&(this.isAutoState(goog.ui.Component.State.HOVER)&&this.setHighlighted(!0),a.isMouseActionButton()&&(this.isAutoState(goog.ui.Component.State.ACTIVE)&&this.setActive(!0),this.renderer_&&this.renderer_.isFocusable(this)&&this.getKeyEventTarget().focus()));!this.isAllowTextSelection()&&a.isMouseActionButton()&&a.preventDefault()};\ngoog.ui.Control.prototype.handleMouseUp=function(a){this.isEnabled()&&(this.isAutoState(goog.ui.Component.State.HOVER)&&this.setHighlighted(!0),this.isActive()&&this.performActionInternal(a)&&this.isAutoState(goog.ui.Component.State.ACTIVE)&&this.setActive(!1))};goog.ui.Control.prototype.handleDblClick=function(a){this.isEnabled()&&this.performActionInternal(a)};\ngoog.ui.Control.prototype.performActionInternal=function(a){this.isAutoState(goog.ui.Component.State.CHECKED)&&this.setChecked(!this.isChecked());this.isAutoState(goog.ui.Component.State.SELECTED)&&this.setSelected(!0);this.isAutoState(goog.ui.Component.State.OPENED)&&this.setOpen(!this.isOpen());var b=new goog.events.Event(goog.ui.Component.EventType.ACTION,this);a&&(b.altKey=a.altKey,b.ctrlKey=a.ctrlKey,b.metaKey=a.metaKey,b.shiftKey=a.shiftKey,b.platformModifierKey=a.platformModifierKey);return this.dispatchEvent(b)};\ngoog.ui.Control.prototype.handleFocus=function(a){this.isAutoState(goog.ui.Component.State.FOCUSED)&&this.setFocused(!0)};goog.ui.Control.prototype.handleBlur=function(a){this.isAutoState(goog.ui.Component.State.ACTIVE)&&this.setActive(!1);this.isAutoState(goog.ui.Component.State.FOCUSED)&&this.setFocused(!1)};goog.ui.Control.prototype.handleKeyEvent=function(a){return this.isVisible()&&this.isEnabled()&&this.handleKeyEventInternal(a)?(a.preventDefault(),a.stopPropagation(),!0):!1};\ngoog.ui.Control.prototype.handleKeyEventInternal=function(a){return a.keyCode==goog.events.KeyCodes.ENTER&&this.performActionInternal(a)};goog.ui.registry.setDefaultRenderer(goog.ui.Control,goog.ui.ControlRenderer);goog.ui.registry.setDecoratorByClassName(goog.ui.ControlRenderer.CSS_CLASS,function(){return new goog.ui.Control(null)});\ngoog.ui.Control.IeMouseEventSequenceSimulator_=function(a){goog.Disposable.call(this);this.control_=a;this.clickExpected_=!1;this.handler_=new goog.events.EventHandler(this);this.registerDisposable(this.handler_);a=this.control_.getElementStrict();this.handler_.listen(a,goog.events.EventType.MOUSEDOWN,this.handleMouseDown_).listen(a,goog.events.EventType.MOUSEUP,this.handleMouseUp_).listen(a,goog.events.EventType.CLICK,this.handleClick_)};\ngoog.inherits(goog.ui.Control.IeMouseEventSequenceSimulator_,goog.Disposable);goog.ui.Control.IeMouseEventSequenceSimulator_.SYNTHETIC_EVENTS_=!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9);goog.ui.Control.IeMouseEventSequenceSimulator_.prototype.handleMouseDown_=function(){this.clickExpected_=!1};goog.ui.Control.IeMouseEventSequenceSimulator_.prototype.handleMouseUp_=function(){this.clickExpected_=!0};\ngoog.ui.Control.IeMouseEventSequenceSimulator_.makeLeftMouseEvent_=function(a,b){if(!goog.ui.Control.IeMouseEventSequenceSimulator_.SYNTHETIC_EVENTS_)return a.button=goog.events.BrowserEvent.MouseButton.LEFT,a.type=b,a;var c=document.createEvent("MouseEvents");c.initMouseEvent(b,a.bubbles,a.cancelable,a.view||null,a.detail,a.screenX,a.screenY,a.clientX,a.clientY,a.ctrlKey,a.altKey,a.shiftKey,a.metaKey,goog.events.BrowserEvent.MouseButton.LEFT,a.relatedTarget||null);return c};\ngoog.ui.Control.IeMouseEventSequenceSimulator_.prototype.handleClick_=function(a){if(this.clickExpected_)this.clickExpected_=!1;else{var b=a.getBrowserEvent(),c=b.button,d=b.type,e=goog.ui.Control.IeMouseEventSequenceSimulator_.makeLeftMouseEvent_(b,goog.events.EventType.MOUSEDOWN);this.control_.handleMouseDown(new goog.events.BrowserEvent(e,a.currentTarget));e=goog.ui.Control.IeMouseEventSequenceSimulator_.makeLeftMouseEvent_(b,goog.events.EventType.MOUSEUP);this.control_.handleMouseUp(new goog.events.BrowserEvent(e,\na.currentTarget));goog.ui.Control.IeMouseEventSequenceSimulator_.SYNTHETIC_EVENTS_||(b.button=c,b.type=d)}};goog.ui.Control.IeMouseEventSequenceSimulator_.prototype.disposeInternal=function(){this.control_=null;goog.ui.Control.IeMouseEventSequenceSimulator_.superClass_.disposeInternal.call(this)};goog.ui.Container=function(a,b,c){goog.ui.Component.call(this,c);this.renderer_=b||goog.ui.ContainerRenderer.getInstance();this.orientation_=a||this.renderer_.getDefaultOrientation()};goog.inherits(goog.ui.Container,goog.ui.Component);goog.tagUnsealableClass(goog.ui.Container);goog.ui.Container.EventType={AFTER_SHOW:"aftershow",AFTER_HIDE:"afterhide"};goog.ui.Container.Orientation={HORIZONTAL:"horizontal",VERTICAL:"vertical"};goog.ui.Container.prototype.keyEventTarget_=null;\ngoog.ui.Container.prototype.keyHandler_=null;goog.ui.Container.prototype.renderer_=null;goog.ui.Container.prototype.orientation_=null;goog.ui.Container.prototype.visible_=!0;goog.ui.Container.prototype.enabled_=!0;goog.ui.Container.prototype.focusable_=!0;goog.ui.Container.prototype.highlightedIndex_=-1;goog.ui.Container.prototype.openItem_=null;goog.ui.Container.prototype.mouseButtonPressed_=!1;goog.ui.Container.prototype.allowFocusableChildren_=!1;\ngoog.ui.Container.prototype.openFollowsHighlight_=!0;goog.ui.Container.prototype.childElementIdMap_=null;goog.ui.Container.prototype.getKeyEventTarget=function(){return this.keyEventTarget_||this.renderer_.getKeyEventTarget(this)};\ngoog.ui.Container.prototype.setKeyEventTarget=function(a){if(this.focusable_){var b=this.getKeyEventTarget(),c=this.isInDocument();this.keyEventTarget_=a;var d=this.getKeyEventTarget();c&&(this.keyEventTarget_=b,this.enableFocusHandling_(!1),this.keyEventTarget_=a,this.getKeyHandler().attach(d),this.enableFocusHandling_(!0))}else throw Error("Can\'t set key event target for container that doesn\'t support keyboard focus!");};\ngoog.ui.Container.prototype.getKeyHandler=function(){return this.keyHandler_||(this.keyHandler_=new goog.events.KeyHandler(this.getKeyEventTarget()))};goog.ui.Container.prototype.getRenderer=function(){return this.renderer_};goog.ui.Container.prototype.setRenderer=function(a){if(this.getElement())throw Error(goog.ui.Component.Error.ALREADY_RENDERED);this.renderer_=a};goog.ui.Container.prototype.createDom=function(){this.setElementInternal(this.renderer_.createDom(this))};\ngoog.ui.Container.prototype.getContentElement=function(){return this.renderer_.getContentElement(this.getElement())};goog.ui.Container.prototype.canDecorate=function(a){return this.renderer_.canDecorate(a)};goog.ui.Container.prototype.decorateInternal=function(a){this.setElementInternal(this.renderer_.decorate(this,a));"none"==a.style.display&&(this.visible_=!1)};\ngoog.ui.Container.prototype.enterDocument=function(){goog.ui.Container.superClass_.enterDocument.call(this);this.forEachChild(function(a){a.isInDocument()&&this.registerChildId_(a)},this);var a=this.getElement();this.renderer_.initializeDom(this);this.setVisible(this.visible_,!0);this.getHandler().listen(this,goog.ui.Component.EventType.ENTER,this.handleEnterItem).listen(this,goog.ui.Component.EventType.HIGHLIGHT,this.handleHighlightItem).listen(this,goog.ui.Component.EventType.UNHIGHLIGHT,this.handleUnHighlightItem).listen(this,\ngoog.ui.Component.EventType.OPEN,this.handleOpenItem).listen(this,goog.ui.Component.EventType.CLOSE,this.handleCloseItem).listen(a,goog.events.EventType.MOUSEDOWN,this.handleMouseDown).listen(goog.dom.getOwnerDocument(a),goog.events.EventType.MOUSEUP,this.handleDocumentMouseUp).listen(a,[goog.events.EventType.MOUSEDOWN,goog.events.EventType.MOUSEUP,goog.events.EventType.MOUSEOVER,goog.events.EventType.MOUSEOUT,goog.events.EventType.CONTEXTMENU],this.handleChildMouseEvents);this.isFocusable()&&this.enableFocusHandling_(!0)};\ngoog.ui.Container.prototype.enableFocusHandling_=function(a){var b=this.getHandler(),c=this.getKeyEventTarget();a?b.listen(c,goog.events.EventType.FOCUS,this.handleFocus).listen(c,goog.events.EventType.BLUR,this.handleBlur).listen(this.getKeyHandler(),goog.events.KeyHandler.EventType.KEY,this.handleKeyEvent):b.unlisten(c,goog.events.EventType.FOCUS,this.handleFocus).unlisten(c,goog.events.EventType.BLUR,this.handleBlur).unlisten(this.getKeyHandler(),goog.events.KeyHandler.EventType.KEY,this.handleKeyEvent)};\ngoog.ui.Container.prototype.exitDocument=function(){this.setHighlightedIndex(-1);this.openItem_&&this.openItem_.setOpen(!1);this.mouseButtonPressed_=!1;goog.ui.Container.superClass_.exitDocument.call(this)};goog.ui.Container.prototype.disposeInternal=function(){goog.ui.Container.superClass_.disposeInternal.call(this);this.keyHandler_&&(this.keyHandler_.dispose(),this.keyHandler_=null);this.renderer_=this.openItem_=this.childElementIdMap_=this.keyEventTarget_=null};\ngoog.ui.Container.prototype.handleEnterItem=function(a){return!0};\ngoog.ui.Container.prototype.handleHighlightItem=function(a){var b=this.indexOfChild(a.target);if(-1<b&&b!=this.highlightedIndex_){var c=this.getHighlighted();c&&c.setHighlighted(!1);this.highlightedIndex_=b;c=this.getHighlighted();this.isMouseButtonPressed()&&c.setActive(!0);this.openFollowsHighlight_&&this.openItem_&&c!=this.openItem_&&(c.isSupportedState(goog.ui.Component.State.OPENED)?c.setOpen(!0):this.openItem_.setOpen(!1))}b=this.getElement();goog.asserts.assert(b,"The DOM element for the container cannot be null.");\nnull!=a.target.getElement()&&goog.a11y.aria.setState(b,goog.a11y.aria.State.ACTIVEDESCENDANT,a.target.getElement().id)};goog.ui.Container.prototype.handleUnHighlightItem=function(a){a.target==this.getHighlighted()&&(this.highlightedIndex_=-1);a=this.getElement();goog.asserts.assert(a,"The DOM element for the container cannot be null.");goog.a11y.aria.removeState(a,goog.a11y.aria.State.ACTIVEDESCENDANT)};\ngoog.ui.Container.prototype.handleOpenItem=function(a){(a=a.target)&&a!=this.openItem_&&a.getParent()==this&&(this.openItem_&&this.openItem_.setOpen(!1),this.openItem_=a)};goog.ui.Container.prototype.handleCloseItem=function(a){a.target==this.openItem_&&(this.openItem_=null);var b=this.getElement(),c=a.target.getElement();b&&a.target.isHighlighted()&&c&&goog.a11y.aria.setActiveDescendant(b,c)};\ngoog.ui.Container.prototype.handleMouseDown=function(a){this.enabled_&&this.setMouseButtonPressed(!0);var b=this.getKeyEventTarget();b&&goog.dom.isFocusableTabIndex(b)?b.focus():a.preventDefault()};goog.ui.Container.prototype.handleDocumentMouseUp=function(a){this.setMouseButtonPressed(!1)};\ngoog.ui.Container.prototype.handleChildMouseEvents=function(a){var b=this.getOwnerControl(a.target);if(b)switch(a.type){case goog.events.EventType.MOUSEDOWN:b.handleMouseDown(a);break;case goog.events.EventType.MOUSEUP:b.handleMouseUp(a);break;case goog.events.EventType.MOUSEOVER:b.handleMouseOver(a);break;case goog.events.EventType.MOUSEOUT:b.handleMouseOut(a);break;case goog.events.EventType.CONTEXTMENU:b.handleContextMenu(a)}};\ngoog.ui.Container.prototype.getOwnerControl=function(a){if(this.childElementIdMap_)for(var b=this.getElement();a&&a!==b;){var c=a.id;if(c in this.childElementIdMap_)return this.childElementIdMap_[c];a=a.parentNode}return null};goog.ui.Container.prototype.handleFocus=function(a){};goog.ui.Container.prototype.handleBlur=function(a){this.setHighlightedIndex(-1);this.setMouseButtonPressed(!1);this.openItem_&&this.openItem_.setOpen(!1)};\ngoog.ui.Container.prototype.handleKeyEvent=function(a){return this.isEnabled()&&this.isVisible()&&(0!=this.getChildCount()||this.keyEventTarget_)&&this.handleKeyEventInternal(a)?(a.preventDefault(),a.stopPropagation(),!0):!1};\ngoog.ui.Container.prototype.handleKeyEventInternal=function(a){var b=this.getHighlighted();if(b&&"function"==typeof b.handleKeyEvent&&b.handleKeyEvent(a)||this.openItem_&&this.openItem_!=b&&"function"==typeof this.openItem_.handleKeyEvent&&this.openItem_.handleKeyEvent(a))return!0;if(a.shiftKey||a.ctrlKey||a.metaKey||a.altKey)return!1;switch(a.keyCode){case goog.events.KeyCodes.ESC:if(this.isFocusable())this.getKeyEventTarget().blur();else return!1;break;case goog.events.KeyCodes.HOME:this.highlightFirst();\nbreak;case goog.events.KeyCodes.END:this.highlightLast();break;case goog.events.KeyCodes.UP:if(this.orientation_==goog.ui.Container.Orientation.VERTICAL)this.highlightPrevious();else return!1;break;case goog.events.KeyCodes.LEFT:if(this.orientation_==goog.ui.Container.Orientation.HORIZONTAL)this.isRightToLeft()?this.highlightNext():this.highlightPrevious();else return!1;break;case goog.events.KeyCodes.DOWN:if(this.orientation_==goog.ui.Container.Orientation.VERTICAL)this.highlightNext();else return!1;\nbreak;case goog.events.KeyCodes.RIGHT:if(this.orientation_==goog.ui.Container.Orientation.HORIZONTAL)this.isRightToLeft()?this.highlightPrevious():this.highlightNext();else return!1;break;default:return!1}return!0};goog.ui.Container.prototype.registerChildId_=function(a){var b=a.getElement(),b=b.id||(b.id=a.getId());this.childElementIdMap_||(this.childElementIdMap_={});this.childElementIdMap_[b]=a};\ngoog.ui.Container.prototype.addChild=function(a,b){goog.asserts.assertInstanceof(a,goog.ui.Control,"The child of a container must be a control");goog.ui.Container.superClass_.addChild.call(this,a,b)};\ngoog.ui.Container.prototype.addChildAt=function(a,b,c){goog.asserts.assertInstanceof(a,goog.ui.Control);a.setDispatchTransitionEvents(goog.ui.Component.State.HOVER,!0);a.setDispatchTransitionEvents(goog.ui.Component.State.OPENED,!0);!this.isFocusable()&&this.isFocusableChildrenAllowed()||a.setSupportedState(goog.ui.Component.State.FOCUSED,!1);a.setHandleMouseEvents(!1);var d=a.getParent()==this?this.indexOfChild(a):-1;goog.ui.Container.superClass_.addChildAt.call(this,a,b,c);a.isInDocument()&&this.isInDocument()&&\nthis.registerChildId_(a);this.updateHighlightedIndex_(d,b)};goog.ui.Container.prototype.updateHighlightedIndex_=function(a,b){-1==a&&(a=this.getChildCount());a==this.highlightedIndex_?this.highlightedIndex_=Math.min(this.getChildCount()-1,b):a>this.highlightedIndex_&&b<=this.highlightedIndex_?this.highlightedIndex_++:a<this.highlightedIndex_&&b>this.highlightedIndex_&&this.highlightedIndex_--};\ngoog.ui.Container.prototype.removeChild=function(a,b){a=goog.isString(a)?this.getChild(a):a;goog.asserts.assertInstanceof(a,goog.ui.Control);if(a){var c=this.indexOfChild(a);-1!=c&&(c==this.highlightedIndex_?(a.setHighlighted(!1),this.highlightedIndex_=-1):c<this.highlightedIndex_&&this.highlightedIndex_--);(c=a.getElement())&&c.id&&this.childElementIdMap_&&goog.object.remove(this.childElementIdMap_,c.id)}a=goog.ui.Container.superClass_.removeChild.call(this,a,b);a.setHandleMouseEvents(!0);return a};\ngoog.ui.Container.prototype.getOrientation=function(){return this.orientation_};goog.ui.Container.prototype.setOrientation=function(a){if(this.getElement())throw Error(goog.ui.Component.Error.ALREADY_RENDERED);this.orientation_=a};goog.ui.Container.prototype.isVisible=function(){return this.visible_};\ngoog.ui.Container.prototype.setVisible=function(a,b){if(b||this.visible_!=a&&this.dispatchEvent(a?goog.ui.Component.EventType.SHOW:goog.ui.Component.EventType.HIDE)){this.visible_=a;var c=this.getElement();c&&(goog.style.setElementShown(c,a),this.isFocusable()&&this.renderer_.enableTabIndex(this.getKeyEventTarget(),this.enabled_&&this.visible_),b||this.dispatchEvent(this.visible_?goog.ui.Container.EventType.AFTER_SHOW:goog.ui.Container.EventType.AFTER_HIDE));return!0}return!1};\ngoog.ui.Container.prototype.isEnabled=function(){return this.enabled_};\ngoog.ui.Container.prototype.setEnabled=function(a){this.enabled_!=a&&this.dispatchEvent(a?goog.ui.Component.EventType.ENABLE:goog.ui.Component.EventType.DISABLE)&&(a?(this.enabled_=!0,this.forEachChild(function(a){a.wasDisabled?delete a.wasDisabled:a.setEnabled(!0)})):(this.forEachChild(function(a){a.isEnabled()?a.setEnabled(!1):a.wasDisabled=!0}),this.enabled_=!1,this.setMouseButtonPressed(!1)),this.isFocusable()&&this.renderer_.enableTabIndex(this.getKeyEventTarget(),a&&this.visible_))};\ngoog.ui.Container.prototype.isFocusable=function(){return this.focusable_};goog.ui.Container.prototype.setFocusable=function(a){a!=this.focusable_&&this.isInDocument()&&this.enableFocusHandling_(a);this.focusable_=a;this.enabled_&&this.visible_&&this.renderer_.enableTabIndex(this.getKeyEventTarget(),a)};goog.ui.Container.prototype.isFocusableChildrenAllowed=function(){return this.allowFocusableChildren_};\ngoog.ui.Container.prototype.setFocusableChildrenAllowed=function(a){this.allowFocusableChildren_=a};goog.ui.Container.prototype.isOpenFollowsHighlight=function(){return this.openFollowsHighlight_};goog.ui.Container.prototype.setOpenFollowsHighlight=function(a){this.openFollowsHighlight_=a};goog.ui.Container.prototype.getHighlightedIndex=function(){return this.highlightedIndex_};\ngoog.ui.Container.prototype.setHighlightedIndex=function(a){(a=this.getChildAt(a))?a.setHighlighted(!0):-1<this.highlightedIndex_&&this.getHighlighted().setHighlighted(!1)};goog.ui.Container.prototype.setHighlighted=function(a){this.setHighlightedIndex(this.indexOfChild(a))};goog.ui.Container.prototype.getHighlighted=function(){return this.getChildAt(this.highlightedIndex_)};\ngoog.ui.Container.prototype.highlightFirst=function(){this.highlightHelper(function(a,b){return(a+1)%b},this.getChildCount()-1)};goog.ui.Container.prototype.highlightLast=function(){this.highlightHelper(function(a,b){a--;return 0>a?b-1:a},0)};goog.ui.Container.prototype.highlightNext=function(){this.highlightHelper(function(a,b){return(a+1)%b},this.highlightedIndex_)};goog.ui.Container.prototype.highlightPrevious=function(){this.highlightHelper(function(a,b){a--;return 0>a?b-1:a},this.highlightedIndex_)};\ngoog.ui.Container.prototype.highlightHelper=function(a,b){for(var c=0>b?this.indexOfChild(this.openItem_):b,d=this.getChildCount(),c=a.call(this,c,d),e=0;e<=d;){var f=this.getChildAt(c);if(f&&this.canHighlightItem(f))return this.setHighlightedIndexFromKeyEvent(c),!0;e++;c=a.call(this,c,d)}return!1};goog.ui.Container.prototype.canHighlightItem=function(a){return a.isVisible()&&a.isEnabled()&&a.isSupportedState(goog.ui.Component.State.HOVER)};\ngoog.ui.Container.prototype.setHighlightedIndexFromKeyEvent=function(a){this.setHighlightedIndex(a)};goog.ui.Container.prototype.getOpenItem=function(){return this.openItem_};goog.ui.Container.prototype.isMouseButtonPressed=function(){return this.mouseButtonPressed_};goog.ui.Container.prototype.setMouseButtonPressed=function(a){this.mouseButtonPressed_=a};goog.ui.MenuHeaderRenderer=function(){goog.ui.ControlRenderer.call(this)};goog.inherits(goog.ui.MenuHeaderRenderer,goog.ui.ControlRenderer);goog.addSingletonGetter(goog.ui.MenuHeaderRenderer);goog.ui.MenuHeaderRenderer.CSS_CLASS="goog-menuheader";goog.ui.MenuHeaderRenderer.prototype.getCssClass=function(){return goog.ui.MenuHeaderRenderer.CSS_CLASS};goog.ui.MenuHeader=function(a,b,c){goog.ui.Control.call(this,a,c||goog.ui.MenuHeaderRenderer.getInstance(),b);this.setSupportedState(goog.ui.Component.State.DISABLED,!1);this.setSupportedState(goog.ui.Component.State.HOVER,!1);this.setSupportedState(goog.ui.Component.State.ACTIVE,!1);this.setSupportedState(goog.ui.Component.State.FOCUSED,!1);this.setStateInternal(goog.ui.Component.State.DISABLED)};goog.inherits(goog.ui.MenuHeader,goog.ui.Control);\ngoog.ui.registry.setDecoratorByClassName(goog.ui.MenuHeaderRenderer.CSS_CLASS,function(){return new goog.ui.MenuHeader(null)});goog.ui.MenuItemRenderer=function(){goog.ui.ControlRenderer.call(this);this.classNameCache_=[]};goog.inherits(goog.ui.MenuItemRenderer,goog.ui.ControlRenderer);goog.addSingletonGetter(goog.ui.MenuItemRenderer);goog.ui.MenuItemRenderer.CSS_CLASS="goog-menuitem";goog.ui.MenuItemRenderer.CompositeCssClassIndex_={HOVER:0,CHECKBOX:1,CONTENT:2};\ngoog.ui.MenuItemRenderer.prototype.getCompositeCssClass_=function(a){var b=this.classNameCache_[a];if(!b){switch(a){case goog.ui.MenuItemRenderer.CompositeCssClassIndex_.HOVER:b=this.getStructuralCssClass()+"-highlight";break;case goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CHECKBOX:b=this.getStructuralCssClass()+"-checkbox";break;case goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CONTENT:b=this.getStructuralCssClass()+"-content"}this.classNameCache_[a]=b}return b};\ngoog.ui.MenuItemRenderer.prototype.getAriaRole=function(){return goog.a11y.aria.Role.MENU_ITEM};goog.ui.MenuItemRenderer.prototype.createDom=function(a){var b=a.getDomHelper().createDom("DIV",this.getClassNames(a).join(" "),this.createContent(a.getContent(),a.getDomHelper()));this.setEnableCheckBoxStructure(a,b,a.isSupportedState(goog.ui.Component.State.SELECTED)||a.isSupportedState(goog.ui.Component.State.CHECKED));return b};\ngoog.ui.MenuItemRenderer.prototype.getContentElement=function(a){return a&&a.firstChild};goog.ui.MenuItemRenderer.prototype.decorate=function(a,b){goog.asserts.assert(b);this.hasContentStructure(b)||b.appendChild(this.createContent(b.childNodes,a.getDomHelper()));goog.dom.classlist.contains(b,"goog-option")&&(a.setCheckable(!0),this.setCheckable(a,b,!0));return goog.ui.MenuItemRenderer.superClass_.decorate.call(this,a,b)};\ngoog.ui.MenuItemRenderer.prototype.setContent=function(a,b){var c=this.getContentElement(a),d=this.hasCheckBoxStructure(a)?c.firstChild:null;goog.ui.MenuItemRenderer.superClass_.setContent.call(this,a,b);d&&!this.hasCheckBoxStructure(a)&&c.insertBefore(d,c.firstChild||null)};\ngoog.ui.MenuItemRenderer.prototype.hasContentStructure=function(a){a=goog.dom.getFirstElementChild(a);var b=this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CONTENT);return!!a&&goog.dom.classlist.contains(a,b)};goog.ui.MenuItemRenderer.prototype.createContent=function(a,b){var c=this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CONTENT);return b.createDom("DIV",c,a)};\ngoog.ui.MenuItemRenderer.prototype.setSelectable=function(a,b,c){a&&b&&this.setEnableCheckBoxStructure(a,b,c)};goog.ui.MenuItemRenderer.prototype.setCheckable=function(a,b,c){a&&b&&this.setEnableCheckBoxStructure(a,b,c)};goog.ui.MenuItemRenderer.prototype.hasCheckBoxStructure=function(a){if(a=this.getContentElement(a)){a=a.firstChild;var b=this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CHECKBOX);return!!a&&goog.dom.isElement(a)&&goog.dom.classlist.contains(a,b)}return!1};\ngoog.ui.MenuItemRenderer.prototype.setEnableCheckBoxStructure=function(a,b,c){this.setAriaRole(b,a.getPreferredAriaRole());this.setAriaStates(a,b);c!=this.hasCheckBoxStructure(b)&&(goog.dom.classlist.enable(b,"goog-option",c),b=this.getContentElement(b),c?(c=this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CHECKBOX),b.insertBefore(a.getDomHelper().createDom("DIV",c),b.firstChild||null)):b.removeChild(b.firstChild))};\ngoog.ui.MenuItemRenderer.prototype.getClassForState=function(a){switch(a){case goog.ui.Component.State.HOVER:return this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.HOVER);case goog.ui.Component.State.CHECKED:case goog.ui.Component.State.SELECTED:return"goog-option-selected";default:return goog.ui.MenuItemRenderer.superClass_.getClassForState.call(this,a)}};\ngoog.ui.MenuItemRenderer.prototype.getStateFromClass=function(a){var b=this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.HOVER);switch(a){case "goog-option-selected":return goog.ui.Component.State.CHECKED;case b:return goog.ui.Component.State.HOVER;default:return goog.ui.MenuItemRenderer.superClass_.getStateFromClass.call(this,a)}};goog.ui.MenuItemRenderer.prototype.getCssClass=function(){return goog.ui.MenuItemRenderer.CSS_CLASS};goog.ui.MenuItem=function(a,b,c,d){goog.ui.Control.call(this,a,d||goog.ui.MenuItemRenderer.getInstance(),c);this.setValue(b)};goog.inherits(goog.ui.MenuItem,goog.ui.Control);goog.tagUnsealableClass(goog.ui.MenuItem);goog.ui.MenuItem.MNEMONIC_WRAPPER_CLASS_="goog-menuitem-mnemonic-separator";goog.ui.MenuItem.ACCELERATOR_CLASS="goog-menuitem-accel";goog.ui.MenuItem.prototype.getValue=function(){var a=this.getModel();return null!=a?a:this.getCaption()};goog.ui.MenuItem.prototype.setValue=function(a){this.setModel(a)};\ngoog.ui.MenuItem.prototype.setSupportedState=function(a,b){goog.ui.MenuItem.superClass_.setSupportedState.call(this,a,b);switch(a){case goog.ui.Component.State.SELECTED:this.setSelectableInternal_(b);break;case goog.ui.Component.State.CHECKED:this.setCheckableInternal_(b)}};goog.ui.MenuItem.prototype.setSelectable=function(a){this.setSupportedState(goog.ui.Component.State.SELECTED,a)};\ngoog.ui.MenuItem.prototype.setSelectableInternal_=function(a){this.isChecked()&&!a&&this.setChecked(!1);var b=this.getElement();b&&this.getRenderer().setSelectable(this,b,a)};goog.ui.MenuItem.prototype.setCheckable=function(a){this.setSupportedState(goog.ui.Component.State.CHECKED,a)};goog.ui.MenuItem.prototype.setCheckableInternal_=function(a){var b=this.getElement();b&&this.getRenderer().setCheckable(this,b,a)};\ngoog.ui.MenuItem.prototype.getCaption=function(){var a=this.getContent();if(goog.isArray(a)){var b=goog.ui.MenuItem.ACCELERATOR_CLASS,c=goog.ui.MenuItem.MNEMONIC_WRAPPER_CLASS_,a=goog.array.map(a,function(a){return goog.dom.isElement(a)&&(goog.dom.classlist.contains(a,b)||goog.dom.classlist.contains(a,c))?"":goog.dom.getRawTextContent(a)}).join("");return goog.string.collapseBreakingSpaces(a)}return goog.ui.MenuItem.superClass_.getCaption.call(this)};\ngoog.ui.MenuItem.prototype.getAccelerator=function(){var a=this.getDomHelper(),b=this.getContent();return goog.isArray(b)&&(b=goog.array.find(b,function(a){return goog.dom.classlist.contains(a,goog.ui.MenuItem.ACCELERATOR_CLASS)}))?a.getTextContent(b):null};\ngoog.ui.MenuItem.prototype.handleMouseUp=function(a){var b=this.getParent();if(b){var c=b.openingCoords;b.openingCoords=null;if(c&&goog.isNumber(a.clientX)&&(b=new goog.math.Coordinate(a.clientX,a.clientY),goog.math.Coordinate.equals(c,b)))return}goog.ui.MenuItem.superClass_.handleMouseUp.call(this,a)};goog.ui.MenuItem.prototype.handleKeyEventInternal=function(a){return a.keyCode==this.getMnemonic()&&this.performActionInternal(a)?!0:goog.ui.MenuItem.superClass_.handleKeyEventInternal.call(this,a)};\ngoog.ui.MenuItem.prototype.setMnemonic=function(a){this.mnemonicKey_=a};goog.ui.MenuItem.prototype.getMnemonic=function(){return this.mnemonicKey_};goog.ui.registry.setDecoratorByClassName(goog.ui.MenuItemRenderer.CSS_CLASS,function(){return new goog.ui.MenuItem(null)});\ngoog.ui.MenuItem.prototype.getPreferredAriaRole=function(){return this.isSupportedState(goog.ui.Component.State.CHECKED)?goog.a11y.aria.Role.MENU_ITEM_CHECKBOX:this.isSupportedState(goog.ui.Component.State.SELECTED)?goog.a11y.aria.Role.MENU_ITEM_RADIO:goog.ui.MenuItem.superClass_.getPreferredAriaRole.call(this)};goog.ui.MenuItem.prototype.getParent=function(){return goog.ui.Control.prototype.getParent.call(this)};goog.ui.MenuItem.prototype.getParentEventTarget=function(){return goog.ui.Control.prototype.getParentEventTarget.call(this)};goog.ui.MenuSeparatorRenderer=function(){goog.ui.ControlRenderer.call(this)};goog.inherits(goog.ui.MenuSeparatorRenderer,goog.ui.ControlRenderer);goog.addSingletonGetter(goog.ui.MenuSeparatorRenderer);goog.ui.MenuSeparatorRenderer.CSS_CLASS="goog-menuseparator";goog.ui.MenuSeparatorRenderer.prototype.createDom=function(a){return a.getDomHelper().createDom("DIV",this.getCssClass())};\ngoog.ui.MenuSeparatorRenderer.prototype.decorate=function(a,b){b.id&&a.setId(b.id);if("HR"==b.tagName){var c=b;b=this.createDom(a);goog.dom.insertSiblingBefore(b,c);goog.dom.removeNode(c)}else goog.dom.classlist.add(b,this.getCssClass());return b};goog.ui.MenuSeparatorRenderer.prototype.setContent=function(a,b){};goog.ui.MenuSeparatorRenderer.prototype.getCssClass=function(){return goog.ui.MenuSeparatorRenderer.CSS_CLASS};goog.ui.Separator=function(a,b){goog.ui.Control.call(this,null,a||goog.ui.MenuSeparatorRenderer.getInstance(),b);this.setSupportedState(goog.ui.Component.State.DISABLED,!1);this.setSupportedState(goog.ui.Component.State.HOVER,!1);this.setSupportedState(goog.ui.Component.State.ACTIVE,!1);this.setSupportedState(goog.ui.Component.State.FOCUSED,!1);this.setStateInternal(goog.ui.Component.State.DISABLED)};goog.inherits(goog.ui.Separator,goog.ui.Control);\ngoog.ui.Separator.prototype.enterDocument=function(){goog.ui.Separator.superClass_.enterDocument.call(this);var a=this.getElement();goog.asserts.assert(a,"The DOM element for the separator cannot be null.");goog.a11y.aria.setRole(a,"separator")};goog.ui.registry.setDecoratorByClassName(goog.ui.MenuSeparatorRenderer.CSS_CLASS,function(){return new goog.ui.Separator});goog.ui.MenuRenderer=function(a){goog.ui.ContainerRenderer.call(this,a||goog.a11y.aria.Role.MENU)};goog.inherits(goog.ui.MenuRenderer,goog.ui.ContainerRenderer);goog.addSingletonGetter(goog.ui.MenuRenderer);goog.ui.MenuRenderer.CSS_CLASS="goog-menu";goog.ui.MenuRenderer.prototype.canDecorate=function(a){return"UL"==a.tagName||goog.ui.MenuRenderer.superClass_.canDecorate.call(this,a)};\ngoog.ui.MenuRenderer.prototype.getDecoratorForChild=function(a){return"HR"==a.tagName?new goog.ui.Separator:goog.ui.MenuRenderer.superClass_.getDecoratorForChild.call(this,a)};goog.ui.MenuRenderer.prototype.containsElement=function(a,b){return goog.dom.contains(a.getElement(),b)};goog.ui.MenuRenderer.prototype.getCssClass=function(){return goog.ui.MenuRenderer.CSS_CLASS};\ngoog.ui.MenuRenderer.prototype.initializeDom=function(a){goog.ui.MenuRenderer.superClass_.initializeDom.call(this,a);a=a.getElement();goog.asserts.assert(a,"The menu DOM element cannot be null.");goog.a11y.aria.setState(a,goog.a11y.aria.State.HASPOPUP,"true")};goog.ui.MenuSeparator=function(a){goog.ui.Separator.call(this,goog.ui.MenuSeparatorRenderer.getInstance(),a)};goog.inherits(goog.ui.MenuSeparator,goog.ui.Separator);goog.ui.registry.setDecoratorByClassName(goog.ui.MenuSeparatorRenderer.CSS_CLASS,function(){return new goog.ui.Separator});goog.ui.Menu=function(a,b){goog.ui.Container.call(this,goog.ui.Container.Orientation.VERTICAL,b||goog.ui.MenuRenderer.getInstance(),a);this.setFocusable(!1)};goog.inherits(goog.ui.Menu,goog.ui.Container);goog.tagUnsealableClass(goog.ui.Menu);goog.ui.Menu.EventType={BEFORE_SHOW:goog.ui.Component.EventType.BEFORE_SHOW,SHOW:goog.ui.Component.EventType.SHOW,BEFORE_HIDE:goog.ui.Component.EventType.HIDE,HIDE:goog.ui.Component.EventType.HIDE};goog.ui.Menu.CSS_CLASS=goog.ui.MenuRenderer.CSS_CLASS;\ngoog.ui.Menu.prototype.allowAutoFocus_=!0;goog.ui.Menu.prototype.allowHighlightDisabled_=!1;goog.ui.Menu.prototype.getCssClass=function(){return this.getRenderer().getCssClass()};goog.ui.Menu.prototype.containsElement=function(a){if(this.getRenderer().containsElement(this,a))return!0;for(var b=0,c=this.getChildCount();b<c;b++){var d=this.getChildAt(b);if("function"==typeof d.containsElement&&d.containsElement(a))return!0}return!1};goog.ui.Menu.prototype.addItem=function(a){this.addChild(a,!0)};\ngoog.ui.Menu.prototype.addItemAt=function(a,b){this.addChildAt(a,b,!0)};goog.ui.Menu.prototype.removeItem=function(a){(a=this.removeChild(a,!0))&&a.dispose()};goog.ui.Menu.prototype.removeItemAt=function(a){(a=this.removeChildAt(a,!0))&&a.dispose()};goog.ui.Menu.prototype.getItemAt=function(a){return this.getChildAt(a)};goog.ui.Menu.prototype.getItemCount=function(){return this.getChildCount()};goog.ui.Menu.prototype.getItems=function(){var a=[];this.forEachChild(function(b){a.push(b)});return a};\ngoog.ui.Menu.prototype.setPosition=function(a,b){var c=this.isVisible();c||goog.style.setElementShown(this.getElement(),!0);goog.style.setPageOffset(this.getElement(),a,b);c||goog.style.setElementShown(this.getElement(),!1)};goog.ui.Menu.prototype.getPosition=function(){return this.isVisible()?goog.style.getPageOffset(this.getElement()):null};goog.ui.Menu.prototype.setAllowAutoFocus=function(a){(this.allowAutoFocus_=a)&&this.setFocusable(!0)};goog.ui.Menu.prototype.getAllowAutoFocus=function(){return this.allowAutoFocus_};\ngoog.ui.Menu.prototype.setAllowHighlightDisabled=function(a){this.allowHighlightDisabled_=a};goog.ui.Menu.prototype.getAllowHighlightDisabled=function(){return this.allowHighlightDisabled_};goog.ui.Menu.prototype.setVisible=function(a,b,c){(b=goog.ui.Menu.superClass_.setVisible.call(this,a,b))&&a&&this.isInDocument()&&this.allowAutoFocus_&&this.getKeyEventTarget().focus();a&&c&&goog.isNumber(c.clientX)?this.openingCoords=new goog.math.Coordinate(c.clientX,c.clientY):this.openingCoords=null;return b};\ngoog.ui.Menu.prototype.handleEnterItem=function(a){this.allowAutoFocus_&&this.getKeyEventTarget().focus();return goog.ui.Menu.superClass_.handleEnterItem.call(this,a)};goog.ui.Menu.prototype.highlightNextPrefix=function(a){var b=new RegExp("^"+goog.string.regExpEscape(a),"i");return this.highlightHelper(function(a,d){var c=0>a?0:a,f=!1;do{++a;a==d&&(a=0,f=!0);var g=this.getChildAt(a).getCaption();if(g&&g.match(b))return a}while(!f||a!=c);return this.getHighlightedIndex()},this.getHighlightedIndex())};\ngoog.ui.Menu.prototype.canHighlightItem=function(a){return(this.allowHighlightDisabled_||a.isEnabled())&&a.isVisible()&&a.isSupportedState(goog.ui.Component.State.HOVER)};goog.ui.Menu.prototype.decorateInternal=function(a){this.decorateContent(a);goog.ui.Menu.superClass_.decorateInternal.call(this,a)};\ngoog.ui.Menu.prototype.handleKeyEventInternal=function(a){var b=goog.ui.Menu.superClass_.handleKeyEventInternal.call(this,a);b||this.forEachChild(function(c){!b&&c.getMnemonic&&c.getMnemonic()==a.keyCode&&(this.isEnabled()&&this.setHighlighted(c),b=c.handleKeyEvent(a))},this);return b};goog.ui.Menu.prototype.setHighlightedIndex=function(a){goog.ui.Menu.superClass_.setHighlightedIndex.call(this,a);(a=this.getChildAt(a))&&goog.style.scrollIntoContainerView(a.getElement(),this.getElement())};\ngoog.ui.Menu.prototype.decorateContent=function(a){var b=this.getRenderer();a=this.getDomHelper().getElementsByTagNameAndClass("DIV",b.getCssClass()+"-content",a);for(var c=a.length,d=0;d<c;d++)b.decorateChildren(this,a[d])};goog.color={};\ngoog.color.names={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",\ndarkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",\nghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",\nlightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",\nmoccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",\nseashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};goog.color.parse=function(a){var b={};a=String(a);var c=goog.color.prependHashIfNecessaryHelper(a);if(goog.color.isValidHexColor_(c))return b.hex=goog.color.normalizeHex(c),b.type="hex",b;c=goog.color.isValidRgbColor_(a);if(c.length)return b.hex=goog.color.rgbArrayToHex(c),b.type="rgb",b;if(goog.color.names&&(c=goog.color.names[a.toLowerCase()]))return b.hex=c,b.type="named",b;throw Error(a+" is not a valid color string");};\ngoog.color.isValidColor=function(a){var b=goog.color.prependHashIfNecessaryHelper(a);return!!(goog.color.isValidHexColor_(b)||goog.color.isValidRgbColor_(a).length||goog.color.names&&goog.color.names[a.toLowerCase()])};goog.color.parseRgb=function(a){var b=goog.color.isValidRgbColor_(a);if(!b.length)throw Error(a+" is not a valid RGB color");return b};goog.color.hexToRgbStyle=function(a){return goog.color.rgbStyle_(goog.color.hexToRgb(a))};goog.color.hexTripletRe_=/#(.)(.)(.)/;\ngoog.color.normalizeHex=function(a){if(!goog.color.isValidHexColor_(a))throw Error("\'"+a+"\' is not a valid hex color");4==a.length&&(a=a.replace(goog.color.hexTripletRe_,"#$1$1$2$2$3$3"));return a.toLowerCase()};goog.color.hexToRgb=function(a){a=goog.color.normalizeHex(a);var b=parseInt(a.substr(1,2),16),c=parseInt(a.substr(3,2),16);a=parseInt(a.substr(5,2),16);return[b,c,a]};\ngoog.color.rgbToHex=function(a,b,c){a=Number(a);b=Number(b);c=Number(c);if(a!=(a&255)||b!=(b&255)||c!=(c&255))throw Error(\'"(\'+a+","+b+","+c+\'") is not a valid RGB color\');a=goog.color.prependZeroIfNecessaryHelper(a.toString(16));b=goog.color.prependZeroIfNecessaryHelper(b.toString(16));c=goog.color.prependZeroIfNecessaryHelper(c.toString(16));return"#"+a+b+c};goog.color.rgbArrayToHex=function(a){return goog.color.rgbToHex(a[0],a[1],a[2])};\ngoog.color.rgbToHsl=function(a,b,c){a/=255;b/=255;c/=255;var d=Math.max(a,b,c),e=Math.min(a,b,c),f=0,g=0,h=.5*(d+e);d!=e&&(d==a?f=60*(b-c)/(d-e):d==b?f=60*(c-a)/(d-e)+120:d==c&&(f=60*(a-b)/(d-e)+240),g=0<h&&.5>=h?(d-e)/(2*h):(d-e)/(2-2*h));return[Math.round(f+360)%360,g,h]};goog.color.rgbArrayToHsl=function(a){return goog.color.rgbToHsl(a[0],a[1],a[2])};goog.color.hueToRgb_=function(a,b,c){0>c?c+=1:1<c&&--c;return 1>6*c?a+6*(b-a)*c:1>2*c?b:2>3*c?a+(b-a)*(2/3-c)*6:a};\ngoog.color.hslToRgb=function(a,b,c){a/=360;if(0==b)c=b=a=255*c;else{var d,e;e=.5>c?c*(1+b):c+b-b*c;d=2*c-e;c=255*goog.color.hueToRgb_(d,e,a+1/3);b=255*goog.color.hueToRgb_(d,e,a);a=255*goog.color.hueToRgb_(d,e,a-1/3)}return[Math.round(c),Math.round(b),Math.round(a)]};goog.color.hslArrayToRgb=function(a){return goog.color.hslToRgb(a[0],a[1],a[2])};goog.color.validHexColorRe_=/^#(?:[0-9a-f]{3}){1,2}$/i;goog.color.isValidHexColor_=function(a){return goog.color.validHexColorRe_.test(a)};\ngoog.color.normalizedHexColorRe_=/^#[0-9a-f]{6}$/;goog.color.isNormalizedHexColor_=function(a){return goog.color.normalizedHexColorRe_.test(a)};goog.color.rgbColorRe_=/^(?:rgb)?\\((0|[1-9]\\d{0,2}),\\s?(0|[1-9]\\d{0,2}),\\s?(0|[1-9]\\d{0,2})\\)$/i;goog.color.isValidRgbColor_=function(a){var b=a.match(goog.color.rgbColorRe_);if(b){a=Number(b[1]);var c=Number(b[2]),b=Number(b[3]);if(0<=a&&255>=a&&0<=c&&255>=c&&0<=b&&255>=b)return[a,c,b]}return[]};\ngoog.color.prependZeroIfNecessaryHelper=function(a){return 1==a.length?"0"+a:a};goog.color.prependHashIfNecessaryHelper=function(a){return"#"==a.charAt(0)?a:"#"+a};goog.color.rgbStyle_=function(a){return"rgb("+a.join(",")+")"};\ngoog.color.hsvToRgb=function(a,b,c){var d=0,e=0,f=0;if(0==b)f=e=d=c;else{var g=Math.floor(a/60),h=a/60-g;a=c*(1-b);var k=c*(1-b*h);b=c*(1-b*(1-h));switch(g){case 1:d=k;e=c;f=a;break;case 2:d=a;e=c;f=b;break;case 3:d=a;e=k;f=c;break;case 4:d=b;e=a;f=c;break;case 5:d=c;e=a;f=k;break;case 6:case 0:d=c,e=b,f=a}}return[Math.floor(d),Math.floor(e),Math.floor(f)]};\ngoog.color.rgbToHsv=function(a,b,c){var d=Math.max(Math.max(a,b),c),e=Math.min(Math.min(a,b),c);if(e==d)e=a=0;else{var f=d-e,e=f/d;a=60*(a==d?(b-c)/f:b==d?2+(c-a)/f:4+(a-b)/f);0>a&&(a+=360);360<a&&(a-=360)}return[a,e,d]};goog.color.rgbArrayToHsv=function(a){return goog.color.rgbToHsv(a[0],a[1],a[2])};goog.color.hsvArrayToRgb=function(a){return goog.color.hsvToRgb(a[0],a[1],a[2])};goog.color.hexToHsl=function(a){a=goog.color.hexToRgb(a);return goog.color.rgbToHsl(a[0],a[1],a[2])};\ngoog.color.hslToHex=function(a,b,c){return goog.color.rgbArrayToHex(goog.color.hslToRgb(a,b,c))};goog.color.hslArrayToHex=function(a){return goog.color.rgbArrayToHex(goog.color.hslToRgb(a[0],a[1],a[2]))};goog.color.hexToHsv=function(a){return goog.color.rgbArrayToHsv(goog.color.hexToRgb(a))};goog.color.hsvToHex=function(a,b,c){return goog.color.rgbArrayToHex(goog.color.hsvToRgb(a,b,c))};goog.color.hsvArrayToHex=function(a){return goog.color.hsvToHex(a[0],a[1],a[2])};\ngoog.color.hslDistance=function(a,b){var c,d;c=.5>=a[2]?a[1]*a[2]:a[1]*(1-a[2]);d=.5>=b[2]?b[1]*b[2]:b[1]*(1-b[2]);return(a[2]-b[2])*(a[2]-b[2])+c*c+d*d-2*c*d*Math.cos(2*(a[0]/360-b[0]/360)*Math.PI)};goog.color.blend=function(a,b,c){c=goog.math.clamp(c,0,1);return[Math.round(c*a[0]+(1-c)*b[0]),Math.round(c*a[1]+(1-c)*b[1]),Math.round(c*a[2]+(1-c)*b[2])]};goog.color.darken=function(a,b){return goog.color.blend([0,0,0],a,b)};goog.color.lighten=function(a,b){return goog.color.blend([255,255,255],a,b)};\ngoog.color.highContrast=function(a,b){for(var c=[],d=0;d<b.length;d++)c.push({color:b[d],diff:goog.color.yiqBrightnessDiff_(b[d],a)+goog.color.colorDiff_(b[d],a)});c.sort(function(a,b){return b.diff-a.diff});return c[0].color};goog.color.yiqBrightness_=function(a){return Math.round((299*a[0]+587*a[1]+114*a[2])/1E3)};goog.color.yiqBrightnessDiff_=function(a,b){return Math.abs(goog.color.yiqBrightness_(a)-goog.color.yiqBrightness_(b))};\ngoog.color.colorDiff_=function(a,b){return Math.abs(a[0]-b[0])+Math.abs(a[1]-b[1])+Math.abs(a[2]-b[2])};goog.iter={};goog.iter.StopIteration="StopIteration"in goog.global?goog.global.StopIteration:{message:"StopIteration",stack:""};goog.iter.Iterator=function(){};goog.iter.Iterator.prototype.next=function(){throw goog.iter.StopIteration;};goog.iter.Iterator.prototype.__iterator__=function(a){return this};\ngoog.iter.toIterator=function(a){if(a instanceof goog.iter.Iterator)return a;if("function"==typeof a.__iterator__)return a.__iterator__(!1);if(goog.isArrayLike(a)){var b=0,c=new goog.iter.Iterator;c.next=function(){for(;;){if(b>=a.length)throw goog.iter.StopIteration;if(b in a)return a[b++];b++}};return c}throw Error("Not implemented");};\ngoog.iter.forEach=function(a,b,c){if(goog.isArrayLike(a))try{goog.array.forEach(a,b,c)}catch(d){if(d!==goog.iter.StopIteration)throw d;}else{a=goog.iter.toIterator(a);try{for(;;)b.call(c,a.next(),void 0,a)}catch(d){if(d!==goog.iter.StopIteration)throw d;}}};goog.iter.filter=function(a,b,c){var d=goog.iter.toIterator(a);a=new goog.iter.Iterator;a.next=function(){for(;;){var a=d.next();if(b.call(c,a,void 0,d))return a}};return a};\ngoog.iter.filterFalse=function(a,b,c){return goog.iter.filter(a,goog.functions.not(b),c)};goog.iter.range=function(a,b,c){var d=0,e=a,f=c||1;1<arguments.length&&(d=a,e=b);if(0==f)throw Error("Range step argument must not be zero");var g=new goog.iter.Iterator;g.next=function(){if(0<f&&d>=e||0>f&&d<=e)throw goog.iter.StopIteration;var a=d;d+=f;return a};return g};goog.iter.join=function(a,b){return goog.iter.toArray(a).join(b)};\ngoog.iter.map=function(a,b,c){var d=goog.iter.toIterator(a);a=new goog.iter.Iterator;a.next=function(){var a=d.next();return b.call(c,a,void 0,d)};return a};goog.iter.reduce=function(a,b,c,d){var e=c;goog.iter.forEach(a,function(a){e=b.call(d,e,a)});return e};goog.iter.some=function(a,b,c){a=goog.iter.toIterator(a);try{for(;;)if(b.call(c,a.next(),void 0,a))return!0}catch(d){if(d!==goog.iter.StopIteration)throw d;}return!1};\ngoog.iter.every=function(a,b,c){a=goog.iter.toIterator(a);try{for(;;)if(!b.call(c,a.next(),void 0,a))return!1}catch(d){if(d!==goog.iter.StopIteration)throw d;}return!0};goog.iter.chain=function(a){return goog.iter.chainFromIterable(arguments)};\ngoog.iter.chainFromIterable=function(a){var b=goog.iter.toIterator(a);a=new goog.iter.Iterator;var c=null;a.next=function(){for(;;){if(null==c){var a=b.next();c=goog.iter.toIterator(a)}try{return c.next()}catch(e){if(e!==goog.iter.StopIteration)throw e;c=null}}};return a};goog.iter.dropWhile=function(a,b,c){var d=goog.iter.toIterator(a);a=new goog.iter.Iterator;var e=!0;a.next=function(){for(;;){var a=d.next();if(!e||!b.call(c,a,void 0,d))return e=!1,a}};return a};\ngoog.iter.takeWhile=function(a,b,c){var d=goog.iter.toIterator(a);a=new goog.iter.Iterator;a.next=function(){var a=d.next();if(b.call(c,a,void 0,d))return a;throw goog.iter.StopIteration;};return a};goog.iter.toArray=function(a){if(goog.isArrayLike(a))return goog.array.toArray(a);a=goog.iter.toIterator(a);var b=[];goog.iter.forEach(a,function(a){b.push(a)});return b};\ngoog.iter.equals=function(a,b,c){a=goog.iter.zipLongest({},a,b);var d=c||goog.array.defaultCompareEquality;return goog.iter.every(a,function(a){return d(a[0],a[1])})};goog.iter.nextOrValue=function(a,b){try{return goog.iter.toIterator(a).next()}catch(c){if(c!=goog.iter.StopIteration)throw c;return b}};\ngoog.iter.product=function(a){if(goog.array.some(arguments,function(a){return!a.length})||!arguments.length)return new goog.iter.Iterator;var b=new goog.iter.Iterator,c=arguments,d=goog.array.repeat(0,c.length);b.next=function(){if(d){for(var a=goog.array.map(d,function(a,b){return c[b][a]}),b=d.length-1;0<=b;b--){goog.asserts.assert(d);if(d[b]<c[b].length-1){d[b]++;break}if(0==b){d=null;break}d[b]=0}return a}throw goog.iter.StopIteration;};return b};\ngoog.iter.cycle=function(a){var b=goog.iter.toIterator(a),c=[],d=0;a=new goog.iter.Iterator;var e=!1;a.next=function(){var a=null;if(!e)try{return a=b.next(),c.push(a),a}catch(g){if(g!=goog.iter.StopIteration||goog.array.isEmpty(c))throw g;e=!0}a=c[d];d=(d+1)%c.length;return a};return a};goog.iter.count=function(a,b){var c=a||0,d=goog.isDef(b)?b:1,e=new goog.iter.Iterator;e.next=function(){var a=c;c+=d;return a};return e};\ngoog.iter.repeat=function(a){var b=new goog.iter.Iterator;b.next=goog.functions.constant(a);return b};goog.iter.accumulate=function(a){var b=goog.iter.toIterator(a),c=0;a=new goog.iter.Iterator;a.next=function(){return c+=b.next()};return a};goog.iter.zip=function(a){var b=arguments,c=new goog.iter.Iterator;if(0<b.length){var d=goog.array.map(b,goog.iter.toIterator);c.next=function(){return goog.array.map(d,function(a){return a.next()})}}return c};\ngoog.iter.zipLongest=function(a,b){var c=goog.array.slice(arguments,1),d=new goog.iter.Iterator;if(0<c.length){var e=goog.array.map(c,goog.iter.toIterator);d.next=function(){var b=!1,c=goog.array.map(e,function(c){var d;try{d=c.next(),b=!0}catch(l){if(l!==goog.iter.StopIteration)throw l;d=a}return d});if(!b)throw goog.iter.StopIteration;return c}}return d};goog.iter.compress=function(a,b){var c=goog.iter.toIterator(b);return goog.iter.filter(a,function(){return!!c.next()})};\ngoog.iter.GroupByIterator_=function(a,b){this.iterator=goog.iter.toIterator(a);this.keyFunc=b||goog.functions.identity};goog.inherits(goog.iter.GroupByIterator_,goog.iter.Iterator);goog.iter.GroupByIterator_.prototype.next=function(){for(;this.currentKey==this.targetKey;)this.currentValue=this.iterator.next(),this.currentKey=this.keyFunc(this.currentValue);this.targetKey=this.currentKey;return[this.currentKey,this.groupItems_(this.targetKey)]};\ngoog.iter.GroupByIterator_.prototype.groupItems_=function(a){for(var b=[];this.currentKey==a;){b.push(this.currentValue);try{this.currentValue=this.iterator.next()}catch(c){if(c!==goog.iter.StopIteration)throw c;break}this.currentKey=this.keyFunc(this.currentValue)}return b};goog.iter.groupBy=function(a,b){return new goog.iter.GroupByIterator_(a,b)};\ngoog.iter.starMap=function(a,b,c){var d=goog.iter.toIterator(a);a=new goog.iter.Iterator;a.next=function(){var a=goog.iter.toArray(d.next());return b.apply(c,goog.array.concat(a,void 0,d))};return a};\ngoog.iter.tee=function(a,b){var c=goog.iter.toIterator(a),d=goog.isNumber(b)?b:2,e=goog.array.map(goog.array.range(d),function(){return[]}),f=function(){var a=c.next();goog.array.forEach(e,function(b){b.push(a)})};return goog.array.map(e,function(a){var b=new goog.iter.Iterator;b.next=function(){goog.array.isEmpty(a)&&f();goog.asserts.assert(!goog.array.isEmpty(a));return a.shift()};return b})};goog.iter.enumerate=function(a,b){return goog.iter.zip(goog.iter.count(b),a)};\ngoog.iter.limit=function(a,b){goog.asserts.assert(goog.math.isInt(b)&&0<=b);var c=goog.iter.toIterator(a),d=new goog.iter.Iterator,e=b;d.next=function(){if(0<e--)return c.next();throw goog.iter.StopIteration;};return d};goog.iter.consume=function(a,b){goog.asserts.assert(goog.math.isInt(b)&&0<=b);for(var c=goog.iter.toIterator(a);0<b--;)goog.iter.nextOrValue(c,null);return c};\ngoog.iter.slice=function(a,b,c){goog.asserts.assert(goog.math.isInt(b)&&0<=b);a=goog.iter.consume(a,b);goog.isNumber(c)&&(goog.asserts.assert(goog.math.isInt(c)&&c>=b),a=goog.iter.limit(a,c-b));return a};goog.iter.hasDuplicates_=function(a){var b=[];goog.array.removeDuplicates(a,b);return a.length!=b.length};goog.iter.permutations=function(a,b){var c=goog.iter.toArray(a),d=goog.isNumber(b)?b:c.length,c=goog.array.repeat(c,d),c=goog.iter.product.apply(void 0,c);return goog.iter.filter(c,function(a){return!goog.iter.hasDuplicates_(a)})};\ngoog.iter.combinations=function(a,b){function c(a){return d[a]}var d=goog.iter.toArray(a),e=goog.iter.range(d.length),e=goog.iter.permutations(e,b),f=goog.iter.filter(e,function(a){return goog.array.isSorted(a)}),e=new goog.iter.Iterator;e.next=function(){return goog.array.map(f.next(),c)};return e};\ngoog.iter.combinationsWithReplacement=function(a,b){function c(a){return d[a]}var d=goog.iter.toArray(a),e=goog.array.range(d.length),e=goog.array.repeat(e,b),e=goog.iter.product.apply(void 0,e),f=goog.iter.filter(e,function(a){return goog.array.isSorted(a)}),e=new goog.iter.Iterator;e.next=function(){return goog.array.map(f.next(),c)};return e};goog.dom.TagWalkType={START_TAG:1,OTHER:0,END_TAG:-1};goog.dom.TagIterator=function(a,b,c,d,e){this.reversed=!!b;this.node=null;this.tagType=goog.dom.TagWalkType.OTHER;this.started_=!1;this.constrained=!c;a&&this.setPosition(a,d);this.depth=void 0!=e?e:this.tagType||0;this.reversed&&(this.depth*=-1)};goog.inherits(goog.dom.TagIterator,goog.iter.Iterator);\ngoog.dom.TagIterator.prototype.setPosition=function(a,b,c){if(this.node=a)goog.isNumber(b)?this.tagType=b:this.tagType=this.node.nodeType!=goog.dom.NodeType.ELEMENT?goog.dom.TagWalkType.OTHER:this.reversed?goog.dom.TagWalkType.END_TAG:goog.dom.TagWalkType.START_TAG;goog.isNumber(c)&&(this.depth=c)};goog.dom.TagIterator.prototype.copyFrom=function(a){this.node=a.node;this.tagType=a.tagType;this.depth=a.depth;this.reversed=a.reversed;this.constrained=a.constrained};\ngoog.dom.TagIterator.prototype.clone=function(){return new goog.dom.TagIterator(this.node,this.reversed,!this.constrained,this.tagType,this.depth)};goog.dom.TagIterator.prototype.skipTag=function(){var a=this.reversed?goog.dom.TagWalkType.END_TAG:goog.dom.TagWalkType.START_TAG;this.tagType==a&&(this.tagType=-1*a,this.depth+=this.tagType*(this.reversed?-1:1))};\ngoog.dom.TagIterator.prototype.restartTag=function(){var a=this.reversed?goog.dom.TagWalkType.START_TAG:goog.dom.TagWalkType.END_TAG;this.tagType==a&&(this.tagType=-1*a,this.depth+=this.tagType*(this.reversed?-1:1))};\ngoog.dom.TagIterator.prototype.next=function(){var a;if(this.started_){if(!this.node||this.constrained&&0==this.depth)throw goog.iter.StopIteration;a=this.node;var b=this.reversed?goog.dom.TagWalkType.END_TAG:goog.dom.TagWalkType.START_TAG;if(this.tagType==b){var c=this.reversed?a.lastChild:a.firstChild;c?this.setPosition(c):this.setPosition(a,-1*b)}else(c=this.reversed?a.previousSibling:a.nextSibling)?this.setPosition(c):this.setPosition(a.parentNode,-1*b);this.depth+=this.tagType*(this.reversed?\n-1:1)}else this.started_=!0;a=this.node;if(!this.node)throw goog.iter.StopIteration;return a};goog.dom.TagIterator.prototype.isStarted=function(){return this.started_};goog.dom.TagIterator.prototype.isStartTag=function(){return this.tagType==goog.dom.TagWalkType.START_TAG};goog.dom.TagIterator.prototype.isEndTag=function(){return this.tagType==goog.dom.TagWalkType.END_TAG};goog.dom.TagIterator.prototype.isNonElement=function(){return this.tagType==goog.dom.TagWalkType.OTHER};\ngoog.dom.TagIterator.prototype.equals=function(a){return a.node==this.node&&(!this.node||a.tagType==this.tagType)};goog.dom.TagIterator.prototype.splice=function(a){var b=this.node;this.restartTag();this.reversed=!this.reversed;goog.dom.TagIterator.prototype.next.call(this);this.reversed=!this.reversed;for(var c=goog.isArrayLike(arguments[0])?arguments[0]:arguments,d=c.length-1;0<=d;d--)goog.dom.insertSiblingAfter(c[d],b);goog.dom.removeNode(b)};goog.dom.NodeIterator=function(a,b,c,d){goog.dom.TagIterator.call(this,a,b,c,null,d)};goog.inherits(goog.dom.NodeIterator,goog.dom.TagIterator);goog.dom.NodeIterator.prototype.next=function(){do goog.dom.NodeIterator.superClass_.next.call(this);while(this.isEndTag());return this.node};goog.ui.PaletteRenderer=function(){goog.ui.ControlRenderer.call(this)};goog.inherits(goog.ui.PaletteRenderer,goog.ui.ControlRenderer);goog.addSingletonGetter(goog.ui.PaletteRenderer);goog.ui.PaletteRenderer.cellId_=0;goog.ui.PaletteRenderer.CSS_CLASS="goog-palette";\ngoog.ui.PaletteRenderer.prototype.createDom=function(a){var b=this.getClassNames(a);a=a.getDomHelper().createDom("DIV",b?b.join(" "):null,this.createGrid(a.getContent(),a.getSize(),a.getDomHelper()));goog.a11y.aria.setRole(a,goog.a11y.aria.Role.GRID);return a};goog.ui.PaletteRenderer.prototype.createGrid=function(a,b,c){for(var d=[],e=0,f=0;e<b.height;e++){for(var g=[],h=0;h<b.width;h++){var k=a&&a[f++];g.push(this.createCell(k,c))}d.push(this.createRow(g,c))}return this.createTable(d,c)};\ngoog.ui.PaletteRenderer.prototype.createTable=function(a,b){var c=b.createDom("TABLE",this.getCssClass()+"-table",b.createDom("TBODY",this.getCssClass()+"-body",a));c.cellSpacing="0";c.cellPadding="0";return c};goog.ui.PaletteRenderer.prototype.createRow=function(a,b){var c=b.createDom("TR",this.getCssClass()+"-row",a);goog.a11y.aria.setRole(c,goog.a11y.aria.Role.ROW);return c};\ngoog.ui.PaletteRenderer.prototype.createCell=function(a,b){var c=b.createDom("TD",{"class":this.getCssClass()+"-cell",id:this.getCssClass()+"-cell-"+goog.ui.PaletteRenderer.cellId_++},a);goog.a11y.aria.setRole(c,goog.a11y.aria.Role.GRIDCELL);goog.a11y.aria.setState(c,goog.a11y.aria.State.SELECTED,!1);if(!goog.dom.getTextContent(c)&&!goog.a11y.aria.getLabel(c)){var d=this.findAriaLabelForCell_(c);d&&goog.a11y.aria.setLabel(c,d)}return c};\ngoog.ui.PaletteRenderer.prototype.findAriaLabelForCell_=function(a){a=new goog.dom.NodeIterator(a);for(var b="",c;!b&&(c=goog.iter.nextOrValue(a,null));)c.nodeType==goog.dom.NodeType.ELEMENT&&(b=goog.a11y.aria.getLabel(c)||c.title);return b};goog.ui.PaletteRenderer.prototype.canDecorate=function(a){return!1};goog.ui.PaletteRenderer.prototype.decorate=function(a,b){return null};\ngoog.ui.PaletteRenderer.prototype.setContent=function(a,b){if(a){var c=goog.dom.getElementsByTagNameAndClass("TBODY",this.getCssClass()+"-body",a)[0];if(c){var d=0;goog.array.forEach(c.rows,function(a){goog.array.forEach(a.cells,function(a){goog.dom.removeChildren(a);if(b){var c=b[d++];c&&goog.dom.appendChild(a,c)}})});if(d<b.length){for(var e=[],f=goog.dom.getDomHelper(a),g=c.rows[0].cells.length;d<b.length;){var h=b[d++];e.push(this.createCell(h,f));e.length==g&&(h=this.createRow(e,f),goog.dom.appendChild(c,\nh),e.length=0)}if(0<e.length){for(;e.length<g;)e.push(this.createCell("",f));h=this.createRow(e,f);goog.dom.appendChild(c,h)}}}goog.style.setUnselectable(a,!0,goog.userAgent.GECKO)}};goog.ui.PaletteRenderer.prototype.getContainingItem=function(a,b){for(var c=a.getElement();b&&b.nodeType==goog.dom.NodeType.ELEMENT&&b!=c;){if("TD"==b.tagName&&goog.dom.classlist.contains(b,this.getCssClass()+"-cell"))return b.firstChild;b=b.parentNode}return null};\ngoog.ui.PaletteRenderer.prototype.highlightCell=function(a,b,c){b&&(b=this.getCellForItem(b),goog.asserts.assert(b),goog.dom.classlist.enable(b,this.getCssClass()+"-cell-hover",c),c?goog.a11y.aria.setState(a.getElementStrict(),goog.a11y.aria.State.ACTIVEDESCENDANT,b.id):b.id==goog.a11y.aria.getState(a.getElementStrict(),goog.a11y.aria.State.ACTIVEDESCENDANT)&&goog.a11y.aria.removeState(a.getElementStrict(),goog.a11y.aria.State.ACTIVEDESCENDANT))};\ngoog.ui.PaletteRenderer.prototype.getCellForItem=function(a){return a?a.parentNode:null};goog.ui.PaletteRenderer.prototype.selectCell=function(a,b,c){b&&(a=b.parentNode,goog.dom.classlist.enable(a,this.getCssClass()+"-cell-selected",c),goog.a11y.aria.setState(a,goog.a11y.aria.State.SELECTED,c))};goog.ui.PaletteRenderer.prototype.getCssClass=function(){return goog.ui.PaletteRenderer.CSS_CLASS};goog.ui.SelectionModel=function(a){goog.events.EventTarget.call(this);this.items_=[];this.addItems(a)};goog.inherits(goog.ui.SelectionModel,goog.events.EventTarget);goog.tagUnsealableClass(goog.ui.SelectionModel);goog.ui.SelectionModel.prototype.selectedItem_=null;goog.ui.SelectionModel.prototype.selectionHandler_=null;goog.ui.SelectionModel.prototype.getSelectionHandler=function(){return this.selectionHandler_};\ngoog.ui.SelectionModel.prototype.setSelectionHandler=function(a){this.selectionHandler_=a};goog.ui.SelectionModel.prototype.getItemCount=function(){return this.items_.length};goog.ui.SelectionModel.prototype.indexOfItem=function(a){return a?goog.array.indexOf(this.items_,a):-1};goog.ui.SelectionModel.prototype.getFirst=function(){return this.items_[0]};goog.ui.SelectionModel.prototype.getLast=function(){return this.items_[this.items_.length-1]};\ngoog.ui.SelectionModel.prototype.getItemAt=function(a){return this.items_[a]||null};goog.ui.SelectionModel.prototype.addItems=function(a){a&&(goog.array.forEach(a,function(a){this.selectItem_(a,!1)},this),goog.array.extend(this.items_,a))};goog.ui.SelectionModel.prototype.addItem=function(a){this.addItemAt(a,this.getItemCount())};goog.ui.SelectionModel.prototype.addItemAt=function(a,b){a&&(this.selectItem_(a,!1),goog.array.insertAt(this.items_,a,b))};\ngoog.ui.SelectionModel.prototype.removeItem=function(a){a&&goog.array.remove(this.items_,a)&&a==this.selectedItem_&&(this.selectedItem_=null,this.dispatchEvent(goog.events.EventType.SELECT))};goog.ui.SelectionModel.prototype.removeItemAt=function(a){this.removeItem(this.getItemAt(a))};goog.ui.SelectionModel.prototype.getSelectedItem=function(){return this.selectedItem_};goog.ui.SelectionModel.prototype.getItems=function(){return goog.array.clone(this.items_)};\ngoog.ui.SelectionModel.prototype.setSelectedItem=function(a){a!=this.selectedItem_&&(this.selectItem_(this.selectedItem_,!1),this.selectedItem_=a,this.selectItem_(a,!0));this.dispatchEvent(goog.events.EventType.SELECT)};goog.ui.SelectionModel.prototype.getSelectedIndex=function(){return this.indexOfItem(this.selectedItem_)};goog.ui.SelectionModel.prototype.setSelectedIndex=function(a){this.setSelectedItem(this.getItemAt(a))};\ngoog.ui.SelectionModel.prototype.clear=function(){goog.array.clear(this.items_);this.selectedItem_=null};goog.ui.SelectionModel.prototype.disposeInternal=function(){goog.ui.SelectionModel.superClass_.disposeInternal.call(this);delete this.items_;this.selectedItem_=null};goog.ui.SelectionModel.prototype.selectItem_=function(a,b){a&&("function"==typeof this.selectionHandler_?this.selectionHandler_(a,b):"function"==typeof a.setSelected&&a.setSelected(b))};goog.ui.Palette=function(a,b,c){goog.ui.Control.call(this,a,b||goog.ui.PaletteRenderer.getInstance(),c);this.setAutoStates(goog.ui.Component.State.CHECKED|goog.ui.Component.State.SELECTED|goog.ui.Component.State.OPENED,!1);this.currentCellControl_=new goog.ui.Palette.CurrentCell_;this.currentCellControl_.setParentEventTarget(this);this.lastHighlightedIndex_=-1};goog.inherits(goog.ui.Palette,goog.ui.Control);goog.tagUnsealableClass(goog.ui.Palette);goog.ui.Palette.EventType={AFTER_HIGHLIGHT:goog.events.getUniqueId("afterhighlight")};\ngoog.ui.Palette.prototype.size_=null;goog.ui.Palette.prototype.highlightedIndex_=-1;goog.ui.Palette.prototype.selectionModel_=null;goog.ui.Palette.prototype.disposeInternal=function(){goog.ui.Palette.superClass_.disposeInternal.call(this);this.selectionModel_&&(this.selectionModel_.dispose(),this.selectionModel_=null);this.size_=null;this.currentCellControl_.dispose()};\ngoog.ui.Palette.prototype.setContentInternal=function(a){goog.ui.Palette.superClass_.setContentInternal.call(this,a);this.adjustSize_();this.selectionModel_?(this.selectionModel_.clear(),this.selectionModel_.addItems(a)):(this.selectionModel_=new goog.ui.SelectionModel(a),this.selectionModel_.setSelectionHandler(goog.bind(this.selectItem_,this)),this.getHandler().listen(this.selectionModel_,goog.events.EventType.SELECT,this.handleSelectionChange));this.highlightedIndex_=-1};\ngoog.ui.Palette.prototype.getCaption=function(){return""};goog.ui.Palette.prototype.setCaption=function(a){};goog.ui.Palette.prototype.handleMouseOver=function(a){goog.ui.Palette.superClass_.handleMouseOver.call(this,a);var b=this.getRenderer().getContainingItem(this,a.target);b&&a.relatedTarget&&goog.dom.contains(b,a.relatedTarget)||b!=this.getHighlightedItem()&&this.setHighlightedItem(b)};\ngoog.ui.Palette.prototype.handleMouseDown=function(a){goog.ui.Palette.superClass_.handleMouseDown.call(this,a);this.isActive()&&(a=this.getRenderer().getContainingItem(this,a.target),a!=this.getHighlightedItem()&&this.setHighlightedItem(a))};goog.ui.Palette.prototype.performActionInternal=function(a){var b=this.getHighlightedItem();return b?(a&&this.shouldSelectHighlightedItem_(a)&&this.setSelectedItem(b),goog.ui.Palette.superClass_.performActionInternal.call(this,a)):!1};\ngoog.ui.Palette.prototype.shouldSelectHighlightedItem_=function(a){return this.getSelectedItem()?"mouseup"!=a.type?!0:!!this.getRenderer().getContainingItem(this,a.target):!0};\ngoog.ui.Palette.prototype.handleKeyEvent=function(a){var b=this.getContent(),b=b?b.length:0,c=this.size_.width;if(0==b||!this.isEnabled())return!1;if(a.keyCode==goog.events.KeyCodes.ENTER||a.keyCode==goog.events.KeyCodes.SPACE)return this.performActionInternal(a);if(a.keyCode==goog.events.KeyCodes.HOME)return this.setHighlightedIndex(0),!0;if(a.keyCode==goog.events.KeyCodes.END)return this.setHighlightedIndex(b-1),!0;var d=0>this.highlightedIndex_?this.getSelectedIndex():this.highlightedIndex_;switch(a.keyCode){case goog.events.KeyCodes.LEFT:if(-1==\nd||0==d)d=b;this.setHighlightedIndex(d-1);a.preventDefault();return!0;case goog.events.KeyCodes.RIGHT:return d==b-1&&(d=-1),this.setHighlightedIndex(d+1),a.preventDefault(),!0;case goog.events.KeyCodes.UP:-1==d&&(d=b+c-1);if(d>=c)return this.setHighlightedIndex(d-c),a.preventDefault(),!0;break;case goog.events.KeyCodes.DOWN:if(-1==d&&(d=-c),d<b-c)return this.setHighlightedIndex(d+c),a.preventDefault(),!0}return!1};goog.ui.Palette.prototype.handleSelectionChange=function(a){};\ngoog.ui.Palette.prototype.getSize=function(){return this.size_};goog.ui.Palette.prototype.setSize=function(a,b){if(this.getElement())throw Error(goog.ui.Component.Error.ALREADY_RENDERED);this.size_=goog.isNumber(a)?new goog.math.Size(a,b):a;this.adjustSize_()};goog.ui.Palette.prototype.getHighlightedIndex=function(){return this.highlightedIndex_};goog.ui.Palette.prototype.getHighlightedItem=function(){var a=this.getContent();return a&&a[this.highlightedIndex_]};\ngoog.ui.Palette.prototype.getHighlightedCellElement_=function(){return this.getRenderer().getCellForItem(this.getHighlightedItem())};goog.ui.Palette.prototype.setHighlightedIndex=function(a){a!=this.highlightedIndex_&&(this.highlightIndex_(this.highlightedIndex_,!1),this.lastHighlightedIndex_=this.highlightedIndex_,this.highlightedIndex_=a,this.highlightIndex_(a,!0),this.dispatchEvent(goog.ui.Palette.EventType.AFTER_HIGHLIGHT))};\ngoog.ui.Palette.prototype.setHighlightedItem=function(a){var b=this.getContent();this.setHighlightedIndex(b&&a?goog.array.indexOf(b,a):-1)};goog.ui.Palette.prototype.getSelectedIndex=function(){return this.selectionModel_?this.selectionModel_.getSelectedIndex():-1};goog.ui.Palette.prototype.getSelectedItem=function(){return this.selectionModel_?this.selectionModel_.getSelectedItem():null};goog.ui.Palette.prototype.setSelectedIndex=function(a){this.selectionModel_&&this.selectionModel_.setSelectedIndex(a)};\ngoog.ui.Palette.prototype.setSelectedItem=function(a){this.selectionModel_&&this.selectionModel_.setSelectedItem(a)};goog.ui.Palette.prototype.highlightIndex_=function(a,b){if(this.getElement()){var c=this.getContent();if(c&&0<=a&&a<c.length){var d=this.getHighlightedCellElement_();this.currentCellControl_.getElement()!=d&&this.currentCellControl_.setElementInternal(d);this.currentCellControl_.tryHighlight(b)&&this.getRenderer().highlightCell(this,c[a],b)}}};\ngoog.ui.Palette.prototype.setHighlighted=function(a){a&&-1==this.highlightedIndex_?this.setHighlightedIndex(-1<this.lastHighlightedIndex_?this.lastHighlightedIndex_:0):a||this.setHighlightedIndex(-1);goog.ui.Palette.superClass_.setHighlighted.call(this,a)};goog.ui.Palette.prototype.selectItem_=function(a,b){this.getElement()&&this.getRenderer().selectCell(this,a,b)};\ngoog.ui.Palette.prototype.adjustSize_=function(){var a=this.getContent();if(a)if(this.size_&&this.size_.width){if(a=Math.ceil(a.length/this.size_.width),!goog.isNumber(this.size_.height)||this.size_.height<a)this.size_.height=a}else a=Math.ceil(Math.sqrt(a.length)),this.size_=new goog.math.Size(a,a);else this.size_=new goog.math.Size(0,0)};goog.ui.Palette.CurrentCell_=function(){goog.ui.Control.call(this,null);this.setDispatchTransitionEvents(goog.ui.Component.State.HOVER,!0)};\ngoog.inherits(goog.ui.Palette.CurrentCell_,goog.ui.Control);goog.ui.Palette.CurrentCell_.prototype.tryHighlight=function(a){this.setHighlighted(a);return this.isHighlighted()==a};goog.ui.ColorPalette=function(a,b,c){this.colors_=a||[];goog.ui.Palette.call(this,null,b||goog.ui.PaletteRenderer.getInstance(),c);this.setColors(this.colors_)};goog.inherits(goog.ui.ColorPalette,goog.ui.Palette);goog.tagUnsealableClass(goog.ui.ColorPalette);goog.ui.ColorPalette.prototype.normalizedColors_=null;goog.ui.ColorPalette.prototype.labels_=null;goog.ui.ColorPalette.prototype.getColors=function(){return this.colors_};\ngoog.ui.ColorPalette.prototype.setColors=function(a,b){this.colors_=a;this.labels_=b||null;this.normalizedColors_=null;this.setContent(this.createColorNodes())};goog.ui.ColorPalette.prototype.getSelectedColor=function(){var a=this.getSelectedItem();return a?(a=goog.style.getStyle(a,"background-color"),goog.ui.ColorPalette.parseColor_(a)):null};\ngoog.ui.ColorPalette.prototype.setSelectedColor=function(a){a=goog.ui.ColorPalette.parseColor_(a);this.normalizedColors_||(this.normalizedColors_=goog.array.map(this.colors_,function(a){return goog.ui.ColorPalette.parseColor_(a)}));this.setSelectedIndex(a?goog.array.indexOf(this.normalizedColors_,a):-1)};\ngoog.ui.ColorPalette.prototype.createColorNodes=function(){return goog.array.map(this.colors_,function(a,b){var c=this.getDomHelper().createDom("DIV",{"class":this.getRenderer().getCssClass()+"-colorswatch",style:"background-color:"+a});c.title=this.labels_&&this.labels_[b]?this.labels_[b]:"#"==a.charAt(0)?"RGB ("+goog.color.hexToRgb(a).join(", ")+")":a;return c},this)};goog.ui.ColorPalette.parseColor_=function(a){if(a)try{return goog.color.parse(a).hex}catch(b){}return null};goog.ui.ColorPicker=function(a,b){goog.ui.Component.call(this,a);this.colorPalette_=b||null;this.getHandler().listen(this,goog.ui.Component.EventType.ACTION,this.onColorPaletteAction_)};goog.inherits(goog.ui.ColorPicker,goog.ui.Component);goog.ui.ColorPicker.DEFAULT_NUM_COLS=5;goog.ui.ColorPicker.EventType={CHANGE:"change"};goog.ui.ColorPicker.prototype.focusable_=!0;goog.ui.ColorPicker.prototype.getColors=function(){return this.colorPalette_?this.colorPalette_.getColors():null};\ngoog.ui.ColorPicker.prototype.setColors=function(a){this.colorPalette_?this.colorPalette_.setColors(a):this.createColorPalette_(a)};goog.ui.ColorPicker.prototype.addColors=function(a){this.setColors(a)};goog.ui.ColorPicker.prototype.setSize=function(a){this.colorPalette_||this.createColorPalette_([]);this.colorPalette_.setSize(a)};goog.ui.ColorPicker.prototype.getSize=function(){return this.colorPalette_?this.colorPalette_.getSize():null};goog.ui.ColorPicker.prototype.setColumnCount=function(a){this.setSize(a)};\ngoog.ui.ColorPicker.prototype.getSelectedIndex=function(){return this.colorPalette_?this.colorPalette_.getSelectedIndex():-1};goog.ui.ColorPicker.prototype.setSelectedIndex=function(a){this.colorPalette_&&this.colorPalette_.setSelectedIndex(a)};goog.ui.ColorPicker.prototype.getSelectedColor=function(){return this.colorPalette_?this.colorPalette_.getSelectedColor():null};goog.ui.ColorPicker.prototype.setSelectedColor=function(a){this.colorPalette_&&this.colorPalette_.setSelectedColor(a)};\ngoog.ui.ColorPicker.prototype.isFocusable=function(){return this.focusable_};goog.ui.ColorPicker.prototype.setFocusable=function(a){this.focusable_=a;this.colorPalette_&&this.colorPalette_.setSupportedState(goog.ui.Component.State.FOCUSED,a)};goog.ui.ColorPicker.prototype.canDecorate=function(a){return!1};\ngoog.ui.ColorPicker.prototype.enterDocument=function(){goog.ui.ColorPicker.superClass_.enterDocument.call(this);this.colorPalette_&&this.colorPalette_.render(this.getElement());this.getElement().unselectable="on"};goog.ui.ColorPicker.prototype.disposeInternal=function(){goog.ui.ColorPicker.superClass_.disposeInternal.call(this);this.colorPalette_&&(this.colorPalette_.dispose(),this.colorPalette_=null)};goog.ui.ColorPicker.prototype.focus=function(){this.colorPalette_&&this.colorPalette_.getElement().focus()};\ngoog.ui.ColorPicker.prototype.onColorPaletteAction_=function(a){a.stopPropagation();this.dispatchEvent(goog.ui.ColorPicker.EventType.CHANGE)};goog.ui.ColorPicker.prototype.createColorPalette_=function(a){a=new goog.ui.ColorPalette(a,null,this.getDomHelper());a.setSize(goog.ui.ColorPicker.DEFAULT_NUM_COLS);a.setSupportedState(goog.ui.Component.State.FOCUSED,this.focusable_);this.addChild(a);this.colorPalette_=a;this.isInDocument()&&this.colorPalette_.render(this.getElement())};\ngoog.ui.ColorPicker.createSimpleColorGrid=function(a){a=new goog.ui.ColorPicker(a);a.setSize(7);a.setColors(goog.ui.ColorPicker.SIMPLE_GRID_COLORS);return a};goog.ui.ColorPicker.SIMPLE_GRID_COLORS="#ffffff #cccccc #c0c0c0 #999999 #666666 #333333 #000000 #ffcccc #ff6666 #ff0000 #cc0000 #990000 #660000 #330000 #ffcc99 #ff9966 #ff9900 #ff6600 #cc6600 #993300 #663300 #ffff99 #ffff66 #ffcc66 #ffcc33 #cc9933 #996633 #663333 #ffffcc #ffff33 #ffff00 #ffcc00 #999900 #666600 #333300 #99ff99 #66ff99 #33ff33 #33cc00 #009900 #006600 #003300 #99ffff #33ffff #66cccc #00cccc #339999 #336666 #003333 #ccffff #66ffff #33ccff #3366ff #3333ff #000099 #000066 #ccccff #9999ff #6666cc #6633ff #6600cc #333399 #330099 #ffccff #ff99ff #cc66cc #cc33cc #993399 #663366 #330033".split(" ");goog.events.FocusHandler=function(a){goog.events.EventTarget.call(this);this.element_=a;a=goog.userAgent.IE?"focusout":"blur";this.listenKeyIn_=goog.events.listen(this.element_,goog.userAgent.IE?"focusin":"focus",this,!goog.userAgent.IE);this.listenKeyOut_=goog.events.listen(this.element_,a,this,!goog.userAgent.IE)};goog.inherits(goog.events.FocusHandler,goog.events.EventTarget);goog.events.FocusHandler.EventType={FOCUSIN:"focusin",FOCUSOUT:"focusout"};\ngoog.events.FocusHandler.prototype.handleEvent=function(a){var b=a.getBrowserEvent(),b=new goog.events.BrowserEvent(b);b.type="focusin"==a.type||"focus"==a.type?goog.events.FocusHandler.EventType.FOCUSIN:goog.events.FocusHandler.EventType.FOCUSOUT;this.dispatchEvent(b)};goog.events.FocusHandler.prototype.disposeInternal=function(){goog.events.FocusHandler.superClass_.disposeInternal.call(this);goog.events.unlistenByKey(this.listenKeyIn_);goog.events.unlistenByKey(this.listenKeyOut_);delete this.element_};goog.structs={};goog.structs.getCount=function(a){return a.getCount&&"function"==typeof a.getCount?a.getCount():goog.isArrayLike(a)||goog.isString(a)?a.length:goog.object.getCount(a)};goog.structs.getValues=function(a){if(a.getValues&&"function"==typeof a.getValues)return a.getValues();if(goog.isString(a))return a.split("");if(goog.isArrayLike(a)){for(var b=[],c=a.length,d=0;d<c;d++)b.push(a[d]);return b}return goog.object.getValues(a)};\ngoog.structs.getKeys=function(a){if(a.getKeys&&"function"==typeof a.getKeys)return a.getKeys();if(!a.getValues||"function"!=typeof a.getValues){if(goog.isArrayLike(a)||goog.isString(a)){var b=[];a=a.length;for(var c=0;c<a;c++)b.push(c);return b}return goog.object.getKeys(a)}};\ngoog.structs.contains=function(a,b){return a.contains&&"function"==typeof a.contains?a.contains(b):a.containsValue&&"function"==typeof a.containsValue?a.containsValue(b):goog.isArrayLike(a)||goog.isString(a)?goog.array.contains(a,b):goog.object.containsValue(a,b)};goog.structs.isEmpty=function(a){return a.isEmpty&&"function"==typeof a.isEmpty?a.isEmpty():goog.isArrayLike(a)||goog.isString(a)?goog.array.isEmpty(a):goog.object.isEmpty(a)};\ngoog.structs.clear=function(a){a.clear&&"function"==typeof a.clear?a.clear():goog.isArrayLike(a)?goog.array.clear(a):goog.object.clear(a)};goog.structs.forEach=function(a,b,c){if(a.forEach&&"function"==typeof a.forEach)a.forEach(b,c);else if(goog.isArrayLike(a)||goog.isString(a))goog.array.forEach(a,b,c);else for(var d=goog.structs.getKeys(a),e=goog.structs.getValues(a),f=e.length,g=0;g<f;g++)b.call(c,e[g],d&&d[g],a)};\ngoog.structs.filter=function(a,b,c){if("function"==typeof a.filter)return a.filter(b,c);if(goog.isArrayLike(a)||goog.isString(a))return goog.array.filter(a,b,c);var d,e=goog.structs.getKeys(a),f=goog.structs.getValues(a),g=f.length;if(e){d={};for(var h=0;h<g;h++)b.call(c,f[h],e[h],a)&&(d[e[h]]=f[h])}else for(d=[],h=0;h<g;h++)b.call(c,f[h],void 0,a)&&d.push(f[h]);return d};\ngoog.structs.map=function(a,b,c){if("function"==typeof a.map)return a.map(b,c);if(goog.isArrayLike(a)||goog.isString(a))return goog.array.map(a,b,c);var d,e=goog.structs.getKeys(a),f=goog.structs.getValues(a),g=f.length;if(e){d={};for(var h=0;h<g;h++)d[e[h]]=b.call(c,f[h],e[h],a)}else for(d=[],h=0;h<g;h++)d[h]=b.call(c,f[h],void 0,a);return d};\ngoog.structs.some=function(a,b,c){if("function"==typeof a.some)return a.some(b,c);if(goog.isArrayLike(a)||goog.isString(a))return goog.array.some(a,b,c);for(var d=goog.structs.getKeys(a),e=goog.structs.getValues(a),f=e.length,g=0;g<f;g++)if(b.call(c,e[g],d&&d[g],a))return!0;return!1};\ngoog.structs.every=function(a,b,c){if("function"==typeof a.every)return a.every(b,c);if(goog.isArrayLike(a)||goog.isString(a))return goog.array.every(a,b,c);for(var d=goog.structs.getKeys(a),e=goog.structs.getValues(a),f=e.length,g=0;g<f;g++)if(!b.call(c,e[g],d&&d[g],a))return!1;return!0};goog.structs.Collection=function(){};goog.structs.Map=function(a,b){this.map_={};this.keys_=[];this.version_=this.count_=0;var c=arguments.length;if(1<c){if(c%2)throw Error("Uneven number of arguments");for(var d=0;d<c;d+=2)this.set(arguments[d],arguments[d+1])}else a&&this.addAll(a)};goog.structs.Map.prototype.getCount=function(){return this.count_};goog.structs.Map.prototype.getValues=function(){this.cleanupKeysArray_();for(var a=[],b=0;b<this.keys_.length;b++)a.push(this.map_[this.keys_[b]]);return a};\ngoog.structs.Map.prototype.getKeys=function(){this.cleanupKeysArray_();return this.keys_.concat()};goog.structs.Map.prototype.containsKey=function(a){return goog.structs.Map.hasKey_(this.map_,a)};goog.structs.Map.prototype.containsValue=function(a){for(var b=0;b<this.keys_.length;b++){var c=this.keys_[b];if(goog.structs.Map.hasKey_(this.map_,c)&&this.map_[c]==a)return!0}return!1};\ngoog.structs.Map.prototype.equals=function(a,b){if(this===a)return!0;if(this.count_!=a.getCount())return!1;var c=b||goog.structs.Map.defaultEquals;this.cleanupKeysArray_();for(var d,e=0;d=this.keys_[e];e++)if(!c(this.get(d),a.get(d)))return!1;return!0};goog.structs.Map.defaultEquals=function(a,b){return a===b};goog.structs.Map.prototype.isEmpty=function(){return 0==this.count_};goog.structs.Map.prototype.clear=function(){this.map_={};this.version_=this.count_=this.keys_.length=0};\ngoog.structs.Map.prototype.remove=function(a){return goog.structs.Map.hasKey_(this.map_,a)?(delete this.map_[a],this.count_--,this.version_++,this.keys_.length>2*this.count_&&this.cleanupKeysArray_(),!0):!1};\ngoog.structs.Map.prototype.cleanupKeysArray_=function(){if(this.count_!=this.keys_.length){for(var a=0,b=0;a<this.keys_.length;){var c=this.keys_[a];goog.structs.Map.hasKey_(this.map_,c)&&(this.keys_[b++]=c);a++}this.keys_.length=b}if(this.count_!=this.keys_.length){for(var d={},b=a=0;a<this.keys_.length;)c=this.keys_[a],goog.structs.Map.hasKey_(d,c)||(this.keys_[b++]=c,d[c]=1),a++;this.keys_.length=b}};\ngoog.structs.Map.prototype.get=function(a,b){return goog.structs.Map.hasKey_(this.map_,a)?this.map_[a]:b};goog.structs.Map.prototype.set=function(a,b){goog.structs.Map.hasKey_(this.map_,a)||(this.count_++,this.keys_.push(a),this.version_++);this.map_[a]=b};goog.structs.Map.prototype.addAll=function(a){var b;a instanceof goog.structs.Map?(b=a.getKeys(),a=a.getValues()):(b=goog.object.getKeys(a),a=goog.object.getValues(a));for(var c=0;c<b.length;c++)this.set(b[c],a[c])};\ngoog.structs.Map.prototype.forEach=function(a,b){for(var c=this.getKeys(),d=0;d<c.length;d++){var e=c[d],f=this.get(e);a.call(b,f,e,this)}};goog.structs.Map.prototype.clone=function(){return new goog.structs.Map(this)};goog.structs.Map.prototype.transpose=function(){for(var a=new goog.structs.Map,b=0;b<this.keys_.length;b++){var c=this.keys_[b];a.set(this.map_[c],c)}return a};\ngoog.structs.Map.prototype.toObject=function(){this.cleanupKeysArray_();for(var a={},b=0;b<this.keys_.length;b++){var c=this.keys_[b];a[c]=this.map_[c]}return a};goog.structs.Map.prototype.getKeyIterator=function(){return this.__iterator__(!0)};goog.structs.Map.prototype.getValueIterator=function(){return this.__iterator__(!1)};\ngoog.structs.Map.prototype.__iterator__=function(a){this.cleanupKeysArray_();var b=0,c=this.version_,d=this,e=new goog.iter.Iterator;e.next=function(){if(c!=d.version_)throw Error("The map has changed since the iterator was created");if(b>=d.keys_.length)throw goog.iter.StopIteration;var e=d.keys_[b++];return a?e:d.map_[e]};return e};goog.structs.Map.hasKey_=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)};goog.structs.Set=function(a){this.map_=new goog.structs.Map;a&&this.addAll(a)};goog.structs.Set.getKey_=function(a){var b=typeof a;return"object"==b&&a||"function"==b?"o"+goog.getUid(a):b.substr(0,1)+a};goog.structs.Set.prototype.getCount=function(){return this.map_.getCount()};goog.structs.Set.prototype.add=function(a){this.map_.set(goog.structs.Set.getKey_(a),a)};goog.structs.Set.prototype.addAll=function(a){a=goog.structs.getValues(a);for(var b=a.length,c=0;c<b;c++)this.add(a[c])};\ngoog.structs.Set.prototype.removeAll=function(a){a=goog.structs.getValues(a);for(var b=a.length,c=0;c<b;c++)this.remove(a[c])};goog.structs.Set.prototype.remove=function(a){return this.map_.remove(goog.structs.Set.getKey_(a))};goog.structs.Set.prototype.clear=function(){this.map_.clear()};goog.structs.Set.prototype.isEmpty=function(){return this.map_.isEmpty()};goog.structs.Set.prototype.contains=function(a){return this.map_.containsKey(goog.structs.Set.getKey_(a))};\ngoog.structs.Set.prototype.containsAll=function(a){return goog.structs.every(a,this.contains,this)};goog.structs.Set.prototype.intersection=function(a){var b=new goog.structs.Set;a=goog.structs.getValues(a);for(var c=0;c<a.length;c++){var d=a[c];this.contains(d)&&b.add(d)}return b};goog.structs.Set.prototype.difference=function(a){var b=this.clone();b.removeAll(a);return b};goog.structs.Set.prototype.getValues=function(){return this.map_.getValues()};goog.structs.Set.prototype.clone=function(){return new goog.structs.Set(this)};\ngoog.structs.Set.prototype.equals=function(a){return this.getCount()==goog.structs.getCount(a)&&this.isSubsetOf(a)};goog.structs.Set.prototype.isSubsetOf=function(a){var b=goog.structs.getCount(a);if(this.getCount()>b)return!1;!(a instanceof goog.structs.Set)&&5<b&&(a=new goog.structs.Set(a));return goog.structs.every(this,function(b){return goog.structs.contains(a,b)})};goog.structs.Set.prototype.__iterator__=function(a){return this.map_.__iterator__(!1)};goog.debug.LOGGING_ENABLED=goog.DEBUG;goog.debug.FORCE_SLOPPY_STACKS=!1;goog.debug.catchErrors=function(a,b,c){c=c||goog.global;var d=c.onerror,e=!!b;goog.userAgent.WEBKIT&&!goog.userAgent.isVersionOrHigher("535.3")&&(e=!e);c.onerror=function(b,c,h,k,l){d&&d(b,c,h,k,l);a({message:b,fileName:c,line:h,col:k,error:l});return e}};\ngoog.debug.expose=function(a,b){if("undefined"==typeof a)return"undefined";if(null==a)return"NULL";var c=[],d;for(d in a)if(b||!goog.isFunction(a[d])){var e=d+" = ";try{e+=a[d]}catch(f){e+="*** "+f+" ***"}c.push(e)}return c.join("\\n")};\ngoog.debug.deepExpose=function(a,b){var c=[],d=function(a,f,g){var e=f+"  ";g=new goog.structs.Set(g);try{if(goog.isDef(a))if(goog.isNull(a))c.push("NULL");else if(goog.isString(a))c.push(\'"\'+a.replace(/\\n/g,"\\n"+f)+\'"\');else if(goog.isFunction(a))c.push(String(a).replace(/\\n/g,"\\n"+f));else if(goog.isObject(a))if(g.contains(a))c.push("*** reference loop detected ***");else{g.add(a);c.push("{");for(var k in a)if(b||!goog.isFunction(a[k]))c.push("\\n"),c.push(e),c.push(k+" = "),d(a[k],e,g);c.push("\\n"+\nf+"}")}else c.push(a);else c.push("undefined")}catch(l){c.push("*** "+l+" ***")}};d(a,"",new goog.structs.Set);return c.join("")};goog.debug.exposeArray=function(a){for(var b=[],c=0;c<a.length;c++)goog.isArray(a[c])?b.push(goog.debug.exposeArray(a[c])):b.push(a[c]);return"[ "+b.join(", ")+" ]"};goog.debug.exposeException=function(a,b){var c=goog.debug.exposeExceptionAsHtml(a,b);return goog.html.SafeHtml.unwrap(c)};\ngoog.debug.exposeExceptionAsHtml=function(a,b){try{var c=goog.debug.normalizeErrorObject(a),d=goog.debug.createViewSourceUrl_(c.fileName);return goog.html.SafeHtml.concat(goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces("Message: "+c.message+"\\nUrl: "),goog.html.SafeHtml.create("a",{href:d,target:"_new"},c.fileName),goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces("\\nLine: "+c.lineNumber+"\\n\\nBrowser stack:\\n"+c.stack+"-> [end]\\n\\nJS stack traversal:\\n"+goog.debug.getStacktrace(b)+\n"-> "))}catch(e){return goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces("Exception trying to expose exception! You win, we lose. "+e)}};\ngoog.debug.createViewSourceUrl_=function(a){goog.isDefAndNotNull(a)||(a="");if(!/^https?:\\/\\//i.test(a))return goog.html.SafeUrl.fromConstant(goog.string.Const.from("sanitizedviewsrc"));a=goog.html.SafeUrl.sanitize(a);return goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("view-source scheme plus HTTP/HTTPS URL"),"view-source:"+goog.html.SafeUrl.unwrap(a))};\ngoog.debug.normalizeErrorObject=function(a){var b=goog.getObjectByName("window.location.href");if(goog.isString(a))return{message:a,name:"Unknown error",lineNumber:"Not available",fileName:b,stack:"Not available"};var c,d,e=!1;try{c=a.lineNumber||a.line||"Not available"}catch(f){c="Not available",e=!0}try{d=a.fileName||a.filename||a.sourceURL||goog.global.$googDebugFname||b}catch(f){d="Not available",e=!0}return!e&&a.lineNumber&&a.fileName&&a.stack&&a.message&&a.name?a:{message:a.message||"Not available",\nname:a.name||"UnknownError",lineNumber:c,fileName:d,stack:a.stack||"Not available"}};goog.debug.enhanceError=function(a,b){var c;a instanceof Error?c=a:(c=Error(a),Error.captureStackTrace&&Error.captureStackTrace(c,goog.debug.enhanceError));c.stack||(c.stack=goog.debug.getStacktrace(goog.debug.enhanceError));if(b){for(var d=0;c["message"+d];)++d;c["message"+d]=String(b)}return c};\ngoog.debug.getStacktraceSimple=function(a){if(!goog.debug.FORCE_SLOPPY_STACKS){var b=goog.debug.getNativeStackTrace_(goog.debug.getStacktraceSimple);if(b)return b}for(var b=[],c=arguments.callee.caller,d=0;c&&(!a||d<a);){b.push(goog.debug.getFunctionName(c));b.push("()\\n");try{c=c.caller}catch(e){b.push("[exception trying to get caller]\\n");break}d++;if(d>=goog.debug.MAX_STACK_DEPTH){b.push("[...long stack...]");break}}a&&d>=a?b.push("[...reached max depth limit...]"):b.push("[end]");return b.join("")};\ngoog.debug.MAX_STACK_DEPTH=50;goog.debug.getNativeStackTrace_=function(a){var b=Error();if(Error.captureStackTrace)return Error.captureStackTrace(b,a),String(b.stack);try{throw b;}catch(c){b=c}return(a=b.stack)?String(a):null};goog.debug.getStacktrace=function(a){var b;goog.debug.FORCE_SLOPPY_STACKS||(b=goog.debug.getNativeStackTrace_(a||goog.debug.getStacktrace));b||(b=goog.debug.getStacktraceHelper_(a||arguments.callee.caller,[]));return b};\ngoog.debug.getStacktraceHelper_=function(a,b){var c=[];if(goog.array.contains(b,a))c.push("[...circular reference...]");else if(a&&b.length<goog.debug.MAX_STACK_DEPTH){c.push(goog.debug.getFunctionName(a)+"(");for(var d=a.arguments,e=0;d&&e<d.length;e++){0<e&&c.push(", ");var f;f=d[e];switch(typeof f){case "object":f=f?"object":"null";break;case "string":break;case "number":f=String(f);break;case "boolean":f=f?"true":"false";break;case "function":f=(f=goog.debug.getFunctionName(f))?f:"[fn]";break;\ndefault:f=typeof f}40<f.length&&(f=f.substr(0,40)+"...");c.push(f)}b.push(a);c.push(")\\n");try{c.push(goog.debug.getStacktraceHelper_(a.caller,b))}catch(g){c.push("[exception trying to get caller]\\n")}}else a?c.push("[...long stack...]"):c.push("[end]");return c.join("")};goog.debug.setFunctionResolver=function(a){goog.debug.fnNameResolver_=a};\ngoog.debug.getFunctionName=function(a){if(goog.debug.fnNameCache_[a])return goog.debug.fnNameCache_[a];if(goog.debug.fnNameResolver_){var b=goog.debug.fnNameResolver_(a);if(b)return goog.debug.fnNameCache_[a]=b}a=String(a);goog.debug.fnNameCache_[a]||(b=/function ([^\\(]+)/.exec(a),goog.debug.fnNameCache_[a]=b?b[1]:"[Anonymous]");return goog.debug.fnNameCache_[a]};\ngoog.debug.makeWhitespaceVisible=function(a){return a.replace(/ /g,"[_]").replace(/\\f/g,"[f]").replace(/\\n/g,"[n]\\n").replace(/\\r/g,"[r]").replace(/\\t/g,"[t]")};goog.debug.runtimeType=function(a){return a instanceof Function?a.displayName||a.name||"unknown type name":a instanceof Object?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):null===a?"null":typeof a};goog.debug.fnNameCache_={};goog.debug.LogRecord=function(a,b,c,d,e){this.reset(a,b,c,d,e)};goog.debug.LogRecord.prototype.sequenceNumber_=0;goog.debug.LogRecord.prototype.exception_=null;goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS=!0;goog.debug.LogRecord.nextSequenceNumber_=0;\ngoog.debug.LogRecord.prototype.reset=function(a,b,c,d,e){goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS&&(this.sequenceNumber_="number"==typeof e?e:goog.debug.LogRecord.nextSequenceNumber_++);this.time_=d||goog.now();this.level_=a;this.msg_=b;this.loggerName_=c;delete this.exception_};goog.debug.LogRecord.prototype.getLoggerName=function(){return this.loggerName_};goog.debug.LogRecord.prototype.getException=function(){return this.exception_};\ngoog.debug.LogRecord.prototype.setException=function(a){this.exception_=a};goog.debug.LogRecord.prototype.setLoggerName=function(a){this.loggerName_=a};goog.debug.LogRecord.prototype.getLevel=function(){return this.level_};goog.debug.LogRecord.prototype.setLevel=function(a){this.level_=a};goog.debug.LogRecord.prototype.getMessage=function(){return this.msg_};goog.debug.LogRecord.prototype.setMessage=function(a){this.msg_=a};goog.debug.LogRecord.prototype.getMillis=function(){return this.time_};\ngoog.debug.LogRecord.prototype.setMillis=function(a){this.time_=a};goog.debug.LogRecord.prototype.getSequenceNumber=function(){return this.sequenceNumber_};goog.debug.LogBuffer=function(){goog.asserts.assert(goog.debug.LogBuffer.isBufferingEnabled(),"Cannot use goog.debug.LogBuffer without defining goog.debug.LogBuffer.CAPACITY.");this.clear()};goog.debug.LogBuffer.getInstance=function(){goog.debug.LogBuffer.instance_||(goog.debug.LogBuffer.instance_=new goog.debug.LogBuffer);return goog.debug.LogBuffer.instance_};goog.debug.LogBuffer.CAPACITY=0;\ngoog.debug.LogBuffer.prototype.addRecord=function(a,b,c){var d=(this.curIndex_+1)%goog.debug.LogBuffer.CAPACITY;this.curIndex_=d;if(this.isFull_)return d=this.buffer_[d],d.reset(a,b,c),d;this.isFull_=d==goog.debug.LogBuffer.CAPACITY-1;return this.buffer_[d]=new goog.debug.LogRecord(a,b,c)};goog.debug.LogBuffer.isBufferingEnabled=function(){return 0<goog.debug.LogBuffer.CAPACITY};\ngoog.debug.LogBuffer.prototype.clear=function(){this.buffer_=Array(goog.debug.LogBuffer.CAPACITY);this.curIndex_=-1;this.isFull_=!1};goog.debug.LogBuffer.prototype.forEachRecord=function(a){var b=this.buffer_;if(b[0]){var c=this.curIndex_,d=this.isFull_?c:-1;do d=(d+1)%goog.debug.LogBuffer.CAPACITY,a(b[d]);while(d!=c)}};goog.debug.Logger=function(a){this.name_=a;this.handlers_=this.children_=this.level_=this.parent_=null};goog.debug.Logger.ROOT_LOGGER_NAME="";goog.debug.Logger.ENABLE_HIERARCHY=!0;goog.debug.Logger.ENABLE_HIERARCHY||(goog.debug.Logger.rootHandlers_=[]);goog.debug.Logger.Level=function(a,b){this.name=a;this.value=b};goog.debug.Logger.Level.prototype.toString=function(){return this.name};goog.debug.Logger.Level.OFF=new goog.debug.Logger.Level("OFF",Infinity);\ngoog.debug.Logger.Level.SHOUT=new goog.debug.Logger.Level("SHOUT",1200);goog.debug.Logger.Level.SEVERE=new goog.debug.Logger.Level("SEVERE",1E3);goog.debug.Logger.Level.WARNING=new goog.debug.Logger.Level("WARNING",900);goog.debug.Logger.Level.INFO=new goog.debug.Logger.Level("INFO",800);goog.debug.Logger.Level.CONFIG=new goog.debug.Logger.Level("CONFIG",700);goog.debug.Logger.Level.FINE=new goog.debug.Logger.Level("FINE",500);goog.debug.Logger.Level.FINER=new goog.debug.Logger.Level("FINER",400);\ngoog.debug.Logger.Level.FINEST=new goog.debug.Logger.Level("FINEST",300);goog.debug.Logger.Level.ALL=new goog.debug.Logger.Level("ALL",0);goog.debug.Logger.Level.PREDEFINED_LEVELS=[goog.debug.Logger.Level.OFF,goog.debug.Logger.Level.SHOUT,goog.debug.Logger.Level.SEVERE,goog.debug.Logger.Level.WARNING,goog.debug.Logger.Level.INFO,goog.debug.Logger.Level.CONFIG,goog.debug.Logger.Level.FINE,goog.debug.Logger.Level.FINER,goog.debug.Logger.Level.FINEST,goog.debug.Logger.Level.ALL];\ngoog.debug.Logger.Level.predefinedLevelsCache_=null;goog.debug.Logger.Level.createPredefinedLevelsCache_=function(){goog.debug.Logger.Level.predefinedLevelsCache_={};for(var a=0,b;b=goog.debug.Logger.Level.PREDEFINED_LEVELS[a];a++)goog.debug.Logger.Level.predefinedLevelsCache_[b.value]=b,goog.debug.Logger.Level.predefinedLevelsCache_[b.name]=b};\ngoog.debug.Logger.Level.getPredefinedLevel=function(a){goog.debug.Logger.Level.predefinedLevelsCache_||goog.debug.Logger.Level.createPredefinedLevelsCache_();return goog.debug.Logger.Level.predefinedLevelsCache_[a]||null};\ngoog.debug.Logger.Level.getPredefinedLevelByValue=function(a){goog.debug.Logger.Level.predefinedLevelsCache_||goog.debug.Logger.Level.createPredefinedLevelsCache_();if(a in goog.debug.Logger.Level.predefinedLevelsCache_)return goog.debug.Logger.Level.predefinedLevelsCache_[a];for(var b=0;b<goog.debug.Logger.Level.PREDEFINED_LEVELS.length;++b){var c=goog.debug.Logger.Level.PREDEFINED_LEVELS[b];if(c.value<=a)return c}return null};goog.debug.Logger.getLogger=function(a){return goog.debug.LogManager.getLogger(a)};\ngoog.debug.Logger.logToProfilers=function(a){goog.global.console&&(goog.global.console.timeStamp?goog.global.console.timeStamp(a):goog.global.console.markTimeline&&goog.global.console.markTimeline(a));goog.global.msWriteProfilerMark&&goog.global.msWriteProfilerMark(a)};goog.debug.Logger.prototype.getName=function(){return this.name_};\ngoog.debug.Logger.prototype.addHandler=function(a){goog.debug.LOGGING_ENABLED&&(goog.debug.Logger.ENABLE_HIERARCHY?(this.handlers_||(this.handlers_=[]),this.handlers_.push(a)):(goog.asserts.assert(!this.name_,"Cannot call addHandler on a non-root logger when goog.debug.Logger.ENABLE_HIERARCHY is false."),goog.debug.Logger.rootHandlers_.push(a)))};\ngoog.debug.Logger.prototype.removeHandler=function(a){if(goog.debug.LOGGING_ENABLED){var b=goog.debug.Logger.ENABLE_HIERARCHY?this.handlers_:goog.debug.Logger.rootHandlers_;return!!b&&goog.array.remove(b,a)}return!1};goog.debug.Logger.prototype.getParent=function(){return this.parent_};goog.debug.Logger.prototype.getChildren=function(){this.children_||(this.children_={});return this.children_};\ngoog.debug.Logger.prototype.setLevel=function(a){goog.debug.LOGGING_ENABLED&&(goog.debug.Logger.ENABLE_HIERARCHY?this.level_=a:(goog.asserts.assert(!this.name_,"Cannot call setLevel() on a non-root logger when goog.debug.Logger.ENABLE_HIERARCHY is false."),goog.debug.Logger.rootLevel_=a))};goog.debug.Logger.prototype.getLevel=function(){return goog.debug.LOGGING_ENABLED?this.level_:goog.debug.Logger.Level.OFF};\ngoog.debug.Logger.prototype.getEffectiveLevel=function(){if(!goog.debug.LOGGING_ENABLED)return goog.debug.Logger.Level.OFF;if(!goog.debug.Logger.ENABLE_HIERARCHY)return goog.debug.Logger.rootLevel_;if(this.level_)return this.level_;if(this.parent_)return this.parent_.getEffectiveLevel();goog.asserts.fail("Root logger has no level set.");return null};goog.debug.Logger.prototype.isLoggable=function(a){return goog.debug.LOGGING_ENABLED&&a.value>=this.getEffectiveLevel().value};\ngoog.debug.Logger.prototype.log=function(a,b,c){goog.debug.LOGGING_ENABLED&&this.isLoggable(a)&&(goog.isFunction(b)&&(b=b()),this.doLogRecord_(this.getLogRecord(a,b,c)))};goog.debug.Logger.prototype.getLogRecord=function(a,b,c){a=goog.debug.LogBuffer.isBufferingEnabled()?goog.debug.LogBuffer.getInstance().addRecord(a,b,this.name_):new goog.debug.LogRecord(a,String(b),this.name_);c&&a.setException(c);return a};\ngoog.debug.Logger.prototype.shout=function(a,b){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.SHOUT,a,b)};goog.debug.Logger.prototype.severe=function(a,b){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.SEVERE,a,b)};goog.debug.Logger.prototype.warning=function(a,b){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.WARNING,a,b)};goog.debug.Logger.prototype.info=function(a,b){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.INFO,a,b)};\ngoog.debug.Logger.prototype.config=function(a,b){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.CONFIG,a,b)};goog.debug.Logger.prototype.fine=function(a,b){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.FINE,a,b)};goog.debug.Logger.prototype.finer=function(a,b){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.FINER,a,b)};goog.debug.Logger.prototype.finest=function(a,b){goog.debug.LOGGING_ENABLED&&this.log(goog.debug.Logger.Level.FINEST,a,b)};\ngoog.debug.Logger.prototype.logRecord=function(a){goog.debug.LOGGING_ENABLED&&this.isLoggable(a.getLevel())&&this.doLogRecord_(a)};goog.debug.Logger.prototype.doLogRecord_=function(a){goog.debug.Logger.logToProfilers("log:"+a.getMessage());if(goog.debug.Logger.ENABLE_HIERARCHY)for(var b=this;b;)b.callPublish_(a),b=b.getParent();else for(var b=0,c;c=goog.debug.Logger.rootHandlers_[b++];)c(a)};goog.debug.Logger.prototype.callPublish_=function(a){if(this.handlers_)for(var b=0,c;c=this.handlers_[b];b++)c(a)};\ngoog.debug.Logger.prototype.setParent_=function(a){this.parent_=a};goog.debug.Logger.prototype.addChild_=function(a,b){this.getChildren()[a]=b};goog.debug.LogManager={};goog.debug.LogManager.loggers_={};goog.debug.LogManager.rootLogger_=null;\ngoog.debug.LogManager.initialize=function(){goog.debug.LogManager.rootLogger_||(goog.debug.LogManager.rootLogger_=new goog.debug.Logger(goog.debug.Logger.ROOT_LOGGER_NAME),goog.debug.LogManager.loggers_[goog.debug.Logger.ROOT_LOGGER_NAME]=goog.debug.LogManager.rootLogger_,goog.debug.LogManager.rootLogger_.setLevel(goog.debug.Logger.Level.CONFIG))};goog.debug.LogManager.getLoggers=function(){return goog.debug.LogManager.loggers_};\ngoog.debug.LogManager.getRoot=function(){goog.debug.LogManager.initialize();return goog.debug.LogManager.rootLogger_};goog.debug.LogManager.getLogger=function(a){goog.debug.LogManager.initialize();return goog.debug.LogManager.loggers_[a]||goog.debug.LogManager.createLogger_(a)};goog.debug.LogManager.createFunctionForCatchErrors=function(a){return function(b){(a||goog.debug.LogManager.getRoot()).severe("Error: "+b.message+" ("+b.fileName+" @ Line: "+b.line+")")}};\ngoog.debug.LogManager.createLogger_=function(a){var b=new goog.debug.Logger(a);if(goog.debug.Logger.ENABLE_HIERARCHY){var c=a.lastIndexOf("."),d=a.substr(0,c),c=a.substr(c+1),d=goog.debug.LogManager.getLogger(d);d.addChild_(c,b);b.setParent_(d)}return goog.debug.LogManager.loggers_[a]=b};goog.log={};goog.log.ENABLED=goog.debug.LOGGING_ENABLED;goog.log.ROOT_LOGGER_NAME=goog.debug.Logger.ROOT_LOGGER_NAME;goog.log.Logger=goog.debug.Logger;goog.log.Level=goog.debug.Logger.Level;goog.log.LogRecord=goog.debug.LogRecord;goog.log.getLogger=function(a,b){if(goog.log.ENABLED){var c=goog.debug.LogManager.getLogger(a);b&&c&&c.setLevel(b);return c}return null};goog.log.addHandler=function(a,b){goog.log.ENABLED&&a&&a.addHandler(b)};\ngoog.log.removeHandler=function(a,b){return goog.log.ENABLED&&a?a.removeHandler(b):!1};goog.log.log=function(a,b,c,d){goog.log.ENABLED&&a&&a.log(b,c,d)};goog.log.error=function(a,b,c){goog.log.ENABLED&&a&&a.severe(b,c)};goog.log.warning=function(a,b,c){goog.log.ENABLED&&a&&a.warning(b,c)};goog.log.info=function(a,b,c){goog.log.ENABLED&&a&&a.info(b,c)};goog.log.fine=function(a,b,c){goog.log.ENABLED&&a&&a.fine(b,c)};goog.string.StringBuffer=function(a,b){null!=a&&this.append.apply(this,arguments)};goog.string.StringBuffer.prototype.buffer_="";goog.string.StringBuffer.prototype.set=function(a){this.buffer_=""+a};goog.string.StringBuffer.prototype.append=function(a,b,c){this.buffer_+=String(a);if(null!=b)for(var d=1;d<arguments.length;d++)this.buffer_+=arguments[d];return this};goog.string.StringBuffer.prototype.clear=function(){this.buffer_=""};goog.string.StringBuffer.prototype.getLength=function(){return this.buffer_.length};\ngoog.string.StringBuffer.prototype.toString=function(){return this.buffer_};goog.ui.tree={};goog.ui.tree.BaseNode=function(a,b,c){goog.ui.Component.call(this,c);this.config_=b||goog.ui.tree.BaseNode.defaultConfig;this.html_=goog.html.SafeHtml.htmlEscapePreservingNewlines(a);this.expanded_=this.selected_=!1;this.toolTip_=null;this.afterLabelHtml_=goog.html.SafeHtml.EMPTY;this.isUserCollapsible_=!0;this.depth_=-1};goog.inherits(goog.ui.tree.BaseNode,goog.ui.Component);\ngoog.ui.tree.BaseNode.EventType={BEFORE_EXPAND:"beforeexpand",EXPAND:"expand",BEFORE_COLLAPSE:"beforecollapse",COLLAPSE:"collapse"};goog.ui.tree.BaseNode.allNodes={};goog.ui.tree.BaseNode.prototype.disposeInternal=function(){goog.ui.tree.BaseNode.superClass_.disposeInternal.call(this);this.tree&&(this.tree.removeNode(this),this.tree=null);this.setElementInternal(null)};\ngoog.ui.tree.BaseNode.prototype.initAccessibility=function(){var a=this.getElement();if(a){var b=this.getLabelElement();b&&!b.id&&(b.id=this.getId()+".label");goog.a11y.aria.setRole(a,"treeitem");goog.a11y.aria.setState(a,"selected",!1);goog.a11y.aria.setState(a,"expanded",!1);goog.a11y.aria.setState(a,"level",this.getDepth());b&&goog.a11y.aria.setState(a,"labelledby",b.id);(a=this.getIconElement())&&goog.a11y.aria.setRole(a,"presentation");(a=this.getExpandIconElement())&&goog.a11y.aria.setRole(a,\n"presentation");if(a=this.getChildrenElement())if(goog.a11y.aria.setRole(a,"group"),a.hasChildNodes())for(a=this.getChildCount(),b=1;b<=a;b++){var c=this.getChildAt(b-1).getElement();goog.asserts.assert(c,"The child element cannot be null");goog.a11y.aria.setState(c,"setsize",a);goog.a11y.aria.setState(c,"posinset",b)}}};goog.ui.tree.BaseNode.prototype.createDom=function(){var a=this.getDomHelper().safeHtmlToNode(this.toSafeHtml());this.setElementInternal(a)};\ngoog.ui.tree.BaseNode.prototype.enterDocument=function(){goog.ui.tree.BaseNode.superClass_.enterDocument.call(this);goog.ui.tree.BaseNode.allNodes[this.getId()]=this;this.initAccessibility()};goog.ui.tree.BaseNode.prototype.exitDocument=function(){goog.ui.tree.BaseNode.superClass_.exitDocument.call(this);delete goog.ui.tree.BaseNode.allNodes[this.getId()]};\ngoog.ui.tree.BaseNode.prototype.addChildAt=function(a,b,c){goog.asserts.assert(!a.getParent());goog.asserts.assertInstanceof(a,goog.ui.tree.BaseNode);c=this.getChildAt(b-1);var d=this.getChildAt(b);goog.ui.tree.BaseNode.superClass_.addChildAt.call(this,a,b);a.previousSibling_=c;a.nextSibling_=d;c?c.nextSibling_=a:this.firstChild_=a;d?d.previousSibling_=a:this.lastChild_=a;(b=this.getTree())&&a.setTreeInternal(b);a.setDepth_(this.getDepth()+1);if(this.getElement()&&(this.updateExpandIcon(),this.getExpanded())){b=\nthis.getChildrenElement();a.getElement()||a.createDom();var e=a.getElement(),f=d&&d.getElement();b.insertBefore(e,f);this.isInDocument()&&a.enterDocument();d||(c?c.updateExpandIcon():(goog.style.setElementShown(b,!0),this.setExpanded(this.getExpanded())))}};goog.ui.tree.BaseNode.prototype.add=function(a,b){goog.asserts.assert(!b||b.getParent()==this,"Can only add nodes before siblings");a.getParent()&&a.getParent().removeChild(a);this.addChildAt(a,b?this.indexOfChild(b):this.getChildCount());return a};\ngoog.ui.tree.BaseNode.prototype.removeChild=function(a,b){var c=this.getTree(),d=c?c.getSelectedItem():null;if(d==a||a.contains(d))c.hasFocus()?(this.select(),goog.Timer.callOnce(this.onTimeoutSelect_,10,this)):this.select();goog.ui.tree.BaseNode.superClass_.removeChild.call(this,a);this.lastChild_==a&&(this.lastChild_=a.previousSibling_);this.firstChild_==a&&(this.firstChild_=a.nextSibling_);a.previousSibling_&&(a.previousSibling_.nextSibling_=a.nextSibling_);a.nextSibling_&&(a.nextSibling_.previousSibling_=\na.previousSibling_);d=a.isLastSibling();a.tree=null;a.depth_=-1;if(c&&(c.removeNode(a),this.isInDocument())){c=this.getChildrenElement();if(a.isInDocument()){var e=a.getElement();c.removeChild(e);a.exitDocument()}d&&(d=this.getLastChild())&&d.updateExpandIcon();this.hasChildren()||(c.style.display="none",this.updateExpandIcon(),this.updateIcon_())}return a};goog.ui.tree.BaseNode.prototype.remove=goog.ui.tree.BaseNode.prototype.removeChild;goog.ui.tree.BaseNode.prototype.onTimeoutSelect_=function(){this.select()};\ngoog.ui.tree.BaseNode.prototype.getTree=goog.abstractMethod;goog.ui.tree.BaseNode.prototype.getDepth=function(){var a=this.depth_;0>a&&(a=this.computeDepth_(),this.setDepth_(a));return a};goog.ui.tree.BaseNode.prototype.computeDepth_=function(){var a=this.getParent();return a?a.getDepth()+1:0};\ngoog.ui.tree.BaseNode.prototype.setDepth_=function(a){if(a!=this.depth_){this.depth_=a;var b=this.getRowElement();if(b){var c=this.getPixelIndent_()+"px";this.isRightToLeft()?b.style.paddingRight=c:b.style.paddingLeft=c}this.forEachChild(function(b){b.setDepth_(a+1)})}};goog.ui.tree.BaseNode.prototype.contains=function(a){for(;a;){if(a==this)return!0;a=a.getParent()}return!1};goog.ui.tree.BaseNode.EMPTY_CHILDREN_=[];\ngoog.ui.tree.BaseNode.prototype.getChildren=function(){var a=[];this.forEachChild(function(b){a.push(b)});return a};goog.ui.tree.BaseNode.prototype.getFirstChild=function(){return this.getChildAt(0)};goog.ui.tree.BaseNode.prototype.getLastChild=function(){return this.getChildAt(this.getChildCount()-1)};goog.ui.tree.BaseNode.prototype.getPreviousSibling=function(){return this.previousSibling_};goog.ui.tree.BaseNode.prototype.getNextSibling=function(){return this.nextSibling_};\ngoog.ui.tree.BaseNode.prototype.isLastSibling=function(){return!this.nextSibling_};goog.ui.tree.BaseNode.prototype.isSelected=function(){return this.selected_};goog.ui.tree.BaseNode.prototype.select=function(){var a=this.getTree();a&&a.setSelectedItem(this)};goog.ui.tree.BaseNode.prototype.deselect=goog.nullFunction;\ngoog.ui.tree.BaseNode.prototype.setSelectedInternal=function(a){if(this.selected_!=a){this.selected_=a;this.updateRow();var b=this.getElement();b&&(goog.a11y.aria.setState(b,"selected",a),a&&(a=this.getTree().getElement(),goog.asserts.assert(a,"The DOM element for the tree cannot be null"),goog.a11y.aria.setState(a,"activedescendant",this.getId())))}};goog.ui.tree.BaseNode.prototype.getExpanded=function(){return this.expanded_};\ngoog.ui.tree.BaseNode.prototype.setExpandedInternal=function(a){this.expanded_=a};\ngoog.ui.tree.BaseNode.prototype.setExpanded=function(a){var b=a!=this.expanded_;if(!b||this.dispatchEvent(a?goog.ui.tree.BaseNode.EventType.BEFORE_EXPAND:goog.ui.tree.BaseNode.EventType.BEFORE_COLLAPSE)){var c;this.expanded_=a;c=this.getTree();var d=this.getElement();if(this.hasChildren()){if(!a&&c&&this.contains(c.getSelectedItem())&&this.select(),d){if(c=this.getChildrenElement())if(goog.style.setElementShown(c,a),a&&this.isInDocument()&&!c.hasChildNodes()){var e=[];this.forEachChild(function(a){e.push(a.toSafeHtml())});\ngoog.dom.safe.setInnerHtml(c,goog.html.SafeHtml.concat(e));this.forEachChild(function(a){a.enterDocument()})}this.updateExpandIcon()}}else(c=this.getChildrenElement())&&goog.style.setElementShown(c,!1);d&&(this.updateIcon_(),goog.a11y.aria.setState(d,"expanded",a));b&&this.dispatchEvent(a?goog.ui.tree.BaseNode.EventType.EXPAND:goog.ui.tree.BaseNode.EventType.COLLAPSE)}};goog.ui.tree.BaseNode.prototype.toggle=function(){this.setExpanded(!this.getExpanded())};\ngoog.ui.tree.BaseNode.prototype.expand=function(){this.setExpanded(!0)};goog.ui.tree.BaseNode.prototype.collapse=function(){this.setExpanded(!1)};goog.ui.tree.BaseNode.prototype.collapseChildren=function(){this.forEachChild(function(a){a.collapseAll()})};goog.ui.tree.BaseNode.prototype.collapseAll=function(){this.collapseChildren();this.collapse()};goog.ui.tree.BaseNode.prototype.expandChildren=function(){this.forEachChild(function(a){a.expandAll()})};\ngoog.ui.tree.BaseNode.prototype.expandAll=function(){this.expandChildren();this.expand()};goog.ui.tree.BaseNode.prototype.reveal=function(){var a=this.getParent();a&&(a.setExpanded(!0),a.reveal())};goog.ui.tree.BaseNode.prototype.setIsUserCollapsible=function(a){(this.isUserCollapsible_=a)||this.expand();this.getElement()&&this.updateExpandIcon()};goog.ui.tree.BaseNode.prototype.isUserCollapsible=function(){return this.isUserCollapsible_};\ngoog.ui.tree.BaseNode.prototype.toSafeHtml=function(){var a=this.getTree(),b=!a.getShowLines()||a==this.getParent()&&!a.getShowRootLines()?this.config_.cssChildrenNoLines:this.config_.cssChildren,a=this.getExpanded()&&this.hasChildren(),b={"class":b,style:this.getLineStyle()},c=[];a&&this.forEachChild(function(a){c.push(a.toSafeHtml())});a=goog.html.SafeHtml.create("div",b,c);return goog.html.SafeHtml.create("div",{"class":this.config_.cssItem,id:this.getId()},[this.getRowSafeHtml(),a])};\ngoog.ui.tree.BaseNode.prototype.getPixelIndent_=function(){return Math.max(0,(this.getDepth()-1)*this.config_.indentWidth)};goog.ui.tree.BaseNode.prototype.getRowSafeHtml=function(){var a={};a["padding-"+(this.isRightToLeft()?"right":"left")]=this.getPixelIndent_()+"px";var a={"class":this.getRowClassName(),style:a},b=[this.getExpandIconSafeHtml(),this.getIconSafeHtml(),this.getLabelSafeHtml()];return goog.html.SafeHtml.create("div",a,b)};\ngoog.ui.tree.BaseNode.prototype.getRowClassName=function(){var a;a=this.isSelected()?" "+this.config_.cssSelectedRow:"";return this.config_.cssTreeRow+a};goog.ui.tree.BaseNode.prototype.getLabelSafeHtml=function(){var a=goog.html.SafeHtml.create("span",{"class":this.config_.cssItemLabel,title:this.getToolTip()||null},this.getSafeHtml());return goog.html.SafeHtml.concat(a,goog.html.SafeHtml.create("span",{},this.getAfterLabelSafeHtml()))};goog.ui.tree.BaseNode.prototype.getAfterLabelHtml=function(){return goog.html.SafeHtml.unwrap(this.getAfterLabelSafeHtml())};\ngoog.ui.tree.BaseNode.prototype.getAfterLabelSafeHtml=function(){return this.afterLabelHtml_};goog.ui.tree.BaseNode.prototype.setAfterLabelSafeHtml=function(a){this.afterLabelHtml_=a;var b=this.getAfterLabelElement();b&&goog.dom.safe.setInnerHtml(b,a)};goog.ui.tree.BaseNode.prototype.getIconSafeHtml=function(){return goog.html.SafeHtml.create("span",{style:{display:"inline-block"},"class":this.getCalculatedIconClass()})};goog.ui.tree.BaseNode.prototype.getCalculatedIconClass=goog.abstractMethod;\ngoog.ui.tree.BaseNode.prototype.getExpandIconSafeHtml=function(){return goog.html.SafeHtml.create("span",{type:"expand",style:{display:"inline-block"},"class":this.getExpandIconClass()})};\ngoog.ui.tree.BaseNode.prototype.getExpandIconClass=function(){var a=this.getTree(),b=!a.getShowLines()||a==this.getParent()&&!a.getShowRootLines(),c=this.config_,d=new goog.string.StringBuffer;d.append(c.cssTreeIcon," ",c.cssExpandTreeIcon," ");if(this.hasChildren()){var e=0;a.getShowExpandIcons()&&this.isUserCollapsible_&&(e=this.getExpanded()?2:1);b||(e=this.isLastSibling()?e+4:e+8);switch(e){case 1:d.append(c.cssExpandTreeIconPlus);break;case 2:d.append(c.cssExpandTreeIconMinus);break;case 4:d.append(c.cssExpandTreeIconL);\nbreak;case 5:d.append(c.cssExpandTreeIconLPlus);break;case 6:d.append(c.cssExpandTreeIconLMinus);break;case 8:d.append(c.cssExpandTreeIconT);break;case 9:d.append(c.cssExpandTreeIconTPlus);break;case 10:d.append(c.cssExpandTreeIconTMinus);break;default:d.append(c.cssExpandTreeIconBlank)}}else b?d.append(c.cssExpandTreeIconBlank):this.isLastSibling()?d.append(c.cssExpandTreeIconL):d.append(c.cssExpandTreeIconT);return d.toString()};\ngoog.ui.tree.BaseNode.prototype.getLineStyle=function(){var a=this.getExpanded()&&this.hasChildren();return goog.html.SafeStyle.create({"background-position":this.getBackgroundPosition(),display:a?null:"none"})};goog.ui.tree.BaseNode.prototype.getBackgroundPosition=function(){return(this.isLastSibling()?"-100":(this.getDepth()-1)*this.config_.indentWidth)+"px 0"};\ngoog.ui.tree.BaseNode.prototype.getElement=function(){var a=goog.ui.tree.BaseNode.superClass_.getElement.call(this);a||(a=this.getDomHelper().getElement(this.getId()),this.setElementInternal(a));return a};goog.ui.tree.BaseNode.prototype.getRowElement=function(){var a=this.getElement();return a?a.firstChild:null};goog.ui.tree.BaseNode.prototype.getExpandIconElement=function(){var a=this.getRowElement();return a?a.firstChild:null};\ngoog.ui.tree.BaseNode.prototype.getIconElement=function(){var a=this.getRowElement();return a?a.childNodes[1]:null};goog.ui.tree.BaseNode.prototype.getLabelElement=function(){var a=this.getRowElement();return a&&a.lastChild?a.lastChild.previousSibling:null};goog.ui.tree.BaseNode.prototype.getAfterLabelElement=function(){var a=this.getRowElement();return a?a.lastChild:null};goog.ui.tree.BaseNode.prototype.getChildrenElement=function(){var a=this.getElement();return a?a.lastChild:null};\ngoog.ui.tree.BaseNode.prototype.setIconClass=function(a){this.iconClass_=a;this.isInDocument()&&this.updateIcon_()};goog.ui.tree.BaseNode.prototype.getIconClass=function(){return this.iconClass_};goog.ui.tree.BaseNode.prototype.setExpandedIconClass=function(a){this.expandedIconClass_=a;this.isInDocument()&&this.updateIcon_()};goog.ui.tree.BaseNode.prototype.getExpandedIconClass=function(){return this.expandedIconClass_};goog.ui.tree.BaseNode.prototype.setText=function(a){this.setSafeHtml(goog.html.SafeHtml.htmlEscape(a))};\ngoog.ui.tree.BaseNode.prototype.getText=function(){return goog.string.unescapeEntities(goog.html.SafeHtml.unwrap(this.html_))};goog.ui.tree.BaseNode.prototype.setSafeHtml=function(a){this.html_=a;var b=this.getLabelElement();b&&goog.dom.safe.setInnerHtml(b,a);(a=this.getTree())&&a.setNode(this)};goog.ui.tree.BaseNode.prototype.getHtml=function(){return goog.html.SafeHtml.unwrap(this.getSafeHtml())};goog.ui.tree.BaseNode.prototype.getSafeHtml=function(){return this.html_};\ngoog.ui.tree.BaseNode.prototype.setToolTip=function(a){this.toolTip_=a;var b=this.getLabelElement();b&&(b.title=a)};goog.ui.tree.BaseNode.prototype.getToolTip=function(){return this.toolTip_};goog.ui.tree.BaseNode.prototype.updateRow=function(){var a=this.getRowElement();a&&(a.className=this.getRowClassName())};\ngoog.ui.tree.BaseNode.prototype.updateExpandIcon=function(){var a=this.getExpandIconElement();a&&(a.className=this.getExpandIconClass());if(a=this.getChildrenElement())a.style.backgroundPosition=this.getBackgroundPosition()};goog.ui.tree.BaseNode.prototype.updateIcon_=function(){this.getIconElement().className=this.getCalculatedIconClass()};\ngoog.ui.tree.BaseNode.prototype.onMouseDown=function(a){"expand"==a.target.getAttribute("type")&&this.hasChildren()?this.isUserCollapsible_&&this.toggle():(this.select(),this.updateRow())};goog.ui.tree.BaseNode.prototype.onClick_=goog.events.Event.preventDefault;goog.ui.tree.BaseNode.prototype.onDoubleClick_=function(a){"expand"==a.target.getAttribute("type")&&this.hasChildren()||this.isUserCollapsible_&&this.toggle()};\ngoog.ui.tree.BaseNode.prototype.onKeyDown=function(a){var b=!0;switch(a.keyCode){case goog.events.KeyCodes.RIGHT:if(a.altKey)break;this.hasChildren()&&(this.getExpanded()?this.getFirstChild().select():this.setExpanded(!0));break;case goog.events.KeyCodes.LEFT:if(a.altKey)break;if(this.hasChildren()&&this.getExpanded()&&this.isUserCollapsible_)this.setExpanded(!1);else{var c=this.getParent(),d=this.getTree();c&&(d.getShowRootNode()||c!=d)&&c.select()}break;case goog.events.KeyCodes.DOWN:(c=this.getNextShownNode())&&\nc.select();break;case goog.events.KeyCodes.UP:(c=this.getPreviousShownNode())&&c.select();break;default:b=!1}b&&(a.preventDefault(),(d=this.getTree())&&d.clearTypeAhead());return b};goog.ui.tree.BaseNode.prototype.getLastShownDescendant=function(){return this.getExpanded()&&this.hasChildren()?this.getLastChild().getLastShownDescendant():this};\ngoog.ui.tree.BaseNode.prototype.getNextShownNode=function(){if(this.hasChildren()&&this.getExpanded())return this.getFirstChild();for(var a=this,b;a!=this.getTree();){b=a.getNextSibling();if(null!=b)return b;a=a.getParent()}return null};goog.ui.tree.BaseNode.prototype.getPreviousShownNode=function(){var a=this.getPreviousSibling();if(null!=a)return a.getLastShownDescendant();var a=this.getParent(),b=this.getTree();return!b.getShowRootNode()&&a==b||this==b?null:a};\ngoog.ui.tree.BaseNode.prototype.getClientData=goog.ui.tree.BaseNode.prototype.getModel;goog.ui.tree.BaseNode.prototype.setClientData=goog.ui.tree.BaseNode.prototype.setModel;goog.ui.tree.BaseNode.prototype.getConfig=function(){return this.config_};goog.ui.tree.BaseNode.prototype.setTreeInternal=function(a){this.tree!=a&&(this.tree=a,a.setNode(this),this.forEachChild(function(b){b.setTreeInternal(a)}))};\ngoog.ui.tree.BaseNode.defaultConfig={indentWidth:19,cssRoot:"goog-tree-root goog-tree-item",cssHideRoot:"goog-tree-hide-root",cssItem:"goog-tree-item",cssChildren:"goog-tree-children",cssChildrenNoLines:"goog-tree-children-nolines",cssTreeRow:"goog-tree-row",cssItemLabel:"goog-tree-item-label",cssTreeIcon:"goog-tree-icon",cssExpandTreeIcon:"goog-tree-expand-icon",cssExpandTreeIconPlus:"goog-tree-expand-icon-plus",cssExpandTreeIconMinus:"goog-tree-expand-icon-minus",cssExpandTreeIconTPlus:"goog-tree-expand-icon-tplus",\ncssExpandTreeIconTMinus:"goog-tree-expand-icon-tminus",cssExpandTreeIconLPlus:"goog-tree-expand-icon-lplus",cssExpandTreeIconLMinus:"goog-tree-expand-icon-lminus",cssExpandTreeIconT:"goog-tree-expand-icon-t",cssExpandTreeIconL:"goog-tree-expand-icon-l",cssExpandTreeIconBlank:"goog-tree-expand-icon-blank",cssExpandedFolderIcon:"goog-tree-expanded-folder-icon",cssCollapsedFolderIcon:"goog-tree-collapsed-folder-icon",cssFileIcon:"goog-tree-file-icon",cssExpandedRootIcon:"goog-tree-expanded-folder-icon",\ncssCollapsedRootIcon:"goog-tree-collapsed-folder-icon",cssSelectedRow:"selected"};goog.ui.tree.TreeNode=function(a,b,c){goog.ui.tree.BaseNode.call(this,a,b,c)};goog.inherits(goog.ui.tree.TreeNode,goog.ui.tree.BaseNode);goog.ui.tree.TreeNode.prototype.getTree=function(){if(this.tree)return this.tree;var a=this.getParent();return a&&(a=a.getTree())?(this.setTreeInternal(a),a):null};\ngoog.ui.tree.TreeNode.prototype.getCalculatedIconClass=function(){var a=this.getExpanded(),b=this.getExpandedIconClass();if(a&&b)return b;b=this.getIconClass();if(!a&&b)return b;b=this.getConfig();if(this.hasChildren()){if(a&&b.cssExpandedFolderIcon)return b.cssTreeIcon+" "+b.cssExpandedFolderIcon;if(!a&&b.cssCollapsedFolderIcon)return b.cssTreeIcon+" "+b.cssCollapsedFolderIcon}else if(b.cssFileIcon)return b.cssTreeIcon+" "+b.cssFileIcon;return""};goog.structs.Trie=function(a){this.value_=void 0;this.childNodes_={};a&&this.setAll(a)};goog.structs.Trie.prototype.set=function(a,b){this.setOrAdd_(a,b,!1)};goog.structs.Trie.prototype.add=function(a,b){this.setOrAdd_(a,b,!0)};\ngoog.structs.Trie.prototype.setOrAdd_=function(a,b,c){for(var d=this,e=0;e<a.length;e++){var f=a.charAt(e);d.childNodes_[f]||(d.childNodes_[f]=new goog.structs.Trie);d=d.childNodes_[f]}if(c&&void 0!==d.value_)throw Error(\'The collection already contains the key "\'+a+\'"\');d.value_=b};goog.structs.Trie.prototype.setAll=function(a){var b=goog.structs.getKeys(a);a=goog.structs.getValues(a);for(var c=0;c<b.length;c++)this.set(b[c],a[c])};\ngoog.structs.Trie.prototype.getChildNode_=function(a){for(var b=this,c=0;c<a.length;c++){var d=a.charAt(c),b=b.childNodes_[d];if(!b)return}return b};goog.structs.Trie.prototype.get=function(a){return(a=this.getChildNode_(a))?a.value_:void 0};goog.structs.Trie.prototype.getKeyAndPrefixes=function(a,b){var c=this,d={},e=b||0;void 0!==c.value_&&(d[e]=c.value_);for(;e<a.length;e++){var f=a.charAt(e);if(!(f in c.childNodes_))break;c=c.childNodes_[f];void 0!==c.value_&&(d[e]=c.value_)}return d};\ngoog.structs.Trie.prototype.getValues=function(){var a=[];this.getValuesInternal_(a);return a};goog.structs.Trie.prototype.getValuesInternal_=function(a){void 0!==this.value_&&a.push(this.value_);for(var b in this.childNodes_)this.childNodes_[b].getValuesInternal_(a)};goog.structs.Trie.prototype.getKeys=function(a){var b=[];if(a){for(var c=this,d=0;d<a.length;d++){var e=a.charAt(d);if(!c.childNodes_[e])return[];c=c.childNodes_[e]}c.getKeysInternal_(a,b)}else this.getKeysInternal_("",b);return b};\ngoog.structs.Trie.prototype.getKeysInternal_=function(a,b){void 0!==this.value_&&b.push(a);for(var c in this.childNodes_)this.childNodes_[c].getKeysInternal_(a+c,b)};goog.structs.Trie.prototype.containsKey=function(a){return void 0!==this.get(a)};goog.structs.Trie.prototype.containsPrefix=function(a){return 0==a.length?!this.isEmpty():!!this.getChildNode_(a)};\ngoog.structs.Trie.prototype.containsValue=function(a){if(this.value_===a)return!0;for(var b in this.childNodes_)if(this.childNodes_[b].containsValue(a))return!0;return!1};goog.structs.Trie.prototype.clear=function(){this.childNodes_={};this.value_=void 0};\ngoog.structs.Trie.prototype.remove=function(a){for(var b=this,c=[],d=0;d<a.length;d++){var e=a.charAt(d);if(!b.childNodes_[e])throw Error(\'The collection does not have the key "\'+a+\'"\');c.push([b,e]);b=b.childNodes_[e]}a=b.value_;for(delete b.value_;0<c.length;)if(e=c.pop(),b=e[0],e=e[1],b.childNodes_[e].isEmpty())delete b.childNodes_[e];else break;return a};goog.structs.Trie.prototype.clone=function(){return new goog.structs.Trie(this)};goog.structs.Trie.prototype.getCount=function(){return goog.structs.getCount(this.getValues())};\ngoog.structs.Trie.prototype.isEmpty=function(){return void 0===this.value_&&goog.object.isEmpty(this.childNodes_)};goog.ui.tree.TypeAhead=function(){this.nodeMap_=new goog.structs.Trie;this.buffer_="";this.matchingNodes_=this.matchingLabels_=null;this.matchingNodeIndex_=this.matchingLabelIndex_=0};goog.ui.tree.TypeAhead.Offset={DOWN:1,UP:-1};\ngoog.ui.tree.TypeAhead.prototype.handleNavigation=function(a){var b=!1;switch(a.keyCode){case goog.events.KeyCodes.DOWN:case goog.events.KeyCodes.UP:a.ctrlKey&&(this.jumpTo_(a.keyCode==goog.events.KeyCodes.DOWN?goog.ui.tree.TypeAhead.Offset.DOWN:goog.ui.tree.TypeAhead.Offset.UP),b=!0);break;case goog.events.KeyCodes.BACKSPACE:a=this.buffer_.length-1;b=!0;0<a?(this.buffer_=this.buffer_.substring(0,a),this.jumpToLabel_(this.buffer_)):0==a?this.buffer_="":b=!1;break;case goog.events.KeyCodes.ESC:this.buffer_=\n"",b=!0}return b};goog.ui.tree.TypeAhead.prototype.handleTypeAheadChar=function(a){var b=!1;a.ctrlKey||a.altKey||(a=String.fromCharCode(a.charCode||a.keyCode).toLowerCase(),goog.string.isUnicodeChar(a)&&(" "!=a||this.buffer_)&&(this.buffer_+=a,b=this.jumpToLabel_(this.buffer_)));return b};\ngoog.ui.tree.TypeAhead.prototype.setNodeInMap=function(a){var b=a.getText();if(b&&!goog.string.isEmptyOrWhitespace(goog.string.makeSafe(b))){var b=b.toLowerCase(),c=this.nodeMap_.get(b);c?c.push(a):this.nodeMap_.set(b,[a])}};\ngoog.ui.tree.TypeAhead.prototype.removeNodeFromMap=function(a){var b=a.getText();if(b&&!goog.string.isEmptyOrWhitespace(goog.string.makeSafe(b))){var b=b.toLowerCase(),c=this.nodeMap_.get(b);if(c){for(var d=a.getChildCount(),e=0;e<d;e++)this.removeNodeFromMap(a.getChildAt(e));goog.array.remove(c,a);c.length||this.nodeMap_.remove(b)}}};\ngoog.ui.tree.TypeAhead.prototype.jumpToLabel_=function(a){var b=!1;(a=this.nodeMap_.getKeys(a))&&a.length&&(this.matchingLabelIndex_=this.matchingNodeIndex_=0,b=this.nodeMap_.get(a[0]),b=this.selectMatchingNode_(b))&&(this.matchingLabels_=a);return b};\ngoog.ui.tree.TypeAhead.prototype.jumpTo_=function(a){var b=!1,c=this.matchingLabels_;if(c){var b=null,d=!1;if(this.matchingNodes_){var e=this.matchingNodeIndex_+a;0<=e&&e<this.matchingNodes_.length?(this.matchingNodeIndex_=e,b=this.matchingNodes_):d=!0}b||(e=this.matchingLabelIndex_+a,0<=e&&e<c.length&&(this.matchingLabelIndex_=e),c.length>this.matchingLabelIndex_&&(b=this.nodeMap_.get(c[this.matchingLabelIndex_])),b&&b.length&&d&&(this.matchingNodeIndex_=a==goog.ui.tree.TypeAhead.Offset.UP?b.length-\n1:0));if(b=this.selectMatchingNode_(b))this.matchingLabels_=c}return b};goog.ui.tree.TypeAhead.prototype.selectMatchingNode_=function(a){var b;a&&(this.matchingNodeIndex_<a.length&&(b=a[this.matchingNodeIndex_],this.matchingNodes_=a),b&&(b.reveal(),b.select()));return!!b};goog.ui.tree.TypeAhead.prototype.clear=function(){this.buffer_=""};goog.ui.tree.TreeControl=function(a,b,c){goog.ui.tree.BaseNode.call(this,a,b,c);this.setExpandedInternal(!0);this.setSelectedInternal(!0);this.selectedItem_=this;this.typeAhead_=new goog.ui.tree.TypeAhead;this.focusHandler_=this.keyHandler_=null;this.logger_=goog.log.getLogger("this");this.focused_=!1;this.focusedNode_=null;this.showRootLines_=this.showRootNode_=this.showExpandIcons_=this.showLines_=!0;if(goog.userAgent.IE)try{document.execCommand("BackgroundImageCache",!1,!0)}catch(d){goog.log.warning(this.logger_,\n"Failed to enable background image cache")}};goog.inherits(goog.ui.tree.TreeControl,goog.ui.tree.BaseNode);goog.ui.tree.TreeControl.prototype.getTree=function(){return this};goog.ui.tree.TreeControl.prototype.getDepth=function(){return 0};goog.ui.tree.TreeControl.prototype.reveal=function(){};goog.ui.tree.TreeControl.prototype.handleFocus_=function(a){this.focused_=!0;goog.dom.classlist.add(goog.asserts.assert(this.getElement()),"focused");this.selectedItem_&&this.selectedItem_.select()};\ngoog.ui.tree.TreeControl.prototype.handleBlur_=function(a){this.focused_=!1;goog.dom.classlist.remove(goog.asserts.assert(this.getElement()),"focused")};goog.ui.tree.TreeControl.prototype.hasFocus=function(){return this.focused_};goog.ui.tree.TreeControl.prototype.getExpanded=function(){return!this.showRootNode_||goog.ui.tree.TreeControl.superClass_.getExpanded.call(this)};\ngoog.ui.tree.TreeControl.prototype.setExpanded=function(a){this.showRootNode_?goog.ui.tree.TreeControl.superClass_.setExpanded.call(this,a):this.setExpandedInternal(a)};goog.ui.tree.TreeControl.prototype.getExpandIconSafeHtml=function(){return goog.html.SafeHtml.EMPTY};goog.ui.tree.TreeControl.prototype.getIconElement=function(){var a=this.getRowElement();return a?a.firstChild:null};goog.ui.tree.TreeControl.prototype.getExpandIconElement=function(){return null};\ngoog.ui.tree.TreeControl.prototype.updateExpandIcon=function(){};goog.ui.tree.TreeControl.prototype.getRowClassName=function(){return goog.ui.tree.TreeControl.superClass_.getRowClassName.call(this)+(this.showRootNode_?"":" "+this.getConfig().cssHideRoot)};\ngoog.ui.tree.TreeControl.prototype.getCalculatedIconClass=function(){var a=this.getExpanded(),b=this.getExpandedIconClass();if(a&&b)return b;b=this.getIconClass();if(!a&&b)return b;b=this.getConfig();return a&&b.cssExpandedRootIcon?b.cssTreeIcon+" "+b.cssExpandedRootIcon:!a&&b.cssCollapsedRootIcon?b.cssTreeIcon+" "+b.cssCollapsedRootIcon:""};\ngoog.ui.tree.TreeControl.prototype.setSelectedItem=function(a){if(this.selectedItem_!=a){var b=!1;this.selectedItem_&&(b=this.selectedItem_==this.focusedNode_,this.selectedItem_.setSelectedInternal(!1));if(this.selectedItem_=a)a.setSelectedInternal(!0),b&&a.select();this.dispatchEvent(goog.events.EventType.CHANGE)}};goog.ui.tree.TreeControl.prototype.getSelectedItem=function(){return this.selectedItem_};\ngoog.ui.tree.TreeControl.prototype.setShowLines=function(a){this.showLines_!=a&&(this.showLines_=a,this.isInDocument()&&this.updateLinesAndExpandIcons_())};goog.ui.tree.TreeControl.prototype.getShowLines=function(){return this.showLines_};\ngoog.ui.tree.TreeControl.prototype.updateLinesAndExpandIcons_=function(){function a(e){var f=e.getChildrenElement();if(f){var g=!c||b==e.getParent()&&!d?e.getConfig().cssChildrenNoLines:e.getConfig().cssChildren;f.className=g;if(f=e.getExpandIconElement())f.className=e.getExpandIconClass()}e.forEachChild(a)}var b=this,c=b.getShowLines(),d=b.getShowRootLines();a(this)};\ngoog.ui.tree.TreeControl.prototype.setShowRootLines=function(a){this.showRootLines_!=a&&(this.showRootLines_=a,this.isInDocument()&&this.updateLinesAndExpandIcons_())};goog.ui.tree.TreeControl.prototype.getShowRootLines=function(){return this.showRootLines_};goog.ui.tree.TreeControl.prototype.setShowExpandIcons=function(a){this.showExpandIcons_!=a&&(this.showExpandIcons_=a,this.isInDocument()&&this.updateLinesAndExpandIcons_())};goog.ui.tree.TreeControl.prototype.getShowExpandIcons=function(){return this.showExpandIcons_};\ngoog.ui.tree.TreeControl.prototype.setShowRootNode=function(a){if(this.showRootNode_!=a){this.showRootNode_=a;if(this.isInDocument()){var b=this.getRowElement();b&&(b.className=this.getRowClassName())}!a&&this.getSelectedItem()==this&&this.getFirstChild()&&this.setSelectedItem(this.getFirstChild())}};goog.ui.tree.TreeControl.prototype.getShowRootNode=function(){return this.showRootNode_};\ngoog.ui.tree.TreeControl.prototype.initAccessibility=function(){goog.ui.tree.TreeControl.superClass_.initAccessibility.call(this);var a=this.getElement();goog.asserts.assert(a,"The DOM element for the tree cannot be null.");goog.a11y.aria.setRole(a,"tree");goog.a11y.aria.setState(a,"labelledby",this.getLabelElement().id)};\ngoog.ui.tree.TreeControl.prototype.enterDocument=function(){goog.ui.tree.TreeControl.superClass_.enterDocument.call(this);var a=this.getElement();a.className=this.getConfig().cssRoot;a.setAttribute("hideFocus","true");this.attachEvents_();this.initAccessibility()};goog.ui.tree.TreeControl.prototype.exitDocument=function(){goog.ui.tree.TreeControl.superClass_.exitDocument.call(this);this.detachEvents_()};\ngoog.ui.tree.TreeControl.prototype.attachEvents_=function(){var a=this.getElement();a.tabIndex=0;var b=this.keyHandler_=new goog.events.KeyHandler(a),c=this.focusHandler_=new goog.events.FocusHandler(a);this.getHandler().listen(c,goog.events.FocusHandler.EventType.FOCUSOUT,this.handleBlur_).listen(c,goog.events.FocusHandler.EventType.FOCUSIN,this.handleFocus_).listen(b,goog.events.KeyHandler.EventType.KEY,this.handleKeyEvent).listen(a,goog.events.EventType.MOUSEDOWN,this.handleMouseEvent_).listen(a,\ngoog.events.EventType.CLICK,this.handleMouseEvent_).listen(a,goog.events.EventType.DBLCLICK,this.handleMouseEvent_)};goog.ui.tree.TreeControl.prototype.detachEvents_=function(){this.keyHandler_.dispose();this.keyHandler_=null;this.focusHandler_.dispose();this.focusHandler_=null};\ngoog.ui.tree.TreeControl.prototype.handleMouseEvent_=function(a){goog.log.fine(this.logger_,"Received event "+a.type);var b=this.getNodeFromEvent_(a);if(b)switch(a.type){case goog.events.EventType.MOUSEDOWN:b.onMouseDown(a);break;case goog.events.EventType.CLICK:b.onClick_(a);break;case goog.events.EventType.DBLCLICK:b.onDoubleClick_(a)}};\ngoog.ui.tree.TreeControl.prototype.handleKeyEvent=function(a){var b;(b=this.typeAhead_.handleNavigation(a)||this.selectedItem_&&this.selectedItem_.onKeyDown(a)||this.typeAhead_.handleTypeAheadChar(a))&&a.preventDefault();return b};goog.ui.tree.TreeControl.prototype.getNodeFromEvent_=function(a){for(var b=a.target;null!=b;){if(a=goog.ui.tree.BaseNode.allNodes[b.id])return a;if(b==this.getElement())break;b=b.parentNode}return null};\ngoog.ui.tree.TreeControl.prototype.createNode=function(a){return new goog.ui.tree.TreeNode(a||goog.html.SafeHtml.EMPTY,this.getConfig(),this.getDomHelper())};goog.ui.tree.TreeControl.prototype.setNode=function(a){this.typeAhead_.setNodeInMap(a)};goog.ui.tree.TreeControl.prototype.removeNode=function(a){this.typeAhead_.removeNodeFromMap(a)};goog.ui.tree.TreeControl.prototype.clearTypeAhead=function(){this.typeAhead_.clear()};goog.ui.tree.TreeControl.defaultConfig=goog.ui.tree.BaseNode.defaultConfig;goog.date={};goog.i18n.DateTimeSymbols_en_ISO={ERAS:["BC","AD"],ERANAMES:["Before Christ","Anno Domini"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"January February March April May June July August September October November December".split(" "),STANDALONEMONTHS:"January February March April May June July August September October November December".split(" "),SHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONESHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),\nWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),STANDALONEWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),STANDALONESHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),NARROWWEEKDAYS:"SMTWTFS".split(""),STANDALONENARROWWEEKDAYS:"SMTWTFS".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["1st quarter","2nd quarter","3rd quarter","4th quarter"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, y MMMM dd",\n"y MMMM d","y MMM d","yyyy-MM-dd"],TIMEFORMATS:["HH:mm:ss v","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} \'at\' {0}","{1} \'at\' {0}","{1}, {0}","{1}, {0}"],AVAILABLEFORMATS:{Md:"M/d",MMMMd:"MMMM d",MMMd:"MMM d"},FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_af={ERAS:["v.C.","n.C."],ERANAMES:["voor Christus","na Christus"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"Januarie Februarie Maart April Mei Junie Julie Augustus September Oktober November Desember".split(" "),STANDALONEMONTHS:"Januarie Februarie Maart April Mei Junie Julie Augustus September Oktober November Desember".split(" "),SHORTMONTHS:"Jan. Feb. Mrt. Apr. Mei Jun. Jul. Aug. Sep. Okt. Nov. Des.".split(" "),STANDALONESHORTMONTHS:"Jan. Feb. Mrt. Apr. Mei Jun. Jul. Aug. Sep. Okt. Nov. Des.".split(" "),\nWEEKDAYS:"Sondag Maandag Dinsdag Woensdag Donderdag Vrydag Saterdag".split(" "),STANDALONEWEEKDAYS:"Sondag Maandag Dinsdag Woensdag Donderdag Vrydag Saterdag".split(" "),SHORTWEEKDAYS:"So. Ma. Di. Wo. Do. Vr. Sa.".split(" "),STANDALONESHORTWEEKDAYS:"So. Ma. Di. Wo. Do. Vr. Sa.".split(" "),NARROWWEEKDAYS:"SMDWDVS".split(""),STANDALONENARROWWEEKDAYS:"SMDWDVS".split(""),SHORTQUARTERS:["K1","K2","K3","K4"],QUARTERS:["1ste kwartaal","2de kwartaal","3de kwartaal","4de kwartaal"],AMPMS:["vm.","nm."],DATEFORMATS:["EEEE, dd MMMM y",\n"dd MMMM y","dd MMM y","y-MM-dd"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_am={ERAS:["\\u12d3/\\u12d3","\\u12d3/\\u121d"],ERANAMES:["\\u12d3\\u1218\\u1270 \\u12d3\\u1208\\u121d","\\u12d3\\u1218\\u1270 \\u121d\\u1215\\u1228\\u1275"],NARROWMONTHS:"\\u1303\\u134c\\u121b\\u12a4\\u121c\\u1301\\u1301\\u12a6\\u1234\\u12a6\\u1296\\u12f2".split(""),STANDALONENARROWMONTHS:"\\u1303\\u134c\\u121b\\u12a4\\u121c\\u1301\\u1301\\u12a6\\u1234\\u12a6\\u1296\\u12f2".split(""),MONTHS:"\\u1303\\u1295\\u12e9\\u12c8\\u122a \\u134c\\u1265\\u1229\\u12c8\\u122a \\u121b\\u122d\\u127d \\u12a4\\u1355\\u122a\\u120d \\u121c\\u12ed \\u1301\\u1295 \\u1301\\u120b\\u12ed \\u12a6\\u1308\\u1235\\u1275 \\u1234\\u1355\\u1274\\u121d\\u1260\\u122d \\u12a6\\u12ad\\u1276\\u1260\\u122d \\u1296\\u126c\\u121d\\u1260\\u122d \\u12f2\\u1234\\u121d\\u1260\\u122d".split(" "),\nSTANDALONEMONTHS:"\\u1303\\u1295\\u12e9\\u12c8\\u122a \\u134c\\u1265\\u1229\\u12c8\\u122a \\u121b\\u122d\\u127d \\u12a4\\u1355\\u122a\\u120d \\u121c\\u12ed \\u1301\\u1295 \\u1301\\u120b\\u12ed \\u12a6\\u1308\\u1235\\u1275 \\u1234\\u1355\\u1274\\u121d\\u1260\\u122d \\u12a6\\u12ad\\u1276\\u1260\\u122d \\u1296\\u126c\\u121d\\u1260\\u122d \\u12f2\\u1234\\u121d\\u1260\\u122d".split(" "),SHORTMONTHS:"\\u1303\\u1295\\u12e9 \\u134c\\u1265\\u1229 \\u121b\\u122d\\u127d \\u12a4\\u1355\\u122a \\u121c\\u12ed \\u1301\\u1295 \\u1301\\u120b\\u12ed \\u12a6\\u1308\\u1235 \\u1234\\u1355\\u1274 \\u12a6\\u12ad\\u1276 \\u1296\\u126c\\u121d \\u12f2\\u1234\\u121d".split(" "),\nSTANDALONESHORTMONTHS:"\\u1303\\u1295\\u12e9 \\u134c\\u1265\\u1229 \\u121b\\u122d\\u127d \\u12a4\\u1355\\u122a \\u121c\\u12ed \\u1301\\u1295 \\u1301\\u120b\\u12ed \\u12a6\\u1308\\u1235 \\u1234\\u1355\\u1274 \\u12a6\\u12ad\\u1276 \\u1296\\u126c\\u121d \\u12f2\\u1234\\u121d".split(" "),WEEKDAYS:"\\u12a5\\u1211\\u12f5 \\u1230\\u129e \\u121b\\u12ad\\u1230\\u129e \\u1228\\u1261\\u12d5 \\u1210\\u1219\\u1235 \\u12d3\\u122d\\u1265 \\u1245\\u12f3\\u121c".split(" "),STANDALONEWEEKDAYS:"\\u12a5\\u1211\\u12f5 \\u1230\\u129e \\u121b\\u12ad\\u1230\\u129e \\u1228\\u1261\\u12d5 \\u1210\\u1219\\u1235 \\u12d3\\u122d\\u1265 \\u1245\\u12f3\\u121c".split(" "),\nSHORTWEEKDAYS:"\\u12a5\\u1211\\u12f5 \\u1230\\u129e \\u121b\\u12ad\\u1230 \\u1228\\u1261\\u12d5 \\u1210\\u1219\\u1235 \\u12d3\\u122d\\u1265 \\u1245\\u12f3\\u121c".split(" "),STANDALONESHORTWEEKDAYS:"\\u12a5\\u1211\\u12f5 \\u1230\\u129e \\u121b\\u12ad\\u1230 \\u1228\\u1261\\u12d5 \\u1210\\u1219\\u1235 \\u12d3\\u122d\\u1265 \\u1245\\u12f3\\u121c".split(" "),NARROWWEEKDAYS:"\\u12a5\\u1230\\u121b\\u1228\\u1210\\u12d3\\u1245".split(""),STANDALONENARROWWEEKDAYS:"\\u12a5\\u1230\\u121b\\u1228\\u1210\\u12d3\\u1245".split(""),SHORTQUARTERS:["\\u1229\\u12651","\\u1229\\u12652",\n"\\u1229\\u12653","\\u1229\\u12654"],QUARTERS:["1\\u129b\\u12cd \\u1229\\u1265","2\\u129b\\u12cd \\u1229\\u1265","3\\u129b\\u12cd \\u1229\\u1265","4\\u129b\\u12cd \\u1229\\u1265"],AMPMS:["\\u1325\\u12cb\\u1275","\\u12a8\\u1230\\u12d3\\u1275"],DATEFORMATS:["EEEE \\u1363d MMMM y","d MMMM y","d MMM y","dd/MM/y"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_ar={ZERODIGIT:1632,ERAS:["\\u0642.\\u0645","\\u0645"],ERANAMES:["\\u0642\\u0628\\u0644 \\u0627\\u0644\\u0645\\u064a\\u0644\\u0627\\u062f","\\u0645\\u064a\\u0644\\u0627\\u062f\\u064a"],NARROWMONTHS:"\\u064a\\u0641\\u0645\\u0623\\u0648\\u0646\\u0644\\u063a\\u0633\\u0643\\u0628\\u062f".split(""),STANDALONENARROWMONTHS:"\\u064a\\u0641\\u0645\\u0623\\u0648\\u0646\\u0644\\u063a\\u0633\\u0643\\u0628\\u062f".split(""),MONTHS:"\\u064a\\u0646\\u0627\\u064a\\u0631 \\u0641\\u0628\\u0631\\u0627\\u064a\\u0631 \\u0645\\u0627\\u0631\\u0633 \\u0623\\u0628\\u0631\\u064a\\u0644 \\u0645\\u0627\\u064a\\u0648 \\u064a\\u0648\\u0646\\u064a\\u0648 \\u064a\\u0648\\u0644\\u064a\\u0648 \\u0623\\u063a\\u0633\\u0637\\u0633 \\u0633\\u0628\\u062a\\u0645\\u0628\\u0631 \\u0623\\u0643\\u062a\\u0648\\u0628\\u0631 \\u0646\\u0648\\u0641\\u0645\\u0628\\u0631 \\u062f\\u064a\\u0633\\u0645\\u0628\\u0631".split(" "),\nSTANDALONEMONTHS:"\\u064a\\u0646\\u0627\\u064a\\u0631 \\u0641\\u0628\\u0631\\u0627\\u064a\\u0631 \\u0645\\u0627\\u0631\\u0633 \\u0623\\u0628\\u0631\\u064a\\u0644 \\u0645\\u0627\\u064a\\u0648 \\u064a\\u0648\\u0646\\u064a\\u0648 \\u064a\\u0648\\u0644\\u064a\\u0648 \\u0623\\u063a\\u0633\\u0637\\u0633 \\u0633\\u0628\\u062a\\u0645\\u0628\\u0631 \\u0623\\u0643\\u062a\\u0648\\u0628\\u0631 \\u0646\\u0648\\u0641\\u0645\\u0628\\u0631 \\u062f\\u064a\\u0633\\u0645\\u0628\\u0631".split(" "),SHORTMONTHS:"\\u064a\\u0646\\u0627\\u064a\\u0631 \\u0641\\u0628\\u0631\\u0627\\u064a\\u0631 \\u0645\\u0627\\u0631\\u0633 \\u0623\\u0628\\u0631\\u064a\\u0644 \\u0645\\u0627\\u064a\\u0648 \\u064a\\u0648\\u0646\\u064a\\u0648 \\u064a\\u0648\\u0644\\u064a\\u0648 \\u0623\\u063a\\u0633\\u0637\\u0633 \\u0633\\u0628\\u062a\\u0645\\u0628\\u0631 \\u0623\\u0643\\u062a\\u0648\\u0628\\u0631 \\u0646\\u0648\\u0641\\u0645\\u0628\\u0631 \\u062f\\u064a\\u0633\\u0645\\u0628\\u0631".split(" "),\nSTANDALONESHORTMONTHS:"\\u064a\\u0646\\u0627\\u064a\\u0631 \\u0641\\u0628\\u0631\\u0627\\u064a\\u0631 \\u0645\\u0627\\u0631\\u0633 \\u0623\\u0628\\u0631\\u064a\\u0644 \\u0645\\u0627\\u064a\\u0648 \\u064a\\u0648\\u0646\\u064a\\u0648 \\u064a\\u0648\\u0644\\u064a\\u0648 \\u0623\\u063a\\u0633\\u0637\\u0633 \\u0633\\u0628\\u062a\\u0645\\u0628\\u0631 \\u0623\\u0643\\u062a\\u0648\\u0628\\u0631 \\u0646\\u0648\\u0641\\u0645\\u0628\\u0631 \\u062f\\u064a\\u0633\\u0645\\u0628\\u0631".split(" "),WEEKDAYS:"\\u0627\\u0644\\u0623\\u062d\\u062f \\u0627\\u0644\\u0627\\u062b\\u0646\\u064a\\u0646 \\u0627\\u0644\\u062b\\u0644\\u0627\\u062b\\u0627\\u0621 \\u0627\\u0644\\u0623\\u0631\\u0628\\u0639\\u0627\\u0621 \\u0627\\u0644\\u062e\\u0645\\u064a\\u0633 \\u0627\\u0644\\u062c\\u0645\\u0639\\u0629 \\u0627\\u0644\\u0633\\u0628\\u062a".split(" "),\nSTANDALONEWEEKDAYS:"\\u0627\\u0644\\u0623\\u062d\\u062f \\u0627\\u0644\\u0627\\u062b\\u0646\\u064a\\u0646 \\u0627\\u0644\\u062b\\u0644\\u0627\\u062b\\u0627\\u0621 \\u0627\\u0644\\u0623\\u0631\\u0628\\u0639\\u0627\\u0621 \\u0627\\u0644\\u062e\\u0645\\u064a\\u0633 \\u0627\\u0644\\u062c\\u0645\\u0639\\u0629 \\u0627\\u0644\\u0633\\u0628\\u062a".split(" "),SHORTWEEKDAYS:"\\u0627\\u0644\\u0623\\u062d\\u062f \\u0627\\u0644\\u0627\\u062b\\u0646\\u064a\\u0646 \\u0627\\u0644\\u062b\\u0644\\u0627\\u062b\\u0627\\u0621 \\u0627\\u0644\\u0623\\u0631\\u0628\\u0639\\u0627\\u0621 \\u0627\\u0644\\u062e\\u0645\\u064a\\u0633 \\u0627\\u0644\\u062c\\u0645\\u0639\\u0629 \\u0627\\u0644\\u0633\\u0628\\u062a".split(" "),\nSTANDALONESHORTWEEKDAYS:"\\u0627\\u0644\\u0623\\u062d\\u062f \\u0627\\u0644\\u0627\\u062b\\u0646\\u064a\\u0646 \\u0627\\u0644\\u062b\\u0644\\u0627\\u062b\\u0627\\u0621 \\u0627\\u0644\\u0623\\u0631\\u0628\\u0639\\u0627\\u0621 \\u0627\\u0644\\u062e\\u0645\\u064a\\u0633 \\u0627\\u0644\\u062c\\u0645\\u0639\\u0629 \\u0627\\u0644\\u0633\\u0628\\u062a".split(" "),NARROWWEEKDAYS:"\\u062d\\u0646\\u062b\\u0631\\u062e\\u062c\\u0633".split(""),STANDALONENARROWWEEKDAYS:"\\u062d\\u0646\\u062b\\u0631\\u062e\\u062c\\u0633".split(""),SHORTQUARTERS:["\\u0627\\u0644\\u0631\\u0628\\u0639 \\u0627\\u0644\\u0623\\u0648\\u0644",\n"\\u0627\\u0644\\u0631\\u0628\\u0639 \\u0627\\u0644\\u062b\\u0627\\u0646\\u064a","\\u0627\\u0644\\u0631\\u0628\\u0639 \\u0627\\u0644\\u062b\\u0627\\u0644\\u062b","\\u0627\\u0644\\u0631\\u0628\\u0639 \\u0627\\u0644\\u0631\\u0627\\u0628\\u0639"],QUARTERS:["\\u0627\\u0644\\u0631\\u0628\\u0639 \\u0627\\u0644\\u0623\\u0648\\u0644","\\u0627\\u0644\\u0631\\u0628\\u0639 \\u0627\\u0644\\u062b\\u0627\\u0646\\u064a","\\u0627\\u0644\\u0631\\u0628\\u0639 \\u0627\\u0644\\u062b\\u0627\\u0644\\u062b","\\u0627\\u0644\\u0631\\u0628\\u0639 \\u0627\\u0644\\u0631\\u0627\\u0628\\u0639"],AMPMS:["\\u0635",\n"\\u0645"],DATEFORMATS:["EEEE\\u060c d MMMM\\u060c y","d MMMM\\u060c y","dd\\u200f/MM\\u200f/y","d\\u200f/M\\u200f/y"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:5,WEEKENDRANGE:[4,5],FIRSTWEEKCUTOFFDAY:4};\ngoog.i18n.DateTimeSymbols_az={ERAS:["e.\\u0259.","b.e."],ERANAMES:["eram\\u0131zdan \\u0259vv\\u0259l","eram\\u0131z"],NARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),STANDALONENARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),MONTHS:"yanvar fevral mart aprel may iyun iyul avqust sentyabr oktyabr noyabr dekabr".split(" "),STANDALONEMONTHS:"Yanvar Fevral Mart Aprel May \\u0130yun \\u0130yul Avqust Sentyabr Oktyabr Noyabr Dekabr".split(" "),SHORTMONTHS:"yan fev mar apr may iyn iyl avq sen okt noy dek".split(" "),\nSTANDALONESHORTMONTHS:"yan fev mar apr may iyn iyl avq sen okt noy dek".split(" "),WEEKDAYS:"bazar;bazar ert\\u0259si;\\u00e7\\u0259r\\u015f\\u0259nb\\u0259 ax\\u015fam\\u0131;\\u00e7\\u0259r\\u015f\\u0259nb\\u0259;c\\u00fcm\\u0259 ax\\u015fam\\u0131;c\\u00fcm\\u0259;\\u015f\\u0259nb\\u0259".split(";"),STANDALONEWEEKDAYS:"bazar;bazar ert\\u0259si;\\u00e7\\u0259r\\u015f\\u0259nb\\u0259 ax\\u015fam\\u0131;\\u00e7\\u0259r\\u015f\\u0259nb\\u0259;c\\u00fcm\\u0259 ax\\u015fam\\u0131;c\\u00fcm\\u0259;\\u015f\\u0259nb\\u0259".split(";"),SHORTWEEKDAYS:"B. B.E. \\u00c7.A. \\u00c7. C.A. C. \\u015e.".split(" "),\nSTANDALONESHORTWEEKDAYS:"B. B.E. \\u00c7.A. \\u00c7. C.A. C. \\u015e.".split(" "),NARROWWEEKDAYS:"7123456".split(""),STANDALONENARROWWEEKDAYS:"7123456".split(""),SHORTQUARTERS:["1-ci kv.","2-ci kv.","3-c\\u00fc kv.","4-c\\u00fc kv."],QUARTERS:["1-ci kvartal","2-ci kvartal","3-c\\u00fc kvartal","4-c\\u00fc kvartal"],AMPMS:["AM","PM"],DATEFORMATS:["d MMMM y, EEEE","d MMMM y","d MMM y","dd.MM.yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],\nFIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_be={ERAS:["\\u0434\\u0430 \\u043d.\\u044d.","\\u043d.\\u044d."],ERANAMES:["\\u0434\\u0430 \\u043d\\u0430\\u0448\\u0430\\u0439 \\u044d\\u0440\\u044b","\\u043d\\u0430\\u0448\\u0430\\u0439 \\u044d\\u0440\\u044b"],NARROWMONTHS:"\\u0441\\u043b\\u0441\\u043a\\u043c\\u0447\\u043b\\u0436\\u0432\\u043a\\u043b\\u0441".split(""),STANDALONENARROWMONTHS:"\\u0441\\u043b\\u0441\\u043a\\u043c\\u0447\\u043b\\u0436\\u0432\\u043a\\u043b\\u0441".split(""),MONTHS:"\\u0441\\u0442\\u0443\\u0434\\u0437\\u0435\\u043d\\u044f \\u043b\\u044e\\u0442\\u0430\\u0433\\u0430 \\u0441\\u0430\\u043a\\u0430\\u0432\\u0456\\u043a\\u0430 \\u043a\\u0440\\u0430\\u0441\\u0430\\u0432\\u0456\\u043a\\u0430 \\u043c\\u0430\\u044f \\u0447\\u044d\\u0440\\u0432\\u0435\\u043d\\u044f \\u043b\\u0456\\u043f\\u0435\\u043d\\u044f \\u0436\\u043d\\u0456\\u045e\\u043d\\u044f \\u0432\\u0435\\u0440\\u0430\\u0441\\u043d\\u044f \\u043a\\u0430\\u0441\\u0442\\u0440\\u044b\\u0447\\u043d\\u0456\\u043a\\u0430 \\u043b\\u0456\\u0441\\u0442\\u0430\\u043f\\u0430\\u0434\\u0430 \\u0441\\u043d\\u0435\\u0436\\u043d\\u044f".split(" "),STANDALONEMONTHS:"\\u0441\\u0442\\u0443\\u0434\\u0437\\u0435\\u043d\\u044c \\u043b\\u044e\\u0442\\u044b \\u0441\\u0430\\u043a\\u0430\\u0432\\u0456\\u043a \\u043a\\u0440\\u0430\\u0441\\u0430\\u0432\\u0456\\u043a \\u043c\\u0430\\u0439 \\u0447\\u044d\\u0440\\u0432\\u0435\\u043d\\u044c \\u043b\\u0456\\u043f\\u0435\\u043d\\u044c \\u0436\\u043d\\u0456\\u0432\\u0435\\u043d\\u044c \\u0432\\u0435\\u0440\\u0430\\u0441\\u0435\\u043d\\u044c \\u043a\\u0430\\u0441\\u0442\\u0440\\u044b\\u0447\\u043d\\u0456\\u043a \\u043b\\u0456\\u0441\\u0442\\u0430\\u043f\\u0430\\u0434 \\u0441\\u043d\\u0435\\u0436\\u0430\\u043d\\u044c".split(" "),\nSHORTMONTHS:"\\u0441\\u0442\\u0443 \\u043b\\u044e\\u0442 \\u0441\\u0430\\u043a \\u043a\\u0440\\u0430 \\u043c\\u0430\\u044f \\u0447\\u044d\\u0440 \\u043b\\u0456\\u043f \\u0436\\u043d\\u0456 \\u0432\\u0435\\u0440 \\u043a\\u0430\\u0441 \\u043b\\u0456\\u0441 \\u0441\\u043d\\u0435".split(" "),STANDALONESHORTMONTHS:"\\u0441\\u0442\\u0443 \\u043b\\u044e\\u0442 \\u0441\\u0430\\u043a \\u043a\\u0440\\u0430 \\u043c\\u0430\\u0439 \\u0447\\u044d\\u0440 \\u043b\\u0456\\u043f \\u0436\\u043d\\u0456 \\u0432\\u0435\\u0440 \\u043a\\u0430\\u0441 \\u043b\\u0456\\u0441 \\u0441\\u043d\\u0435".split(" "),\nWEEKDAYS:"\\u043d\\u044f\\u0434\\u0437\\u0435\\u043b\\u044f \\u043f\\u0430\\u043d\\u044f\\u0434\\u0437\\u0435\\u043b\\u0430\\u043a \\u0430\\u045e\\u0442\\u043e\\u0440\\u0430\\u043a \\u0441\\u0435\\u0440\\u0430\\u0434\\u0430 \\u0447\\u0430\\u0446\\u0432\\u0435\\u0440 \\u043f\\u044f\\u0442\\u043d\\u0456\\u0446\\u0430 \\u0441\\u0443\\u0431\\u043e\\u0442\\u0430".split(" "),STANDALONEWEEKDAYS:"\\u043d\\u044f\\u0434\\u0437\\u0435\\u043b\\u044f \\u043f\\u0430\\u043d\\u044f\\u0434\\u0437\\u0435\\u043b\\u0430\\u043a \\u0430\\u045e\\u0442\\u043e\\u0440\\u0430\\u043a \\u0441\\u0435\\u0440\\u0430\\u0434\\u0430 \\u0447\\u0430\\u0446\\u0432\\u0435\\u0440 \\u043f\\u044f\\u0442\\u043d\\u0456\\u0446\\u0430 \\u0441\\u0443\\u0431\\u043e\\u0442\\u0430".split(" "),\nSHORTWEEKDAYS:"\\u043d\\u0434 \\u043f\\u043d \\u0430\\u045e \\u0441\\u0440 \\u0447\\u0446 \\u043f\\u0442 \\u0441\\u0431".split(" "),STANDALONESHORTWEEKDAYS:"\\u043d\\u0434 \\u043f\\u043d \\u0430\\u045e \\u0441\\u0440 \\u0447\\u0446 \\u043f\\u0442 \\u0441\\u0431".split(" "),NARROWWEEKDAYS:"\\u043d\\u043f\\u0430\\u0441\\u0447\\u043f\\u0441".split(""),STANDALONENARROWWEEKDAYS:"\\u043d\\u043f\\u0430\\u0441\\u0447\\u043f\\u0441".split(""),SHORTQUARTERS:["1-\\u0448\\u044b \\u043a\\u0432.","2-\\u0433\\u0456 \\u043a\\u0432.","3-\\u0446\\u0456 \\u043a\\u0432.",\n"4-\\u0442\\u044b \\u043a\\u0432."],QUARTERS:["1-\\u0448\\u044b \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b","2-\\u0433\\u0456 \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b","3-\\u0446\\u0456 \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b","4-\\u0442\\u044b \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b"],AMPMS:["\\u0434\\u0430 \\u043f\\u0430\\u045e\\u0434\\u043d\\u044f","\\u043f\\u0430\\u0441\\u043b\\u044f \\u043f\\u0430\\u045e\\u0434\\u043d\\u044f"],DATEFORMATS:["EEEE, d MMMM y","d MMMM y","d.M.y","d.M.yy"],TIMEFORMATS:["HH.mm.ss zzzz",\n"HH.mm.ss z","HH.mm.ss","HH.mm"],DATETIMEFORMATS:["{1} \'\\u0443\' {0}","{1} \'\\u0443\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_bg={ERAS:["\\u043f\\u0440.\\u0425\\u0440.","\\u0441\\u043b.\\u0425\\u0440."],ERANAMES:["\\u043f\\u0440\\u0435\\u0434\\u0438 \\u0425\\u0440\\u0438\\u0441\\u0442\\u0430","\\u0441\\u043b\\u0435\\u0434 \\u0425\\u0440\\u0438\\u0441\\u0442\\u0430"],NARROWMONTHS:"\\u044f\\u0444\\u043c\\u0430\\u043c\\u044e\\u044e\\u0430\\u0441\\u043e\\u043d\\u0434".split(""),STANDALONENARROWMONTHS:"\\u044f\\u0444\\u043c\\u0430\\u043c\\u044e\\u044e\\u0430\\u0441\\u043e\\u043d\\u0434".split(""),MONTHS:"\\u044f\\u043d\\u0443\\u0430\\u0440\\u0438 \\u0444\\u0435\\u0432\\u0440\\u0443\\u0430\\u0440\\u0438 \\u043c\\u0430\\u0440\\u0442 \\u0430\\u043f\\u0440\\u0438\\u043b \\u043c\\u0430\\u0439 \\u044e\\u043d\\u0438 \\u044e\\u043b\\u0438 \\u0430\\u0432\\u0433\\u0443\\u0441\\u0442 \\u0441\\u0435\\u043f\\u0442\\u0435\\u043c\\u0432\\u0440\\u0438 \\u043e\\u043a\\u0442\\u043e\\u043c\\u0432\\u0440\\u0438 \\u043d\\u043e\\u0435\\u043c\\u0432\\u0440\\u0438 \\u0434\\u0435\\u043a\\u0435\\u043c\\u0432\\u0440\\u0438".split(" "),\nSTANDALONEMONTHS:"\\u044f\\u043d\\u0443\\u0430\\u0440\\u0438 \\u0444\\u0435\\u0432\\u0440\\u0443\\u0430\\u0440\\u0438 \\u043c\\u0430\\u0440\\u0442 \\u0430\\u043f\\u0440\\u0438\\u043b \\u043c\\u0430\\u0439 \\u044e\\u043d\\u0438 \\u044e\\u043b\\u0438 \\u0430\\u0432\\u0433\\u0443\\u0441\\u0442 \\u0441\\u0435\\u043f\\u0442\\u0435\\u043c\\u0432\\u0440\\u0438 \\u043e\\u043a\\u0442\\u043e\\u043c\\u0432\\u0440\\u0438 \\u043d\\u043e\\u0435\\u043c\\u0432\\u0440\\u0438 \\u0434\\u0435\\u043a\\u0435\\u043c\\u0432\\u0440\\u0438".split(" "),SHORTMONTHS:"\\u044f\\u043d\\u0443 \\u0444\\u0435\\u0432 \\u043c\\u0430\\u0440\\u0442 \\u0430\\u043f\\u0440 \\u043c\\u0430\\u0439 \\u044e\\u043d\\u0438 \\u044e\\u043b\\u0438 \\u0430\\u0432\\u0433 \\u0441\\u0435\\u043f \\u043e\\u043a\\u0442 \\u043d\\u043e\\u0435 \\u0434\\u0435\\u043a".split(" "),\nSTANDALONESHORTMONTHS:"\\u044f\\u043d\\u0443 \\u0444\\u0435\\u0432 \\u043c\\u0430\\u0440\\u0442 \\u0430\\u043f\\u0440 \\u043c\\u0430\\u0439 \\u044e\\u043d\\u0438 \\u044e\\u043b\\u0438 \\u0430\\u0432\\u0433 \\u0441\\u0435\\u043f \\u043e\\u043a\\u0442 \\u043d\\u043e\\u0435 \\u0434\\u0435\\u043a".split(" "),WEEKDAYS:"\\u043d\\u0435\\u0434\\u0435\\u043b\\u044f \\u043f\\u043e\\u043d\\u0435\\u0434\\u0435\\u043b\\u043d\\u0438\\u043a \\u0432\\u0442\\u043e\\u0440\\u043d\\u0438\\u043a \\u0441\\u0440\\u044f\\u0434\\u0430 \\u0447\\u0435\\u0442\\u0432\\u044a\\u0440\\u0442\\u044a\\u043a \\u043f\\u0435\\u0442\\u044a\\u043a \\u0441\\u044a\\u0431\\u043e\\u0442\\u0430".split(" "),\nSTANDALONEWEEKDAYS:"\\u043d\\u0435\\u0434\\u0435\\u043b\\u044f \\u043f\\u043e\\u043d\\u0435\\u0434\\u0435\\u043b\\u043d\\u0438\\u043a \\u0432\\u0442\\u043e\\u0440\\u043d\\u0438\\u043a \\u0441\\u0440\\u044f\\u0434\\u0430 \\u0447\\u0435\\u0442\\u0432\\u044a\\u0440\\u0442\\u044a\\u043a \\u043f\\u0435\\u0442\\u044a\\u043a \\u0441\\u044a\\u0431\\u043e\\u0442\\u0430".split(" "),SHORTWEEKDAYS:"\\u043d\\u0434 \\u043f\\u043d \\u0432\\u0442 \\u0441\\u0440 \\u0447\\u0442 \\u043f\\u0442 \\u0441\\u0431".split(" "),STANDALONESHORTWEEKDAYS:"\\u043d\\u0434 \\u043f\\u043d \\u0432\\u0442 \\u0441\\u0440 \\u0447\\u0442 \\u043f\\u0442 \\u0441\\u0431".split(" "),\nNARROWWEEKDAYS:"\\u043d\\u043f\\u0432\\u0441\\u0447\\u043f\\u0441".split(""),STANDALONENARROWWEEKDAYS:"\\u043d\\u043f\\u0432\\u0441\\u0447\\u043f\\u0441".split(""),SHORTQUARTERS:["1. \\u0442\\u0440\\u0438\\u043c.","2. \\u0442\\u0440\\u0438\\u043c.","3. \\u0442\\u0440\\u0438\\u043c.","4. \\u0442\\u0440\\u0438\\u043c."],QUARTERS:["1. \\u0442\\u0440\\u0438\\u043c\\u0435\\u0441\\u0435\\u0447\\u0438\\u0435","2. \\u0442\\u0440\\u0438\\u043c\\u0435\\u0441\\u0435\\u0447\\u0438\\u0435","3. \\u0442\\u0440\\u0438\\u043c\\u0435\\u0441\\u0435\\u0447\\u0438\\u0435","4. \\u0442\\u0440\\u0438\\u043c\\u0435\\u0441\\u0435\\u0447\\u0438\\u0435"],\nAMPMS:["\\u043f\\u0440.\\u043e\\u0431.","\\u0441\\u043b.\\u043e\\u0431."],DATEFORMATS:["EEEE, d MMMM y \'\\u0433\'.","d MMMM y \'\\u0433\'.","d.MM.y \'\\u0433\'.","d.MM.yy \'\\u0433\'."],TIMEFORMATS:["H:mm:ss zzzz","H:mm:ss z","H:mm:ss","H:mm"],DATETIMEFORMATS:["{1}, {0}","{1}, {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_bn={ZERODIGIT:2534,ERAS:["\\u0996\\u09cd\\u09b0\\u09bf\\u09b8\\u09cd\\u099f\\u09aa\\u09c2\\u09b0\\u09cd\\u09ac","\\u0996\\u09c3\\u09b7\\u09cd\\u099f\\u09be\\u09ac\\u09cd\\u09a6"],ERANAMES:["\\u0996\\u09cd\\u09b0\\u09bf\\u09b8\\u09cd\\u099f\\u09aa\\u09c2\\u09b0\\u09cd\\u09ac","\\u0996\\u09c3\\u09b7\\u09cd\\u099f\\u09be\\u09ac\\u09cd\\u09a6"],NARROWMONTHS:"\\u099c\\u09be \\u09ab\\u09c7 \\u09ae\\u09be \\u098f \\u09ae\\u09c7 \\u099c\\u09c1\\u09a8 \\u099c\\u09c1 \\u0986 \\u09b8\\u09c7 \\u0985 \\u09a8 \\u09a1\\u09bf".split(" "),STANDALONENARROWMONTHS:"\\u099c\\u09be \\u09ab\\u09c7 \\u09ae\\u09be \\u098f \\u09ae\\u09c7 \\u099c\\u09c1\\u09a8 \\u099c\\u09c1 \\u0986 \\u09b8\\u09c7 \\u0985 \\u09a8 \\u09a1\\u09bf".split(" "),\nMONTHS:"\\u099c\\u09be\\u09a8\\u09c1\\u09af\\u09bc\\u09be\\u09b0\\u09c0 \\u09ab\\u09c7\\u09ac\\u09cd\\u09b0\\u09c1\\u09af\\u09bc\\u09be\\u09b0\\u09c0 \\u09ae\\u09be\\u09b0\\u09cd\\u099a \\u098f\\u09aa\\u09cd\\u09b0\\u09bf\\u09b2 \\u09ae\\u09c7 \\u099c\\u09c1\\u09a8 \\u099c\\u09c1\\u09b2\\u09be\\u0987 \\u0986\\u0997\\u09b8\\u09cd\\u099f \\u09b8\\u09c7\\u09aa\\u09cd\\u099f\\u09c7\\u09ae\\u09cd\\u09ac\\u09b0 \\u0985\\u0995\\u09cd\\u099f\\u09cb\\u09ac\\u09b0 \\u09a8\\u09ad\\u09c7\\u09ae\\u09cd\\u09ac\\u09b0 \\u09a1\\u09bf\\u09b8\\u09c7\\u09ae\\u09cd\\u09ac\\u09b0".split(" "),STANDALONEMONTHS:"\\u099c\\u09be\\u09a8\\u09c1\\u09af\\u09bc\\u09be\\u09b0\\u09c0 \\u09ab\\u09c7\\u09ac\\u09cd\\u09b0\\u09c1\\u09af\\u09bc\\u09be\\u09b0\\u09c0 \\u09ae\\u09be\\u09b0\\u09cd\\u099a \\u098f\\u09aa\\u09cd\\u09b0\\u09bf\\u09b2 \\u09ae\\u09c7 \\u099c\\u09c1\\u09a8 \\u099c\\u09c1\\u09b2\\u09be\\u0987 \\u0986\\u0997\\u09b8\\u09cd\\u099f \\u09b8\\u09c7\\u09aa\\u09cd\\u099f\\u09c7\\u09ae\\u09cd\\u09ac\\u09b0 \\u0985\\u0995\\u09cd\\u099f\\u09cb\\u09ac\\u09b0 \\u09a8\\u09ad\\u09c7\\u09ae\\u09cd\\u09ac\\u09b0 \\u09a1\\u09bf\\u09b8\\u09c7\\u09ae\\u09cd\\u09ac\\u09b0".split(" "),\nSHORTMONTHS:"\\u099c\\u09be\\u09a8\\u09c1\\u09af\\u09bc\\u09be\\u09b0\\u09c0 \\u09ab\\u09c7\\u09ac\\u09cd\\u09b0\\u09c1\\u09af\\u09bc\\u09be\\u09b0\\u09c0 \\u09ae\\u09be\\u09b0\\u09cd\\u099a \\u098f\\u09aa\\u09cd\\u09b0\\u09bf\\u09b2 \\u09ae\\u09c7 \\u099c\\u09c1\\u09a8 \\u099c\\u09c1\\u09b2\\u09be\\u0987 \\u0986\\u0997\\u09b8\\u09cd\\u099f \\u09b8\\u09c7\\u09aa\\u09cd\\u099f\\u09c7\\u09ae\\u09cd\\u09ac\\u09b0 \\u0985\\u0995\\u09cd\\u099f\\u09cb\\u09ac\\u09b0 \\u09a8\\u09ad\\u09c7\\u09ae\\u09cd\\u09ac\\u09b0 \\u09a1\\u09bf\\u09b8\\u09c7\\u09ae\\u09cd\\u09ac\\u09b0".split(" "),\nSTANDALONESHORTMONTHS:"\\u099c\\u09be\\u09a8\\u09c1\\u09af\\u09bc\\u09be\\u09b0\\u09c0 \\u09ab\\u09c7\\u09ac\\u09cd\\u09b0\\u09c1\\u09af\\u09bc\\u09be\\u09b0\\u09c0 \\u09ae\\u09be\\u09b0\\u09cd\\u099a \\u098f\\u09aa\\u09cd\\u09b0\\u09bf\\u09b2 \\u09ae\\u09c7 \\u099c\\u09c1\\u09a8 \\u099c\\u09c1\\u09b2\\u09be\\u0987 \\u0986\\u0997\\u09b8\\u09cd\\u099f \\u09b8\\u09c7\\u09aa\\u09cd\\u099f\\u09c7\\u09ae\\u09cd\\u09ac\\u09b0 \\u0985\\u0995\\u09cd\\u099f\\u09cb\\u09ac\\u09b0 \\u09a8\\u09ad\\u09c7\\u09ae\\u09cd\\u09ac\\u09b0 \\u09a1\\u09bf\\u09b8\\u09c7\\u09ae\\u09cd\\u09ac\\u09b0".split(" "),\nWEEKDAYS:"\\u09b0\\u09ac\\u09bf\\u09ac\\u09be\\u09b0 \\u09b8\\u09cb\\u09ae\\u09ac\\u09be\\u09b0 \\u09ae\\u0999\\u09cd\\u0997\\u09b2\\u09ac\\u09be\\u09b0 \\u09ac\\u09c1\\u09a7\\u09ac\\u09be\\u09b0 \\u09ac\\u09c3\\u09b9\\u09b8\\u09cd\\u09aa\\u09a4\\u09bf\\u09ac\\u09be\\u09b0 \\u09b6\\u09c1\\u0995\\u09cd\\u09b0\\u09ac\\u09be\\u09b0 \\u09b6\\u09a8\\u09bf\\u09ac\\u09be\\u09b0".split(" "),STANDALONEWEEKDAYS:"\\u09b0\\u09ac\\u09bf\\u09ac\\u09be\\u09b0 \\u09b8\\u09cb\\u09ae\\u09ac\\u09be\\u09b0 \\u09ae\\u0999\\u09cd\\u0997\\u09b2\\u09ac\\u09be\\u09b0 \\u09ac\\u09c1\\u09a7\\u09ac\\u09be\\u09b0 \\u09ac\\u09c3\\u09b9\\u09b7\\u09cd\\u09aa\\u09a4\\u09bf\\u09ac\\u09be\\u09b0 \\u09b6\\u09c1\\u0995\\u09cd\\u09b0\\u09ac\\u09be\\u09b0 \\u09b6\\u09a8\\u09bf\\u09ac\\u09be\\u09b0".split(" "),\nSHORTWEEKDAYS:"\\u09b0\\u09ac\\u09bf \\u09b8\\u09cb\\u09ae \\u09ae\\u0999\\u09cd\\u0997\\u09b2 \\u09ac\\u09c1\\u09a7 \\u09ac\\u09c3\\u09b9\\u09b8\\u09cd\\u09aa\\u09a4\\u09bf \\u09b6\\u09c1\\u0995\\u09cd\\u09b0 \\u09b6\\u09a8\\u09bf".split(" "),STANDALONESHORTWEEKDAYS:"\\u09b0\\u09ac\\u09bf \\u09b8\\u09cb\\u09ae \\u09ae\\u0999\\u09cd\\u0997\\u09b2 \\u09ac\\u09c1\\u09a7 \\u09ac\\u09c3\\u09b9\\u09b8\\u09cd\\u09aa\\u09a4\\u09bf \\u09b6\\u09c1\\u0995\\u09cd\\u09b0 \\u09b6\\u09a8\\u09bf".split(" "),NARROWWEEKDAYS:"\\u09b0 \\u09b8\\u09cb \\u09ae \\u09ac\\u09c1 \\u09ac\\u09c3 \\u09b6\\u09c1 \\u09b6".split(" "),\nSTANDALONENARROWWEEKDAYS:"\\u09b0 \\u09b8\\u09cb \\u09ae \\u09ac\\u09c1 \\u09ac\\u09c3 \\u09b6\\u09c1 \\u09b6".split(" "),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["\\u09a4\\u09cd\\u09b0\\u09c8\\u09ae\\u09be\\u09b8\\u09bf\\u0995","\\u09a6\\u09cd\\u09ac\\u09bf\\u09a4\\u09c0\\u09af\\u09bc \\u09a4\\u09cd\\u09b0\\u09c8\\u09ae\\u09be\\u09b8\\u09bf\\u0995","\\u09a4\\u09c3\\u09a4\\u09c0\\u09af\\u09bc \\u09a4\\u09cd\\u09b0\\u09c8\\u09ae\\u09be\\u09b8\\u09bf\\u0995","\\u099a\\u09a4\\u09c1\\u09b0\\u09cd\\u09a5 \\u09a4\\u09cd\\u09b0\\u09c8\\u09ae\\u09be\\u09b8\\u09bf\\u0995"],\nAMPMS:["am","pm"],DATEFORMATS:["EEEE, d MMMM, y","d MMMM, y","d MMM, y","d/M/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:4,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_br={ERAS:["a-raok J.K.","goude J.K."],ERANAMES:["a-raok Jezuz-Krist","goude Jezuz-Krist"],NARROWMONTHS:"01 02 03 04 05 06 07 08 09 10 11 12".split(" "),STANDALONENARROWMONTHS:"01 02 03 04 05 06 07 08 09 10 11 12".split(" "),MONTHS:"Genver C\\u02bchwevrer Meurzh Ebrel Mae Mezheven Gouere Eost Gwengolo Here Du Kerzu".split(" "),STANDALONEMONTHS:"Genver C\\u02bchwevrer Meurzh Ebrel Mae Mezheven Gouere Eost Gwengolo Here Du Kerzu".split(" "),SHORTMONTHS:"Gen. C\\u02bchwe. Meur. Ebr. Mae Mezh. Goue. Eost Gwen. Here Du Kzu.".split(" "),\nSTANDALONESHORTMONTHS:"Gen. C\\u02bchwe. Meur. Ebr. Mae Mezh. Goue. Eost Gwen. Here Du Ker.".split(" "),WEEKDAYS:"Sul Lun Meurzh Merc\\u02bcher Yaou Gwener Sadorn".split(" "),STANDALONEWEEKDAYS:"Sul Lun Meurzh Merc\\u02bcher Yaou Gwener Sadorn".split(" "),SHORTWEEKDAYS:"Sul Lun Meu. Mer. Yaou Gwe. Sad.".split(" "),STANDALONESHORTWEEKDAYS:"Sul Lun Meu. Mer. Yaou Gwe. Sad.".split(" "),NARROWWEEKDAYS:"Su L Mz Mc Y G Sa".split(" "),STANDALONENARROWWEEKDAYS:"Su L Mz Mc Y G Sa".split(" "),SHORTQUARTERS:["1a\\u00f1 trim.",\n"2l trim.","3e trim.","4e trim."],QUARTERS:["1a\\u00f1 trimiziad","2l trimiziad","3e trimiziad","4e trimiziad"],AMPMS:["A.M.","G.M."],DATEFORMATS:["y MMMM d, EEEE","y MMMM d","y MMM d","y-MM-dd"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} \'da\' {0}","{1} \'da\' {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_bs={ERAS:["p. n. e.","n. e."],ERANAMES:["Prije nove ere","Nove ere"],NARROWMONTHS:"jfmamjjasond".split(""),STANDALONENARROWMONTHS:"jfmamjjasond".split(""),MONTHS:"januar februar mart april maj juni juli august septembar oktobar novembar decembar".split(" "),STANDALONEMONTHS:"januar februar mart april maj juni juli august septembar oktobar novembar decembar".split(" "),SHORTMONTHS:"jan feb mar apr maj jun jul aug sep okt nov dec".split(" "),STANDALONESHORTMONTHS:"jan feb mar apr maj jun jul aug sep okt nov dec".split(" "),\nWEEKDAYS:"nedjelja ponedjeljak utorak srijeda \\u010detvrtak petak subota".split(" "),STANDALONEWEEKDAYS:"nedjelja ponedjeljak utorak srijeda \\u010detvrtak petak subota".split(" "),SHORTWEEKDAYS:"ned pon uto sri \\u010det pet sub".split(" "),STANDALONESHORTWEEKDAYS:"ned pon uto sri \\u010det pet sub".split(" "),NARROWWEEKDAYS:"NPUS\\u010cPS".split(""),STANDALONENARROWWEEKDAYS:"npus\\u010dps".split(""),SHORTQUARTERS:["K1","K2","K3","K4"],QUARTERS:["Prvi kvartal","Drugi kvartal","Tre\\u0107i kvartal","\\u010cetvrti kvartal"],\nAMPMS:["prije podne","popodne"],DATEFORMATS:["EEEE, dd. MMMM y.","dd. MMMM y.","dd. MMM. y.","dd.MM.yy."],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} \'u\' {0}","{1} \'u\' {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_ca={ERAS:["aC","dC"],ERANAMES:["abans de Crist","despr\\u00e9s de Crist"],NARROWMONTHS:"GN FB M\\u00c7 AB MG JN JL AG ST OC NV DS".split(" "),STANDALONENARROWMONTHS:"GN FB M\\u00c7 AB MG JN JL AG ST OC NV DS".split(" "),MONTHS:"de gener;de febrer;de mar\\u00e7;d\\u2019abril;de maig;de juny;de juliol;d\\u2019agost;de setembre;d\\u2019octubre;de novembre;de desembre".split(";"),STANDALONEMONTHS:"gener febrer mar\\u00e7 abril maig juny juliol agost setembre octubre novembre desembre".split(" "),\nSHORTMONTHS:"gen. febr. mar\\u00e7 abr. maig juny jul. ag. set. oct. nov. des.".split(" "),STANDALONESHORTMONTHS:"gen. febr. mar\\u00e7 abr. maig juny jul. ag. set. oct. nov. des.".split(" "),WEEKDAYS:"diumenge dilluns dimarts dimecres dijous divendres dissabte".split(" "),STANDALONEWEEKDAYS:"diumenge dilluns dimarts dimecres dijous divendres dissabte".split(" "),SHORTWEEKDAYS:"dg. dl. dt. dc. dj. dv. ds.".split(" "),STANDALONESHORTWEEKDAYS:"dg. dl. dt. dc. dj. dv. ds.".split(" "),NARROWWEEKDAYS:"dg dl dt dc dj dv ds".split(" "),\nSTANDALONENARROWWEEKDAYS:"dg dl dt dc dj dv ds".split(" "),SHORTQUARTERS:["1T","2T","3T","4T"],QUARTERS:["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],AMPMS:["a. m.","p. m."],DATEFORMATS:["EEEE, d MMMM \'de\' y","d MMMM \'de\' y","d MMM y","d/M/yy"],TIMEFORMATS:["H:mm:ss zzzz","H:mm:ss z","H:mm:ss","H:mm"],DATETIMEFORMATS:["{1} \'a\' \'les\' {0}","{1}, {0}","{1}, {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_chr={ERAS:["\\u13a4\\u13d3\\u13b7\\u13b8","\\u13a4\\u13b6\\u13d0\\u13c5"],ERANAMES:["\\u13cf \\u13e5\\u13cc \\u13be\\u13d5\\u13b2\\u13cd\\u13ac\\u13be","\\u13a0\\u13a9\\u13c3\\u13ae\\u13b5\\u13d3\\u13cd\\u13d7\\u13f1 \\u13a0\\u13d5\\u13d8\\u13f1\\u13cd\\u13ac \\u13f1\\u13b0\\u13e9 \\u13e7\\u13d3\\u13c2\\u13b8\\u13a2\\u13cd\\u13d7"],NARROWMONTHS:"\\u13a4\\u13a7\\u13a0\\u13a7\\u13a0\\u13d5\\u13ab\\u13a6\\u13da\\u13da\\u13c5\\u13a5".split(""),STANDALONENARROWMONTHS:"\\u13a4\\u13a7\\u13a0\\u13a7\\u13a0\\u13d5\\u13ab\\u13a6\\u13da\\u13da\\u13c5\\u13a5".split(""),\nMONTHS:"\\u13a4\\u13c3\\u13b8\\u13d4\\u13c5 \\u13a7\\u13a6\\u13b5 \\u13a0\\u13c5\\u13f1 \\u13a7\\u13ec\\u13c2 \\u13a0\\u13c2\\u13cd\\u13ac\\u13d8 \\u13d5\\u13ad\\u13b7\\u13f1 \\u13ab\\u13f0\\u13c9\\u13c2 \\u13a6\\u13b6\\u13c2 \\u13da\\u13b5\\u13cd\\u13d7 \\u13da\\u13c2\\u13c5\\u13d7 \\u13c5\\u13d3\\u13d5\\u13c6 \\u13a5\\u13cd\\u13a9\\u13f1".split(" "),STANDALONEMONTHS:"\\u13a4\\u13c3\\u13b8\\u13d4\\u13c5 \\u13a7\\u13a6\\u13b5 \\u13a0\\u13c5\\u13f1 \\u13a7\\u13ec\\u13c2 \\u13a0\\u13c2\\u13cd\\u13ac\\u13d8 \\u13d5\\u13ad\\u13b7\\u13f1 \\u13ab\\u13f0\\u13c9\\u13c2 \\u13a6\\u13b6\\u13c2 \\u13da\\u13b5\\u13cd\\u13d7 \\u13da\\u13c2\\u13c5\\u13d7 \\u13c5\\u13d3\\u13d5\\u13c6 \\u13a5\\u13cd\\u13a9\\u13f1".split(" "),\nSHORTMONTHS:"\\u13a4\\u13c3 \\u13a7\\u13a6 \\u13a0\\u13c5 \\u13a7\\u13ec \\u13a0\\u13c2 \\u13d5\\u13ad \\u13ab\\u13f0 \\u13a6\\u13b6 \\u13da\\u13b5 \\u13da\\u13c2 \\u13c5\\u13d3 \\u13a5\\u13cd".split(" "),STANDALONESHORTMONTHS:"\\u13a4\\u13c3 \\u13a7\\u13a6 \\u13a0\\u13c5 \\u13a7\\u13ec \\u13a0\\u13c2 \\u13d5\\u13ad \\u13ab\\u13f0 \\u13a6\\u13b6 \\u13da\\u13b5 \\u13da\\u13c2 \\u13c5\\u13d3 \\u13a5\\u13cd".split(" "),WEEKDAYS:"\\u13a4\\u13be\\u13d9\\u13d3\\u13c6\\u13cd\\u13ac \\u13a4\\u13be\\u13d9\\u13d3\\u13c9\\u13c5\\u13af \\u13d4\\u13b5\\u13c1\\u13a2\\u13a6 \\u13e6\\u13a2\\u13c1\\u13a2\\u13a6 \\u13c5\\u13a9\\u13c1\\u13a2\\u13a6 \\u13e7\\u13be\\u13a9\\u13b6\\u13cd\\u13d7 \\u13a4\\u13be\\u13d9\\u13d3\\u13c8\\u13d5\\u13be".split(" "),\nSTANDALONEWEEKDAYS:"\\u13a4\\u13be\\u13d9\\u13d3\\u13c6\\u13cd\\u13ac \\u13a4\\u13be\\u13d9\\u13d3\\u13c9\\u13c5\\u13af \\u13d4\\u13b5\\u13c1\\u13a2\\u13a6 \\u13e6\\u13a2\\u13c1\\u13a2\\u13a6 \\u13c5\\u13a9\\u13c1\\u13a2\\u13a6 \\u13e7\\u13be\\u13a9\\u13b6\\u13cd\\u13d7 \\u13a4\\u13be\\u13d9\\u13d3\\u13c8\\u13d5\\u13be".split(" "),SHORTWEEKDAYS:"\\u13c6\\u13cd\\u13ac \\u13c9\\u13c5\\u13af \\u13d4\\u13b5\\u13c1 \\u13e6\\u13a2\\u13c1 \\u13c5\\u13a9\\u13c1 \\u13e7\\u13be\\u13a9 \\u13c8\\u13d5\\u13be".split(" "),STANDALONESHORTWEEKDAYS:"\\u13c6\\u13cd\\u13ac \\u13c9\\u13c5\\u13af \\u13d4\\u13b5\\u13c1 \\u13e6\\u13a2\\u13c1 \\u13c5\\u13a9\\u13c1 \\u13e7\\u13be\\u13a9 \\u13c8\\u13d5\\u13be".split(" "),\nNARROWWEEKDAYS:"\\u13c6\\u13c9\\u13d4\\u13e6\\u13c5\\u13e7\\u13a4".split(""),STANDALONENARROWWEEKDAYS:"\\u13c6\\u13c9\\u13d4\\u13e6\\u13c5\\u13e7\\u13a4".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["Q1","Q2","Q3","Q4"],AMPMS:["\\u13cc\\u13be\\u13b4","\\u13d2\\u13af\\u13f1\\u13a2\\u13d7\\u13e2"],DATEFORMATS:["EEEE, MMMM d, y","MMMM d, y","MMM d, y","M/d/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,\n6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_cs={ERAS:["p\\u0159. n. l.","n. l."],ERANAMES:["p\\u0159. n. l.","n. l."],NARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),STANDALONENARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),MONTHS:"ledna \\u00fanora b\\u0159ezna dubna kv\\u011btna \\u010dervna \\u010dervence srpna z\\u00e1\\u0159\\u00ed \\u0159\\u00edjna listopadu prosince".split(" "),STANDALONEMONTHS:"leden \\u00fanor b\\u0159ezen duben kv\\u011bten \\u010derven \\u010dervenec srpen z\\u00e1\\u0159\\u00ed \\u0159\\u00edjen listopad prosinec".split(" "),SHORTMONTHS:"led \\u00fano b\\u0159e dub kv\\u011b \\u010dvn \\u010dvc srp z\\u00e1\\u0159 \\u0159\\u00edj lis pro".split(" "),\nSTANDALONESHORTMONTHS:"led \\u00fano b\\u0159e dub kv\\u011b \\u010dvn \\u010dvc srp z\\u00e1\\u0159 \\u0159\\u00edj lis pro".split(" "),WEEKDAYS:"ned\\u011ble pond\\u011bl\\u00ed \\u00fater\\u00fd st\\u0159eda \\u010dtvrtek p\\u00e1tek sobota".split(" "),STANDALONEWEEKDAYS:"ned\\u011ble pond\\u011bl\\u00ed \\u00fater\\u00fd st\\u0159eda \\u010dtvrtek p\\u00e1tek sobota".split(" "),SHORTWEEKDAYS:"ne po \\u00fat st \\u010dt p\\u00e1 so".split(" "),STANDALONESHORTWEEKDAYS:"ne po \\u00fat st \\u010dt p\\u00e1 so".split(" "),NARROWWEEKDAYS:"NP\\u00daS\\u010cPS".split(""),\nSTANDALONENARROWWEEKDAYS:"NP\\u00daS\\u010cPS".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["1. \\u010dtvrtlet\\u00ed","2. \\u010dtvrtlet\\u00ed","3. \\u010dtvrtlet\\u00ed","4. \\u010dtvrtlet\\u00ed"],AMPMS:["dop.","odp."],DATEFORMATS:["EEEE d. MMMM y","d. MMMM y","d. M. y","dd.MM.yy"],TIMEFORMATS:["H:mm:ss zzzz","H:mm:ss z","H:mm:ss","H:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_cy={ERAS:["CC","OC"],ERANAMES:["Cyn Crist","Oed Crist"],NARROWMONTHS:"I Ch M E M M G A M H T Rh".split(" "),STANDALONENARROWMONTHS:"I Ch M E M M G A M H T Rh".split(" "),MONTHS:"Ionawr Chwefror Mawrth Ebrill Mai Mehefin Gorffennaf Awst Medi Hydref Tachwedd Rhagfyr".split(" "),STANDALONEMONTHS:"Ionawr Chwefror Mawrth Ebrill Mai Mehefin Gorffennaf Awst Medi Hydref Tachwedd Rhagfyr".split(" "),SHORTMONTHS:"Ion Chwef Maw Ebrill Mai Meh Gorff Awst Medi Hyd Tach Rhag".split(" "),\nSTANDALONESHORTMONTHS:"Ion Chw Maw Ebr Mai Meh Gor Awst Medi Hyd Tach Rhag".split(" "),WEEKDAYS:"Dydd Sul;Dydd Llun;Dydd Mawrth;Dydd Mercher;Dydd Iau;Dydd Gwener;Dydd Sadwrn".split(";"),STANDALONEWEEKDAYS:"Dydd Sul;Dydd Llun;Dydd Mawrth;Dydd Mercher;Dydd Iau;Dydd Gwener;Dydd Sadwrn".split(";"),SHORTWEEKDAYS:"Sul Llun Maw Mer Iau Gwen Sad".split(" "),STANDALONESHORTWEEKDAYS:"Sul Llun Maw Mer Iau Gwe Sad".split(" "),NARROWWEEKDAYS:"S Ll M M I G S".split(" "),STANDALONENARROWWEEKDAYS:"S Ll M M I G S".split(" "),\nSHORTQUARTERS:["Ch1","Ch2","Ch3","Ch4"],QUARTERS:["chwarter 1af","2il chwarter","3ydd chwarter","4ydd chwarter"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, d MMMM y","d MMMM y","d MMM y","dd/MM/yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} \'am\' {0}","{1} \'am\' {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_da={ERAS:["f.Kr.","e.Kr."],ERANAMES:["f.Kr.","e.Kr."],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"januar februar marts april maj juni juli august september oktober november december".split(" "),STANDALONEMONTHS:"januar februar marts april maj juni juli august september oktober november december".split(" "),SHORTMONTHS:"jan. feb. mar. apr. maj jun. jul. aug. sep. okt. nov. dec.".split(" "),STANDALONESHORTMONTHS:"jan feb mar apr maj jun jul aug sep okt nov dec".split(" "),\nWEEKDAYS:"s\\u00f8ndag mandag tirsdag onsdag torsdag fredag l\\u00f8rdag".split(" "),STANDALONEWEEKDAYS:"s\\u00f8ndag mandag tirsdag onsdag torsdag fredag l\\u00f8rdag".split(" "),SHORTWEEKDAYS:"s\\u00f8n. man. tir. ons. tor. fre. l\\u00f8r.".split(" "),STANDALONESHORTWEEKDAYS:"s\\u00f8n man tir ons tor fre l\\u00f8r".split(" "),NARROWWEEKDAYS:"SMTOTFL".split(""),STANDALONENARROWWEEKDAYS:"SMTOTFL".split(""),SHORTQUARTERS:["1. kvt.","2. kvt.","3. kvt.","4. kvt."],QUARTERS:["1. kvartal","2. kvartal","3. kvartal",\n"4. kvartal"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE \'den\' d. MMMM y","d. MMMM y","d. MMM y","dd/MM/y"],TIMEFORMATS:["HH.mm.ss zzzz","HH.mm.ss z","HH.mm.ss","HH.mm"],DATETIMEFORMATS:["{1} \'kl\'. {0}","{1} \'kl\'. {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_de={ERAS:["v. Chr.","n. Chr."],ERANAMES:["v. Chr.","n. Chr."],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"Januar Februar M\\u00e4rz April Mai Juni Juli August September Oktober November Dezember".split(" "),STANDALONEMONTHS:"Januar Februar M\\u00e4rz April Mai Juni Juli August September Oktober November Dezember".split(" "),SHORTMONTHS:"Jan. Feb. M\\u00e4rz Apr. Mai Juni Juli Aug. Sep. Okt. Nov. Dez.".split(" "),STANDALONESHORTMONTHS:"Jan Feb M\\u00e4r Apr Mai Jun Jul Aug Sep Okt Nov Dez".split(" "),\nWEEKDAYS:"Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag".split(" "),STANDALONEWEEKDAYS:"Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag".split(" "),SHORTWEEKDAYS:"So. Mo. Di. Mi. Do. Fr. Sa.".split(" "),STANDALONESHORTWEEKDAYS:"So Mo Di Mi Do Fr Sa".split(" "),NARROWWEEKDAYS:"SMDMDFS".split(""),STANDALONENARROWWEEKDAYS:"SMDMDFS".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],AMPMS:["vorm.","nachm."],DATEFORMATS:["EEEE, d. MMMM y",\n"d. MMMM y","dd.MM.y","dd.MM.yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} \'um\' {0}","{1} \'um\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_de_AT={ERAS:["v. Chr.","n. Chr."],ERANAMES:["v. Chr.","n. Chr."],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"J\\u00e4nner Februar M\\u00e4rz April Mai Juni Juli August September Oktober November Dezember".split(" "),STANDALONEMONTHS:"J\\u00e4nner Februar M\\u00e4rz April Mai Juni Juli August September Oktober November Dezember".split(" "),SHORTMONTHS:"J\\u00e4n. Feb. M\\u00e4rz Apr. Mai Juni Juli Aug. Sep. Okt. Nov. Dez.".split(" "),\nSTANDALONESHORTMONTHS:"J\\u00e4n Feb M\\u00e4r Apr Mai Jun Jul Aug Sep Okt Nov Dez".split(" "),WEEKDAYS:"Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag".split(" "),STANDALONEWEEKDAYS:"Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag".split(" "),SHORTWEEKDAYS:"So. Mo. Di. Mi. Do. Fr. Sa.".split(" "),STANDALONESHORTWEEKDAYS:"So Mo Di Mi Do Fr Sa".split(" "),NARROWWEEKDAYS:"SMDMDFS".split(""),STANDALONENARROWWEEKDAYS:"SMDMDFS".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["1. Quartal",\n"2. Quartal","3. Quartal","4. Quartal"],AMPMS:["vorm.","nachm."],DATEFORMATS:["EEEE, d. MMMM y","d. MMMM y","dd.MM.y","dd.MM.yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} \'um\' {0}","{1} \'um\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};goog.i18n.DateTimeSymbols_de_CH=goog.i18n.DateTimeSymbols_de;\ngoog.i18n.DateTimeSymbols_el={ERAS:["\\u03c0.\\u03a7.","\\u03bc.\\u03a7."],ERANAMES:["\\u03c0\\u03c1\\u03bf \\u03a7\\u03c1\\u03b9\\u03c3\\u03c4\\u03bf\\u03cd","\\u03bc\\u03b5\\u03c4\\u03ac \\u03a7\\u03c1\\u03b9\\u03c3\\u03c4\\u03cc\\u03bd"],NARROWMONTHS:"\\u0399\\u03a6\\u039c\\u0391\\u039c\\u0399\\u0399\\u0391\\u03a3\\u039f\\u039d\\u0394".split(""),STANDALONENARROWMONTHS:"\\u0399\\u03a6\\u039c\\u0391\\u039c\\u0399\\u0399\\u0391\\u03a3\\u039f\\u039d\\u0394".split(""),MONTHS:"\\u0399\\u03b1\\u03bd\\u03bf\\u03c5\\u03b1\\u03c1\\u03af\\u03bf\\u03c5 \\u03a6\\u03b5\\u03b2\\u03c1\\u03bf\\u03c5\\u03b1\\u03c1\\u03af\\u03bf\\u03c5 \\u039c\\u03b1\\u03c1\\u03c4\\u03af\\u03bf\\u03c5 \\u0391\\u03c0\\u03c1\\u03b9\\u03bb\\u03af\\u03bf\\u03c5 \\u039c\\u03b1\\u0390\\u03bf\\u03c5 \\u0399\\u03bf\\u03c5\\u03bd\\u03af\\u03bf\\u03c5 \\u0399\\u03bf\\u03c5\\u03bb\\u03af\\u03bf\\u03c5 \\u0391\\u03c5\\u03b3\\u03bf\\u03cd\\u03c3\\u03c4\\u03bf\\u03c5 \\u03a3\\u03b5\\u03c0\\u03c4\\u03b5\\u03bc\\u03b2\\u03c1\\u03af\\u03bf\\u03c5 \\u039f\\u03ba\\u03c4\\u03c9\\u03b2\\u03c1\\u03af\\u03bf\\u03c5 \\u039d\\u03bf\\u03b5\\u03bc\\u03b2\\u03c1\\u03af\\u03bf\\u03c5 \\u0394\\u03b5\\u03ba\\u03b5\\u03bc\\u03b2\\u03c1\\u03af\\u03bf\\u03c5".split(" "),\nSTANDALONEMONTHS:"\\u0399\\u03b1\\u03bd\\u03bf\\u03c5\\u03ac\\u03c1\\u03b9\\u03bf\\u03c2 \\u03a6\\u03b5\\u03b2\\u03c1\\u03bf\\u03c5\\u03ac\\u03c1\\u03b9\\u03bf\\u03c2 \\u039c\\u03ac\\u03c1\\u03c4\\u03b9\\u03bf\\u03c2 \\u0391\\u03c0\\u03c1\\u03af\\u03bb\\u03b9\\u03bf\\u03c2 \\u039c\\u03ac\\u03b9\\u03bf\\u03c2 \\u0399\\u03bf\\u03cd\\u03bd\\u03b9\\u03bf\\u03c2 \\u0399\\u03bf\\u03cd\\u03bb\\u03b9\\u03bf\\u03c2 \\u0391\\u03cd\\u03b3\\u03bf\\u03c5\\u03c3\\u03c4\\u03bf\\u03c2 \\u03a3\\u03b5\\u03c0\\u03c4\\u03ad\\u03bc\\u03b2\\u03c1\\u03b9\\u03bf\\u03c2 \\u039f\\u03ba\\u03c4\\u03ce\\u03b2\\u03c1\\u03b9\\u03bf\\u03c2 \\u039d\\u03bf\\u03ad\\u03bc\\u03b2\\u03c1\\u03b9\\u03bf\\u03c2 \\u0394\\u03b5\\u03ba\\u03ad\\u03bc\\u03b2\\u03c1\\u03b9\\u03bf\\u03c2".split(" "),\nSHORTMONTHS:"\\u0399\\u03b1\\u03bd \\u03a6\\u03b5\\u03b2 \\u039c\\u03b1\\u03c1 \\u0391\\u03c0\\u03c1 \\u039c\\u03b1\\u0390 \\u0399\\u03bf\\u03c5\\u03bd \\u0399\\u03bf\\u03c5\\u03bb \\u0391\\u03c5\\u03b3 \\u03a3\\u03b5\\u03c0 \\u039f\\u03ba\\u03c4 \\u039d\\u03bf\\u03b5 \\u0394\\u03b5\\u03ba".split(" "),STANDALONESHORTMONTHS:"\\u0399\\u03b1\\u03bd \\u03a6\\u03b5\\u03b2 \\u039c\\u03ac\\u03c1 \\u0391\\u03c0\\u03c1 \\u039c\\u03ac\\u03b9 \\u0399\\u03bf\\u03cd\\u03bd \\u0399\\u03bf\\u03cd\\u03bb \\u0391\\u03cd\\u03b3 \\u03a3\\u03b5\\u03c0 \\u039f\\u03ba\\u03c4 \\u039d\\u03bf\\u03ad \\u0394\\u03b5\\u03ba".split(" "),\nWEEKDAYS:"\\u039a\\u03c5\\u03c1\\u03b9\\u03b1\\u03ba\\u03ae \\u0394\\u03b5\\u03c5\\u03c4\\u03ad\\u03c1\\u03b1 \\u03a4\\u03c1\\u03af\\u03c4\\u03b7 \\u03a4\\u03b5\\u03c4\\u03ac\\u03c1\\u03c4\\u03b7 \\u03a0\\u03ad\\u03bc\\u03c0\\u03c4\\u03b7 \\u03a0\\u03b1\\u03c1\\u03b1\\u03c3\\u03ba\\u03b5\\u03c5\\u03ae \\u03a3\\u03ac\\u03b2\\u03b2\\u03b1\\u03c4\\u03bf".split(" "),STANDALONEWEEKDAYS:"\\u039a\\u03c5\\u03c1\\u03b9\\u03b1\\u03ba\\u03ae \\u0394\\u03b5\\u03c5\\u03c4\\u03ad\\u03c1\\u03b1 \\u03a4\\u03c1\\u03af\\u03c4\\u03b7 \\u03a4\\u03b5\\u03c4\\u03ac\\u03c1\\u03c4\\u03b7 \\u03a0\\u03ad\\u03bc\\u03c0\\u03c4\\u03b7 \\u03a0\\u03b1\\u03c1\\u03b1\\u03c3\\u03ba\\u03b5\\u03c5\\u03ae \\u03a3\\u03ac\\u03b2\\u03b2\\u03b1\\u03c4\\u03bf".split(" "),\nSHORTWEEKDAYS:"\\u039a\\u03c5\\u03c1 \\u0394\\u03b5\\u03c5 \\u03a4\\u03c1\\u03af \\u03a4\\u03b5\\u03c4 \\u03a0\\u03ad\\u03bc \\u03a0\\u03b1\\u03c1 \\u03a3\\u03ac\\u03b2".split(" "),STANDALONESHORTWEEKDAYS:"\\u039a\\u03c5\\u03c1 \\u0394\\u03b5\\u03c5 \\u03a4\\u03c1\\u03af \\u03a4\\u03b5\\u03c4 \\u03a0\\u03ad\\u03bc \\u03a0\\u03b1\\u03c1 \\u03a3\\u03ac\\u03b2".split(" "),NARROWWEEKDAYS:"\\u039a\\u0394\\u03a4\\u03a4\\u03a0\\u03a0\\u03a3".split(""),STANDALONENARROWWEEKDAYS:"\\u039a\\u0394\\u03a4\\u03a4\\u03a0\\u03a0\\u03a3".split(""),SHORTQUARTERS:["\\u03a41",\n"\\u03a42","\\u03a43","\\u03a44"],QUARTERS:["1\\u03bf \\u03c4\\u03c1\\u03af\\u03bc\\u03b7\\u03bd\\u03bf","2\\u03bf \\u03c4\\u03c1\\u03af\\u03bc\\u03b7\\u03bd\\u03bf","3\\u03bf \\u03c4\\u03c1\\u03af\\u03bc\\u03b7\\u03bd\\u03bf","4\\u03bf \\u03c4\\u03c1\\u03af\\u03bc\\u03b7\\u03bd\\u03bf"],AMPMS:["\\u03c0.\\u03bc.","\\u03bc.\\u03bc."],DATEFORMATS:["EEEE, d MMMM y","d MMMM y","d MMM y","d/M/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} - {0}","{1} - {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,\nWEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_en={ERAS:["BC","AD"],ERANAMES:["Before Christ","Anno Domini"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"January February March April May June July August September October November December".split(" "),STANDALONEMONTHS:"January February March April May June July August September October November December".split(" "),SHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONESHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),\nWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),STANDALONEWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),STANDALONESHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),NARROWWEEKDAYS:"SMTWTFS".split(""),STANDALONENARROWWEEKDAYS:"SMTWTFS".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["1st quarter","2nd quarter","3rd quarter","4th quarter"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, MMMM d, y",\n"MMMM d, y","MMM d, y","M/d/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} \'at\' {0}","{1} \'at\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_en_AU={ERAS:["BC","AD"],ERANAMES:["Before Christ","Anno Domini"],NARROWMONTHS:"Jan. Feb. Mar. Apr. May Jun. Jul. Aug. Sep. Oct. Nov. Dec.".split(" "),STANDALONENARROWMONTHS:"Jan. Feb. Mar. Apr. May Jun. Jul. Aug. Sep. Oct. Nov. Dec.".split(" "),MONTHS:"January February March April May June July August September October November December".split(" "),STANDALONEMONTHS:"January February March April May June July August September October November December".split(" "),SHORTMONTHS:"Jan. Feb. Mar. Apr. May Jun. Jul. Aug. Sep. Oct. Nov. Dec.".split(" "),\nSTANDALONESHORTMONTHS:"Jan. Feb. Mar. Apr. May Jun. Jul. Aug. Sep. Oct. Nov. Dec.".split(" "),WEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),STANDALONEWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTWEEKDAYS:"Sun. Mon. Tue. Wed. Thu. Fri. Sat.".split(" "),STANDALONESHORTWEEKDAYS:"Sun. Mon. Tue. Wed. Thu. Fri. Sat.".split(" "),NARROWWEEKDAYS:"Su. M. Tu. W. Th. F. Sa.".split(" "),STANDALONENARROWWEEKDAYS:"Su. M. Tu. W. Th. F. Sa.".split(" "),\nSHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["1st quarter","2nd quarter","3rd quarter","4th quarter"],AMPMS:["am","pm"],DATEFORMATS:["EEEE, d MMMM y","d MMMM y","d MMM y","d/M/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} \'at\' {0}","{1} \'at\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_en_CA={ERAS:["BC","AD"],ERANAMES:["Before Christ","Anno Domini"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"January February March April May June July August September October November December".split(" "),STANDALONEMONTHS:"January February March April May June July August September October November December".split(" "),SHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONESHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),\nWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),STANDALONEWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),STANDALONESHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),NARROWWEEKDAYS:"SMTWTFS".split(""),STANDALONENARROWWEEKDAYS:"SMTWTFS".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["1st quarter","2nd quarter","3rd quarter","4th quarter"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, MMMM d, y",\n"MMMM d, y","MMM d, y","y-MM-dd"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} \'at\' {0}","{1} \'at\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_en_GB={ERAS:["BC","AD"],ERANAMES:["Before Christ","Anno Domini"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"January February March April May June July August September October November December".split(" "),STANDALONEMONTHS:"January February March April May June July August September October November December".split(" "),SHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONESHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),\nWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),STANDALONEWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),STANDALONESHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),NARROWWEEKDAYS:"SMTWTFS".split(""),STANDALONENARROWWEEKDAYS:"SMTWTFS".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["1st quarter","2nd quarter","3rd quarter","4th quarter"],AMPMS:["am","pm"],DATEFORMATS:["EEEE, d MMMM y",\n"d MMMM y","d MMM y","dd/MM/y"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} \'at\' {0}","{1} \'at\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_en_IE={ERAS:["BC","AD"],ERANAMES:["Before Christ","Anno Domini"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"January February March April May June July August September October November December".split(" "),STANDALONEMONTHS:"January February March April May June July August September October November December".split(" "),SHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONESHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),\nWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),STANDALONEWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),STANDALONESHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),NARROWWEEKDAYS:"SMTWTFS".split(""),STANDALONENARROWWEEKDAYS:"SMTWTFS".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["1st quarter","2nd quarter","3rd quarter","4th quarter"],AMPMS:["a.m.","p.m."],DATEFORMATS:["EEEE d MMMM y",\n"d MMMM y","d MMM y","dd/MM/y"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} \'at\' {0}","{1} \'at\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:2};\ngoog.i18n.DateTimeSymbols_en_IN={ERAS:["BC","AD"],ERANAMES:["Before Christ","Anno Domini"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"January February March April May June July August September October November December".split(" "),STANDALONEMONTHS:"January February March April May June July August September October November December".split(" "),SHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONESHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),\nWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),STANDALONEWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),STANDALONESHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),NARROWWEEKDAYS:"SMTWTFS".split(""),STANDALONENARROWWEEKDAYS:"SMTWTFS".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["1st quarter","2nd quarter","3rd quarter","4th quarter"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE d MMMM y",\n"d MMMM y","dd-MMM-y","dd/MM/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} \'at\' {0}","{1} \'at\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[6,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_en_SG={ERAS:["BC","AD"],ERANAMES:["Before Christ","Anno Domini"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"January February March April May June July August September October November December".split(" "),STANDALONEMONTHS:"January February March April May June July August September October November December".split(" "),SHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONESHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),\nWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),STANDALONEWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),STANDALONESHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),NARROWWEEKDAYS:"SMTWTFS".split(""),STANDALONENARROWWEEKDAYS:"SMTWTFS".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["1st quarter","2nd quarter","3rd quarter","4th quarter"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, d MMMM y",\n"d MMMM y","d MMM y","d/M/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} \'at\' {0}","{1} \'at\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};goog.i18n.DateTimeSymbols_en_US=goog.i18n.DateTimeSymbols_en;\ngoog.i18n.DateTimeSymbols_en_ZA={ERAS:["BC","AD"],ERANAMES:["Before Christ","Anno Domini"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"January February March April May June July August September October November December".split(" "),STANDALONEMONTHS:"January February March April May June July August September October November December".split(" "),SHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONESHORTMONTHS:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),\nWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),STANDALONEWEEKDAYS:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),STANDALONESHORTWEEKDAYS:"Sun Mon Tue Wed Thu Fri Sat".split(" "),NARROWWEEKDAYS:"SMTWTFS".split(""),STANDALONENARROWWEEKDAYS:"SMTWTFS".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["1st quarter","2nd quarter","3rd quarter","4th quarter"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, dd MMMM y",\n"dd MMMM y","dd MMM y","y/MM/dd"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} \'at\' {0}","{1} \'at\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_es={ERAS:["a. C.","d. C."],ERANAMES:["antes de Cristo","despu\\u00e9s de Cristo"],NARROWMONTHS:"EFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"EFMAMJJASOND".split(""),MONTHS:"enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre".split(" "),STANDALONEMONTHS:"enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre".split(" "),SHORTMONTHS:"ene. feb. mar. abr. may. jun. jul. ago. sept. oct. nov. dic.".split(" "),\nSTANDALONESHORTMONTHS:"ene. feb. mar. abr. may. jun. jul. ago. sept. oct. nov. dic.".split(" "),WEEKDAYS:"domingo lunes martes mi\\u00e9rcoles jueves viernes s\\u00e1bado".split(" "),STANDALONEWEEKDAYS:"domingo lunes martes mi\\u00e9rcoles jueves viernes s\\u00e1bado".split(" "),SHORTWEEKDAYS:"dom. lun. mar. mi\\u00e9. jue. vie. s\\u00e1b.".split(" "),STANDALONESHORTWEEKDAYS:"dom. lun. mar. mi\\u00e9. jue. vie. s\\u00e1b.".split(" "),NARROWWEEKDAYS:"DLMXJVS".split(""),STANDALONENARROWWEEKDAYS:"DLMXJVS".split(""),\nSHORTQUARTERS:["T1","T2","T3","T4"],QUARTERS:["1.er trimestre","2.\\u00ba trimestre","3.er trimestre","4.\\u00ba trimestre"],AMPMS:["a. m.","p. m."],DATEFORMATS:["EEEE, d \'de\' MMMM \'de\' y","d \'de\' MMMM \'de\' y","d MMM y","d/M/yy"],TIMEFORMATS:["H:mm:ss (zzzz)","H:mm:ss z","H:mm:ss","H:mm"],DATETIMEFORMATS:["{1}, {0}","{1}, {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_es_419={ERAS:["a. C.","d. C."],ERANAMES:["antes de Cristo","despu\\u00e9s de Cristo"],NARROWMONTHS:"efmamjjasond".split(""),STANDALONENARROWMONTHS:"EFMAMJJASOND".split(""),MONTHS:"enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre".split(" "),STANDALONEMONTHS:"enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre".split(" "),SHORTMONTHS:"ene. feb. mar. abr. may. jun. jul. ago. sep. oct. nov. dic.".split(" "),\nSTANDALONESHORTMONTHS:"ene. feb. mar. abr. may. jun. jul. ago. sep. oct. nov. dic.".split(" "),WEEKDAYS:"domingo lunes martes mi\\u00e9rcoles jueves viernes s\\u00e1bado".split(" "),STANDALONEWEEKDAYS:"domingo lunes martes mi\\u00e9rcoles jueves viernes s\\u00e1bado".split(" "),SHORTWEEKDAYS:"dom. lun. mar. mi\\u00e9. jue. vie. s\\u00e1b.".split(" "),STANDALONESHORTWEEKDAYS:"dom. lun. mar. mi\\u00e9. jue. vie. s\\u00e1b.".split(" "),NARROWWEEKDAYS:"dlmmjvs".split(""),STANDALONENARROWWEEKDAYS:"DLMMJVS".split(""),\nSHORTQUARTERS:["T1","T2","T3","T4"],QUARTERS:["1.er trimestre","2.\\u00ba trimestre","3.er trimestre","4.\\u00ba trimestre"],AMPMS:["a.m.","p.m."],DATEFORMATS:["EEEE, d \'de\' MMMM \'de\' y","d \'de\' MMMM \'de\' y","d MMM y","d/M/yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1}, {0}","{1}, {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};goog.i18n.DateTimeSymbols_es_ES=goog.i18n.DateTimeSymbols_es;\ngoog.i18n.DateTimeSymbols_es_MX={ERAS:["a. C.","d. C."],ERANAMES:["antes de Cristo","despu\\u00e9s de Cristo"],NARROWMONTHS:"efmamjjasond".split(""),STANDALONENARROWMONTHS:"EFMAMJJASOND".split(""),MONTHS:"enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre".split(" "),STANDALONEMONTHS:"enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre".split(" "),SHORTMONTHS:"ene feb mar abr may jun jul ago sep oct nov dic".split(" "),STANDALONESHORTMONTHS:"ene. feb. mar. abr. may. jun. jul. ago. sep. oct. nov. dic.".split(" "),\nWEEKDAYS:"domingo lunes martes mi\\u00e9rcoles jueves viernes s\\u00e1bado".split(" "),STANDALONEWEEKDAYS:"domingo lunes martes mi\\u00e9rcoles jueves viernes s\\u00e1bado".split(" "),SHORTWEEKDAYS:"dom. lun. mar. mi\\u00e9. jue. vie. s\\u00e1b.".split(" "),STANDALONESHORTWEEKDAYS:"dom. lun. mar. mi\\u00e9. jue. vie. s\\u00e1b.".split(" "),NARROWWEEKDAYS:"DLMMJVS".split(""),STANDALONENARROWWEEKDAYS:"DLMMJVS".split(""),SHORTQUARTERS:["1er. trim.","2\\u00ba. trim.","3er. trim.","4\\u00ba trim."],QUARTERS:["1er. trimestre",\n"2\\u00ba. trimestre","3er. trimestre","4\\u00ba trimestre"],AMPMS:["a.m.","p.m."],DATEFORMATS:["EEEE, d \'de\' MMMM \'de\' y","d \'de\' MMMM \'de\' y","dd/MM/y","dd/MM/yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1}, {0}","{1}, {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_es_US={ERAS:["a. C.","d. C."],ERANAMES:["antes de Cristo","despu\\u00e9s de Cristo"],NARROWMONTHS:"efmamjjasond".split(""),STANDALONENARROWMONTHS:"EFMAMJJASOND".split(""),MONTHS:"enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre".split(" "),STANDALONEMONTHS:"enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre".split(" "),SHORTMONTHS:"ene. feb. mar. abr. may. jun. jul. ago. sep. oct. nov. dic.".split(" "),\nSTANDALONESHORTMONTHS:"ene. feb. mar. abr. may. jun. jul. ago. sep. oct. nov. dic.".split(" "),WEEKDAYS:"domingo lunes martes mi\\u00e9rcoles jueves viernes s\\u00e1bado".split(" "),STANDALONEWEEKDAYS:"domingo lunes martes mi\\u00e9rcoles jueves viernes s\\u00e1bado".split(" "),SHORTWEEKDAYS:"dom. lun. mar. mi\\u00e9. jue. vie. s\\u00e1b.".split(" "),STANDALONESHORTWEEKDAYS:"dom. lun. mar. mi\\u00e9. jue. vie. s\\u00e1b.".split(" "),NARROWWEEKDAYS:"dlmmjvs".split(""),STANDALONENARROWWEEKDAYS:"DLMMJVS".split(""),\nSHORTQUARTERS:["T1","T2","T3","T4"],QUARTERS:["1.er trimestre","2.\\u00ba trimestre","3.er trimestre","4.\\u00ba trimestre"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, d \'de\' MMMM \'de\' y","d \'de\' MMMM \'de\' y","d MMM y","d/M/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1}, {0}","{1}, {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_et={ERAS:["eKr","pKr"],ERANAMES:["enne Kristust","p\\u00e4rast Kristust"],NARROWMONTHS:"JVMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JVMAMJJASOND".split(""),MONTHS:"jaanuar veebruar m\\u00e4rts aprill mai juuni juuli august september oktoober november detsember".split(" "),STANDALONEMONTHS:"jaanuar veebruar m\\u00e4rts aprill mai juuni juuli august september oktoober november detsember".split(" "),SHORTMONTHS:"jaan veebr m\\u00e4rts apr mai juuni juuli aug sept okt nov dets".split(" "),\nSTANDALONESHORTMONTHS:"jaan veebr m\\u00e4rts apr mai juuni juuli aug sept okt nov dets".split(" "),WEEKDAYS:"p\\u00fchap\\u00e4ev esmasp\\u00e4ev teisip\\u00e4ev kolmap\\u00e4ev neljap\\u00e4ev reede laup\\u00e4ev".split(" "),STANDALONEWEEKDAYS:"p\\u00fchap\\u00e4ev esmasp\\u00e4ev teisip\\u00e4ev kolmap\\u00e4ev neljap\\u00e4ev reede laup\\u00e4ev".split(" "),SHORTWEEKDAYS:"PETKNRL".split(""),STANDALONESHORTWEEKDAYS:"PETKNRL".split(""),NARROWWEEKDAYS:"PETKNRL".split(""),STANDALONENARROWWEEKDAYS:"PETKNRL".split(""),\nSHORTQUARTERS:["K1","K2","K3","K4"],QUARTERS:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, d. MMMM y","d. MMMM y","d. MMM y","dd.MM.yy"],TIMEFORMATS:["H:mm.ss zzzz","H:mm.ss z","H:mm.ss","H:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_eu={ERAS:["K.a.","K.o."],ERANAMES:["K.a.","K.o."],NARROWMONTHS:"UOMAMEUAIUAA".split(""),STANDALONENARROWMONTHS:"UOMAMEUAIUAA".split(""),MONTHS:"urtarrilak otsailak martxoak apirilak maiatzak ekainak uztailak abuztuak irailak urriak azaroak abenduak".split(" "),STANDALONEMONTHS:"Urtarrila Otsaila Martxoa Apirila Maiatza Ekaina Uztaila Abuztua Iraila Urria Azaroa Abendua".split(" "),SHORTMONTHS:"urt. ots. mar. api. mai. eka. uzt. abu. ira. urr. aza. abe.".split(" "),STANDALONESHORTMONTHS:"Urt. Ots. Mar. Api. Mai. Eka. Uzt. Abu. Ira. Urr. Aza. Abe.".split(" "),\nWEEKDAYS:"igandea astelehena asteartea asteazkena osteguna ostirala larunbata".split(" "),STANDALONEWEEKDAYS:"Igandea Astelehena Asteartea Asteazkena Osteguna Ostirala Larunbata".split(" "),SHORTWEEKDAYS:"ig. al. ar. az. og. or. lr.".split(" "),STANDALONESHORTWEEKDAYS:"Ig. Al. Ar. Az. Og. Or. Lr.".split(" "),NARROWWEEKDAYS:"IAAAOOL".split(""),STANDALONENARROWWEEKDAYS:"IAAAOOL".split(""),SHORTQUARTERS:["1Hh","2Hh","3Hh","4Hh"],QUARTERS:["1. hiruhilekoa","2. hiruhilekoa","3. hiruhilekoa","4. hiruhilekoa"],\nAMPMS:["AM","PM"],DATEFORMATS:["y(\'e\')\'ko\' MMMM d, EEEE","y(\'e\')\'ko\' MMMM d","y MMM d","y/MM/dd"],TIMEFORMATS:["HH:mm:ss (zzzz)","HH:mm:ss (z)","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_fa={ZERODIGIT:1776,ERAS:["\\u0642.\\u0645.","\\u0645."],ERANAMES:["\\u0642\\u0628\\u0644 \\u0627\\u0632 \\u0645\\u06cc\\u0644\\u0627\\u062f","\\u0645\\u06cc\\u0644\\u0627\\u062f\\u06cc"],NARROWMONTHS:"\\u0698\\u0641\\u0645\\u0622\\u0645\\u0698\\u0698\\u0627\\u0633\\u0627\\u0646\\u062f".split(""),STANDALONENARROWMONTHS:"\\u0698\\u0641\\u0645\\u0622\\u0645\\u0698\\u0698\\u0627\\u0633\\u0627\\u0646\\u062f".split(""),MONTHS:"\\u0698\\u0627\\u0646\\u0648\\u06cc\\u0647\\u0654 \\u0641\\u0648\\u0631\\u06cc\\u0647\\u0654 \\u0645\\u0627\\u0631\\u0633 \\u0622\\u0648\\u0631\\u06cc\\u0644 \\u0645\\u0647\\u0654 \\u0698\\u0648\\u0626\\u0646 \\u0698\\u0648\\u0626\\u06cc\\u0647\\u0654 \\u0627\\u0648\\u062a \\u0633\\u067e\\u062a\\u0627\\u0645\\u0628\\u0631 \\u0627\\u06a9\\u062a\\u0628\\u0631 \\u0646\\u0648\\u0627\\u0645\\u0628\\u0631 \\u062f\\u0633\\u0627\\u0645\\u0628\\u0631".split(" "),\nSTANDALONEMONTHS:"\\u0698\\u0627\\u0646\\u0648\\u06cc\\u0647 \\u0641\\u0648\\u0631\\u06cc\\u0647 \\u0645\\u0627\\u0631\\u0633 \\u0622\\u0648\\u0631\\u06cc\\u0644 \\u0645\\u0647 \\u0698\\u0648\\u0626\\u0646 \\u0698\\u0648\\u0626\\u06cc\\u0647 \\u0627\\u0648\\u062a \\u0633\\u067e\\u062a\\u0627\\u0645\\u0628\\u0631 \\u0627\\u06a9\\u062a\\u0628\\u0631 \\u0646\\u0648\\u0627\\u0645\\u0628\\u0631 \\u062f\\u0633\\u0627\\u0645\\u0628\\u0631".split(" "),SHORTMONTHS:"\\u0698\\u0627\\u0646\\u0648\\u06cc\\u0647\\u0654 \\u0641\\u0648\\u0631\\u06cc\\u0647\\u0654 \\u0645\\u0627\\u0631\\u0633 \\u0622\\u0648\\u0631\\u06cc\\u0644 \\u0645\\u0647\\u0654 \\u0698\\u0648\\u0626\\u0646 \\u0698\\u0648\\u0626\\u06cc\\u0647\\u0654 \\u0627\\u0648\\u062a \\u0633\\u067e\\u062a\\u0627\\u0645\\u0628\\u0631 \\u0627\\u06a9\\u062a\\u0628\\u0631 \\u0646\\u0648\\u0627\\u0645\\u0628\\u0631 \\u062f\\u0633\\u0627\\u0645\\u0628\\u0631".split(" "),\nSTANDALONESHORTMONTHS:"\\u0698\\u0627\\u0646\\u0648\\u06cc\\u0647 \\u0641\\u0648\\u0631\\u06cc\\u0647 \\u0645\\u0627\\u0631\\u0633 \\u0622\\u0648\\u0631\\u06cc\\u0644 \\u0645\\u0647 \\u0698\\u0648\\u0626\\u0646 \\u0698\\u0648\\u0626\\u06cc\\u0647 \\u0627\\u0648\\u062a \\u0633\\u067e\\u062a\\u0627\\u0645\\u0628\\u0631 \\u0627\\u06a9\\u062a\\u0628\\u0631 \\u0646\\u0648\\u0627\\u0645\\u0628\\u0631 \\u062f\\u0633\\u0627\\u0645\\u0628\\u0631".split(" "),WEEKDAYS:"\\u06cc\\u06a9\\u0634\\u0646\\u0628\\u0647 \\u062f\\u0648\\u0634\\u0646\\u0628\\u0647 \\u0633\\u0647\\u200c\\u0634\\u0646\\u0628\\u0647 \\u0686\\u0647\\u0627\\u0631\\u0634\\u0646\\u0628\\u0647 \\u067e\\u0646\\u062c\\u0634\\u0646\\u0628\\u0647 \\u062c\\u0645\\u0639\\u0647 \\u0634\\u0646\\u0628\\u0647".split(" "),\nSTANDALONEWEEKDAYS:"\\u06cc\\u06a9\\u0634\\u0646\\u0628\\u0647 \\u062f\\u0648\\u0634\\u0646\\u0628\\u0647 \\u0633\\u0647\\u200c\\u0634\\u0646\\u0628\\u0647 \\u0686\\u0647\\u0627\\u0631\\u0634\\u0646\\u0628\\u0647 \\u067e\\u0646\\u062c\\u0634\\u0646\\u0628\\u0647 \\u062c\\u0645\\u0639\\u0647 \\u0634\\u0646\\u0628\\u0647".split(" "),SHORTWEEKDAYS:"\\u06cc\\u06a9\\u0634\\u0646\\u0628\\u0647 \\u062f\\u0648\\u0634\\u0646\\u0628\\u0647 \\u0633\\u0647\\u200c\\u0634\\u0646\\u0628\\u0647 \\u0686\\u0647\\u0627\\u0631\\u0634\\u0646\\u0628\\u0647 \\u067e\\u0646\\u062c\\u0634\\u0646\\u0628\\u0647 \\u062c\\u0645\\u0639\\u0647 \\u0634\\u0646\\u0628\\u0647".split(" "),\nSTANDALONESHORTWEEKDAYS:"\\u06cc\\u06a9\\u0634\\u0646\\u0628\\u0647 \\u062f\\u0648\\u0634\\u0646\\u0628\\u0647 \\u0633\\u0647\\u200c\\u0634\\u0646\\u0628\\u0647 \\u0686\\u0647\\u0627\\u0631\\u0634\\u0646\\u0628\\u0647 \\u067e\\u0646\\u062c\\u0634\\u0646\\u0628\\u0647 \\u062c\\u0645\\u0639\\u0647 \\u0634\\u0646\\u0628\\u0647".split(" "),NARROWWEEKDAYS:"\\u06cc\\u062f\\u0633\\u0686\\u067e\\u062c\\u0634".split(""),STANDALONENARROWWEEKDAYS:"\\u06cc\\u062f\\u0633\\u0686\\u067e\\u062c\\u0634".split(""),SHORTQUARTERS:["\\u0633\\u200c\\u0645\\u06f1","\\u0633\\u200c\\u0645\\u06f2",\n"\\u0633\\u200c\\u0645\\u06f3","\\u0633\\u200c\\u0645\\u06f4"],QUARTERS:["\\u0633\\u0647\\u200c\\u0645\\u0627\\u0647\\u0647\\u0654 \\u0627\\u0648\\u0644","\\u0633\\u0647\\u200c\\u0645\\u0627\\u0647\\u0647\\u0654 \\u062f\\u0648\\u0645","\\u0633\\u0647\\u200c\\u0645\\u0627\\u0647\\u0647\\u0654 \\u0633\\u0648\\u0645","\\u0633\\u0647\\u200c\\u0645\\u0627\\u0647\\u0647\\u0654 \\u0686\\u0647\\u0627\\u0631\\u0645"],AMPMS:["\\u0642\\u0628\\u0644\\u200c\\u0627\\u0632\\u0638\\u0647\\u0631","\\u0628\\u0639\\u062f\\u0627\\u0632\\u0638\\u0647\\u0631"],DATEFORMATS:["EEEE d MMMM y",\n"d MMMM y","d MMM y","y/M/d"],TIMEFORMATS:["H:mm:ss (zzzz)","H:mm:ss (z)","H:mm:ss","H:mm"],DATETIMEFORMATS:["{1}\\u060c \\u0633\\u0627\\u0639\\u062a {0}","{1}\\u060c \\u0633\\u0627\\u0639\\u062a {0}","{1}\\u060c\\u200f {0}","{1}\\u060c\\u200f {0}"],FIRSTDAYOFWEEK:5,WEEKENDRANGE:[4,4],FIRSTWEEKCUTOFFDAY:4};\ngoog.i18n.DateTimeSymbols_fi={ERAS:["eKr.","jKr."],ERANAMES:["ennen Kristuksen syntym\\u00e4\\u00e4","j\\u00e4lkeen Kristuksen syntym\\u00e4n"],NARROWMONTHS:"THMHTKHESLMJ".split(""),STANDALONENARROWMONTHS:"THMHTKHESLMJ".split(""),MONTHS:"tammikuuta helmikuuta maaliskuuta huhtikuuta toukokuuta kes\\u00e4kuuta hein\\u00e4kuuta elokuuta syyskuuta lokakuuta marraskuuta joulukuuta".split(" "),STANDALONEMONTHS:"tammikuu helmikuu maaliskuu huhtikuu toukokuu kes\\u00e4kuu hein\\u00e4kuu elokuu syyskuu lokakuu marraskuu joulukuu".split(" "),\nSHORTMONTHS:"tammikuuta helmikuuta maaliskuuta huhtikuuta toukokuuta kes\\u00e4kuuta hein\\u00e4kuuta elokuuta syyskuuta lokakuuta marraskuuta joulukuuta".split(" "),STANDALONESHORTMONTHS:"tammi helmi maalis huhti touko kes\\u00e4 hein\\u00e4 elo syys loka marras joulu".split(" "),WEEKDAYS:"sunnuntaina maanantaina tiistaina keskiviikkona torstaina perjantaina lauantaina".split(" "),STANDALONEWEEKDAYS:"sunnuntai maanantai tiistai keskiviikko torstai perjantai lauantai".split(" "),SHORTWEEKDAYS:"su ma ti ke to pe la".split(" "),\nSTANDALONESHORTWEEKDAYS:"su ma ti ke to pe la".split(" "),NARROWWEEKDAYS:"SMTKTPL".split(""),STANDALONENARROWWEEKDAYS:"SMTKTPL".split(""),SHORTQUARTERS:["1. nelj.","2. nelj.","3. nelj.","4. nelj."],QUARTERS:["1. nelj\\u00e4nnes","2. nelj\\u00e4nnes","3. nelj\\u00e4nnes","4. nelj\\u00e4nnes"],AMPMS:["ap.","ip."],DATEFORMATS:["cccc d. MMMM y","d. MMMM y","d.M.y","d.M.y"],TIMEFORMATS:["H.mm.ss zzzz","H.mm.ss z","H.mm.ss","H.mm"],DATETIMEFORMATS:["{1} \'klo\' {0}","{1} \'klo\' {0}","{1} \'klo\' {0}","{1} {0}"],\nFIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_fil={ERAS:["BC","AD"],ERANAMES:["BC","AD"],NARROWMONTHS:"Ene Peb Mar Abr May Hun Hul Ago Set Okt Nob Dis".split(" "),STANDALONENARROWMONTHS:"E P M A M Hun Hul Ago Set Okt Nob Dis".split(" "),MONTHS:"Enero Pebrero Marso Abril Mayo Hunyo Hulyo Agosto Setyembre Oktubre Nobyembre Disyembre".split(" "),STANDALONEMONTHS:"Enero Pebrero Marso Abril Mayo Hunyo Hulyo Agosto Setyembre Oktubre Nobyembre Disyembre".split(" "),SHORTMONTHS:"Ene Peb Mar Abr May Hun Hul Ago Set Okt Nob Dis".split(" "),\nSTANDALONESHORTMONTHS:"Ene Peb Mar Abr May Hun Hul Ago Set Okt Nob Dis".split(" "),WEEKDAYS:"Linggo Lunes Martes Miyerkules Huwebes Biyernes Sabado".split(" "),STANDALONEWEEKDAYS:"Linggo Lunes Martes Miyerkules Huwebes Biyernes Sabado".split(" "),SHORTWEEKDAYS:"Lin Lun Mar Miy Huw Biy Sab".split(" "),STANDALONESHORTWEEKDAYS:"Lin Lun Mar Miy Huw Biy Sab".split(" "),NARROWWEEKDAYS:"Lin Lun Mar Miy Huw Biy Sab".split(" "),STANDALONENARROWWEEKDAYS:"Lin Lun Mar Miy Huw Biy Sab".split(" "),SHORTQUARTERS:["Q1",\n"Q2","Q3","Q4"],QUARTERS:["ika-1 quarter","ika-2 quarter","ika-3 quarter","ika-4 na quarter"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, MMMM d, y","MMMM d, y","MMM d, y","M/d/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} \'nang\' {0}","{1} \'nang\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_fr={ERAS:["av. J.-C.","ap. J.-C."],ERANAMES:["avant J\\u00e9sus-Christ","apr\\u00e8s J\\u00e9sus-Christ"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"janvier f\\u00e9vrier mars avril mai juin juillet ao\\u00fbt septembre octobre novembre d\\u00e9cembre".split(" "),STANDALONEMONTHS:"janvier f\\u00e9vrier mars avril mai juin juillet ao\\u00fbt septembre octobre novembre d\\u00e9cembre".split(" "),SHORTMONTHS:"janv. f\\u00e9vr. mars avr. mai juin juil. ao\\u00fbt sept. oct. nov. d\\u00e9c.".split(" "),\nSTANDALONESHORTMONTHS:"janv. f\\u00e9vr. mars avr. mai juin juil. ao\\u00fbt sept. oct. nov. d\\u00e9c.".split(" "),WEEKDAYS:"dimanche lundi mardi mercredi jeudi vendredi samedi".split(" "),STANDALONEWEEKDAYS:"dimanche lundi mardi mercredi jeudi vendredi samedi".split(" "),SHORTWEEKDAYS:"dim. lun. mar. mer. jeu. ven. sam.".split(" "),STANDALONESHORTWEEKDAYS:"dim. lun. mar. mer. jeu. ven. sam.".split(" "),NARROWWEEKDAYS:"DLMMJVS".split(""),STANDALONENARROWWEEKDAYS:"DLMMJVS".split(""),SHORTQUARTERS:["T1",\n"T2","T3","T4"],QUARTERS:["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE d MMMM y","d MMMM y","d MMM y","dd/MM/y"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} \'\\u00e0\' {0}","{1} \'\\u00e0\' {0}","{1} \'\\u00e0\' {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_fr_CA={ERAS:["av. J.-C.","ap. J.-C."],ERANAMES:["avant J\\u00e9sus-Christ","apr\\u00e8s J\\u00e9sus-Christ"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"janvier f\\u00e9vrier mars avril mai juin juillet ao\\u00fbt septembre octobre novembre d\\u00e9cembre".split(" "),STANDALONEMONTHS:"janvier f\\u00e9vrier mars avril mai juin juillet ao\\u00fbt septembre octobre novembre d\\u00e9cembre".split(" "),SHORTMONTHS:"janv. f\\u00e9vr. mars avr. mai juin juil. ao\\u00fbt sept. oct. nov. d\\u00e9c.".split(" "),\nSTANDALONESHORTMONTHS:"janv. f\\u00e9vr. mars avr. mai juin juil. ao\\u00fbt sept. oct. nov. d\\u00e9c.".split(" "),WEEKDAYS:"dimanche lundi mardi mercredi jeudi vendredi samedi".split(" "),STANDALONEWEEKDAYS:"dimanche lundi mardi mercredi jeudi vendredi samedi".split(" "),SHORTWEEKDAYS:"dim. lun. mar. mer. jeu. ven. sam.".split(" "),STANDALONESHORTWEEKDAYS:"dim. lun. mar. mer. jeu. ven. sam.".split(" "),NARROWWEEKDAYS:"DLMMJVS".split(""),STANDALONENARROWWEEKDAYS:"DLMMJVS".split(""),SHORTQUARTERS:["T1",\n"T2","T3","T4"],QUARTERS:["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE d MMMM y","d MMMM y","d MMM y","yy-MM-dd"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} \'\\u00e0\' {0}","{1} \'\\u00e0\' {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_ga={ERAS:["RC","AD"],ERANAMES:["Roimh Chr\\u00edost","Anno Domini"],NARROWMONTHS:"EFMABMILMDSN".split(""),STANDALONENARROWMONTHS:"EFMABMILMDSN".split(""),MONTHS:"Ean\\u00e1ir;Feabhra;M\\u00e1rta;Aibre\\u00e1n;Bealtaine;Meitheamh;I\\u00fail;L\\u00fanasa;Me\\u00e1n F\\u00f3mhair;Deireadh F\\u00f3mhair;Samhain;Nollaig".split(";"),STANDALONEMONTHS:"Ean\\u00e1ir;Feabhra;M\\u00e1rta;Aibre\\u00e1n;Bealtaine;Meitheamh;I\\u00fail;L\\u00fanasa;Me\\u00e1n F\\u00f3mhair;Deireadh F\\u00f3mhair;Samhain;Nollaig".split(";"),\nSHORTMONTHS:"Ean Feabh M\\u00e1rta Aib Beal Meith I\\u00fail L\\u00fan MF\\u00f3mh DF\\u00f3mh Samh Noll".split(" "),STANDALONESHORTMONTHS:"Ean Feabh M\\u00e1rta Aib Beal Meith I\\u00fail L\\u00fan MF\\u00f3mh DF\\u00f3mh Samh Noll".split(" "),WEEKDAYS:"D\\u00e9 Domhnaigh;D\\u00e9 Luain;D\\u00e9 M\\u00e1irt;D\\u00e9 C\\u00e9adaoin;D\\u00e9ardaoin;D\\u00e9 hAoine;D\\u00e9 Sathairn".split(";"),STANDALONEWEEKDAYS:"D\\u00e9 Domhnaigh;D\\u00e9 Luain;D\\u00e9 M\\u00e1irt;D\\u00e9 C\\u00e9adaoin;D\\u00e9ardaoin;D\\u00e9 hAoine;D\\u00e9 Sathairn".split(";"),\nSHORTWEEKDAYS:"Domh Luan M\\u00e1irt C\\u00e9ad D\\u00e9ar Aoine Sath".split(" "),STANDALONESHORTWEEKDAYS:"Domh Luan M\\u00e1irt C\\u00e9ad D\\u00e9ar Aoine Sath".split(" "),NARROWWEEKDAYS:"DLMCDAS".split(""),STANDALONENARROWWEEKDAYS:"DLMCDAS".split(""),SHORTQUARTERS:["R1","R2","R3","R4"],QUARTERS:["1\\u00fa r\\u00e1ithe","2\\u00fa r\\u00e1ithe","3\\u00fa r\\u00e1ithe","4\\u00fa r\\u00e1ithe"],AMPMS:["a.m.","p.m."],DATEFORMATS:["EEEE d MMMM y","d MMMM y","d MMM y","dd/MM/y"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z",\n"HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:2};\ngoog.i18n.DateTimeSymbols_gl={ERAS:["a.C.","d.C."],ERANAMES:["antes de Cristo","despois de Cristo"],NARROWMONTHS:"XFMAMXXASOND".split(""),STANDALONENARROWMONTHS:"XFMAMXXASOND".split(""),MONTHS:"xaneiro febreiro marzo abril maio xu\\u00f1o xullo agosto setembro outubro novembro decembro".split(" "),STANDALONEMONTHS:"Xaneiro Febreiro Marzo Abril Maio Xu\\u00f1o Xullo Agosto Setembro Outubro Novembro Decembro".split(" "),SHORTMONTHS:"xan feb mar abr mai xu\\u00f1 xul ago set out nov dec".split(" "),STANDALONESHORTMONTHS:"Xan Feb Mar Abr Mai Xu\\u00f1 Xul Ago Set Out Nov Dec".split(" "),\nWEEKDAYS:"domingo luns martes m\\u00e9rcores xoves venres s\\u00e1bado".split(" "),STANDALONEWEEKDAYS:"Domingo Luns Martes M\\u00e9rcores Xoves Venres S\\u00e1bado".split(" "),SHORTWEEKDAYS:"dom luns mar m\\u00e9r xov ven s\\u00e1b".split(" "),STANDALONESHORTWEEKDAYS:"Dom Lun Mar M\\u00e9r Xov Ven S\\u00e1b".split(" "),NARROWWEEKDAYS:"DLMMXVS".split(""),STANDALONENARROWWEEKDAYS:"DLMMXVS".split(""),SHORTQUARTERS:["T1","T2","T3","T4"],QUARTERS:["1\\u00ba trimestre","2\\u00ba trimestre","3\\u00ba trimestre","4\\u00ba trimestre"],\nAMPMS:["a.m.","p.m."],DATEFORMATS:["EEEE dd MMMM y","dd MMMM y","d MMM, y","dd/MM/yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_gsw={ERAS:["v. Chr.","n. Chr."],ERANAMES:["v. Chr.","n. Chr."],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"Januar Februar M\\u00e4rz April Mai Juni Juli Auguscht Sept\\u00e4mber Oktoober Nov\\u00e4mber Dez\\u00e4mber".split(" "),STANDALONEMONTHS:"Januar Februar M\\u00e4rz April Mai Juni Juli Auguscht Sept\\u00e4mber Oktoober Nov\\u00e4mber Dez\\u00e4mber".split(" "),SHORTMONTHS:"Jan Feb M\\u00e4r Apr Mai Jun Jul Aug Sep Okt Nov Dez".split(" "),\nSTANDALONESHORTMONTHS:"Jan Feb M\\u00e4r Apr Mai Jun Jul Aug Sep Okt Nov Dez".split(" "),WEEKDAYS:"Sunntig M\\u00e4\\u00e4ntig Ziischtig Mittwuch Dunschtig Friitig Samschtig".split(" "),STANDALONEWEEKDAYS:"Sunntig M\\u00e4\\u00e4ntig Ziischtig Mittwuch Dunschtig Friitig Samschtig".split(" "),SHORTWEEKDAYS:"Su. M\\u00e4. Zi. Mi. Du. Fr. Sa.".split(" "),STANDALONESHORTWEEKDAYS:"Su. M\\u00e4. Zi. Mi. Du. Fr. Sa.".split(" "),NARROWWEEKDAYS:"SMDMDFS".split(""),STANDALONENARROWWEEKDAYS:"SMDMDFS".split(""),SHORTQUARTERS:["Q1",\n"Q2","Q3","Q4"],QUARTERS:["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],AMPMS:["vorm.","nam."],DATEFORMATS:["EEEE, d. MMMM y","d. MMMM y","dd.MM.y","dd.MM.yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_gu={ERAS:["\\u0a88.\\u0ab8.\\u0aaa\\u0ac2\\u0ab0\\u0acd\\u0ab5\\u0ac7","\\u0a88.\\u0ab8."],ERANAMES:["\\u0a88\\u0ab8\\u0ab5\\u0ac0\\u0ab8\\u0aa8 \\u0aaa\\u0ac2\\u0ab0\\u0acd\\u0ab5\\u0ac7","\\u0a87\\u0ab8\\u0ab5\\u0ac0\\u0ab8\\u0aa8"],NARROWMONTHS:"\\u0a9c\\u0abe \\u0aab\\u0ac7 \\u0aae\\u0abe \\u0a8f \\u0aae\\u0ac7 \\u0a9c\\u0ac2 \\u0a9c\\u0ac1 \\u0a91 \\u0ab8 \\u0a91 \\u0aa8 \\u0aa1\\u0abf".split(" "),STANDALONENARROWMONTHS:"\\u0a9c\\u0abe \\u0aab\\u0ac7 \\u0aae\\u0abe \\u0a8f \\u0aae\\u0ac7 \\u0a9c\\u0ac2 \\u0a9c\\u0ac1 \\u0a91 \\u0ab8 \\u0a91 \\u0aa8 \\u0aa1\\u0abf".split(" "),\nMONTHS:"\\u0a9c\\u0abe\\u0aa8\\u0acd\\u0aaf\\u0ac1\\u0a86\\u0ab0\\u0ac0 \\u0aab\\u0ac7\\u0aac\\u0acd\\u0ab0\\u0ac1\\u0a86\\u0ab0\\u0ac0 \\u0aae\\u0abe\\u0ab0\\u0acd\\u0a9a \\u0a8f\\u0aaa\\u0acd\\u0ab0\\u0abf\\u0ab2 \\u0aae\\u0ac7 \\u0a9c\\u0ac2\\u0aa8 \\u0a9c\\u0ac1\\u0ab2\\u0abe\\u0a88 \\u0a91\\u0a97\\u0ab8\\u0acd\\u0a9f \\u0ab8\\u0aaa\\u0acd\\u0a9f\\u0ac7\\u0aae\\u0acd\\u0aac\\u0ab0 \\u0a91\\u0a95\\u0acd\\u0a9f\\u0acb\\u0aac\\u0ab0 \\u0aa8\\u0ab5\\u0ac7\\u0aae\\u0acd\\u0aac\\u0ab0 \\u0aa1\\u0abf\\u0ab8\\u0ac7\\u0aae\\u0acd\\u0aac\\u0ab0".split(" "),STANDALONEMONTHS:"\\u0a9c\\u0abe\\u0aa8\\u0acd\\u0aaf\\u0ac1\\u0a86\\u0ab0\\u0ac0 \\u0aab\\u0ac7\\u0aac\\u0acd\\u0ab0\\u0ac1\\u0a86\\u0ab0\\u0ac0 \\u0aae\\u0abe\\u0ab0\\u0acd\\u0a9a \\u0a8f\\u0aaa\\u0acd\\u0ab0\\u0abf\\u0ab2 \\u0aae\\u0ac7 \\u0a9c\\u0ac2\\u0aa8 \\u0a9c\\u0ac1\\u0ab2\\u0abe\\u0a88 \\u0a91\\u0a97\\u0ab8\\u0acd\\u0a9f \\u0ab8\\u0aaa\\u0acd\\u0a9f\\u0ac7\\u0aae\\u0acd\\u0aac\\u0ab0 \\u0a91\\u0a95\\u0acd\\u0a9f\\u0acb\\u0aac\\u0ab0 \\u0aa8\\u0ab5\\u0ac7\\u0aae\\u0acd\\u0aac\\u0ab0 \\u0aa1\\u0abf\\u0ab8\\u0ac7\\u0aae\\u0acd\\u0aac\\u0ab0".split(" "),\nSHORTMONTHS:"\\u0a9c\\u0abe\\u0aa8\\u0acd\\u0aaf\\u0ac1 \\u0aab\\u0ac7\\u0aac\\u0acd\\u0ab0\\u0ac1 \\u0aae\\u0abe\\u0ab0\\u0acd\\u0a9a \\u0a8f\\u0aaa\\u0acd\\u0ab0\\u0abf\\u0ab2 \\u0aae\\u0ac7 \\u0a9c\\u0ac2\\u0aa8 \\u0a9c\\u0ac1\\u0ab2\\u0abe\\u0a88 \\u0a91\\u0a97\\u0ab8\\u0acd\\u0a9f \\u0ab8\\u0aaa\\u0acd\\u0a9f\\u0ac7 \\u0a91\\u0a95\\u0acd\\u0a9f\\u0acb \\u0aa8\\u0ab5\\u0ac7 \\u0aa1\\u0abf\\u0ab8\\u0ac7".split(" "),STANDALONESHORTMONTHS:"\\u0a9c\\u0abe\\u0aa8\\u0acd\\u0aaf\\u0ac1 \\u0aab\\u0ac7\\u0aac\\u0acd\\u0ab0\\u0ac1 \\u0aae\\u0abe\\u0ab0\\u0acd\\u0a9a \\u0a8f\\u0aaa\\u0acd\\u0ab0\\u0abf\\u0ab2 \\u0aae\\u0ac7 \\u0a9c\\u0ac2\\u0aa8 \\u0a9c\\u0ac1\\u0ab2\\u0abe\\u0a88 \\u0a91\\u0a97\\u0ab8\\u0acd\\u0a9f \\u0ab8\\u0aaa\\u0acd\\u0a9f\\u0ac7 \\u0a91\\u0a95\\u0acd\\u0a9f\\u0acb \\u0aa8\\u0ab5\\u0ac7 \\u0aa1\\u0abf\\u0ab8\\u0ac7".split(" "),\nWEEKDAYS:"\\u0ab0\\u0ab5\\u0abf\\u0ab5\\u0abe\\u0ab0 \\u0ab8\\u0acb\\u0aae\\u0ab5\\u0abe\\u0ab0 \\u0aae\\u0a82\\u0a97\\u0ab3\\u0ab5\\u0abe\\u0ab0 \\u0aac\\u0ac1\\u0aa7\\u0ab5\\u0abe\\u0ab0 \\u0a97\\u0ac1\\u0ab0\\u0ac1\\u0ab5\\u0abe\\u0ab0 \\u0ab6\\u0ac1\\u0a95\\u0acd\\u0ab0\\u0ab5\\u0abe\\u0ab0 \\u0ab6\\u0aa8\\u0abf\\u0ab5\\u0abe\\u0ab0".split(" "),STANDALONEWEEKDAYS:"\\u0ab0\\u0ab5\\u0abf\\u0ab5\\u0abe\\u0ab0 \\u0ab8\\u0acb\\u0aae\\u0ab5\\u0abe\\u0ab0 \\u0aae\\u0a82\\u0a97\\u0ab3\\u0ab5\\u0abe\\u0ab0 \\u0aac\\u0ac1\\u0aa7\\u0ab5\\u0abe\\u0ab0 \\u0a97\\u0ac1\\u0ab0\\u0ac1\\u0ab5\\u0abe\\u0ab0 \\u0ab6\\u0ac1\\u0a95\\u0acd\\u0ab0\\u0ab5\\u0abe\\u0ab0 \\u0ab6\\u0aa8\\u0abf\\u0ab5\\u0abe\\u0ab0".split(" "),\nSHORTWEEKDAYS:"\\u0ab0\\u0ab5\\u0abf \\u0ab8\\u0acb\\u0aae \\u0aae\\u0a82\\u0a97\\u0ab3 \\u0aac\\u0ac1\\u0aa7 \\u0a97\\u0ac1\\u0ab0\\u0ac1 \\u0ab6\\u0ac1\\u0a95\\u0acd\\u0ab0 \\u0ab6\\u0aa8\\u0abf".split(" "),STANDALONESHORTWEEKDAYS:"\\u0ab0\\u0ab5\\u0abf \\u0ab8\\u0acb\\u0aae \\u0aae\\u0a82\\u0a97\\u0ab3 \\u0aac\\u0ac1\\u0aa7 \\u0a97\\u0ac1\\u0ab0\\u0ac1 \\u0ab6\\u0ac1\\u0a95\\u0acd\\u0ab0 \\u0ab6\\u0aa8\\u0abf".split(" "),NARROWWEEKDAYS:"\\u0ab0 \\u0ab8\\u0acb \\u0aae\\u0a82 \\u0aac\\u0ac1 \\u0a97\\u0ac1 \\u0ab6\\u0ac1 \\u0ab6".split(" "),STANDALONENARROWWEEKDAYS:"\\u0ab0 \\u0ab8\\u0acb \\u0aae\\u0a82 \\u0aac\\u0ac1 \\u0a97\\u0ac1 \\u0ab6\\u0ac1 \\u0ab6".split(" "),\nSHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["\\u0aaa\\u0ab9\\u0ac7\\u0ab2\\u0acb \\u0aa4\\u0acd\\u0ab0\\u0abf\\u0aae\\u0abe\\u0ab8","\\u0aac\\u0ac0\\u0a9c\\u0acb \\u0aa4\\u0acd\\u0ab0\\u0abf\\u0aae\\u0abe\\u0ab8","\\u0aa4\\u0acd\\u0ab0\\u0ac0\\u0a9c\\u0acb \\u0aa4\\u0acd\\u0ab0\\u0abf\\u0aae\\u0abe\\u0ab8","\\u0a9a\\u0acb\\u0aa5\\u0acb \\u0aa4\\u0acd\\u0ab0\\u0abf\\u0aae\\u0abe\\u0ab8"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, d MMMM, y","d MMMM, y","d MMM, y","d/M/yy"],TIMEFORMATS:["hh:mm:ss a zzzz","hh:mm:ss a z","hh:mm:ss a","hh:mm a"],DATETIMEFORMATS:["{1} {0}",\n"{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[6,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_haw={ERAS:["BCE","CE"],ERANAMES:["BCE","CE"],NARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),STANDALONENARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),MONTHS:"Ianuali Pepeluali Malaki \\u02bbApelila Mei Iune Iulai \\u02bbAukake Kepakemapa \\u02bbOkakopa Nowemapa Kekemapa".split(" "),STANDALONEMONTHS:"Ianuali Pepeluali Malaki \\u02bbApelila Mei Iune Iulai \\u02bbAukake Kepakemapa \\u02bbOkakopa Nowemapa Kekemapa".split(" "),SHORTMONTHS:"Ian. Pep. Mal. \\u02bbAp. Mei Iun. Iul. \\u02bbAu. Kep. \\u02bbOk. Now. Kek.".split(" "),\nSTANDALONESHORTMONTHS:"Ian. Pep. Mal. \\u02bbAp. Mei Iun. Iul. \\u02bbAu. Kep. \\u02bbOk. Now. Kek.".split(" "),WEEKDAYS:"L\\u0101pule Po\\u02bbakahi Po\\u02bbalua Po\\u02bbakolu Po\\u02bbah\\u0101 Po\\u02bbalima Po\\u02bbaono".split(" "),STANDALONEWEEKDAYS:"L\\u0101pule Po\\u02bbakahi Po\\u02bbalua Po\\u02bbakolu Po\\u02bbah\\u0101 Po\\u02bbalima Po\\u02bbaono".split(" "),SHORTWEEKDAYS:"LP P1 P2 P3 P4 P5 P6".split(" "),STANDALONESHORTWEEKDAYS:"LP P1 P2 P3 P4 P5 P6".split(" "),NARROWWEEKDAYS:"SMTWTFS".split(""),STANDALONENARROWWEEKDAYS:"SMTWTFS".split(""),\nSHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["Q1","Q2","Q3","Q4"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, d MMMM y","d MMMM y","d MMM y","d/M/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_he={ERAS:["\\u05dc\\u05e4\\u05e0\\u05d4\\u05f4\\u05e1","\\u05dc\\u05e1\\u05e4\\u05d9\\u05e8\\u05d4"],ERANAMES:["\\u05dc\\u05e4\\u05e0\\u05d9 \\u05d4\\u05e1\\u05e4\\u05d9\\u05e8\\u05d4","\\u05dc\\u05e1\\u05e4\\u05d9\\u05e8\\u05d4"],NARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),STANDALONENARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),MONTHS:"\\u05d9\\u05e0\\u05d5\\u05d0\\u05e8 \\u05e4\\u05d1\\u05e8\\u05d5\\u05d0\\u05e8 \\u05de\\u05e8\\u05e5 \\u05d0\\u05e4\\u05e8\\u05d9\\u05dc \\u05de\\u05d0\\u05d9 \\u05d9\\u05d5\\u05e0\\u05d9 \\u05d9\\u05d5\\u05dc\\u05d9 \\u05d0\\u05d5\\u05d2\\u05d5\\u05e1\\u05d8 \\u05e1\\u05e4\\u05d8\\u05de\\u05d1\\u05e8 \\u05d0\\u05d5\\u05e7\\u05d8\\u05d5\\u05d1\\u05e8 \\u05e0\\u05d5\\u05d1\\u05de\\u05d1\\u05e8 \\u05d3\\u05e6\\u05de\\u05d1\\u05e8".split(" "),\nSTANDALONEMONTHS:"\\u05d9\\u05e0\\u05d5\\u05d0\\u05e8 \\u05e4\\u05d1\\u05e8\\u05d5\\u05d0\\u05e8 \\u05de\\u05e8\\u05e5 \\u05d0\\u05e4\\u05e8\\u05d9\\u05dc \\u05de\\u05d0\\u05d9 \\u05d9\\u05d5\\u05e0\\u05d9 \\u05d9\\u05d5\\u05dc\\u05d9 \\u05d0\\u05d5\\u05d2\\u05d5\\u05e1\\u05d8 \\u05e1\\u05e4\\u05d8\\u05de\\u05d1\\u05e8 \\u05d0\\u05d5\\u05e7\\u05d8\\u05d5\\u05d1\\u05e8 \\u05e0\\u05d5\\u05d1\\u05de\\u05d1\\u05e8 \\u05d3\\u05e6\\u05de\\u05d1\\u05e8".split(" "),SHORTMONTHS:"\\u05d9\\u05e0\\u05d5\\u05f3 \\u05e4\\u05d1\\u05e8\\u05f3 \\u05de\\u05e8\\u05e5 \\u05d0\\u05e4\\u05e8\\u05f3 \\u05de\\u05d0\\u05d9 \\u05d9\\u05d5\\u05e0\\u05d9 \\u05d9\\u05d5\\u05dc\\u05d9 \\u05d0\\u05d5\\u05d2\\u05f3 \\u05e1\\u05e4\\u05d8\\u05f3 \\u05d0\\u05d5\\u05e7\\u05f3 \\u05e0\\u05d5\\u05d1\\u05f3 \\u05d3\\u05e6\\u05de\\u05f3".split(" "),\nSTANDALONESHORTMONTHS:"\\u05d9\\u05e0\\u05d5\\u05f3 \\u05e4\\u05d1\\u05e8\\u05f3 \\u05de\\u05e8\\u05e5 \\u05d0\\u05e4\\u05e8\\u05f3 \\u05de\\u05d0\\u05d9 \\u05d9\\u05d5\\u05e0\\u05d9 \\u05d9\\u05d5\\u05dc\\u05d9 \\u05d0\\u05d5\\u05d2\\u05f3 \\u05e1\\u05e4\\u05d8\\u05f3 \\u05d0\\u05d5\\u05e7\\u05f3 \\u05e0\\u05d5\\u05d1\\u05f3 \\u05d3\\u05e6\\u05de\\u05f3".split(" "),WEEKDAYS:"\\u05d9\\u05d5\\u05dd \\u05e8\\u05d0\\u05e9\\u05d5\\u05df;\\u05d9\\u05d5\\u05dd \\u05e9\\u05e0\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e9\\u05dc\\u05d9\\u05e9\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e8\\u05d1\\u05d9\\u05e2\\u05d9;\\u05d9\\u05d5\\u05dd \\u05d7\\u05de\\u05d9\\u05e9\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e9\\u05d9\\u05e9\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e9\\u05d1\\u05ea".split(";"),\nSTANDALONEWEEKDAYS:"\\u05d9\\u05d5\\u05dd \\u05e8\\u05d0\\u05e9\\u05d5\\u05df;\\u05d9\\u05d5\\u05dd \\u05e9\\u05e0\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e9\\u05dc\\u05d9\\u05e9\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e8\\u05d1\\u05d9\\u05e2\\u05d9;\\u05d9\\u05d5\\u05dd \\u05d7\\u05de\\u05d9\\u05e9\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e9\\u05d9\\u05e9\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e9\\u05d1\\u05ea".split(";"),SHORTWEEKDAYS:"\\u05d9\\u05d5\\u05dd \\u05d0\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d1\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d2\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d3\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d4\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d5\\u05f3;\\u05e9\\u05d1\\u05ea".split(";"),\nSTANDALONESHORTWEEKDAYS:"\\u05d9\\u05d5\\u05dd \\u05d0\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d1\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d2\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d3\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d4\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d5\\u05f3;\\u05e9\\u05d1\\u05ea".split(";"),NARROWWEEKDAYS:"\\u05d0\\u05f3 \\u05d1\\u05f3 \\u05d2\\u05f3 \\u05d3\\u05f3 \\u05d4\\u05f3 \\u05d5\\u05f3 \\u05e9\\u05f3".split(" "),STANDALONENARROWWEEKDAYS:"\\u05d0\\u05f3 \\u05d1\\u05f3 \\u05d2\\u05f3 \\u05d3\\u05f3 \\u05d4\\u05f3 \\u05d5\\u05f3 \\u05e9\\u05f3".split(" "),SHORTQUARTERS:["\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 1",\n"\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 2","\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 3","\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 4"],QUARTERS:["\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 1","\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 2","\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 3","\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 4"],AMPMS:["\\u05dc\\u05e4\\u05e0\\u05d4\\u05f4\\u05e6","\\u05d0\\u05d7\\u05d4\\u05f4\\u05e6"],DATEFORMATS:["EEEE, d \\u05d1MMMM y","d \\u05d1MMMM y","d \\u05d1MMM y","d.M.y"],TIMEFORMATS:["H:mm:ss zzzz","H:mm:ss z","H:mm:ss","H:mm"],DATETIMEFORMATS:["{1} \\u05d1\\u05e9\\u05e2\\u05d4 {0}",\n"{1} \\u05d1\\u05e9\\u05e2\\u05d4 {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[4,5],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_hi={ERAS:["\\u0908\\u0938\\u093e-\\u092a\\u0942\\u0930\\u094d\\u0935","\\u0908\\u0938\\u094d\\u0935\\u0940"],ERANAMES:["\\u0908\\u0938\\u093e-\\u092a\\u0942\\u0930\\u094d\\u0935","\\u0908\\u0938\\u0935\\u0940 \\u0938\\u0928"],NARROWMONTHS:"\\u091c \\u092b\\u093c \\u092e\\u093e \\u0905 \\u092e \\u091c\\u0942 \\u091c\\u0941 \\u0905 \\u0938\\u093f \\u0905 \\u0928 \\u0926\\u093f".split(" "),STANDALONENARROWMONTHS:"\\u091c \\u092b\\u093c \\u092e\\u093e \\u0905 \\u092e \\u091c\\u0942 \\u091c\\u0941 \\u0905 \\u0938\\u093f \\u0905 \\u0928 \\u0926\\u093f".split(" "),MONTHS:"\\u091c\\u0928\\u0935\\u0930\\u0940 \\u092b\\u093c\\u0930\\u0935\\u0930\\u0940 \\u092e\\u093e\\u0930\\u094d\\u091a \\u0905\\u092a\\u094d\\u0930\\u0948\\u0932 \\u092e\\u0908 \\u091c\\u0942\\u0928 \\u091c\\u0941\\u0932\\u093e\\u0908 \\u0905\\u0917\\u0938\\u094d\\u0924 \\u0938\\u093f\\u0924\\u0902\\u092c\\u0930 \\u0905\\u0915\\u094d\\u0924\\u0942\\u092c\\u0930 \\u0928\\u0935\\u0902\\u092c\\u0930 \\u0926\\u093f\\u0938\\u0902\\u092c\\u0930".split(" "),\nSTANDALONEMONTHS:"\\u091c\\u0928\\u0935\\u0930\\u0940 \\u092b\\u093c\\u0930\\u0935\\u0930\\u0940 \\u092e\\u093e\\u0930\\u094d\\u091a \\u0905\\u092a\\u094d\\u0930\\u0948\\u0932 \\u092e\\u0908 \\u091c\\u0942\\u0928 \\u091c\\u0941\\u0932\\u093e\\u0908 \\u0905\\u0917\\u0938\\u094d\\u0924 \\u0938\\u093f\\u0924\\u0902\\u092c\\u0930 \\u0905\\u0915\\u094d\\u0924\\u0942\\u092c\\u0930 \\u0928\\u0935\\u0902\\u092c\\u0930 \\u0926\\u093f\\u0938\\u0902\\u092c\\u0930".split(" "),SHORTMONTHS:"\\u091c\\u0928\\u0970 \\u092b\\u093c\\u0930\\u0970 \\u092e\\u093e\\u0930\\u094d\\u091a \\u0905\\u092a\\u094d\\u0930\\u0948\\u0932 \\u092e\\u0908 \\u091c\\u0942\\u0928 \\u091c\\u0941\\u0932\\u0970 \\u0905\\u0917\\u0970 \\u0938\\u093f\\u0924\\u0970 \\u0905\\u0915\\u094d\\u0924\\u0942\\u0970 \\u0928\\u0935\\u0970 \\u0926\\u093f\\u0938\\u0970".split(" "),\nSTANDALONESHORTMONTHS:"\\u091c\\u0928\\u0970 \\u092b\\u093c\\u0930\\u0970 \\u092e\\u093e\\u0930\\u094d\\u091a \\u0905\\u092a\\u094d\\u0930\\u0948\\u0932 \\u092e\\u0908 \\u091c\\u0942\\u0928 \\u091c\\u0941\\u0932\\u0970 \\u0905\\u0917\\u0970 \\u0938\\u093f\\u0924\\u0970 \\u0905\\u0915\\u094d\\u0924\\u0942\\u0970 \\u0928\\u0935\\u0970 \\u0926\\u093f\\u0938\\u0970".split(" "),WEEKDAYS:"\\u0930\\u0935\\u093f\\u0935\\u093e\\u0930 \\u0938\\u094b\\u092e\\u0935\\u093e\\u0930 \\u092e\\u0902\\u0917\\u0932\\u0935\\u093e\\u0930 \\u092c\\u0941\\u0927\\u0935\\u093e\\u0930 \\u0917\\u0941\\u0930\\u0941\\u0935\\u093e\\u0930 \\u0936\\u0941\\u0915\\u094d\\u0930\\u0935\\u093e\\u0930 \\u0936\\u0928\\u093f\\u0935\\u093e\\u0930".split(" "),\nSTANDALONEWEEKDAYS:"\\u0930\\u0935\\u093f\\u0935\\u093e\\u0930 \\u0938\\u094b\\u092e\\u0935\\u093e\\u0930 \\u092e\\u0902\\u0917\\u0932\\u0935\\u093e\\u0930 \\u092c\\u0941\\u0927\\u0935\\u093e\\u0930 \\u0917\\u0941\\u0930\\u0941\\u0935\\u093e\\u0930 \\u0936\\u0941\\u0915\\u094d\\u0930\\u0935\\u093e\\u0930 \\u0936\\u0928\\u093f\\u0935\\u093e\\u0930".split(" "),SHORTWEEKDAYS:"\\u0930\\u0935\\u093f \\u0938\\u094b\\u092e \\u092e\\u0902\\u0917\\u0932 \\u092c\\u0941\\u0927 \\u0917\\u0941\\u0930\\u0941 \\u0936\\u0941\\u0915\\u094d\\u0930 \\u0936\\u0928\\u093f".split(" "),STANDALONESHORTWEEKDAYS:"\\u0930\\u0935\\u093f \\u0938\\u094b\\u092e \\u092e\\u0902\\u0917\\u0932 \\u092c\\u0941\\u0927 \\u0917\\u0941\\u0930\\u0941 \\u0936\\u0941\\u0915\\u094d\\u0930 \\u0936\\u0928\\u093f".split(" "),\nNARROWWEEKDAYS:"\\u0930 \\u0938\\u094b \\u092e\\u0902 \\u092c\\u0941 \\u0917\\u0941 \\u0936\\u0941 \\u0936".split(" "),STANDALONENARROWWEEKDAYS:"\\u0930 \\u0938\\u094b \\u092e\\u0902 \\u092c\\u0941 \\u0917\\u0941 \\u0936\\u0941 \\u0936".split(" "),SHORTQUARTERS:["\\u0924\\u093f1","\\u0924\\u093f2","\\u0924\\u093f3","\\u0924\\u093f4"],QUARTERS:["\\u092a\\u0939\\u0932\\u0940 \\u0924\\u093f\\u092e\\u093e\\u0939\\u0940","\\u0926\\u0942\\u0938\\u0930\\u0940 \\u0924\\u093f\\u092e\\u093e\\u0939\\u0940","\\u0924\\u0940\\u0938\\u0930\\u0940 \\u0924\\u093f\\u092e\\u093e\\u0939\\u0940",\n"\\u091a\\u094c\\u0925\\u0940 \\u0924\\u093f\\u092e\\u093e\\u0939\\u0940"],AMPMS:["am","pm"],DATEFORMATS:["EEEE, d MMMM y","d MMMM y","dd/MM/y","d/M/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} \\u0915\\u094b {0}","{1} \\u0915\\u094b {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[6,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_hr={ERAS:["pr. Kr.","p. Kr."],ERANAMES:["prije Krista","poslije Krista"],NARROWMONTHS:"1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.".split(" "),STANDALONENARROWMONTHS:"1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.".split(" "),MONTHS:"sije\\u010dnja velja\\u010de o\\u017eujka travnja svibnja lipnja srpnja kolovoza rujna listopada studenoga prosinca".split(" "),STANDALONEMONTHS:"sije\\u010danj velja\\u010da o\\u017eujak travanj svibanj lipanj srpanj kolovoz rujan listopad studeni prosinac".split(" "),\nSHORTMONTHS:"sij velj o\\u017eu tra svi lip srp kol ruj lis stu pro".split(" "),STANDALONESHORTMONTHS:"sij velj o\\u017eu tra svi lip srp kol ruj lis stu pro".split(" "),WEEKDAYS:"nedjelja ponedjeljak utorak srijeda \\u010detvrtak petak subota".split(" "),STANDALONEWEEKDAYS:"nedjelja ponedjeljak utorak srijeda \\u010detvrtak petak subota".split(" "),SHORTWEEKDAYS:"ned pon uto sri \\u010det pet sub".split(" "),STANDALONESHORTWEEKDAYS:"ned pon uto sri \\u010det pet sub".split(" "),NARROWWEEKDAYS:"NPUS\\u010cPS".split(""),\nSTANDALONENARROWWEEKDAYS:"npus\\u010dps".split(""),SHORTQUARTERS:["1kv","2kv","3kv","4kv"],QUARTERS:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, d. MMMM y.","d. MMMM y.","d. MMM y.","dd.MM.y."],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} \'u\' {0}","{1} \'u\' {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_hu={ERAS:["i. e.","i. sz."],ERANAMES:["id\\u0151sz\\u00e1m\\u00edt\\u00e1sunk el\\u0151tt","id\\u0151sz\\u00e1m\\u00edt\\u00e1sunk szerint"],NARROWMONTHS:"J F M \\u00c1 M J J A Sz O N D".split(" "),STANDALONENARROWMONTHS:"J F M \\u00c1 M J J A Sz O N D".split(" "),MONTHS:"janu\\u00e1r febru\\u00e1r m\\u00e1rcius \\u00e1prilis m\\u00e1jus j\\u00fanius j\\u00falius augusztus szeptember okt\\u00f3ber november december".split(" "),STANDALONEMONTHS:"janu\\u00e1r febru\\u00e1r m\\u00e1rcius \\u00e1prilis m\\u00e1jus j\\u00fanius j\\u00falius augusztus szeptember okt\\u00f3ber november december".split(" "),\nSHORTMONTHS:"jan. febr. m\\u00e1rc. \\u00e1pr. m\\u00e1j. j\\u00fan. j\\u00fal. aug. szept. okt. nov. dec.".split(" "),STANDALONESHORTMONTHS:"jan. febr. m\\u00e1rc. \\u00e1pr. m\\u00e1j. j\\u00fan. j\\u00fal. aug. szept. okt. nov. dec.".split(" "),WEEKDAYS:"vas\\u00e1rnap h\\u00e9tf\\u0151 kedd szerda cs\\u00fct\\u00f6rt\\u00f6k p\\u00e9ntek szombat".split(" "),STANDALONEWEEKDAYS:"vas\\u00e1rnap h\\u00e9tf\\u0151 kedd szerda cs\\u00fct\\u00f6rt\\u00f6k p\\u00e9ntek szombat".split(" "),SHORTWEEKDAYS:"V H K Sze Cs P Szo".split(" "),\nSTANDALONESHORTWEEKDAYS:"V H K Sze Cs P Szo".split(" "),NARROWWEEKDAYS:"V H K Sz Cs P Sz".split(" "),STANDALONENARROWWEEKDAYS:"V H K Sz Cs P Sz".split(" "),SHORTQUARTERS:["N1","N2","N3","N4"],QUARTERS:["I. negyed\\u00e9v","II. negyed\\u00e9v","III. negyed\\u00e9v","IV. negyed\\u00e9v"],AMPMS:["de.","du."],DATEFORMATS:["y. MMMM d., EEEE","y. MMMM d.","y. MMM d.","y. MM. dd."],TIMEFORMATS:["H:mm:ss zzzz","H:mm:ss z","H:mm:ss","H:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,\nWEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_hy={ERAS:["\\u0574.\\u0569.\\u0561.","\\u0574.\\u0569."],ERANAMES:["\\u0574.\\u0569.\\u0561.","\\u0574.\\u0569."],NARROWMONTHS:"\\u0540\\u0553\\u0544\\u0531\\u0544\\u0540\\u0540\\u0555\\u054d\\u0540\\u0546\\u0534".split(""),STANDALONENARROWMONTHS:"\\u0540\\u0553\\u0544\\u0531\\u0544\\u0540\\u0540\\u0555\\u054d\\u0540\\u0546\\u0534".split(""),MONTHS:"\\u0570\\u0578\\u0582\\u0576\\u057e\\u0561\\u0580\\u056b \\u0583\\u0565\\u057f\\u0580\\u057e\\u0561\\u0580\\u056b \\u0574\\u0561\\u0580\\u057f\\u056b \\u0561\\u057a\\u0580\\u056b\\u056c\\u056b \\u0574\\u0561\\u0575\\u056b\\u057d\\u056b \\u0570\\u0578\\u0582\\u0576\\u056b\\u057d\\u056b \\u0570\\u0578\\u0582\\u056c\\u056b\\u057d\\u056b \\u0585\\u0563\\u0578\\u057d\\u057f\\u0578\\u057d\\u056b \\u057d\\u0565\\u057a\\u057f\\u0565\\u0574\\u0562\\u0565\\u0580\\u056b \\u0570\\u0578\\u056f\\u057f\\u0565\\u0574\\u0562\\u0565\\u0580\\u056b \\u0576\\u0578\\u0575\\u0565\\u0574\\u0562\\u0565\\u0580\\u056b \\u0564\\u0565\\u056f\\u057f\\u0565\\u0574\\u0562\\u0565\\u0580\\u056b".split(" "),STANDALONEMONTHS:"\\u0570\\u0578\\u0582\\u0576\\u057e\\u0561\\u0580 \\u0583\\u0565\\u057f\\u0580\\u057e\\u0561\\u0580 \\u0574\\u0561\\u0580\\u057f \\u0561\\u057a\\u0580\\u056b\\u056c \\u0574\\u0561\\u0575\\u056b\\u057d \\u0570\\u0578\\u0582\\u0576\\u056b\\u057d \\u0570\\u0578\\u0582\\u056c\\u056b\\u057d \\u0585\\u0563\\u0578\\u057d\\u057f\\u0578\\u057d \\u057d\\u0565\\u057a\\u057f\\u0565\\u0574\\u0562\\u0565\\u0580 \\u0570\\u0578\\u056f\\u057f\\u0565\\u0574\\u0562\\u0565\\u0580 \\u0576\\u0578\\u0575\\u0565\\u0574\\u0562\\u0565\\u0580 \\u0564\\u0565\\u056f\\u057f\\u0565\\u0574\\u0562\\u0565\\u0580".split(" "),\nSHORTMONTHS:"\\u0570\\u0576\\u057e \\u0583\\u057f\\u057e \\u0574\\u0580\\u057f \\u0561\\u057a\\u0580 \\u0574\\u0575\\u057d \\u0570\\u0576\\u057d \\u0570\\u056c\\u057d \\u0585\\u0563\\u057d \\u057d\\u0565\\u057a \\u0570\\u0578\\u056f \\u0576\\u0578\\u0575 \\u0564\\u0565\\u056f".split(" "),STANDALONESHORTMONTHS:"\\u0570\\u0576\\u057e \\u0583\\u057f\\u057e \\u0574\\u0580\\u057f \\u0561\\u057a\\u0580 \\u0574\\u0575\\u057d \\u0570\\u0576\\u057d \\u0570\\u056c\\u057d \\u0585\\u0563\\u057d \\u057d\\u0565\\u057a \\u0570\\u0578\\u056f \\u0576\\u0578\\u0575 \\u0564\\u0565\\u056f".split(" "),\nWEEKDAYS:"\\u056f\\u056b\\u0580\\u0561\\u056f\\u056b \\u0565\\u0580\\u056f\\u0578\\u0582\\u0577\\u0561\\u0562\\u0569\\u056b \\u0565\\u0580\\u0565\\u0584\\u0577\\u0561\\u0562\\u0569\\u056b \\u0579\\u0578\\u0580\\u0565\\u0584\\u0577\\u0561\\u0562\\u0569\\u056b \\u0570\\u056b\\u0576\\u0563\\u0577\\u0561\\u0562\\u0569\\u056b \\u0578\\u0582\\u0580\\u0562\\u0561\\u0569 \\u0577\\u0561\\u0562\\u0561\\u0569".split(" "),STANDALONEWEEKDAYS:"\\u056f\\u056b\\u0580\\u0561\\u056f\\u056b \\u0565\\u0580\\u056f\\u0578\\u0582\\u0577\\u0561\\u0562\\u0569\\u056b \\u0565\\u0580\\u0565\\u0584\\u0577\\u0561\\u0562\\u0569\\u056b \\u0579\\u0578\\u0580\\u0565\\u0584\\u0577\\u0561\\u0562\\u0569\\u056b \\u0570\\u056b\\u0576\\u0563\\u0577\\u0561\\u0562\\u0569\\u056b \\u0578\\u0582\\u0580\\u0562\\u0561\\u0569 \\u0577\\u0561\\u0562\\u0561\\u0569".split(" "),\nSHORTWEEKDAYS:"\\u056f\\u056b\\u0580 \\u0565\\u0580\\u056f \\u0565\\u0580\\u0584 \\u0579\\u0580\\u0584 \\u0570\\u0576\\u0563 \\u0578\\u0582\\u0580 \\u0577\\u0562\\u0569".split(" "),STANDALONESHORTWEEKDAYS:"\\u056f\\u056b\\u0580 \\u0565\\u0580\\u056f \\u0565\\u0580\\u0584 \\u0579\\u0580\\u0584 \\u0570\\u0576\\u0563 \\u0578\\u0582\\u0580 \\u0577\\u0562\\u0569".split(" "),NARROWWEEKDAYS:"\\u053f \\u0535 \\u0535 \\u0549 \\u0540 \\u0548\\u0582 \\u0547".split(" "),STANDALONENARROWWEEKDAYS:"\\u053f\\u0580 \\u0535\\u056f \\u0535\\u0580 \\u0549\\u0580 \\u0540\\u0563 \\u0548\\u0582 \\u0547\\u0562".split(" "),\nSHORTQUARTERS:["1-\\u056b\\u0576 \\u0565\\u057c\\u0574\\u057d.","2-\\u0580\\u0564 \\u0565\\u057c\\u0574\\u057d.","3-\\u0580\\u0564 \\u0565\\u057c\\u0574\\u057d.","4-\\u0580\\u0564 \\u0565\\u057c\\u0574\\u057d."],QUARTERS:["1-\\u056b\\u0576 \\u0565\\u057c\\u0561\\u0574\\u057d\\u0575\\u0561\\u056f","2-\\u0580\\u0564 \\u0565\\u057c\\u0561\\u0574\\u057d\\u0575\\u0561\\u056f","3-\\u0580\\u0564 \\u0565\\u057c\\u0561\\u0574\\u057d\\u0575\\u0561\\u056f","4-\\u0580\\u0564 \\u0565\\u057c\\u0561\\u0574\\u057d\\u0575\\u0561\\u056f"],AMPMS:["AM","PM"],DATEFORMATS:["y\\u0569. MMMM d, EEEE",\n"dd MMMM, y\\u0569.","dd MMM, y\\u0569.","dd.MM.yy"],TIMEFORMATS:["H:mm:ss, zzzz","H:mm:ss, z","H:mm:ss","H:mm"],DATETIMEFORMATS:["{1}, {0}","{1}, {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_id={ERAS:["SM","M"],ERANAMES:["Sebelum Masehi","M"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"Januari Februari Maret April Mei Juni Juli Agustus September Oktober November Desember".split(" "),STANDALONEMONTHS:"Januari Februari Maret April Mei Juni Juli Agustus September Oktober November Desember".split(" "),SHORTMONTHS:"Jan Feb Mar Apr Mei Jun Jul Agt Sep Okt Nov Des".split(" "),STANDALONESHORTMONTHS:"Jan Feb Mar Apr Mei Jun Jul Agt Sep Okt Nov Des".split(" "),\nWEEKDAYS:"Minggu Senin Selasa Rabu Kamis Jumat Sabtu".split(" "),STANDALONEWEEKDAYS:"Minggu Senin Selasa Rabu Kamis Jumat Sabtu".split(" "),SHORTWEEKDAYS:"Min Sen Sel Rab Kam Jum Sab".split(" "),STANDALONESHORTWEEKDAYS:"Min Sen Sel Rab Kam Jum Sab".split(" "),NARROWWEEKDAYS:"MSSRKJS".split(""),STANDALONENARROWWEEKDAYS:"MSSRKJS".split(""),SHORTQUARTERS:["K1","K2","K3","K4"],QUARTERS:["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, dd MMMM y","d MMMM y",\n"d MMM y","dd/MM/yy"],TIMEFORMATS:["HH.mm.ss zzzz","HH.mm.ss z","HH.mm.ss","HH.mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_in={ERAS:["SM","M"],ERANAMES:["Sebelum Masehi","M"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"Januari Februari Maret April Mei Juni Juli Agustus September Oktober November Desember".split(" "),STANDALONEMONTHS:"Januari Februari Maret April Mei Juni Juli Agustus September Oktober November Desember".split(" "),SHORTMONTHS:"Jan Feb Mar Apr Mei Jun Jul Agt Sep Okt Nov Des".split(" "),STANDALONESHORTMONTHS:"Jan Feb Mar Apr Mei Jun Jul Agt Sep Okt Nov Des".split(" "),\nWEEKDAYS:"Minggu Senin Selasa Rabu Kamis Jumat Sabtu".split(" "),STANDALONEWEEKDAYS:"Minggu Senin Selasa Rabu Kamis Jumat Sabtu".split(" "),SHORTWEEKDAYS:"Min Sen Sel Rab Kam Jum Sab".split(" "),STANDALONESHORTWEEKDAYS:"Min Sen Sel Rab Kam Jum Sab".split(" "),NARROWWEEKDAYS:"MSSRKJS".split(""),STANDALONENARROWWEEKDAYS:"MSSRKJS".split(""),SHORTQUARTERS:["K1","K2","K3","K4"],QUARTERS:["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, dd MMMM y","d MMMM y",\n"d MMM y","dd/MM/yy"],TIMEFORMATS:["HH.mm.ss zzzz","HH.mm.ss z","HH.mm.ss","HH.mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_is={ERAS:["f.Kr.","e.Kr."],ERANAMES:["fyrir Krist","eftir Krist"],NARROWMONTHS:"JFMAMJJ\\u00c1SOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJ\\u00c1SOND".split(""),MONTHS:"jan\\u00faar febr\\u00faar mars apr\\u00edl ma\\u00ed j\\u00fan\\u00ed j\\u00fal\\u00ed \\u00e1g\\u00fast september okt\\u00f3ber n\\u00f3vember desember".split(" "),STANDALONEMONTHS:"jan\\u00faar febr\\u00faar mars apr\\u00edl ma\\u00ed j\\u00fan\\u00ed j\\u00fal\\u00ed \\u00e1g\\u00fast september okt\\u00f3ber n\\u00f3vember desember".split(" "),\nSHORTMONTHS:"jan. feb. mar. apr. ma\\u00ed j\\u00fan. j\\u00fal. \\u00e1g\\u00fa. sep. okt. n\\u00f3v. des.".split(" "),STANDALONESHORTMONTHS:"jan. feb. mar. apr. ma\\u00ed j\\u00fan. j\\u00fal. \\u00e1g\\u00fa. sep. okt. n\\u00f3v. des.".split(" "),WEEKDAYS:"sunnudagur m\\u00e1nudagur \\u00feri\\u00f0judagur mi\\u00f0vikudagur fimmtudagur f\\u00f6studagur laugardagur".split(" "),STANDALONEWEEKDAYS:"sunnudagur m\\u00e1nudagur \\u00feri\\u00f0judagur mi\\u00f0vikudagur fimmtudagur f\\u00f6studagur laugardagur".split(" "),\nSHORTWEEKDAYS:"sun. m\\u00e1n. \\u00feri. mi\\u00f0. fim. f\\u00f6s. lau.".split(" "),STANDALONESHORTWEEKDAYS:"sun. m\\u00e1n. \\u00feri. mi\\u00f0. fim. f\\u00f6s. lau.".split(" "),NARROWWEEKDAYS:"SM\\u00deMFFL".split(""),STANDALONENARROWWEEKDAYS:"SM\\u00deMFFL".split(""),SHORTQUARTERS:["F1","F2","F3","F4"],QUARTERS:["1. fj\\u00f3r\\u00f0ungur","2. fj\\u00f3r\\u00f0ungur","3. fj\\u00f3r\\u00f0ungur","4. fj\\u00f3r\\u00f0ungur"],AMPMS:["f.h.","e.h."],DATEFORMATS:["EEEE, d. MMMM y","d. MMMM y","d. MMM y","d.M.y"],TIMEFORMATS:["HH:mm:ss zzzz",\n"HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} \'kl\'. {0}","{1} \'kl\'. {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_it={ERAS:["a.C.","d.C."],ERANAMES:["a.C.","d.C."],NARROWMONTHS:"GFMAMGLASOND".split(""),STANDALONENARROWMONTHS:"GFMAMGLASOND".split(""),MONTHS:"gennaio febbraio marzo aprile maggio giugno luglio agosto settembre ottobre novembre dicembre".split(" "),STANDALONEMONTHS:"Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre Novembre Dicembre".split(" "),SHORTMONTHS:"gen feb mar apr mag giu lug ago set ott nov dic".split(" "),STANDALONESHORTMONTHS:"gen feb mar apr mag giu lug ago set ott nov dic".split(" "),\nWEEKDAYS:"domenica luned\\u00ec marted\\u00ec mercoled\\u00ec gioved\\u00ec venerd\\u00ec sabato".split(" "),STANDALONEWEEKDAYS:"Domenica Luned\\u00ec Marted\\u00ec Mercoled\\u00ec Gioved\\u00ec Venerd\\u00ec Sabato".split(" "),SHORTWEEKDAYS:"dom lun mar mer gio ven sab".split(" "),STANDALONESHORTWEEKDAYS:"dom lun mar mer gio ven sab".split(" "),NARROWWEEKDAYS:"DLMMGVS".split(""),STANDALONENARROWWEEKDAYS:"DLMMGVS".split(""),SHORTQUARTERS:["T1","T2","T3","T4"],QUARTERS:["1\\u00ba trimestre","2\\u00ba trimestre",\n"3\\u00ba trimestre","4\\u00ba trimestre"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE d MMMM y","d MMMM y","dd MMM y","dd/MM/yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_iw={ERAS:["\\u05dc\\u05e4\\u05e0\\u05d4\\u05f4\\u05e1","\\u05dc\\u05e1\\u05e4\\u05d9\\u05e8\\u05d4"],ERANAMES:["\\u05dc\\u05e4\\u05e0\\u05d9 \\u05d4\\u05e1\\u05e4\\u05d9\\u05e8\\u05d4","\\u05dc\\u05e1\\u05e4\\u05d9\\u05e8\\u05d4"],NARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),STANDALONENARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),MONTHS:"\\u05d9\\u05e0\\u05d5\\u05d0\\u05e8 \\u05e4\\u05d1\\u05e8\\u05d5\\u05d0\\u05e8 \\u05de\\u05e8\\u05e5 \\u05d0\\u05e4\\u05e8\\u05d9\\u05dc \\u05de\\u05d0\\u05d9 \\u05d9\\u05d5\\u05e0\\u05d9 \\u05d9\\u05d5\\u05dc\\u05d9 \\u05d0\\u05d5\\u05d2\\u05d5\\u05e1\\u05d8 \\u05e1\\u05e4\\u05d8\\u05de\\u05d1\\u05e8 \\u05d0\\u05d5\\u05e7\\u05d8\\u05d5\\u05d1\\u05e8 \\u05e0\\u05d5\\u05d1\\u05de\\u05d1\\u05e8 \\u05d3\\u05e6\\u05de\\u05d1\\u05e8".split(" "),\nSTANDALONEMONTHS:"\\u05d9\\u05e0\\u05d5\\u05d0\\u05e8 \\u05e4\\u05d1\\u05e8\\u05d5\\u05d0\\u05e8 \\u05de\\u05e8\\u05e5 \\u05d0\\u05e4\\u05e8\\u05d9\\u05dc \\u05de\\u05d0\\u05d9 \\u05d9\\u05d5\\u05e0\\u05d9 \\u05d9\\u05d5\\u05dc\\u05d9 \\u05d0\\u05d5\\u05d2\\u05d5\\u05e1\\u05d8 \\u05e1\\u05e4\\u05d8\\u05de\\u05d1\\u05e8 \\u05d0\\u05d5\\u05e7\\u05d8\\u05d5\\u05d1\\u05e8 \\u05e0\\u05d5\\u05d1\\u05de\\u05d1\\u05e8 \\u05d3\\u05e6\\u05de\\u05d1\\u05e8".split(" "),SHORTMONTHS:"\\u05d9\\u05e0\\u05d5\\u05f3 \\u05e4\\u05d1\\u05e8\\u05f3 \\u05de\\u05e8\\u05e5 \\u05d0\\u05e4\\u05e8\\u05f3 \\u05de\\u05d0\\u05d9 \\u05d9\\u05d5\\u05e0\\u05d9 \\u05d9\\u05d5\\u05dc\\u05d9 \\u05d0\\u05d5\\u05d2\\u05f3 \\u05e1\\u05e4\\u05d8\\u05f3 \\u05d0\\u05d5\\u05e7\\u05f3 \\u05e0\\u05d5\\u05d1\\u05f3 \\u05d3\\u05e6\\u05de\\u05f3".split(" "),\nSTANDALONESHORTMONTHS:"\\u05d9\\u05e0\\u05d5\\u05f3 \\u05e4\\u05d1\\u05e8\\u05f3 \\u05de\\u05e8\\u05e5 \\u05d0\\u05e4\\u05e8\\u05f3 \\u05de\\u05d0\\u05d9 \\u05d9\\u05d5\\u05e0\\u05d9 \\u05d9\\u05d5\\u05dc\\u05d9 \\u05d0\\u05d5\\u05d2\\u05f3 \\u05e1\\u05e4\\u05d8\\u05f3 \\u05d0\\u05d5\\u05e7\\u05f3 \\u05e0\\u05d5\\u05d1\\u05f3 \\u05d3\\u05e6\\u05de\\u05f3".split(" "),WEEKDAYS:"\\u05d9\\u05d5\\u05dd \\u05e8\\u05d0\\u05e9\\u05d5\\u05df;\\u05d9\\u05d5\\u05dd \\u05e9\\u05e0\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e9\\u05dc\\u05d9\\u05e9\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e8\\u05d1\\u05d9\\u05e2\\u05d9;\\u05d9\\u05d5\\u05dd \\u05d7\\u05de\\u05d9\\u05e9\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e9\\u05d9\\u05e9\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e9\\u05d1\\u05ea".split(";"),\nSTANDALONEWEEKDAYS:"\\u05d9\\u05d5\\u05dd \\u05e8\\u05d0\\u05e9\\u05d5\\u05df;\\u05d9\\u05d5\\u05dd \\u05e9\\u05e0\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e9\\u05dc\\u05d9\\u05e9\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e8\\u05d1\\u05d9\\u05e2\\u05d9;\\u05d9\\u05d5\\u05dd \\u05d7\\u05de\\u05d9\\u05e9\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e9\\u05d9\\u05e9\\u05d9;\\u05d9\\u05d5\\u05dd \\u05e9\\u05d1\\u05ea".split(";"),SHORTWEEKDAYS:"\\u05d9\\u05d5\\u05dd \\u05d0\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d1\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d2\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d3\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d4\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d5\\u05f3;\\u05e9\\u05d1\\u05ea".split(";"),\nSTANDALONESHORTWEEKDAYS:"\\u05d9\\u05d5\\u05dd \\u05d0\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d1\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d2\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d3\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d4\\u05f3;\\u05d9\\u05d5\\u05dd \\u05d5\\u05f3;\\u05e9\\u05d1\\u05ea".split(";"),NARROWWEEKDAYS:"\\u05d0\\u05f3 \\u05d1\\u05f3 \\u05d2\\u05f3 \\u05d3\\u05f3 \\u05d4\\u05f3 \\u05d5\\u05f3 \\u05e9\\u05f3".split(" "),STANDALONENARROWWEEKDAYS:"\\u05d0\\u05f3 \\u05d1\\u05f3 \\u05d2\\u05f3 \\u05d3\\u05f3 \\u05d4\\u05f3 \\u05d5\\u05f3 \\u05e9\\u05f3".split(" "),SHORTQUARTERS:["\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 1",\n"\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 2","\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 3","\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 4"],QUARTERS:["\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 1","\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 2","\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 3","\\u05e8\\u05d1\\u05e2\\u05d5\\u05df 4"],AMPMS:["\\u05dc\\u05e4\\u05e0\\u05d4\\u05f4\\u05e6","\\u05d0\\u05d7\\u05d4\\u05f4\\u05e6"],DATEFORMATS:["EEEE, d \\u05d1MMMM y","d \\u05d1MMMM y","d \\u05d1MMM y","d.M.y"],TIMEFORMATS:["H:mm:ss zzzz","H:mm:ss z","H:mm:ss","H:mm"],DATETIMEFORMATS:["{1} \\u05d1\\u05e9\\u05e2\\u05d4 {0}",\n"{1} \\u05d1\\u05e9\\u05e2\\u05d4 {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[4,5],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_ja={ERAS:["\\u7d00\\u5143\\u524d","\\u897f\\u66a6"],ERANAMES:["\\u7d00\\u5143\\u524d","\\u897f\\u66a6"],NARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),STANDALONENARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),MONTHS:"1\\u6708 2\\u6708 3\\u6708 4\\u6708 5\\u6708 6\\u6708 7\\u6708 8\\u6708 9\\u6708 10\\u6708 11\\u6708 12\\u6708".split(" "),STANDALONEMONTHS:"1\\u6708 2\\u6708 3\\u6708 4\\u6708 5\\u6708 6\\u6708 7\\u6708 8\\u6708 9\\u6708 10\\u6708 11\\u6708 12\\u6708".split(" "),SHORTMONTHS:"1\\u6708 2\\u6708 3\\u6708 4\\u6708 5\\u6708 6\\u6708 7\\u6708 8\\u6708 9\\u6708 10\\u6708 11\\u6708 12\\u6708".split(" "),\nSTANDALONESHORTMONTHS:"1\\u6708 2\\u6708 3\\u6708 4\\u6708 5\\u6708 6\\u6708 7\\u6708 8\\u6708 9\\u6708 10\\u6708 11\\u6708 12\\u6708".split(" "),WEEKDAYS:"\\u65e5\\u66dc\\u65e5 \\u6708\\u66dc\\u65e5 \\u706b\\u66dc\\u65e5 \\u6c34\\u66dc\\u65e5 \\u6728\\u66dc\\u65e5 \\u91d1\\u66dc\\u65e5 \\u571f\\u66dc\\u65e5".split(" "),STANDALONEWEEKDAYS:"\\u65e5\\u66dc\\u65e5 \\u6708\\u66dc\\u65e5 \\u706b\\u66dc\\u65e5 \\u6c34\\u66dc\\u65e5 \\u6728\\u66dc\\u65e5 \\u91d1\\u66dc\\u65e5 \\u571f\\u66dc\\u65e5".split(" "),SHORTWEEKDAYS:"\\u65e5\\u6708\\u706b\\u6c34\\u6728\\u91d1\\u571f".split(""),\nSTANDALONESHORTWEEKDAYS:"\\u65e5\\u6708\\u706b\\u6c34\\u6728\\u91d1\\u571f".split(""),NARROWWEEKDAYS:"\\u65e5\\u6708\\u706b\\u6c34\\u6728\\u91d1\\u571f".split(""),STANDALONENARROWWEEKDAYS:"\\u65e5\\u6708\\u706b\\u6c34\\u6728\\u91d1\\u571f".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["\\u7b2c1\\u56db\\u534a\\u671f","\\u7b2c2\\u56db\\u534a\\u671f","\\u7b2c3\\u56db\\u534a\\u671f","\\u7b2c4\\u56db\\u534a\\u671f"],AMPMS:["\\u5348\\u524d","\\u5348\\u5f8c"],DATEFORMATS:["y\\u5e74M\\u6708d\\u65e5EEEE","y\\u5e74M\\u6708d\\u65e5","y/MM/dd",\n"y/MM/dd"],TIMEFORMATS:["H\\u6642mm\\u5206ss\\u79d2 zzzz","H:mm:ss z","H:mm:ss","H:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_ka={ERAS:["\\u10eb\\u10d5. \\u10ec.","\\u10d0\\u10ee. \\u10ec."],ERANAMES:["\\u10eb\\u10d5\\u10d4\\u10da\\u10d8 \\u10ec\\u10d4\\u10da\\u10d7\\u10d0\\u10e6\\u10e0\\u10d8\\u10ea\\u10ee\\u10d5\\u10d8\\u10d7","\\u10d0\\u10ee\\u10d0\\u10da\\u10d8 \\u10ec\\u10d4\\u10da\\u10d7\\u10d0\\u10e6\\u10e0\\u10d8\\u10ea\\u10ee\\u10d5\\u10d8\\u10d7"],NARROWMONTHS:"\\u10d8\\u10d7\\u10db\\u10d0\\u10db\\u10d8\\u10d8\\u10d0\\u10e1\\u10dd\\u10dc\\u10d3".split(""),STANDALONENARROWMONTHS:"\\u10d8\\u10d7\\u10db\\u10d0\\u10db\\u10d8\\u10d8\\u10d0\\u10e1\\u10dd\\u10dc\\u10d3".split(""),\nMONTHS:"\\u10d8\\u10d0\\u10dc\\u10d5\\u10d0\\u10e0\\u10d8 \\u10d7\\u10d4\\u10d1\\u10d4\\u10e0\\u10d5\\u10d0\\u10da\\u10d8 \\u10db\\u10d0\\u10e0\\u10e2\\u10d8 \\u10d0\\u10de\\u10e0\\u10d8\\u10da\\u10d8 \\u10db\\u10d0\\u10d8\\u10e1\\u10d8 \\u10d8\\u10d5\\u10dc\\u10d8\\u10e1\\u10d8 \\u10d8\\u10d5\\u10da\\u10d8\\u10e1\\u10d8 \\u10d0\\u10d2\\u10d5\\u10d8\\u10e1\\u10e2\\u10dd \\u10e1\\u10d4\\u10e5\\u10e2\\u10d4\\u10db\\u10d1\\u10d4\\u10e0\\u10d8 \\u10dd\\u10e5\\u10e2\\u10dd\\u10db\\u10d1\\u10d4\\u10e0\\u10d8 \\u10dc\\u10dd\\u10d4\\u10db\\u10d1\\u10d4\\u10e0\\u10d8 \\u10d3\\u10d4\\u10d9\\u10d4\\u10db\\u10d1\\u10d4\\u10e0\\u10d8".split(" "),\nSTANDALONEMONTHS:"\\u10d8\\u10d0\\u10dc\\u10d5\\u10d0\\u10e0\\u10d8 \\u10d7\\u10d4\\u10d1\\u10d4\\u10e0\\u10d5\\u10d0\\u10da\\u10d8 \\u10db\\u10d0\\u10e0\\u10e2\\u10d8 \\u10d0\\u10de\\u10e0\\u10d8\\u10da\\u10d8 \\u10db\\u10d0\\u10d8\\u10e1\\u10d8 \\u10d8\\u10d5\\u10dc\\u10d8\\u10e1\\u10d8 \\u10d8\\u10d5\\u10da\\u10d8\\u10e1\\u10d8 \\u10d0\\u10d2\\u10d5\\u10d8\\u10e1\\u10e2\\u10dd \\u10e1\\u10d4\\u10e5\\u10e2\\u10d4\\u10db\\u10d1\\u10d4\\u10e0\\u10d8 \\u10dd\\u10e5\\u10e2\\u10dd\\u10db\\u10d1\\u10d4\\u10e0\\u10d8 \\u10dc\\u10dd\\u10d4\\u10db\\u10d1\\u10d4\\u10e0\\u10d8 \\u10d3\\u10d4\\u10d9\\u10d4\\u10db\\u10d1\\u10d4\\u10e0\\u10d8".split(" "),\nSHORTMONTHS:"\\u10d8\\u10d0\\u10dc \\u10d7\\u10d4\\u10d1 \\u10db\\u10d0\\u10e0 \\u10d0\\u10de\\u10e0 \\u10db\\u10d0\\u10d8 \\u10d8\\u10d5\\u10dc \\u10d8\\u10d5\\u10da \\u10d0\\u10d2\\u10d5 \\u10e1\\u10d4\\u10e5 \\u10dd\\u10e5\\u10e2 \\u10dc\\u10dd\\u10d4 \\u10d3\\u10d4\\u10d9".split(" "),STANDALONESHORTMONTHS:"\\u10d8\\u10d0\\u10dc \\u10d7\\u10d4\\u10d1 \\u10db\\u10d0\\u10e0 \\u10d0\\u10de\\u10e0 \\u10db\\u10d0\\u10d8 \\u10d8\\u10d5\\u10dc \\u10d8\\u10d5\\u10da \\u10d0\\u10d2\\u10d5 \\u10e1\\u10d4\\u10e5 \\u10dd\\u10e5\\u10e2 \\u10dc\\u10dd\\u10d4 \\u10d3\\u10d4\\u10d9".split(" "),\nWEEKDAYS:"\\u10d9\\u10d5\\u10d8\\u10e0\\u10d0 \\u10dd\\u10e0\\u10e8\\u10d0\\u10d1\\u10d0\\u10d7\\u10d8 \\u10e1\\u10d0\\u10db\\u10e8\\u10d0\\u10d1\\u10d0\\u10d7\\u10d8 \\u10dd\\u10d7\\u10ee\\u10e8\\u10d0\\u10d1\\u10d0\\u10d7\\u10d8 \\u10ee\\u10e3\\u10d7\\u10e8\\u10d0\\u10d1\\u10d0\\u10d7\\u10d8 \\u10de\\u10d0\\u10e0\\u10d0\\u10e1\\u10d9\\u10d4\\u10d5\\u10d8 \\u10e8\\u10d0\\u10d1\\u10d0\\u10d7\\u10d8".split(" "),STANDALONEWEEKDAYS:"\\u10d9\\u10d5\\u10d8\\u10e0\\u10d0 \\u10dd\\u10e0\\u10e8\\u10d0\\u10d1\\u10d0\\u10d7\\u10d8 \\u10e1\\u10d0\\u10db\\u10e8\\u10d0\\u10d1\\u10d0\\u10d7\\u10d8 \\u10dd\\u10d7\\u10ee\\u10e8\\u10d0\\u10d1\\u10d0\\u10d7\\u10d8 \\u10ee\\u10e3\\u10d7\\u10e8\\u10d0\\u10d1\\u10d0\\u10d7\\u10d8 \\u10de\\u10d0\\u10e0\\u10d0\\u10e1\\u10d9\\u10d4\\u10d5\\u10d8 \\u10e8\\u10d0\\u10d1\\u10d0\\u10d7\\u10d8".split(" "),\nSHORTWEEKDAYS:"\\u10d9\\u10d5\\u10d8 \\u10dd\\u10e0\\u10e8 \\u10e1\\u10d0\\u10db \\u10dd\\u10d7\\u10ee \\u10ee\\u10e3\\u10d7 \\u10de\\u10d0\\u10e0 \\u10e8\\u10d0\\u10d1".split(" "),STANDALONESHORTWEEKDAYS:"\\u10d9\\u10d5\\u10d8 \\u10dd\\u10e0\\u10e8 \\u10e1\\u10d0\\u10db \\u10dd\\u10d7\\u10ee \\u10ee\\u10e3\\u10d7 \\u10de\\u10d0\\u10e0 \\u10e8\\u10d0\\u10d1".split(" "),NARROWWEEKDAYS:"\\u10d9\\u10dd\\u10e1\\u10dd\\u10ee\\u10de\\u10e8".split(""),STANDALONENARROWWEEKDAYS:"\\u10d9\\u10dd\\u10e1\\u10dd\\u10ee\\u10de\\u10e8".split(""),SHORTQUARTERS:["I \\u10d9\\u10d5.",\n"II \\u10d9\\u10d5.","III \\u10d9\\u10d5.","IV \\u10d9\\u10d5."],QUARTERS:["I \\u10d9\\u10d5\\u10d0\\u10e0\\u10e2\\u10d0\\u10da\\u10d8","II \\u10d9\\u10d5\\u10d0\\u10e0\\u10e2\\u10d0\\u10da\\u10d8","III \\u10d9\\u10d5\\u10d0\\u10e0\\u10e2\\u10d0\\u10da\\u10d8","IV \\u10d9\\u10d5\\u10d0\\u10e0\\u10e2\\u10d0\\u10da\\u10d8"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, dd MMMM, y","d MMMM, y","d MMM. y","dd.MM.yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1}, {0}","{1}, {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,\nWEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_kk={ERAS:["\\u0431.\\u0437.\\u0434.","\\u0431.\\u0437."],ERANAMES:["\\u0411\\u0456\\u0437\\u0434\\u0456\\u04a3 \\u0437\\u0430\\u043c\\u0430\\u043d\\u044b\\u043c\\u044b\\u0437\\u0493\\u0430 \\u0434\\u0435\\u0439\\u0456\\u043d","\\u0411\\u0456\\u0437\\u0434\\u0456\\u04a3 \\u0437\\u0430\\u043c\\u0430\\u043d\\u044b\\u043c\\u044b\\u0437"],NARROWMONTHS:"\\u049a\\u0410\\u041d\\u0421\\u041c\\u041c\\u0428\\u0422\\u049a\\u049a\\u049a\\u0416".split(""),STANDALONENARROWMONTHS:"\\u049a\\u0410\\u041d\\u0421\\u041c\\u041c\\u0428\\u0422\\u049a\\u049a\\u049a\\u0416".split(""),MONTHS:"\\u049b\\u0430\\u04a3\\u0442\\u0430\\u0440 \\u0430\\u049b\\u043f\\u0430\\u043d \\u043d\\u0430\\u0443\\u0440\\u044b\\u0437 \\u0441\\u04d9\\u0443\\u0456\\u0440 \\u043c\\u0430\\u043c\\u044b\\u0440 \\u043c\\u0430\\u0443\\u0441\\u044b\\u043c \\u0448\\u0456\\u043b\\u0434\\u0435 \\u0442\\u0430\\u043c\\u044b\\u0437 \\u049b\\u044b\\u0440\\u043a\\u04af\\u0439\\u0435\\u043a \\u049b\\u0430\\u0437\\u0430\\u043d \\u049b\\u0430\\u0440\\u0430\\u0448\\u0430 \\u0436\\u0435\\u043b\\u0442\\u043e\\u049b\\u0441\\u0430\\u043d".split(" "),\nSTANDALONEMONTHS:"\\u049a\\u0430\\u04a3\\u0442\\u0430\\u0440 \\u0410\\u049b\\u043f\\u0430\\u043d \\u041d\\u0430\\u0443\\u0440\\u044b\\u0437 \\u0421\\u04d9\\u0443\\u0456\\u0440 \\u041c\\u0430\\u043c\\u044b\\u0440 \\u041c\\u0430\\u0443\\u0441\\u044b\\u043c \\u0428\\u0456\\u043b\\u0434\\u0435 \\u0422\\u0430\\u043c\\u044b\\u0437 \\u049a\\u044b\\u0440\\u043a\\u04af\\u0439\\u0435\\u043a \\u049a\\u0430\\u0437\\u0430\\u043d \\u049a\\u0430\\u0440\\u0430\\u0448\\u0430 \\u0416\\u0435\\u043b\\u0442\\u043e\\u049b\\u0441\\u0430\\u043d".split(" "),SHORTMONTHS:"\\u049b\\u0430\\u04a3. \\u0430\\u049b\\u043f. \\u043d\\u0430\\u0443. \\u0441\\u04d9\\u0443. \\u043c\\u0430\\u043c. \\u043c\\u0430\\u0443. \\u0448\\u0456\\u043b. \\u0442\\u0430\\u043c. \\u049b\\u044b\\u0440. \\u049b\\u0430\\u0437. \\u049b\\u0430\\u0440. \\u0436\\u0435\\u043b.".split(" "),\nSTANDALONESHORTMONTHS:"\\u049a\\u0430\\u04a3. \\u0410\\u049b\\u043f. \\u041d\\u0430\\u0443. \\u0421\\u04d9\\u0443. \\u041c\\u0430\\u043c. \\u041c\\u0430\\u0443. \\u0428\\u0456\\u043b. \\u0422\\u0430\\u043c. \\u049a\\u044b\\u0440. \\u049a\\u0430\\u0437. \\u049a\\u0430\\u0440. \\u0416\\u0435\\u043b.".split(" "),WEEKDAYS:"\\u0436\\u0435\\u043a\\u0441\\u0435\\u043d\\u0431\\u0456 \\u0434\\u04af\\u0439\\u0441\\u0435\\u043d\\u0431\\u0456 \\u0441\\u0435\\u0439\\u0441\\u0435\\u043d\\u0431\\u0456 \\u0441\\u04d9\\u0440\\u0441\\u0435\\u043d\\u0431\\u0456 \\u0431\\u0435\\u0439\\u0441\\u0435\\u043d\\u0431\\u0456 \\u0436\\u04b1\\u043c\\u0430 \\u0441\\u0435\\u043d\\u0431\\u0456".split(" "),\nSTANDALONEWEEKDAYS:"\\u0416\\u0435\\u043a\\u0441\\u0435\\u043d\\u0431\\u0456 \\u0414\\u04af\\u0439\\u0441\\u0435\\u043d\\u0431\\u0456 \\u0421\\u0435\\u0439\\u0441\\u0435\\u043d\\u0431\\u0456 \\u0421\\u04d9\\u0440\\u0441\\u0435\\u043d\\u0431\\u0456 \\u0411\\u0435\\u0439\\u0441\\u0435\\u043d\\u0431\\u0456 \\u0416\\u04b1\\u043c\\u0430 \\u0421\\u0435\\u043d\\u0431\\u0456".split(" "),SHORTWEEKDAYS:"\\u0416\\u0441 \\u0414\\u0441 \\u0421\\u0441 \\u0421\\u0440 \\u0411\\u0441 \\u0416\\u043c \\u0421\\u0431".split(" "),STANDALONESHORTWEEKDAYS:"\\u0416\\u0441 \\u0414\\u0441 \\u0421\\u0441 \\u0421\\u0440 \\u0411\\u0441 \\u0416\\u043c \\u0421\\u0431".split(" "),\nNARROWWEEKDAYS:"\\u0416\\u0414\\u0421\\u0421\\u0411\\u0416\\u0421".split(""),STANDALONENARROWWEEKDAYS:"\\u0416\\u0414\\u0421\\u0421\\u0411\\u0416\\u0421".split(""),SHORTQUARTERS:["\\u0406 \\u0448.","\\u0406\\u0406 \\u0448.","\\u0406\\u0406\\u0406 \\u0448.","IV \\u0448."],QUARTERS:["\\u0406 \\u0448\\u0438\\u0440\\u0435\\u043a","\\u0406\\u0406 \\u0448\\u0438\\u0440\\u0435\\u043a","\\u0406\\u0406\\u0406 \\u0448\\u0438\\u0440\\u0435\\u043a","IV \\u0448\\u0438\\u0440\\u0435\\u043a"],AMPMS:["\\u0442\\u0430\\u04a3\\u0493\\u044b","\\u0442\\u04af\\u0441\\u043a\\u0456/\\u043a\\u0435\\u0448\\u043a\\u0456"],\nDATEFORMATS:["y \'\\u0436\'. d MMMM, EEEE","y \'\\u0436\'. d MMMM","y \'\\u0436\'. dd MMM","dd.MM.yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_km={ERAS:["\\u1798\\u17bb\\u1793 \\u1782.\\u179f.","\\u1782.\\u179f."],ERANAMES:["\\u1798\\u17bb\\u1793\\u200b\\u1782\\u17d2\\u179a\\u17b7\\u179f\\u17d2\\u178f\\u179f\\u1780\\u179a\\u17b6\\u1787","\\u1782\\u17d2\\u179a\\u17b7\\u179f\\u17d2\\u178f\\u179f\\u1780\\u179a\\u17b6\\u1787"],NARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),STANDALONENARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),MONTHS:"\\u1798\\u1780\\u179a\\u17b6 \\u1780\\u17bb\\u1798\\u17d2\\u1797\\u17c8 \\u1798\\u17b8\\u1793\\u17b6 \\u1798\\u17c1\\u179f\\u17b6 \\u17a7\\u179f\\u1797\\u17b6 \\u1798\\u17b7\\u1790\\u17bb\\u1793\\u17b6 \\u1780\\u1780\\u17d2\\u1780\\u178a\\u17b6 \\u179f\\u17b8\\u17a0\\u17b6 \\u1780\\u1789\\u17d2\\u1789\\u17b6 \\u178f\\u17bb\\u179b\\u17b6 \\u179c\\u17b7\\u1785\\u17d2\\u1786\\u17b7\\u1780\\u17b6 \\u1792\\u17d2\\u1793\\u17bc".split(" "),\nSTANDALONEMONTHS:"\\u1798\\u1780\\u179a\\u17b6 \\u1780\\u17bb\\u1798\\u17d2\\u1797\\u17c8 \\u1798\\u17b8\\u1793\\u17b6 \\u1798\\u17c1\\u179f\\u17b6 \\u17a7\\u179f\\u1797\\u17b6 \\u1798\\u17b7\\u1790\\u17bb\\u1793\\u17b6 \\u1780\\u1780\\u17d2\\u1780\\u178a\\u17b6 \\u179f\\u17b8\\u17a0\\u17b6 \\u1780\\u1789\\u17d2\\u1789\\u17b6 \\u178f\\u17bb\\u179b\\u17b6 \\u179c\\u17b7\\u1785\\u17d2\\u1786\\u17b7\\u1780\\u17b6 \\u1792\\u17d2\\u1793\\u17bc".split(" "),SHORTMONTHS:"\\u1798\\u1780\\u179a\\u17b6 \\u1780\\u17bb\\u1798\\u17d2\\u1797\\u17c8 \\u1798\\u17b8\\u1793\\u17b6 \\u1798\\u17c1\\u179f\\u17b6 \\u17a7\\u179f\\u1797\\u17b6 \\u1798\\u17b7\\u1790\\u17bb\\u1793\\u17b6 \\u1780\\u1780\\u17d2\\u1780\\u178a\\u17b6 \\u179f\\u17b8\\u17a0\\u17b6 \\u1780\\u1789\\u17d2\\u1789\\u17b6 \\u178f\\u17bb\\u179b\\u17b6 \\u179c\\u17b7\\u1785\\u17d2\\u1786\\u17b7\\u1780\\u17b6 \\u1792\\u17d2\\u1793\\u17bc".split(" "),\nSTANDALONESHORTMONTHS:"\\u1798\\u1780\\u179a\\u17b6 \\u1780\\u17bb\\u1798\\u17d2\\u1797\\u17c8 \\u1798\\u17b8\\u1793\\u17b6 \\u1798\\u17c1\\u179f\\u17b6 \\u17a7\\u179f\\u1797\\u17b6 \\u1798\\u17b7\\u1790\\u17bb\\u1793\\u17b6 \\u1780\\u1780\\u17d2\\u1780\\u178a\\u17b6 \\u179f\\u17b8\\u17a0\\u17b6 \\u1780\\u1789\\u17d2\\u1789\\u17b6 \\u178f\\u17bb\\u179b\\u17b6 \\u179c\\u17b7\\u1785\\u17d2\\u1786\\u17b7\\u1780\\u17b6 \\u1792\\u17d2\\u1793\\u17bc".split(" "),WEEKDAYS:"\\u17a2\\u17b6\\u1791\\u17b7\\u178f\\u17d2\\u1799 \\u1785\\u17d0\\u1793\\u17d2\\u1791 \\u17a2\\u1784\\u17d2\\u1782\\u17b6\\u179a \\u1796\\u17bb\\u1792 \\u1796\\u17d2\\u179a\\u17a0\\u179f\\u17d2\\u1794\\u178f\\u17b7\\u17cd \\u179f\\u17bb\\u1780\\u17d2\\u179a \\u179f\\u17c5\\u179a\\u17cd".split(" "),\nSTANDALONEWEEKDAYS:"\\u17a2\\u17b6\\u1791\\u17b7\\u178f\\u17d2\\u1799 \\u1785\\u17d0\\u1793\\u17d2\\u1791 \\u17a2\\u1784\\u17d2\\u1782\\u17b6\\u179a \\u1796\\u17bb\\u1792 \\u1796\\u17d2\\u179a\\u17a0\\u179f\\u17d2\\u1794\\u178f\\u17b7\\u17cd \\u179f\\u17bb\\u1780\\u17d2\\u179a \\u179f\\u17c5\\u179a\\u17cd".split(" "),SHORTWEEKDAYS:"\\u17a2\\u17b6\\u1791\\u17b7\\u178f\\u17d2\\u1799 \\u1785\\u17d0\\u1793\\u17d2\\u1791 \\u17a2\\u1784\\u17d2\\u1782\\u17b6\\u179a \\u1796\\u17bb\\u1792 \\u1796\\u17d2\\u179a\\u17a0\\u179f\\u17d2\\u1794\\u178f\\u17b7\\u17cd \\u179f\\u17bb\\u1780\\u17d2\\u179a \\u179f\\u17c5\\u179a\\u17cd".split(" "),\nSTANDALONESHORTWEEKDAYS:"\\u17a2\\u17b6\\u1791\\u17b7\\u178f\\u17d2\\u1799 \\u1785\\u17d0\\u1793\\u17d2\\u1791 \\u17a2\\u1784\\u17d2\\u1782\\u17b6\\u179a \\u1796\\u17bb\\u1792 \\u1796\\u17d2\\u179a\\u17a0\\u179f\\u17d2\\u1794\\u178f\\u17b7\\u17cd \\u179f\\u17bb\\u1780\\u17d2\\u179a \\u179f\\u17c5\\u179a\\u17cd".split(" "),NARROWWEEKDAYS:"\\u17a2\\u17b6 \\u1785 \\u17a2 \\u1796\\u17bb \\u1796\\u17d2\\u179a \\u179f\\u17bb \\u179f".split(" "),STANDALONENARROWWEEKDAYS:"\\u17a2\\u17b6 \\u1785 \\u17a2 \\u1796\\u17bb \\u1796\\u17d2\\u179a \\u179f\\u17bb \\u179f".split(" "),\nSHORTQUARTERS:["\\u178f\\u17d2\\u179a\\u17b8\\u1798\\u17b6\\u179f\\u1791\\u17b8 1","\\u178f\\u17d2\\u179a\\u17b8\\u1798\\u17b6\\u179f\\u1791\\u17b8 2","\\u178f\\u17d2\\u179a\\u17b8\\u1798\\u17b6\\u179f\\u1791\\u17b8 3","\\u178f\\u17d2\\u179a\\u17b8\\u1798\\u17b6\\u179f\\u1791\\u17b8 4"],QUARTERS:["\\u178f\\u17d2\\u179a\\u17b8\\u1798\\u17b6\\u179f\\u1791\\u17b8 1","\\u178f\\u17d2\\u179a\\u17b8\\u1798\\u17b6\\u179f\\u1791\\u17b8 2","\\u178f\\u17d2\\u179a\\u17b8\\u1798\\u17b6\\u179f\\u1791\\u17b8 3","\\u178f\\u17d2\\u179a\\u17b8\\u1798\\u17b6\\u179f\\u1791\\u17b8 4"],AMPMS:["\\u1796\\u17d2\\u179a\\u17b9\\u1780",\n"\\u179b\\u17d2\\u1784\\u17b6\\u1785"],DATEFORMATS:["EEEE d MMMM y","d MMMM y","d MMM y","d/M/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} \\u1793\\u17c5 {0}","{1} \\u1793\\u17c5 {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_kn={ERAS:["\\u0c95\\u0ccd\\u0cb0\\u0cbf.\\u0caa\\u0cc2","\\u0c95\\u0ccd\\u0cb0\\u0cbf.\\u0cb6"],ERANAMES:["\\u0c95\\u0ccd\\u0cb0\\u0cbf\\u0cb8\\u0ccd\\u0ca4 \\u0caa\\u0cc2\\u0cb0\\u0ccd\\u0cb5","\\u0c95\\u0ccd\\u0cb0\\u0cbf\\u0cb8\\u0ccd\\u0ca4 \\u0cb6\\u0c95"],NARROWMONTHS:"\\u0c9c \\u0cab\\u0cc6 \\u0cae\\u0cbe \\u0c8f \\u0cae\\u0cc7 \\u0c9c\\u0cc2 \\u0c9c\\u0cc1 \\u0c86 \\u0cb8\\u0cc6 \\u0c85 \\u0ca8 \\u0ca1\\u0cbf".split(" "),STANDALONENARROWMONTHS:"\\u0c9c \\u0cab\\u0cc6 \\u0cae\\u0cbe \\u0c8f \\u0cae\\u0cc7 \\u0c9c\\u0cc2 \\u0c9c\\u0cc1 \\u0c86 \\u0cb8\\u0cc6 \\u0c85 \\u0ca8 \\u0ca1\\u0cbf".split(" "),\nMONTHS:"\\u0c9c\\u0ca8\\u0cb5\\u0cb0\\u0cbf \\u0cab\\u0cc6\\u0cac\\u0ccd\\u0cb0\\u0cb5\\u0cb0\\u0cbf \\u0cae\\u0cbe\\u0cb0\\u0ccd\\u0c9a\\u0ccd \\u0c8f\\u0caa\\u0ccd\\u0cb0\\u0cbf\\u0cb2\\u0ccd \\u0cae\\u0cc7 \\u0c9c\\u0cc2\\u0ca8\\u0ccd \\u0c9c\\u0cc1\\u0cb2\\u0cc8 \\u0c86\\u0c97\\u0cb8\\u0ccd\\u0c9f\\u0ccd \\u0cb8\\u0cc6\\u0caa\\u0ccd\\u0c9f\\u0cc6\\u0c82\\u0cac\\u0cb0\\u0ccd \\u0c85\\u0c95\\u0ccd\\u0c9f\\u0ccb\\u0cac\\u0cb0\\u0ccd \\u0ca8\\u0cb5\\u0cc6\\u0c82\\u0cac\\u0cb0\\u0ccd \\u0ca1\\u0cbf\\u0cb8\\u0cc6\\u0c82\\u0cac\\u0cb0\\u0ccd".split(" "),STANDALONEMONTHS:"\\u0c9c\\u0ca8\\u0cb5\\u0cb0\\u0cbf \\u0cab\\u0cc6\\u0cac\\u0ccd\\u0cb0\\u0cb5\\u0cb0\\u0cbf \\u0cae\\u0cbe\\u0cb0\\u0ccd\\u0c9a\\u0ccd \\u0c8f\\u0caa\\u0ccd\\u0cb0\\u0cbf\\u0cb2\\u0ccd \\u0cae\\u0cc7 \\u0c9c\\u0cc2\\u0ca8\\u0ccd \\u0c9c\\u0cc1\\u0cb2\\u0cc8 \\u0c86\\u0c97\\u0cb8\\u0ccd\\u0c9f\\u0ccd \\u0cb8\\u0cc6\\u0caa\\u0ccd\\u0c9f\\u0cc6\\u0c82\\u0cac\\u0cb0\\u0ccd \\u0c85\\u0c95\\u0ccd\\u0c9f\\u0ccb\\u0cac\\u0cb0\\u0ccd \\u0ca8\\u0cb5\\u0cc6\\u0c82\\u0cac\\u0cb0\\u0ccd \\u0ca1\\u0cbf\\u0cb8\\u0cc6\\u0c82\\u0cac\\u0cb0\\u0ccd".split(" "),\nSHORTMONTHS:"\\u0c9c\\u0ca8 \\u0cab\\u0cc6\\u0cac\\u0ccd\\u0cb0 \\u0cae\\u0cbe\\u0cb0\\u0ccd\\u0c9a\\u0ccd \\u0c8f\\u0caa\\u0ccd\\u0cb0\\u0cbf \\u0cae\\u0cc7 \\u0c9c\\u0cc2\\u0ca8\\u0ccd \\u0c9c\\u0cc1\\u0cb2\\u0cc8 \\u0c86\\u0c97 \\u0cb8\\u0cc6\\u0caa\\u0ccd\\u0c9f\\u0cc6\\u0c82 \\u0c85\\u0c95\\u0ccd\\u0c9f\\u0ccb \\u0ca8\\u0cb5\\u0cc6\\u0c82 \\u0ca1\\u0cbf\\u0cb8\\u0cc6\\u0c82".split(" "),STANDALONESHORTMONTHS:"\\u0c9c\\u0ca8 \\u0cab\\u0cc6\\u0cac\\u0ccd\\u0cb0 \\u0cae\\u0cbe\\u0cb0\\u0ccd\\u0c9a\\u0ccd \\u0c8f\\u0caa\\u0ccd\\u0cb0\\u0cbf \\u0cae\\u0cc7 \\u0c9c\\u0cc2\\u0ca8\\u0ccd \\u0c9c\\u0cc1\\u0cb2\\u0cc8 \\u0c86\\u0c97 \\u0cb8\\u0cc6\\u0caa\\u0ccd\\u0c9f\\u0cc6\\u0c82 \\u0c85\\u0c95\\u0ccd\\u0c9f\\u0ccb \\u0ca8\\u0cb5\\u0cc6\\u0c82 \\u0ca1\\u0cbf\\u0cb8\\u0cc6\\u0c82".split(" "),\nWEEKDAYS:"\\u0cad\\u0cbe\\u0ca8\\u0cc1\\u0cb5\\u0cbe\\u0cb0 \\u0cb8\\u0ccb\\u0cae\\u0cb5\\u0cbe\\u0cb0 \\u0cae\\u0c82\\u0c97\\u0cb3\\u0cb5\\u0cbe\\u0cb0 \\u0cac\\u0cc1\\u0ca7\\u0cb5\\u0cbe\\u0cb0 \\u0c97\\u0cc1\\u0cb0\\u0cc1\\u0cb5\\u0cbe\\u0cb0 \\u0cb6\\u0cc1\\u0c95\\u0ccd\\u0cb0\\u0cb5\\u0cbe\\u0cb0 \\u0cb6\\u0ca8\\u0cbf\\u0cb5\\u0cbe\\u0cb0".split(" "),STANDALONEWEEKDAYS:"\\u0cad\\u0cbe\\u0ca8\\u0cc1\\u0cb5\\u0cbe\\u0cb0 \\u0cb8\\u0ccb\\u0cae\\u0cb5\\u0cbe\\u0cb0 \\u0cae\\u0c82\\u0c97\\u0cb3\\u0cb5\\u0cbe\\u0cb0 \\u0cac\\u0cc1\\u0ca7\\u0cb5\\u0cbe\\u0cb0 \\u0c97\\u0cc1\\u0cb0\\u0cc1\\u0cb5\\u0cbe\\u0cb0 \\u0cb6\\u0cc1\\u0c95\\u0ccd\\u0cb0\\u0cb5\\u0cbe\\u0cb0 \\u0cb6\\u0ca8\\u0cbf\\u0cb5\\u0cbe\\u0cb0".split(" "),\nSHORTWEEKDAYS:"\\u0cad\\u0cbe\\u0ca8\\u0cc1 \\u0cb8\\u0ccb\\u0cae \\u0cae\\u0c82\\u0c97\\u0cb3 \\u0cac\\u0cc1\\u0ca7 \\u0c97\\u0cc1\\u0cb0\\u0cc1 \\u0cb6\\u0cc1\\u0c95\\u0ccd\\u0cb0 \\u0cb6\\u0ca8\\u0cbf".split(" "),STANDALONESHORTWEEKDAYS:"\\u0cad\\u0cbe\\u0ca8\\u0cc1 \\u0cb8\\u0ccb\\u0cae \\u0cae\\u0c82\\u0c97\\u0cb3 \\u0cac\\u0cc1\\u0ca7 \\u0c97\\u0cc1\\u0cb0\\u0cc1 \\u0cb6\\u0cc1\\u0c95\\u0ccd\\u0cb0 \\u0cb6\\u0ca8\\u0cbf".split(" "),NARROWWEEKDAYS:"\\u0cad\\u0cbe \\u0cb8\\u0ccb \\u0cae\\u0c82 \\u0cac\\u0cc1 \\u0c97\\u0cc1 \\u0cb6\\u0cc1 \\u0cb6".split(" "),\nSTANDALONENARROWWEEKDAYS:"\\u0cad\\u0cbe \\u0cb8\\u0ccb \\u0cae\\u0c82 \\u0cac\\u0cc1 \\u0c97\\u0cc1 \\u0cb6\\u0cc1 \\u0cb6".split(" "),SHORTQUARTERS:["\\u0ca4\\u0ccd\\u0cb0\\u0cc8 1","\\u0ca4\\u0ccd\\u0cb0\\u0cc8 2","\\u0ca4\\u0ccd\\u0cb0\\u0cc8 3","\\u0ca4\\u0ccd\\u0cb0\\u0cc8 4"],QUARTERS:["1\\u0ca8\\u0cc7 \\u0ca4\\u0ccd\\u0cb0\\u0cc8\\u0cae\\u0cbe\\u0cb8\\u0cbf\\u0c95","2\\u0ca8\\u0cc7 \\u0ca4\\u0ccd\\u0cb0\\u0cc8\\u0cae\\u0cbe\\u0cb8\\u0cbf\\u0c95","3\\u0ca8\\u0cc7 \\u0ca4\\u0ccd\\u0cb0\\u0cc8\\u0cae\\u0cbe\\u0cb8\\u0cbf\\u0c95","4\\u0ca8\\u0cc7 \\u0ca4\\u0ccd\\u0cb0\\u0cc8\\u0cae\\u0cbe\\u0cb8\\u0cbf\\u0c95"],\nAMPMS:["\\u0caa\\u0cc2\\u0cb0\\u0ccd\\u0cb5\\u0cbe\\u0cb9\\u0ccd\\u0ca8","\\u0c85\\u0caa\\u0cb0\\u0cbe\\u0cb9\\u0ccd\\u0ca8"],DATEFORMATS:["EEEE, MMMM d, y","MMMM d, y","MMM d, y","d/M/yy"],TIMEFORMATS:["hh:mm:ss a zzzz","hh:mm:ss a z","hh:mm:ss a","hh:mm a"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[6,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_ko={ERAS:["BC","AD"],ERANAMES:["\\uae30\\uc6d0\\uc804","\\uc11c\\uae30"],NARROWMONTHS:"1\\uc6d4 2\\uc6d4 3\\uc6d4 4\\uc6d4 5\\uc6d4 6\\uc6d4 7\\uc6d4 8\\uc6d4 9\\uc6d4 10\\uc6d4 11\\uc6d4 12\\uc6d4".split(" "),STANDALONENARROWMONTHS:"1\\uc6d4 2\\uc6d4 3\\uc6d4 4\\uc6d4 5\\uc6d4 6\\uc6d4 7\\uc6d4 8\\uc6d4 9\\uc6d4 10\\uc6d4 11\\uc6d4 12\\uc6d4".split(" "),MONTHS:"1\\uc6d4 2\\uc6d4 3\\uc6d4 4\\uc6d4 5\\uc6d4 6\\uc6d4 7\\uc6d4 8\\uc6d4 9\\uc6d4 10\\uc6d4 11\\uc6d4 12\\uc6d4".split(" "),STANDALONEMONTHS:"1\\uc6d4 2\\uc6d4 3\\uc6d4 4\\uc6d4 5\\uc6d4 6\\uc6d4 7\\uc6d4 8\\uc6d4 9\\uc6d4 10\\uc6d4 11\\uc6d4 12\\uc6d4".split(" "),\nSHORTMONTHS:"1\\uc6d4 2\\uc6d4 3\\uc6d4 4\\uc6d4 5\\uc6d4 6\\uc6d4 7\\uc6d4 8\\uc6d4 9\\uc6d4 10\\uc6d4 11\\uc6d4 12\\uc6d4".split(" "),STANDALONESHORTMONTHS:"1\\uc6d4 2\\uc6d4 3\\uc6d4 4\\uc6d4 5\\uc6d4 6\\uc6d4 7\\uc6d4 8\\uc6d4 9\\uc6d4 10\\uc6d4 11\\uc6d4 12\\uc6d4".split(" "),WEEKDAYS:"\\uc77c\\uc694\\uc77c \\uc6d4\\uc694\\uc77c \\ud654\\uc694\\uc77c \\uc218\\uc694\\uc77c \\ubaa9\\uc694\\uc77c \\uae08\\uc694\\uc77c \\ud1a0\\uc694\\uc77c".split(" "),STANDALONEWEEKDAYS:"\\uc77c\\uc694\\uc77c \\uc6d4\\uc694\\uc77c \\ud654\\uc694\\uc77c \\uc218\\uc694\\uc77c \\ubaa9\\uc694\\uc77c \\uae08\\uc694\\uc77c \\ud1a0\\uc694\\uc77c".split(" "),\nSHORTWEEKDAYS:"\\uc77c\\uc6d4\\ud654\\uc218\\ubaa9\\uae08\\ud1a0".split(""),STANDALONESHORTWEEKDAYS:"\\uc77c\\uc6d4\\ud654\\uc218\\ubaa9\\uae08\\ud1a0".split(""),NARROWWEEKDAYS:"\\uc77c\\uc6d4\\ud654\\uc218\\ubaa9\\uae08\\ud1a0".split(""),STANDALONENARROWWEEKDAYS:"\\uc77c\\uc6d4\\ud654\\uc218\\ubaa9\\uae08\\ud1a0".split(""),SHORTQUARTERS:["1\\ubd84\\uae30","2\\ubd84\\uae30","3\\ubd84\\uae30","4\\ubd84\\uae30"],QUARTERS:["\\uc81c 1/4\\ubd84\\uae30","\\uc81c 2/4\\ubd84\\uae30","\\uc81c 3/4\\ubd84\\uae30","\\uc81c 4/4\\ubd84\\uae30"],AMPMS:["\\uc624\\uc804",\n"\\uc624\\ud6c4"],DATEFORMATS:["y\\ub144 M\\uc6d4 d\\uc77c EEEE","y\\ub144 M\\uc6d4 d\\uc77c","y. M. d.","yy. M. d."],TIMEFORMATS:["a h\\uc2dc m\\ubd84 s\\ucd08 zzzz","a h\\uc2dc m\\ubd84 s\\ucd08 z","a h:mm:ss","a h:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_ky={ERAS:["\\u0431.\\u0437.\\u0447.","\\u0431.\\u0437."],ERANAMES:["\\u0431\\u0438\\u0437\\u0434\\u0438\\u043d \\u0437\\u0430\\u043c\\u0430\\u043d\\u0433\\u0430 \\u0447\\u0435\\u0439\\u0438\\u043d","\\u0431\\u0438\\u0437\\u0434\\u0438\\u043d \\u0437\\u0430\\u043c\\u0430\\u043d"],NARROWMONTHS:"\\u042f\\u0424\\u041c\\u0410\\u041c\\u0418\\u0418\\u0410\\u0421\\u041e\\u041d\\u0414".split(""),STANDALONENARROWMONTHS:"\\u042f\\u0424\\u041c\\u0410\\u041c\\u0418\\u0418\\u0410\\u0421\\u041e\\u041d\\u0414".split(""),MONTHS:"\\u044f\\u043d\\u0432\\u0430\\u0440\\u044c \\u0444\\u0435\\u0432\\u0440\\u0430\\u043b\\u044c \\u043c\\u0430\\u0440\\u0442 \\u0430\\u043f\\u0440\\u0435\\u043b\\u044c \\u043c\\u0430\\u0439 \\u0438\\u044e\\u043d\\u044c \\u0438\\u044e\\u043b\\u044c \\u0430\\u0432\\u0433\\u0443\\u0441\\u0442 \\u0441\\u0435\\u043d\\u0442\\u044f\\u0431\\u0440\\u044c \\u043e\\u043a\\u0442\\u044f\\u0431\\u0440\\u044c \\u043d\\u043e\\u044f\\u0431\\u0440\\u044c \\u0434\\u0435\\u043a\\u0430\\u0431\\u0440\\u044c".split(" "),\nSTANDALONEMONTHS:"\\u042f\\u043d\\u0432\\u0430\\u0440\\u044c \\u0424\\u0435\\u0432\\u0440\\u0430\\u043b\\u044c \\u041c\\u0430\\u0440\\u0442 \\u0410\\u043f\\u0440\\u0435\\u043b\\u044c \\u041c\\u0430\\u0439 \\u0418\\u044e\\u043d\\u044c \\u0418\\u044e\\u043b\\u044c \\u0410\\u0432\\u0433\\u0443\\u0441\\u0442 \\u0421\\u0435\\u043d\\u0442\\u044f\\u0431\\u0440\\u044c \\u041e\\u043a\\u0442\\u044f\\u0431\\u0440\\u044c \\u041d\\u043e\\u044f\\u0431\\u0440\\u044c \\u0414\\u0435\\u043a\\u0430\\u0431\\u0440\\u044c".split(" "),SHORTMONTHS:"\\u044f\\u043d\\u0432. \\u0444\\u0435\\u0432. \\u043c\\u0430\\u0440. \\u0430\\u043f\\u0440. \\u043c\\u0430\\u0439 \\u0438\\u044e\\u043d. \\u0438\\u044e\\u043b. \\u0430\\u0432\\u0433. \\u0441\\u0435\\u043d. \\u043e\\u043a\\u0442. \\u043d\\u043e\\u044f. \\u0434\\u0435\\u043a.".split(" "),\nSTANDALONESHORTMONTHS:"\\u042f\\u043d\\u0432 \\u0424\\u0435\\u0432 \\u041c\\u0430\\u0440 \\u0410\\u043f\\u0440 \\u041c\\u0430\\u0439 \\u0418\\u044e\\u043d \\u0418\\u044e\\u043b \\u0410\\u0432\\u0433 \\u0421\\u0435\\u043d \\u041e\\u043a\\u0442 \\u041d\\u043e\\u044f \\u0414\\u0435\\u043a".split(" "),WEEKDAYS:"\\u0436\\u0435\\u043a\\u0448\\u0435\\u043c\\u0431\\u0438 \\u0434\\u04af\\u0439\\u0448\\u04e9\\u043c\\u0431\\u04af \\u0448\\u0435\\u0439\\u0448\\u0435\\u043c\\u0431\\u0438 \\u0448\\u0430\\u0440\\u0448\\u0435\\u043c\\u0431\\u0438 \\u0431\\u0435\\u0439\\u0448\\u0435\\u043c\\u0431\\u0438 \\u0436\\u0443\\u043c\\u0430 \\u0438\\u0448\\u0435\\u043c\\u0431\\u0438".split(" "),\nSTANDALONEWEEKDAYS:"\\u0436\\u0435\\u043a\\u0448\\u0435\\u043c\\u0431\\u0438 \\u0434\\u04af\\u0439\\u0448\\u04e9\\u043c\\u0431\\u04af \\u0448\\u0435\\u0439\\u0448\\u0435\\u043c\\u0431\\u0438 \\u0448\\u0430\\u0440\\u0448\\u0435\\u043c\\u0431\\u0438 \\u0431\\u0435\\u0439\\u0448\\u0435\\u043c\\u0431\\u0438 \\u0436\\u0443\\u043c\\u0430 \\u0438\\u0448\\u0435\\u043c\\u0431\\u0438".split(" "),SHORTWEEKDAYS:"\\u0436\\u0435\\u043a. \\u0434\\u04af\\u0439. \\u0448\\u0435\\u0439\\u0448. \\u0448\\u0430\\u0440\\u0448. \\u0431\\u0435\\u0439\\u0448. \\u0436\\u0443\\u043c\\u0430 \\u0438\\u0448\\u043c.".split(" "),\nSTANDALONESHORTWEEKDAYS:"\\u0436\\u0435\\u043a. \\u0434\\u04af\\u0439. \\u0448\\u0435\\u0439\\u0448. \\u0448\\u0430\\u0440\\u0448. \\u0431\\u0435\\u0439\\u0448. \\u0436\\u0443\\u043c\\u0430 \\u0438\\u0448\\u043c.".split(" "),NARROWWEEKDAYS:"\\u0416\\u0414\\u0428\\u0428\\u0411\\u0416\\u0418".split(""),STANDALONENARROWWEEKDAYS:"\\u0416\\u0414\\u0428\\u0428\\u0411\\u0416\\u0418".split(""),SHORTQUARTERS:["1-\\u0447\\u0435\\u0439.","2-\\u0447\\u0435\\u0439.","3-\\u0447\\u0435\\u0439.","4-\\u0447\\u0435\\u0439."],QUARTERS:["1-\\u0447\\u0435\\u0439\\u0440\\u0435\\u043a",\n"2-\\u0447\\u0435\\u0439\\u0440\\u0435\\u043a","3-\\u0447\\u0435\\u0439\\u0440\\u0435\\u043a","4-\\u0447\\u0435\\u0439\\u0440\\u0435\\u043a"],AMPMS:["\\u0442\\u0430\\u04a3\\u043a\\u044b","\\u0442\\u04af\\u0448\\u0442\\u04e9\\u043d \\u043a\\u0438\\u0439\\u0438\\u043d\\u043a\\u0438"],DATEFORMATS:["EEEE, d-MMMM, y-\'\\u0436\'.","y MMMM d","y MMM d","dd.MM.yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_ln={ERAS:["lib\\u00f3so ya","nsima ya Y"],ERANAMES:["Yambo ya Y\\u00e9zu Kr\\u00eds","Nsima ya Y\\u00e9zu Kr\\u00eds"],NARROWMONTHS:"yfmamyyas\\u0254nd".split(""),STANDALONENARROWMONTHS:"yfmamyyas\\u0254nd".split(""),MONTHS:"s\\u00e1nz\\u00e1 ya yambo;s\\u00e1nz\\u00e1 ya m\\u00edbal\\u00e9;s\\u00e1nz\\u00e1 ya m\\u00eds\\u00e1to;s\\u00e1nz\\u00e1 ya m\\u00ednei;s\\u00e1nz\\u00e1 ya m\\u00edt\\u00e1no;s\\u00e1nz\\u00e1 ya mot\\u00f3b\\u00e1;s\\u00e1nz\\u00e1 ya nsambo;s\\u00e1nz\\u00e1 ya mwambe;s\\u00e1nz\\u00e1 ya libwa;s\\u00e1nz\\u00e1 ya z\\u00f3mi;s\\u00e1nz\\u00e1 ya z\\u00f3mi na m\\u0254\\u030ck\\u0254\\u0301;s\\u00e1nz\\u00e1 ya z\\u00f3mi na m\\u00edbal\\u00e9".split(";"),\nSTANDALONEMONTHS:"s\\u00e1nz\\u00e1 ya yambo;s\\u00e1nz\\u00e1 ya m\\u00edbal\\u00e9;s\\u00e1nz\\u00e1 ya m\\u00eds\\u00e1to;s\\u00e1nz\\u00e1 ya m\\u00ednei;s\\u00e1nz\\u00e1 ya m\\u00edt\\u00e1no;s\\u00e1nz\\u00e1 ya mot\\u00f3b\\u00e1;s\\u00e1nz\\u00e1 ya nsambo;s\\u00e1nz\\u00e1 ya mwambe;s\\u00e1nz\\u00e1 ya libwa;s\\u00e1nz\\u00e1 ya z\\u00f3mi;s\\u00e1nz\\u00e1 ya z\\u00f3mi na m\\u0254\\u030ck\\u0254\\u0301;s\\u00e1nz\\u00e1 ya z\\u00f3mi na m\\u00edbal\\u00e9".split(";"),SHORTMONTHS:"yan fbl msi apl mai yun yul agt stb \\u0254tb nvb dsb".split(" "),\nSTANDALONESHORTMONTHS:"yan fbl msi apl mai yun yul agt stb \\u0254tb nvb dsb".split(" "),WEEKDAYS:"eyenga;mok\\u0254l\\u0254 mwa yambo;mok\\u0254l\\u0254 mwa m\\u00edbal\\u00e9;mok\\u0254l\\u0254 mwa m\\u00eds\\u00e1to;mok\\u0254l\\u0254 ya m\\u00edn\\u00e9i;mok\\u0254l\\u0254 ya m\\u00edt\\u00e1no;mp\\u0254\\u0301s\\u0254".split(";"),STANDALONEWEEKDAYS:"eyenga;mok\\u0254l\\u0254 mwa yambo;mok\\u0254l\\u0254 mwa m\\u00edbal\\u00e9;mok\\u0254l\\u0254 mwa m\\u00eds\\u00e1to;mok\\u0254l\\u0254 ya m\\u00edn\\u00e9i;mok\\u0254l\\u0254 ya m\\u00edt\\u00e1no;mp\\u0254\\u0301s\\u0254".split(";"),\nSHORTWEEKDAYS:"eye ybo mbl mst min mtn mps".split(" "),STANDALONESHORTWEEKDAYS:"eye ybo mbl mst min mtn mps".split(" "),NARROWWEEKDAYS:"eymmmmp".split(""),STANDALONENARROWWEEKDAYS:"eymmmmp".split(""),SHORTQUARTERS:["SM1","SM2","SM3","SM4"],QUARTERS:["s\\u00e1nz\\u00e1 m\\u00eds\\u00e1to ya yambo","s\\u00e1nz\\u00e1 m\\u00eds\\u00e1to ya m\\u00edbal\\u00e9","s\\u00e1nz\\u00e1 m\\u00eds\\u00e1to ya m\\u00eds\\u00e1to","s\\u00e1nz\\u00e1 m\\u00eds\\u00e1to ya m\\u00ednei"],AMPMS:["nt\\u0254\\u0301ng\\u0254\\u0301","mp\\u00f3kwa"],\nDATEFORMATS:["EEEE d MMMM y","d MMMM y","d MMM y","d/M/y"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_lo={ERAS:["\\u0e81\\u0ec8\\u0ead\\u0e99 \\u0e84.\\u0eaa.","\\u0e84.\\u0eaa."],ERANAMES:["\\u0e81\\u0ec8\\u0ead\\u0e99\\u0e84\\u0ea3\\u0eb4\\u0e94\\u0eaa\\u0eb1\\u0e81\\u0e81\\u0eb0\\u0ea5\\u0eb2\\u0e94","\\u0e84\\u0ea3\\u0eb4\\u0e94\\u0eaa\\u0eb1\\u0e81\\u0e81\\u0eb0\\u0ea5\\u0eb2\\u0e94"],NARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),STANDALONENARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),MONTHS:"\\u0ea1\\u0eb1\\u0e87\\u0e81\\u0ead\\u0e99 \\u0e81\\u0eb8\\u0ea1\\u0e9e\\u0eb2 \\u0ea1\\u0eb5\\u0e99\\u0eb2 \\u0ec0\\u0ea1\\u0eaa\\u0eb2 \\u0e9e\\u0eb6\\u0e94\\u0eaa\\u0eb0\\u0e9e\\u0eb2 \\u0ea1\\u0eb4\\u0e96\\u0eb8\\u0e99\\u0eb2 \\u0e81\\u0ecd\\u0ea5\\u0eb0\\u0e81\\u0ebb\\u0e94 \\u0eaa\\u0eb4\\u0e87\\u0eab\\u0eb2 \\u0e81\\u0eb1\\u0e99\\u0e8d\\u0eb2 \\u0e95\\u0eb8\\u0ea5\\u0eb2 \\u0e9e\\u0eb0\\u0e88\\u0eb4\\u0e81 \\u0e97\\u0eb1\\u0e99\\u0ea7\\u0eb2".split(" "),\nSTANDALONEMONTHS:"\\u0ea1\\u0eb1\\u0e87\\u0e81\\u0ead\\u0e99 \\u0e81\\u0eb8\\u0ea1\\u0e9e\\u0eb2 \\u0ea1\\u0eb5\\u0e99\\u0eb2 \\u0ec0\\u0ea1\\u0eaa\\u0eb2 \\u0e9e\\u0eb6\\u0e94\\u0eaa\\u0eb0\\u0e9e\\u0eb2 \\u0ea1\\u0eb4\\u0e96\\u0eb8\\u0e99\\u0eb2 \\u0e81\\u0ecd\\u0ea5\\u0eb0\\u0e81\\u0ebb\\u0e94 \\u0eaa\\u0eb4\\u0e87\\u0eab\\u0eb2 \\u0e81\\u0eb1\\u0e99\\u0e8d\\u0eb2 \\u0e95\\u0eb8\\u0ea5\\u0eb2 \\u0e9e\\u0eb0\\u0e88\\u0eb4\\u0e81 \\u0e97\\u0eb1\\u0e99\\u0ea7\\u0eb2".split(" "),SHORTMONTHS:"\\u0ea1.\\u0e81. \\u0e81.\\u0e9e. \\u0ea1.\\u0e99. \\u0ea1.\\u0eaa. \\u0e9e.\\u0e9e. \\u0ea1\\u0eb4.\\u0e96. \\u0e81.\\u0ea5. \\u0eaa.\\u0eab. \\u0e81.\\u0e8d. \\u0e95.\\u0ea5. \\u0e9e.\\u0e88. \\u0e97.\\u0ea7.".split(" "),\nSTANDALONESHORTMONTHS:"\\u0ea1.\\u0e81. \\u0e81.\\u0e9e. \\u0ea1.\\u0e99. \\u0ea1.\\u0eaa. \\u0e9e.\\u0e9e. \\u0ea1\\u0eb4.\\u0e96. \\u0e81.\\u0ea5. \\u0eaa.\\u0eab. \\u0e81.\\u0e8d. \\u0e95.\\u0ea5. \\u0e9e.\\u0e88. \\u0e97.\\u0ea7.".split(" "),WEEKDAYS:"\\u0ea7\\u0eb1\\u0e99\\u0ead\\u0eb2\\u0e97\\u0eb4\\u0e94 \\u0ea7\\u0eb1\\u0e99\\u0e88\\u0eb1\\u0e99 \\u0ea7\\u0eb1\\u0e99\\u0ead\\u0eb1\\u0e87\\u0e84\\u0eb2\\u0e99 \\u0ea7\\u0eb1\\u0e99\\u0e9e\\u0eb8\\u0e94 \\u0ea7\\u0eb1\\u0e99\\u0e9e\\u0eb0\\u0eab\\u0eb1\\u0e94 \\u0ea7\\u0eb1\\u0e99\\u0eaa\\u0eb8\\u0e81 \\u0ea7\\u0eb1\\u0e99\\u0ec0\\u0eaa\\u0ebb\\u0eb2".split(" "),\nSTANDALONEWEEKDAYS:"\\u0ea7\\u0eb1\\u0e99\\u0ead\\u0eb2\\u0e97\\u0eb4\\u0e94 \\u0ea7\\u0eb1\\u0e99\\u0e88\\u0eb1\\u0e99 \\u0ea7\\u0eb1\\u0e99\\u0ead\\u0eb1\\u0e87\\u0e84\\u0eb2\\u0e99 \\u0ea7\\u0eb1\\u0e99\\u0e9e\\u0eb8\\u0e94 \\u0ea7\\u0eb1\\u0e99\\u0e9e\\u0eb0\\u0eab\\u0eb1\\u0e94 \\u0ea7\\u0eb1\\u0e99\\u0eaa\\u0eb8\\u0e81 \\u0ea7\\u0eb1\\u0e99\\u0ec0\\u0eaa\\u0ebb\\u0eb2".split(" "),SHORTWEEKDAYS:"\\u0ea7\\u0eb1\\u0e99\\u0ead\\u0eb2\\u0e97\\u0eb4\\u0e94 \\u0ea7\\u0eb1\\u0e99\\u0e88\\u0eb1\\u0e99 \\u0ea7\\u0eb1\\u0e99\\u0ead\\u0eb1\\u0e87\\u0e84\\u0eb2\\u0e99 \\u0ea7\\u0eb1\\u0e99\\u0e9e\\u0eb8\\u0e94 \\u0ea7\\u0eb1\\u0e99\\u0e9e\\u0eb0\\u0eab\\u0eb1\\u0e94 \\u0ea7\\u0eb1\\u0e99\\u0eaa\\u0eb8\\u0e81 \\u0ea7\\u0eb1\\u0e99\\u0ec0\\u0eaa\\u0ebb\\u0eb2".split(" "),\nSTANDALONESHORTWEEKDAYS:"\\u0ead\\u0eb2\\u0e97\\u0eb4\\u0e94 \\u0e88\\u0eb1\\u0e99 \\u0ead\\u0eb1\\u0e87\\u0e84\\u0eb2\\u0e99 \\u0e9e\\u0eb8\\u0e94 \\u0e9e\\u0eb0\\u0eab\\u0eb1\\u0e94 \\u0eaa\\u0eb8\\u0e81 \\u0ec0\\u0eaa\\u0ebb\\u0eb2".split(" "),NARROWWEEKDAYS:"1234567".split(""),STANDALONENARROWWEEKDAYS:"\\u0ead \\u0e88 \\u0ead \\u0e9e \\u0e9e\\u0eab \\u0eaa\\u0eb8 \\u0eaa".split(" "),SHORTQUARTERS:["\\u0e95\\u0ea11","\\u0e95\\u0ea12","\\u0e95\\u0ea13","\\u0e95\\u0ea14"],QUARTERS:["\\u0ec4\\u0e95\\u0ea3\\u0ea1\\u0eb2\\u0e94 1","\\u0ec4\\u0e95\\u0ea3\\u0ea1\\u0eb2\\u0e94 2",\n"\\u0ec4\\u0e95\\u0ea3\\u0ea1\\u0eb2\\u0e94 3","\\u0ec4\\u0e95\\u0ea3\\u0ea1\\u0eb2\\u0e94 4"],AMPMS:["\\u0e81\\u0ec8\\u0ead\\u0e99\\u0e97\\u0ec8\\u0ebd\\u0e87","\\u0eab\\u0ebc\\u0eb1\\u0e87\\u0e97\\u0ec8\\u0ebd\\u0e87"],DATEFORMATS:["EEEE \\u0e97\\u0eb5 d MMMM G y","d MMMM y","d MMM y","d/M/y"],TIMEFORMATS:["H \\u0ec2\\u0ea1\\u0e87 m \\u0e99\\u0eb2\\u0e97\\u0eb5 ss \\u0ea7\\u0eb4\\u0e99\\u0eb2\\u0e97\\u0eb5 zzzz","H \\u0ec2\\u0ea1\\u0e87 m \\u0e99\\u0eb2\\u0e97\\u0eb5 ss \\u0ea7\\u0eb4\\u0e99\\u0eb2\\u0e97\\u0eb5 z","H:mm:ss","H:mm"],DATETIMEFORMATS:["{1}, {0}",\n"{1}, {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_lt={ERAS:["pr. Kr.","po Kr."],ERANAMES:["prie\\u0161 Krist\\u0173","po Kristaus"],NARROWMONTHS:"SVKBGBLRRSLG".split(""),STANDALONENARROWMONTHS:"SVKBGBLRRSLG".split(""),MONTHS:"sausio vasario kovo baland\\u017eio gegu\\u017e\\u0117s bir\\u017eelio liepos rugpj\\u016b\\u010dio rugs\\u0117jo spalio lapkri\\u010dio gruod\\u017eio".split(" "),STANDALONEMONTHS:"sausis vasaris kovas balandis gegu\\u017e\\u0117 bir\\u017eelis liepa rugpj\\u016btis rugs\\u0117jis spalis lapkritis gruodis".split(" "),SHORTMONTHS:"saus. vas. kov. bal. geg. bir\\u017e. liep. rugp. rugs. spal. lapkr. gruod.".split(" "),\nSTANDALONESHORTMONTHS:"saus. vas. kov. bal. geg. bir\\u017e. liep. rugp. rugs. spal. lapkr. gruod.".split(" "),WEEKDAYS:"sekmadienis pirmadienis antradienis tre\\u010diadienis ketvirtadienis penktadienis \\u0161e\\u0161tadienis".split(" "),STANDALONEWEEKDAYS:"sekmadienis pirmadienis antradienis tre\\u010diadienis ketvirtadienis penktadienis \\u0161e\\u0161tadienis".split(" "),SHORTWEEKDAYS:"sk pr an tr kt pn \\u0161t".split(" "),STANDALONESHORTWEEKDAYS:"sk pr an tr kt pn \\u0161t".split(" "),NARROWWEEKDAYS:"SPATKP\\u0160".split(""),\nSTANDALONENARROWWEEKDAYS:"SPATKP\\u0160".split(""),SHORTQUARTERS:["I k.","II k.","III k.","IV k."],QUARTERS:["I ketvirtis","II ketvirtis","III ketvirtis","IV ketvirtis"],AMPMS:["prie\\u0161piet","popiet"],DATEFORMATS:["y \'m\'. MMMM d \'d\'., EEEE","y \'m\'. MMMM d \'d\'.","y-MM-dd","y-MM-dd"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_lv={ERAS:["p.m.\\u0113.","m.\\u0113."],ERANAMES:["pirms m\\u016bsu \\u0113ras","m\\u016bsu \\u0113r\\u0101"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"janv\\u0101ris febru\\u0101ris marts apr\\u012blis maijs j\\u016bnijs j\\u016blijs augusts septembris oktobris novembris decembris".split(" "),STANDALONEMONTHS:"Janv\\u0101ris Febru\\u0101ris Marts Apr\\u012blis Maijs J\\u016bnijs J\\u016blijs Augusts Septembris Oktobris Novembris Decembris".split(" "),\nSHORTMONTHS:"janv. febr. marts apr. maijs j\\u016bn. j\\u016bl. aug. sept. okt. nov. dec.".split(" "),STANDALONESHORTMONTHS:"Janv. Febr. Marts Apr. Maijs J\\u016bn. J\\u016bl. Aug. Sept. Okt. Nov. Dec.".split(" "),WEEKDAYS:"sv\\u0113tdiena pirmdiena otrdiena tre\\u0161diena ceturtdiena piektdiena sestdiena".split(" "),STANDALONEWEEKDAYS:"Sv\\u0113tdiena Pirmdiena Otrdiena Tre\\u0161diena Ceturtdiena Piektdiena Sestdiena".split(" "),SHORTWEEKDAYS:"Sv Pr Ot Tr Ce Pk Se".split(" "),STANDALONESHORTWEEKDAYS:"Sv Pr Ot Tr Ce Pk Se".split(" "),\nNARROWWEEKDAYS:"SPOTCPS".split(""),STANDALONENARROWWEEKDAYS:"SPOTCPS".split(""),SHORTQUARTERS:["1.\\u00a0cet.","2.\\u00a0cet.","3.\\u00a0cet.","4.\\u00a0cet."],QUARTERS:["1. ceturksnis","2. ceturksnis","3. ceturksnis","4. ceturksnis"],AMPMS:["priek\\u0161pusdien\\u0101","p\\u0113cpusdien\\u0101"],DATEFORMATS:["EEEE, y. \'gada\' d. MMMM","y. \'gada\' d. MMMM","y. \'gada\' d. MMM","dd.MM.yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,\nWEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_mk={ERAS:["\\u043f\\u0440.\\u043d.\\u0435.","\\u043d.\\u0435."],ERANAMES:["\\u043f\\u0440\\u0435\\u0434 \\u043d\\u0430\\u0448\\u0430\\u0442\\u0430 \\u0435\\u0440\\u0430","\\u043e\\u0434 \\u043d\\u0430\\u0448\\u0430\\u0442\\u0430 \\u0435\\u0440\\u0430"],NARROWMONTHS:"\\u0458\\u0444\\u043c\\u0430\\u043c\\u0458\\u0458\\u0430\\u0441\\u043e\\u043d\\u0434".split(""),STANDALONENARROWMONTHS:"\\u0458\\u0444\\u043c\\u0430\\u043c\\u0458\\u0458\\u0430\\u0441\\u043e\\u043d\\u0434".split(""),MONTHS:"\\u0458\\u0430\\u043d\\u0443\\u0430\\u0440\\u0438 \\u0444\\u0435\\u0432\\u0440\\u0443\\u0430\\u0440\\u0438 \\u043c\\u0430\\u0440\\u0442 \\u0430\\u043f\\u0440\\u0438\\u043b \\u043c\\u0430\\u0458 \\u0458\\u0443\\u043d\\u0438 \\u0458\\u0443\\u043b\\u0438 \\u0430\\u0432\\u0433\\u0443\\u0441\\u0442 \\u0441\\u0435\\u043f\\u0442\\u0435\\u043c\\u0432\\u0440\\u0438 \\u043e\\u043a\\u0442\\u043e\\u043c\\u0432\\u0440\\u0438 \\u043d\\u043e\\u0435\\u043c\\u0432\\u0440\\u0438 \\u0434\\u0435\\u043a\\u0435\\u043c\\u0432\\u0440\\u0438".split(" "),STANDALONEMONTHS:"\\u0458\\u0430\\u043d\\u0443\\u0430\\u0440\\u0438 \\u0444\\u0435\\u0432\\u0440\\u0443\\u0430\\u0440\\u0438 \\u043c\\u0430\\u0440\\u0442 \\u0430\\u043f\\u0440\\u0438\\u043b \\u043c\\u0430\\u0458 \\u0458\\u0443\\u043d\\u0438 \\u0458\\u0443\\u043b\\u0438 \\u0430\\u0432\\u0433\\u0443\\u0441\\u0442 \\u0441\\u0435\\u043f\\u0442\\u0435\\u043c\\u0432\\u0440\\u0438 \\u043e\\u043a\\u0442\\u043e\\u043c\\u0432\\u0440\\u0438 \\u043d\\u043e\\u0435\\u043c\\u0432\\u0440\\u0438 \\u0434\\u0435\\u043a\\u0435\\u043c\\u0432\\u0440\\u0438".split(" "),\nSHORTMONTHS:"\\u0458\\u0430\\u043d. \\u0444\\u0435\\u0432. \\u043c\\u0430\\u0440. \\u0430\\u043f\\u0440. \\u043c\\u0430\\u0458 \\u0458\\u0443\\u043d. \\u0458\\u0443\\u043b. \\u0430\\u0432\\u0433. \\u0441\\u0435\\u043f\\u0442. \\u043e\\u043a\\u0442. \\u043d\\u043e\\u0435\\u043c. \\u0434\\u0435\\u043a.".split(" "),STANDALONESHORTMONTHS:"\\u0458\\u0430\\u043d. \\u0444\\u0435\\u0432. \\u043c\\u0430\\u0440. \\u0430\\u043f\\u0440. \\u043c\\u0430\\u0458 \\u0458\\u0443\\u043d. \\u0458\\u0443\\u043b. \\u0430\\u0432\\u0433. \\u0441\\u0435\\u043f\\u0442. \\u043e\\u043a\\u0442. \\u043d\\u043e\\u0435\\u043c. \\u0434\\u0435\\u043a.".split(" "),\nWEEKDAYS:"\\u043d\\u0435\\u0434\\u0435\\u043b\\u0430 \\u043f\\u043e\\u043d\\u0435\\u0434\\u0435\\u043b\\u043d\\u0438\\u043a \\u0432\\u0442\\u043e\\u0440\\u043d\\u0438\\u043a \\u0441\\u0440\\u0435\\u0434\\u0430 \\u0447\\u0435\\u0442\\u0432\\u0440\\u0442\\u043e\\u043a \\u043f\\u0435\\u0442\\u043e\\u043a \\u0441\\u0430\\u0431\\u043e\\u0442\\u0430".split(" "),STANDALONEWEEKDAYS:"\\u043d\\u0435\\u0434\\u0435\\u043b\\u0430 \\u043f\\u043e\\u043d\\u0435\\u0434\\u0435\\u043b\\u043d\\u0438\\u043a \\u0432\\u0442\\u043e\\u0440\\u043d\\u0438\\u043a \\u0441\\u0440\\u0435\\u0434\\u0430 \\u0447\\u0435\\u0442\\u0432\\u0440\\u0442\\u043e\\u043a \\u043f\\u0435\\u0442\\u043e\\u043a \\u0441\\u0430\\u0431\\u043e\\u0442\\u0430".split(" "),\nSHORTWEEKDAYS:"\\u043d\\u0435\\u0434. \\u043f\\u043e\\u043d. \\u0432\\u0442. \\u0441\\u0440\\u0435. \\u0447\\u0435\\u0442. \\u043f\\u0435\\u0442. \\u0441\\u0430\\u0431.".split(" "),STANDALONESHORTWEEKDAYS:"\\u043d\\u0435\\u0434. \\u043f\\u043e\\u043d. \\u0432\\u0442. \\u0441\\u0440\\u0435. \\u0447\\u0435\\u0442. \\u043f\\u0435\\u0442. \\u0441\\u0430\\u0431.".split(" "),NARROWWEEKDAYS:"\\u043d\\u043f\\u0432\\u0441\\u0447\\u043f\\u0441".split(""),STANDALONENARROWWEEKDAYS:"\\u043d\\u043f\\u0432\\u0441\\u0447\\u043f\\u0441".split(""),SHORTQUARTERS:["\\u0458\\u0430\\u043d-\\u043c\\u0430\\u0440",\n"\\u0430\\u043f\\u0440-\\u0458\\u0443\\u043d","\\u0458\\u0443\\u043b-\\u0441\\u0435\\u043f","\\u043e\\u043a\\u0442-\\u0434\\u0435\\u043a"],QUARTERS:["\\u043f\\u0440\\u0432\\u043e \\u0442\\u0440\\u043e\\u043c\\u0435\\u0441\\u0435\\u0447\\u0458\\u0435","\\u0432\\u0442\\u043e\\u0440\\u043e \\u0442\\u0440\\u043e\\u043c\\u0435\\u0441\\u0435\\u0447\\u0458\\u0435","\\u0442\\u0440\\u0435\\u0442\\u043e \\u0442\\u0440\\u043e\\u043c\\u0435\\u0441\\u0435\\u0447\\u0458\\u0435","\\u0447\\u0435\\u0442\\u0432\\u0440\\u0442\\u043e \\u0442\\u0440\\u043e\\u043c\\u0435\\u0441\\u0435\\u0447\\u0458\\u0435"],\nAMPMS:["\\u043f\\u0440\\u0435\\u0442\\u043f\\u043b\\u0430\\u0434\\u043d\\u0435","\\u043f\\u043e\\u043f\\u043b\\u0430\\u0434\\u043d\\u0435"],DATEFORMATS:["EEEE, dd MMMM y","dd MMMM y","dd.M.y","dd.M.yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_ml={ERAS:["\\u0d15\\u0d4d\\u0d30\\u0d3f.\\u0d2e\\u0d41.","\\u0d0e\\u0d21\\u0d3f"],ERANAMES:["\\u0d15\\u0d4d\\u0d30\\u0d3f\\u0d38\\u0d4d\\u200c\\u0d24\\u0d41\\u0d35\\u0d3f\\u0d28\\u0d4d \\u0d2e\\u0d41\\u0d2e\\u0d4d\\u0d2a\\u0d4d","\\u0d06\\u0d28\\u0d4d\\u0d28\\u0d4b \\u0d21\\u0d4a\\u0d2e\\u0d3f\\u0d28\\u0d3f"],NARROWMONTHS:"\\u0d1c \\u0d2b \\u0d2e\\u0d3e \\u0d0f \\u0d2e\\u0d46 \\u0d1c\\u0d42 \\u0d1c\\u0d42 \\u0d13 \\u0d38 \\u0d12 \\u0d28 \\u0d21\\u0d3f".split(" "),STANDALONENARROWMONTHS:"\\u0d1c \\u0d2b\\u0d46 \\u0d2e\\u0d3e \\u0d0f \\u0d2e\\u0d46 \\u0d1c\\u0d42 \\u0d1c\\u0d42 \\u0d13 \\u0d38\\u0d46 \\u0d12 \\u0d28 \\u0d21\\u0d3f".split(" "),\nMONTHS:"\\u0d1c\\u0d28\\u0d41\\u0d35\\u0d30\\u0d3f \\u0d2b\\u0d46\\u0d2c\\u0d4d\\u0d30\\u0d41\\u0d35\\u0d30\\u0d3f \\u0d2e\\u0d3e\\u0d7c\\u0d1a\\u0d4d\\u0d1a\\u0d4d \\u0d0f\\u0d2a\\u0d4d\\u0d30\\u0d3f\\u0d7d \\u0d2e\\u0d47\\u0d2f\\u0d4d \\u0d1c\\u0d42\\u0d7a \\u0d1c\\u0d42\\u0d32\\u0d48 \\u0d13\\u0d17\\u0d38\\u0d4d\\u0d31\\u0d4d\\u0d31\\u0d4d \\u0d38\\u0d46\\u0d2a\\u0d4d\\u0d31\\u0d4d\\u0d31\\u0d02\\u0d2c\\u0d7c \\u0d12\\u0d15\\u0d4d\\u200c\\u0d1f\\u0d4b\\u0d2c\\u0d7c \\u0d28\\u0d35\\u0d02\\u0d2c\\u0d7c \\u0d21\\u0d3f\\u0d38\\u0d02\\u0d2c\\u0d7c".split(" "),STANDALONEMONTHS:"\\u0d1c\\u0d28\\u0d41\\u0d35\\u0d30\\u0d3f \\u0d2b\\u0d46\\u0d2c\\u0d4d\\u0d30\\u0d41\\u0d35\\u0d30\\u0d3f \\u0d2e\\u0d3e\\u0d7c\\u0d1a\\u0d4d\\u0d1a\\u0d4d \\u0d0f\\u0d2a\\u0d4d\\u0d30\\u0d3f\\u0d7d \\u0d2e\\u0d47\\u0d2f\\u0d4d \\u0d1c\\u0d42\\u0d7a \\u0d1c\\u0d42\\u0d32\\u0d48 \\u0d13\\u0d17\\u0d38\\u0d4d\\u0d31\\u0d4d\\u0d31\\u0d4d \\u0d38\\u0d46\\u0d2a\\u0d4d\\u0d31\\u0d4d\\u0d31\\u0d02\\u0d2c\\u0d7c \\u0d12\\u0d15\\u0d4d\\u200c\\u0d1f\\u0d4b\\u0d2c\\u0d7c \\u0d28\\u0d35\\u0d02\\u0d2c\\u0d7c \\u0d21\\u0d3f\\u0d38\\u0d02\\u0d2c\\u0d7c".split(" "),\nSHORTMONTHS:"\\u0d1c\\u0d28\\u0d41 \\u0d2b\\u0d46\\u0d2c\\u0d4d\\u0d30\\u0d41 \\u0d2e\\u0d3e\\u0d7c \\u0d0f\\u0d2a\\u0d4d\\u0d30\\u0d3f \\u0d2e\\u0d47\\u0d2f\\u0d4d \\u0d1c\\u0d42\\u0d7a \\u0d1c\\u0d42\\u0d32\\u0d48 \\u0d13\\u0d17 \\u0d38\\u0d46\\u0d2a\\u0d4d\\u0d31\\u0d4d\\u0d31\\u0d02 \\u0d12\\u0d15\\u0d4d\\u0d1f\\u0d4b \\u0d28\\u0d35\\u0d02 \\u0d21\\u0d3f\\u0d38\\u0d02".split(" "),STANDALONESHORTMONTHS:"\\u0d1c\\u0d28\\u0d41 \\u0d2b\\u0d46\\u0d2c\\u0d4d\\u0d30\\u0d41 \\u0d2e\\u0d3e\\u0d7c \\u0d0f\\u0d2a\\u0d4d\\u0d30\\u0d3f \\u0d2e\\u0d47\\u0d2f\\u0d4d \\u0d1c\\u0d42\\u0d7a \\u0d1c\\u0d42\\u0d32\\u0d48 \\u0d13\\u0d17 \\u0d38\\u0d46\\u0d2a\\u0d4d\\u0d31\\u0d4d\\u0d31\\u0d02 \\u0d12\\u0d15\\u0d4d\\u0d1f\\u0d4b \\u0d28\\u0d35\\u0d02 \\u0d21\\u0d3f\\u0d38\\u0d02".split(" "),\nWEEKDAYS:"\\u0d1e\\u0d3e\\u0d2f\\u0d31\\u0d3e\\u0d34\\u0d4d\\u200c\\u0d1a \\u0d24\\u0d3f\\u0d19\\u0d4d\\u0d15\\u0d33\\u0d3e\\u0d34\\u0d4d\\u200c\\u0d1a \\u0d1a\\u0d4a\\u0d35\\u0d4d\\u0d35\\u0d3e\\u0d34\\u0d4d\\u0d1a \\u0d2c\\u0d41\\u0d27\\u0d28\\u0d3e\\u0d34\\u0d4d\\u200c\\u0d1a \\u0d35\\u0d4d\\u0d2f\\u0d3e\\u0d34\\u0d3e\\u0d34\\u0d4d\\u200c\\u0d1a \\u0d35\\u0d46\\u0d33\\u0d4d\\u0d33\\u0d3f\\u0d2f\\u0d3e\\u0d34\\u0d4d\\u200c\\u0d1a \\u0d36\\u0d28\\u0d3f\\u0d2f\\u0d3e\\u0d34\\u0d4d\\u200c\\u0d1a".split(" "),STANDALONEWEEKDAYS:"\\u0d1e\\u0d3e\\u0d2f\\u0d31\\u0d3e\\u0d34\\u0d4d\\u200c\\u0d1a \\u0d24\\u0d3f\\u0d19\\u0d4d\\u0d15\\u0d33\\u0d3e\\u0d34\\u0d4d\\u200c\\u0d1a \\u0d1a\\u0d4a\\u0d35\\u0d4d\\u0d35\\u0d3e\\u0d34\\u0d4d\\u200c\\u0d1a \\u0d2c\\u0d41\\u0d27\\u0d28\\u0d3e\\u0d34\\u0d4d\\u200c\\u0d1a \\u0d35\\u0d4d\\u0d2f\\u0d3e\\u0d34\\u0d3e\\u0d34\\u0d4d\\u200c\\u0d1a \\u0d35\\u0d46\\u0d33\\u0d4d\\u0d33\\u0d3f\\u0d2f\\u0d3e\\u0d34\\u0d4d\\u200c\\u0d1a \\u0d36\\u0d28\\u0d3f\\u0d2f\\u0d3e\\u0d34\\u0d4d\\u200c\\u0d1a".split(" "),\nSHORTWEEKDAYS:"\\u0d1e\\u0d3e\\u0d2f\\u0d7c \\u0d24\\u0d3f\\u0d19\\u0d4d\\u0d15\\u0d7e \\u0d1a\\u0d4a\\u0d35\\u0d4d\\u0d35 \\u0d2c\\u0d41\\u0d27\\u0d7b \\u0d35\\u0d4d\\u0d2f\\u0d3e\\u0d34\\u0d02 \\u0d35\\u0d46\\u0d33\\u0d4d\\u0d33\\u0d3f \\u0d36\\u0d28\\u0d3f".split(" "),STANDALONESHORTWEEKDAYS:"\\u0d1e\\u0d3e\\u0d2f\\u0d7c \\u0d24\\u0d3f\\u0d19\\u0d4d\\u0d15\\u0d7e \\u0d1a\\u0d4a\\u0d35\\u0d4d\\u0d35 \\u0d2c\\u0d41\\u0d27\\u0d7b \\u0d35\\u0d4d\\u0d2f\\u0d3e\\u0d34\\u0d02 \\u0d35\\u0d46\\u0d33\\u0d4d\\u0d33\\u0d3f \\u0d36\\u0d28\\u0d3f".split(" "),NARROWWEEKDAYS:"\\u0d1e \\u0d24\\u0d3f \\u0d1a\\u0d4a \\u0d2c\\u0d41 \\u0d35\\u0d4d\\u0d2f\\u0d3e \\u0d35\\u0d46 \\u0d36".split(" "),\nSTANDALONENARROWWEEKDAYS:"\\u0d1e\\u0d3e \\u0d24\\u0d3f \\u0d1a\\u0d4a \\u0d2c\\u0d41 \\u0d35\\u0d4d\\u0d2f\\u0d3e \\u0d35\\u0d46 \\u0d36".split(" "),SHORTQUARTERS:["\\u0d12\\u0d28\\u0d4d\\u0d28\\u0d3e\\u0d02 \\u0d2a\\u0d3e\\u0d26\\u0d02","\\u0d30\\u0d23\\u0d4d\\u0d1f\\u0d3e\\u0d02 \\u0d2a\\u0d3e\\u0d26\\u0d02","\\u0d2e\\u0d42\\u0d28\\u0d4d\\u0d28\\u0d3e\\u0d02 \\u0d2a\\u0d3e\\u0d26\\u0d02","\\u0d28\\u0d3e\\u0d32\\u0d3e\\u0d02 \\u0d2a\\u0d3e\\u0d26\\u0d02"],QUARTERS:["\\u0d12\\u0d28\\u0d4d\\u0d28\\u0d3e\\u0d02 \\u0d2a\\u0d3e\\u0d26\\u0d02","\\u0d30\\u0d23\\u0d4d\\u0d1f\\u0d3e\\u0d02 \\u0d2a\\u0d3e\\u0d26\\u0d02",\n"\\u0d2e\\u0d42\\u0d28\\u0d4d\\u0d28\\u0d3e\\u0d02 \\u0d2a\\u0d3e\\u0d26\\u0d02","\\u0d28\\u0d3e\\u0d32\\u0d3e\\u0d02 \\u0d2a\\u0d3e\\u0d26\\u0d02"],AMPMS:["AM","PM"],DATEFORMATS:["y, MMMM d, EEEE","y, MMMM d","y, MMM d","d/M/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[6,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_mn={ERAS:["\\u043c.\\u044d.\\u04e9","\\u043c.\\u044d."],ERANAMES:["\\u043c\\u0430\\u043d\\u0430\\u0439 \\u044d\\u0440\\u0438\\u043d\\u0438\\u0439 \\u04e9\\u043c\\u043d\\u04e9\\u0445","\\u043c\\u0430\\u043d\\u0430\\u0439 \\u044d\\u0440\\u0438\\u043d\\u0438\\u0439"],NARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),STANDALONENARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),MONTHS:"\\u041d\\u044d\\u0433\\u0434\\u04af\\u0433\\u044d\\u044d\\u0440 \\u0441\\u0430\\u0440;\\u0425\\u043e\\u0451\\u0440\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440;\\u0413\\u0443\\u0440\\u0430\\u0432\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440;\\u0414\\u04e9\\u0440\\u04e9\\u0432\\u0434\\u04af\\u0433\\u044d\\u044d\\u0440 \\u0441\\u0430\\u0440;\\u0422\\u0430\\u0432\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440;\\u0417\\u0443\\u0440\\u0433\\u0430\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440;\\u0414\\u043e\\u043b\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440;\\u041d\\u0430\\u0439\\u043c\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440;\\u0415\\u0441\\u0434\\u04af\\u0433\\u044d\\u044d\\u0440 \\u0441\\u0430\\u0440;\\u0410\\u0440\\u0430\\u0432\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440;\\u0410\\u0440\\u0432\\u0430\\u043d \\u043d\\u044d\\u0433\\u0434\\u04af\\u0433\\u044d\\u044d\\u0440 \\u0441\\u0430\\u0440;\\u0410\\u0440\\u0432\\u0430\\u043d \\u0445\\u043e\\u0451\\u0440\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440".split(";"),\nSTANDALONEMONTHS:"\\u041d\\u044d\\u0433\\u0434\\u04af\\u0433\\u044d\\u044d\\u0440 \\u0441\\u0430\\u0440;\\u0425\\u043e\\u0451\\u0440\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440;\\u0413\\u0443\\u0440\\u0430\\u0432\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440;\\u0414\\u04e9\\u0440\\u04e9\\u0432\\u0434\\u04af\\u0433\\u044d\\u044d\\u0440 \\u0441\\u0430\\u0440;\\u0422\\u0430\\u0432\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440;\\u0417\\u0443\\u0440\\u0433\\u0430\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440;\\u0414\\u043e\\u043b\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440;\\u041d\\u0430\\u0439\\u043c\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440;\\u0415\\u0441\\u0434\\u04af\\u0433\\u044d\\u044d\\u0440 \\u0441\\u0430\\u0440;\\u0410\\u0440\\u0430\\u0432\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440;\\u0410\\u0440\\u0432\\u0430\\u043d \\u043d\\u044d\\u0433\\u0434\\u04af\\u0433\\u044d\\u044d\\u0440 \\u0441\\u0430\\u0440;\\u0410\\u0440\\u0432\\u0430\\u043d \\u0445\\u043e\\u0451\\u0440\\u0434\\u0443\\u0433\\u0430\\u0430\\u0440 \\u0441\\u0430\\u0440".split(";"),\nSHORTMONTHS:"1-\\u0440 \\u0441\\u0430\\u0440;2-\\u0440 \\u0441\\u0430\\u0440;3-\\u0440 \\u0441\\u0430\\u0440;4-\\u0440 \\u0441\\u0430\\u0440;5-\\u0440 \\u0441\\u0430\\u0440;6-\\u0440 \\u0441\\u0430\\u0440;7-\\u0440 \\u0441\\u0430\\u0440;8-\\u0440 \\u0441\\u0430\\u0440;9-\\u0440 \\u0441\\u0430\\u0440;10-\\u0440 \\u0441\\u0430\\u0440;11-\\u0440 \\u0441\\u0430\\u0440;12-\\u0440 \\u0441\\u0430\\u0440".split(";"),STANDALONESHORTMONTHS:"1-\\u0440 \\u0441\\u0430\\u0440;2-\\u0440 \\u0441\\u0430\\u0440;3-\\u0440 \\u0441\\u0430\\u0440;4-\\u0440 \\u0441\\u0430\\u0440;5-\\u0440 \\u0441\\u0430\\u0440;6-\\u0440 \\u0441\\u0430\\u0440;7-\\u0440 \\u0441\\u0430\\u0440;8-\\u0440 \\u0441\\u0430\\u0440;9-\\u0440 \\u0441\\u0430\\u0440;10-\\u0440 \\u0441\\u0430\\u0440;11-\\u0440 \\u0441\\u0430\\u0440;12-\\u0440 \\u0441\\u0430\\u0440".split(";"),\nWEEKDAYS:"\\u043d\\u044f\\u043c \\u0434\\u0430\\u0432\\u0430\\u0430 \\u043c\\u044f\\u0433\\u043c\\u0430\\u0440 \\u043b\\u0445\\u0430\\u0433\\u0432\\u0430 \\u043f\\u04af\\u0440\\u044d\\u0432 \\u0431\\u0430\\u0430\\u0441\\u0430\\u043d \\u0431\\u044f\\u043c\\u0431\\u0430".split(" "),STANDALONEWEEKDAYS:"\\u043d\\u044f\\u043c \\u0434\\u0430\\u0432\\u0430\\u0430 \\u043c\\u044f\\u0433\\u043c\\u0430\\u0440 \\u043b\\u0445\\u0430\\u0433\\u0432\\u0430 \\u043f\\u04af\\u0440\\u044d\\u0432 \\u0431\\u0430\\u0430\\u0441\\u0430\\u043d \\u0431\\u044f\\u043c\\u0431\\u0430".split(" "),SHORTWEEKDAYS:"\\u041d\\u044f \\u0414\\u0430 \\u041c\\u044f \\u041b\\u0445 \\u041f\\u04af \\u0411\\u0430 \\u0411\\u044f".split(" "),\nSTANDALONESHORTWEEKDAYS:"\\u041d\\u044f \\u0414\\u0430 \\u041c\\u044f \\u041b\\u0445 \\u041f\\u04af \\u0411\\u0430 \\u0411\\u044f".split(" "),NARROWWEEKDAYS:"1234567".split(""),STANDALONENARROWWEEKDAYS:"1234567".split(""),SHORTQUARTERS:["\\u04231","\\u04232","\\u04233","\\u04234"],QUARTERS:["1-\\u0440 \\u0443\\u043b\\u0438\\u0440\\u0430\\u043b","2-\\u0440 \\u0443\\u043b\\u0438\\u0440\\u0430\\u043b","3-\\u0440 \\u0443\\u043b\\u0438\\u0440\\u0430\\u043b","4-\\u0440 \\u0443\\u043b\\u0438\\u0440\\u0430\\u043b"],AMPMS:["\\u04ae\\u04e8","\\u04ae\\u0425"],\nDATEFORMATS:["EEEE, y \'\\u043e\\u043d\\u044b\' MM \'\\u0441\\u0430\\u0440\\u044b\\u043d\' d","y \'\\u043e\\u043d\\u044b\' MM \'\\u0441\\u0430\\u0440\\u044b\\u043d\' d","y MMM d","y-MM-dd"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_mo={ERAS:["\\u00ee.Hr.","d.Hr."],ERANAMES:["\\u00eenainte de Hristos","dup\\u0103 Hristos"],NARROWMONTHS:"IFMAMIIASOND".split(""),STANDALONENARROWMONTHS:"IFMAMIIASOND".split(""),MONTHS:"ianuarie februarie martie aprilie mai iunie iulie august septembrie octombrie noiembrie decembrie".split(" "),STANDALONEMONTHS:"ianuarie februarie martie aprilie mai iunie iulie august septembrie octombrie noiembrie decembrie".split(" "),SHORTMONTHS:"ian. feb. mar. apr. mai iun. iul. aug. sept. oct. nov. dec.".split(" "),\nSTANDALONESHORTMONTHS:"ian. feb. mar. apr. mai iun. iul. aug. sept. oct. nov. dec.".split(" "),WEEKDAYS:"duminic\\u0103 luni mar\\u021bi miercuri joi vineri s\\u00e2mb\\u0103t\\u0103".split(" "),STANDALONEWEEKDAYS:"duminic\\u0103 luni mar\\u021bi miercuri joi vineri s\\u00e2mb\\u0103t\\u0103".split(" "),SHORTWEEKDAYS:"Dum Lun Mar Mie Joi Vin S\\u00e2m".split(" "),STANDALONESHORTWEEKDAYS:"Dum Lun Mar Mie Joi Vin S\\u00e2m".split(" "),NARROWWEEKDAYS:"D L Ma Mi J V S".split(" "),STANDALONENARROWWEEKDAYS:"D L Ma Mi J V S".split(" "),\nSHORTQUARTERS:["trim. 1","trim. 2","trim. 3","trim. 4"],QUARTERS:["trimestrul 1","trimestrul 2","trimestrul 3","trimestrul 4"],AMPMS:["a.m.","p.m."],DATEFORMATS:["EEEE, d MMMM y","d MMMM y","d MMM y","dd.MM.y"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1}, {0}","{1}, {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_mr={ZERODIGIT:2406,ERAS:["\\u0907. \\u0938. \\u092a\\u0942.","\\u0907. \\u0938."],ERANAMES:["\\u0908\\u0938\\u0935\\u0940\\u0938\\u0928\\u092a\\u0942\\u0930\\u094d\\u0935","\\u0908\\u0938\\u0935\\u0940\\u0938\\u0928"],NARROWMONTHS:"\\u091c\\u093e \\u092b\\u0947 \\u092e\\u093e \\u090f \\u092e\\u0947 \\u091c\\u0942 \\u091c\\u0941 \\u0911 \\u0938 \\u0911 \\u0928\\u094b \\u0921\\u093f".split(" "),STANDALONENARROWMONTHS:"\\u091c\\u093e \\u092b\\u0947 \\u092e\\u093e \\u090f \\u092e\\u0947 \\u091c\\u0942 \\u091c\\u0941 \\u0911 \\u0938 \\u0911 \\u0928\\u094b \\u0921\\u093f".split(" "),\nMONTHS:"\\u091c\\u093e\\u0928\\u0947\\u0935\\u093e\\u0930\\u0940 \\u092b\\u0947\\u092c\\u094d\\u0930\\u0941\\u0935\\u093e\\u0930\\u0940 \\u092e\\u093e\\u0930\\u094d\\u091a \\u090f\\u092a\\u094d\\u0930\\u093f\\u0932 \\u092e\\u0947 \\u091c\\u0942\\u0928 \\u091c\\u0941\\u0932\\u0948 \\u0911\\u0917\\u0938\\u094d\\u091f \\u0938\\u092a\\u094d\\u091f\\u0947\\u0902\\u092c\\u0930 \\u0911\\u0915\\u094d\\u091f\\u094b\\u092c\\u0930 \\u0928\\u094b\\u0935\\u094d\\u0939\\u0947\\u0902\\u092c\\u0930 \\u0921\\u093f\\u0938\\u0947\\u0902\\u092c\\u0930".split(" "),STANDALONEMONTHS:"\\u091c\\u093e\\u0928\\u0947\\u0935\\u093e\\u0930\\u0940 \\u092b\\u0947\\u092c\\u094d\\u0930\\u0941\\u0935\\u093e\\u0930\\u0940 \\u092e\\u093e\\u0930\\u094d\\u091a \\u090f\\u092a\\u094d\\u0930\\u093f\\u0932 \\u092e\\u0947 \\u091c\\u0942\\u0928 \\u091c\\u0941\\u0932\\u0948 \\u0911\\u0917\\u0938\\u094d\\u091f \\u0938\\u092a\\u094d\\u091f\\u0947\\u0902\\u092c\\u0930 \\u0911\\u0915\\u094d\\u091f\\u094b\\u092c\\u0930 \\u0928\\u094b\\u0935\\u094d\\u0939\\u0947\\u0902\\u092c\\u0930 \\u0921\\u093f\\u0938\\u0947\\u0902\\u092c\\u0930".split(" "),\nSHORTMONTHS:"\\u091c\\u093e\\u0928\\u0947 \\u092b\\u0947\\u092c\\u094d\\u0930\\u0941 \\u092e\\u093e\\u0930\\u094d\\u091a \\u090f\\u092a\\u094d\\u0930\\u093f \\u092e\\u0947 \\u091c\\u0942\\u0928 \\u091c\\u0941\\u0932\\u0948 \\u0911\\u0917 \\u0938\\u092a\\u094d\\u091f\\u0947\\u0902 \\u0911\\u0915\\u094d\\u091f\\u094b \\u0928\\u094b\\u0935\\u094d\\u0939\\u0947\\u0902 \\u0921\\u093f\\u0938\\u0947\\u0902".split(" "),STANDALONESHORTMONTHS:"\\u091c\\u093e\\u0928\\u0947 \\u092b\\u0947\\u092c\\u094d\\u0930\\u0941 \\u092e\\u093e\\u0930\\u094d\\u091a \\u090f\\u092a\\u094d\\u0930\\u093f \\u092e\\u0947 \\u091c\\u0942\\u0928 \\u091c\\u0941\\u0932\\u0948 \\u0911\\u0917 \\u0938\\u092a\\u094d\\u091f\\u0947\\u0902 \\u0911\\u0915\\u094d\\u091f\\u094b \\u0928\\u094b\\u0935\\u094d\\u0939\\u0947\\u0902 \\u0921\\u093f\\u0938\\u0947\\u0902".split(" "),\nWEEKDAYS:"\\u0930\\u0935\\u093f\\u0935\\u093e\\u0930 \\u0938\\u094b\\u092e\\u0935\\u093e\\u0930 \\u092e\\u0902\\u0917\\u0933\\u0935\\u093e\\u0930 \\u092c\\u0941\\u0927\\u0935\\u093e\\u0930 \\u0917\\u0941\\u0930\\u0941\\u0935\\u093e\\u0930 \\u0936\\u0941\\u0915\\u094d\\u0930\\u0935\\u093e\\u0930 \\u0936\\u0928\\u093f\\u0935\\u093e\\u0930".split(" "),STANDALONEWEEKDAYS:"\\u0930\\u0935\\u093f\\u0935\\u093e\\u0930 \\u0938\\u094b\\u092e\\u0935\\u093e\\u0930 \\u092e\\u0902\\u0917\\u0933\\u0935\\u093e\\u0930 \\u092c\\u0941\\u0927\\u0935\\u093e\\u0930 \\u0917\\u0941\\u0930\\u0941\\u0935\\u093e\\u0930 \\u0936\\u0941\\u0915\\u094d\\u0930\\u0935\\u093e\\u0930 \\u0936\\u0928\\u093f\\u0935\\u093e\\u0930".split(" "),\nSHORTWEEKDAYS:"\\u0930\\u0935\\u093f \\u0938\\u094b\\u092e \\u092e\\u0902\\u0917\\u0933 \\u092c\\u0941\\u0927 \\u0917\\u0941\\u0930\\u0941 \\u0936\\u0941\\u0915\\u094d\\u0930 \\u0936\\u0928\\u093f".split(" "),STANDALONESHORTWEEKDAYS:"\\u0930\\u0935\\u093f \\u0938\\u094b\\u092e \\u092e\\u0902\\u0917\\u0933 \\u092c\\u0941\\u0927 \\u0917\\u0941\\u0930\\u0941 \\u0936\\u0941\\u0915\\u094d\\u0930 \\u0936\\u0928\\u093f".split(" "),NARROWWEEKDAYS:"\\u0930 \\u0938\\u094b \\u092e\\u0902 \\u092c\\u0941 \\u0917\\u0941 \\u0936\\u0941 \\u0936".split(" "),STANDALONENARROWWEEKDAYS:"\\u0930 \\u0938\\u094b \\u092e\\u0902 \\u092c\\u0941 \\u0917\\u0941 \\u0936\\u0941 \\u0936".split(" "),\nSHORTQUARTERS:["\\u0924\\u093f\\u0967","\\u0924\\u093f\\u0968","\\u0924\\u093f\\u0969","\\u0924\\u093f\\u096a"],QUARTERS:["\\u092a\\u094d\\u0930\\u0925\\u092e \\u0924\\u093f\\u092e\\u093e\\u0939\\u0940","\\u0926\\u094d\\u0935\\u093f\\u0924\\u0940\\u092f \\u0924\\u093f\\u092e\\u093e\\u0939\\u0940","\\u0924\\u0943\\u0924\\u0940\\u092f \\u0924\\u093f\\u092e\\u093e\\u0939\\u0940","\\u091a\\u0924\\u0941\\u0930\\u094d\\u0925 \\u0924\\u093f\\u092e\\u093e\\u0939\\u0940"],AMPMS:["\\u092e.\\u092a\\u0942.","\\u092e.\\u0909."],DATEFORMATS:["EEEE, d MMMM, y","d MMMM, y","d MMM, y",\n"d/M/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} \\u0930\\u094b\\u091c\\u0940 {0}","{1} \\u0930\\u094b\\u091c\\u0940 {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[6,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_ms={ERAS:["S.M.","TM"],ERANAMES:["S.M.","TM"],NARROWMONTHS:"JFMAMJJOSOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJOSOND".split(""),MONTHS:"Januari Februari Mac April Mei Jun Julai Ogos September Oktober November Disember".split(" "),STANDALONEMONTHS:"Januari Februari Mac April Mei Jun Julai Ogos September Oktober November Disember".split(" "),SHORTMONTHS:"Jan Feb Mac Apr Mei Jun Jul Ogo Sep Okt Nov Dis".split(" "),STANDALONESHORTMONTHS:"Jan Feb Mac Apr Mei Jun Jul Ogo Sep Okt Nov Dis".split(" "),\nWEEKDAYS:"Ahad Isnin Selasa Rabu Khamis Jumaat Sabtu".split(" "),STANDALONEWEEKDAYS:"Ahad Isnin Selasa Rabu Khamis Jumaat Sabtu".split(" "),SHORTWEEKDAYS:"Ahd Isn Sel Rab Kha Jum Sab".split(" "),STANDALONESHORTWEEKDAYS:"Ahd Isn Sel Rab Kha Jum Sab".split(" "),NARROWWEEKDAYS:"AISRKJS".split(""),STANDALONENARROWWEEKDAYS:"AISRKJS".split(""),SHORTQUARTERS:["S1","S2","S3","S4"],QUARTERS:["Suku pertama","Suku Ke-2","Suku Ke-3","Suku Ke-4"],AMPMS:["PG","PTG"],DATEFORMATS:["EEEE, d MMMM y","d MMMM y","d MMM y",\n"d/MM/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_mt={ERAS:["QK","WK"],ERANAMES:["Qabel Kristu","Wara Kristu"],NARROWMONTHS:"JFMAM\\u0120LASOND".split(""),STANDALONENARROWMONTHS:"Jn Fr Mz Ap Mj \\u0120n Lj Aw St Ob Nv D\\u010b".split(" "),MONTHS:"Jannar Frar Marzu April Mejju \\u0120unju Lulju Awwissu Settembru Ottubru Novembru Di\\u010bembru".split(" "),STANDALONEMONTHS:"Jannar Frar Marzu April Mejju \\u0120unju Lulju Awwissu Settembru Ottubru Novembru Di\\u010bembru".split(" "),SHORTMONTHS:"Jan Fra Mar Apr Mej \\u0120un Lul Aww Set Ott Nov Di\\u010b".split(" "),\nSTANDALONESHORTMONTHS:"Jan Fra Mar Apr Mej \\u0120un Lul Aww Set Ott Nov Di\\u010b".split(" "),WEEKDAYS:"Il-\\u0126add It-Tnejn It-Tlieta L-Erbg\\u0127a Il-\\u0126amis Il-\\u0120img\\u0127a Is-Sibt".split(" "),STANDALONEWEEKDAYS:"Il-\\u0126add It-Tnejn It-Tlieta L-Erbg\\u0127a Il-\\u0126amis Il-\\u0120img\\u0127a Is-Sibt".split(" "),SHORTWEEKDAYS:"\\u0126ad Tne Tli Erb \\u0126am \\u0120im Sib".split(" "),STANDALONESHORTWEEKDAYS:"\\u0126ad Tne Tli Erb \\u0126am \\u0120im Sib".split(" "),NARROWWEEKDAYS:"\\u0126TTE\\u0126\\u0120S".split(""),\nSTANDALONENARROWWEEKDAYS:"\\u0126d Tn Tl Er \\u0126m \\u0120m Sb".split(" "),SHORTQUARTERS:["K1","K2","K3","K4"],QUARTERS:["1el kwart","2ni kwart","3et kwart","4ba\\u2019 kwart"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, d \'ta\'\\u2019 MMMM y","d \'ta\'\\u2019 MMMM y","dd MMM y","dd/MM/y"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_my={ZERODIGIT:4160,ERAS:["\\u1018\\u102e\\u1005\\u102e","\\u1021\\u1031\\u1012\\u102e"],ERANAMES:["\\u1001\\u101b\\u1005\\u103a\\u1010\\u1031\\u102c\\u103a \\u1019\\u1015\\u1031\\u102b\\u103a\\u1019\\u102e\\u1000\\u102c\\u101c","\\u1001\\u101b\\u1005\\u103a\\u1010\\u1031\\u102c\\u103a \\u1015\\u1031\\u102b\\u103a\\u1011\\u103d\\u1014\\u103a\\u1038\\u1015\\u103c\\u102e\\u1038\\u1000\\u102c\\u101c"],NARROWMONTHS:"\\u1007\\u1016\\u1019\\u1027\\u1019\\u1007\\u1007\\u1029\\u1005\\u1021\\u1014\\u1012".split(""),STANDALONENARROWMONTHS:"\\u1007\\u1016\\u1019\\u1027\\u1019\\u1007\\u1007\\u1029\\u1005\\u1021\\u1014\\u1012".split(""),\nMONTHS:"\\u1007\\u1014\\u103a\\u1014\\u101d\\u102b\\u101b\\u102e \\u1016\\u1031\\u1016\\u1031\\u102c\\u103a\\u101d\\u102b\\u101b\\u102e \\u1019\\u1010\\u103a \\u1027\\u1015\\u103c\\u102e \\u1019\\u1031 \\u1007\\u103d\\u1014\\u103a \\u1007\\u1030\\u101c\\u102d\\u102f\\u1004\\u103a \\u1029\\u1002\\u102f\\u1010\\u103a \\u1005\\u1000\\u103a\\u1010\\u1004\\u103a\\u1018\\u102c \\u1021\\u1031\\u102c\\u1000\\u103a\\u1010\\u102d\\u102f\\u1018\\u102c \\u1014\\u102d\\u102f\\u101d\\u1004\\u103a\\u1018\\u102c \\u1012\\u102e\\u1007\\u1004\\u103a\\u1018\\u102c".split(" "),STANDALONEMONTHS:"\\u1007\\u1014\\u103a\\u1014\\u101d\\u102b\\u101b\\u102e \\u1016\\u1031\\u1016\\u1031\\u102c\\u103a\\u101d\\u102b\\u101b\\u102e \\u1019\\u1010\\u103a \\u1027\\u1015\\u103c\\u102e \\u1019\\u1031 \\u1007\\u103d\\u1014\\u103a \\u1007\\u1030\\u101c\\u102d\\u102f\\u1004\\u103a \\u1029\\u1002\\u102f\\u1010\\u103a \\u1005\\u1000\\u103a\\u1010\\u1004\\u103a\\u1018\\u102c \\u1021\\u1031\\u102c\\u1000\\u103a\\u1010\\u102d\\u102f\\u1018\\u102c \\u1014\\u102d\\u102f\\u101d\\u1004\\u103a\\u1018\\u102c \\u1012\\u102e\\u1007\\u1004\\u103a\\u1018\\u102c".split(" "),\nSHORTMONTHS:"\\u1007\\u1014\\u103a \\u1016\\u1031 \\u1019\\u1010\\u103a \\u1027\\u1015\\u103c\\u102e \\u1019\\u1031 \\u1007\\u103d\\u1014\\u103a \\u1007\\u1030 \\u1029 \\u1005\\u1000\\u103a \\u1021\\u1031\\u102c\\u1000\\u103a \\u1014\\u102d\\u102f \\u1012\\u102e".split(" "),STANDALONESHORTMONTHS:"\\u1007\\u1014\\u103a \\u1016\\u1031 \\u1019\\u1010\\u103a \\u1027\\u1015\\u103c\\u102e \\u1019\\u1031 \\u1007\\u103d\\u1014\\u103a \\u1007\\u1030 \\u1029 \\u1005\\u1000\\u103a \\u1021\\u1031\\u102c\\u1000\\u103a \\u1014\\u102d\\u102f \\u1012\\u102e".split(" "),WEEKDAYS:"\\u1010\\u1014\\u1004\\u103a\\u1039\\u1002\\u1014\\u103d\\u1031 \\u1010\\u1014\\u1004\\u103a\\u1039\\u101c\\u102c \\u1021\\u1004\\u103a\\u1039\\u1002\\u102b \\u1017\\u102f\\u1012\\u1039\\u1013\\u101f\\u1030\\u1038 \\u1000\\u103c\\u102c\\u101e\\u1015\\u1010\\u1031\\u1038 \\u101e\\u1031\\u102c\\u1000\\u103c\\u102c \\u1005\\u1014\\u1031".split(" "),\nSTANDALONEWEEKDAYS:"\\u1010\\u1014\\u1004\\u103a\\u1039\\u1002\\u1014\\u103d\\u1031 \\u1010\\u1014\\u1004\\u103a\\u1039\\u101c\\u102c \\u1021\\u1004\\u103a\\u1039\\u1002\\u102b \\u1017\\u102f\\u1012\\u1039\\u1013\\u101f\\u1030\\u1038 \\u1000\\u103c\\u102c\\u101e\\u1015\\u1010\\u1031\\u1038 \\u101e\\u1031\\u102c\\u1000\\u103c\\u102c \\u1005\\u1014\\u1031".split(" "),SHORTWEEKDAYS:"\\u1010\\u1014\\u1004\\u103a\\u1039\\u1002\\u1014\\u103d\\u1031 \\u1010\\u1014\\u1004\\u103a\\u1039\\u101c\\u102c \\u1021\\u1004\\u103a\\u1039\\u1002\\u102b \\u1017\\u102f\\u1012\\u1039\\u1013\\u101f\\u1030\\u1038 \\u1000\\u103c\\u102c\\u101e\\u1015\\u1010\\u1031\\u1038 \\u101e\\u1031\\u102c\\u1000\\u103c\\u102c \\u1005\\u1014\\u1031".split(" "),\nSTANDALONESHORTWEEKDAYS:"\\u1010\\u1014\\u1004\\u103a\\u1039\\u1002\\u1014\\u103d\\u1031 \\u1010\\u1014\\u1004\\u103a\\u1039\\u101c\\u102c \\u1021\\u1004\\u103a\\u1039\\u1002\\u102b \\u1017\\u102f\\u1012\\u1039\\u1013\\u101f\\u1030\\u1038 \\u1000\\u103c\\u102c\\u101e\\u1015\\u1010\\u1031\\u1038 \\u101e\\u1031\\u102c\\u1000\\u103c\\u102c \\u1005\\u1014\\u1031".split(" "),NARROWWEEKDAYS:"\\u1010\\u1010\\u1021\\u1017\\u1000\\u101e\\u1005".split(""),STANDALONENARROWWEEKDAYS:"\\u1010\\u1010\\u1021\\u1017\\u1000\\u101e\\u1005".split(""),SHORTQUARTERS:["\\u1015\\u1011\\u1019 \\u101e\\u102f\\u1036\\u1038\\u101c\\u1015\\u1010\\u103a",\n"\\u1012\\u102f\\u1010\\u102d\\u101a \\u101e\\u102f\\u1036\\u1038\\u101c\\u1015\\u1010\\u103a","\\u1010\\u1010\\u102d\\u101a \\u101e\\u102f\\u1036\\u1038\\u101c\\u1015\\u1010\\u103a","\\u1005\\u1010\\u102f\\u1010\\u1039\\u1011 \\u101e\\u102f\\u1036\\u1038\\u101c\\u1015\\u1010\\u103a"],QUARTERS:["\\u1015\\u1011\\u1019 \\u101e\\u102f\\u1036\\u1038\\u101c\\u1015\\u1010\\u103a","\\u1012\\u102f\\u1010\\u102d\\u101a \\u101e\\u102f\\u1036\\u1038\\u101c\\u1015\\u1010\\u103a","\\u1010\\u1010\\u102d\\u101a \\u101e\\u102f\\u1036\\u1038\\u101c\\u1015\\u1010\\u103a","\\u1005\\u1010\\u102f\\u1010\\u1039\\u1011 \\u101e\\u102f\\u1036\\u1038\\u101c\\u1015\\u1010\\u103a"],\nAMPMS:["\\u1014\\u1036\\u1014\\u1000\\u103a","\\u100a\\u1014\\u1031"],DATEFORMATS:["EEEE\\u104a dd MMMM y","d MMMM y","d MMM y","dd-MM-yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1}\\u1019\\u103e\\u102c {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_nb={ERAS:["f.Kr.","e.Kr."],ERANAMES:["f\\u00f8r Kristus","etter Kristus"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"januar februar mars april mai juni juli august september oktober november desember".split(" "),STANDALONEMONTHS:"januar februar mars april mai juni juli august september oktober november desember".split(" "),SHORTMONTHS:"jan. feb. mar. apr. mai jun. jul. aug. sep. okt. nov. des.".split(" "),STANDALONESHORTMONTHS:"jan feb mar apr mai jun jul aug sep okt nov des".split(" "),\nWEEKDAYS:"s\\u00f8ndag mandag tirsdag onsdag torsdag fredag l\\u00f8rdag".split(" "),STANDALONEWEEKDAYS:"s\\u00f8ndag mandag tirsdag onsdag torsdag fredag l\\u00f8rdag".split(" "),SHORTWEEKDAYS:"s\\u00f8n. man. tir. ons. tor. fre. l\\u00f8r.".split(" "),STANDALONESHORTWEEKDAYS:"s\\u00f8n. man. tir. ons. tor. fre. l\\u00f8r.".split(" "),NARROWWEEKDAYS:"SMTOTFL".split(""),STANDALONENARROWWEEKDAYS:"SMTOTFL".split(""),SHORTQUARTERS:["K1","K2","K3","K4"],QUARTERS:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],\nAMPMS:["a.m.","p.m."],DATEFORMATS:["EEEE d. MMMM y","d. MMMM y","d. MMM y","dd.MM.y"],TIMEFORMATS:["HH.mm.ss zzzz","HH.mm.ss z","HH.mm.ss","HH.mm"],DATETIMEFORMATS:["{1} {0}","{1} \'kl\'. {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_ne={ZERODIGIT:2406,ERAS:["\\u0908\\u0938\\u093e \\u092a\\u0942\\u0930\\u094d\\u0935","\\u0938\\u0928\\u094d"],ERANAMES:["\\u0908\\u0938\\u093e \\u092a\\u0942\\u0930\\u094d\\u0935","\\u0938\\u0928\\u094d"],NARROWMONTHS:"\\u0967 \\u0968 \\u0969 \\u096a \\u096b \\u096c \\u096d \\u096e \\u096f \\u0967\\u0966 \\u0967\\u0967 \\u0967\\u0968".split(" "),STANDALONENARROWMONTHS:"\\u0967 \\u0968 \\u0969 \\u096a \\u096b \\u096c \\u096d \\u096e \\u096f \\u0967\\u0966 \\u0967\\u0967 \\u0967\\u0968".split(" "),MONTHS:"\\u091c\\u0928\\u0935\\u0930\\u0940 \\u092b\\u0947\\u092c\\u094d\\u0930\\u0941\\u0905\\u0930\\u0940 \\u092e\\u093e\\u0930\\u094d\\u091a \\u0905\\u092a\\u094d\\u0930\\u093f\\u0932 \\u092e\\u0908 \\u091c\\u0941\\u0928 \\u091c\\u0941\\u0932\\u093e\\u0908 \\u0905\\u0917\\u0938\\u094d\\u091f \\u0938\\u0947\\u092a\\u094d\\u091f\\u0947\\u092e\\u094d\\u092c\\u0930 \\u0905\\u0915\\u094d\\u091f\\u094b\\u092c\\u0930 \\u0928\\u094b\\u092d\\u0947\\u092e\\u094d\\u092c\\u0930 \\u0921\\u093f\\u0938\\u0947\\u092e\\u094d\\u092c\\u0930".split(" "),\nSTANDALONEMONTHS:"\\u091c\\u0928\\u0935\\u0930\\u0940 \\u092b\\u0947\\u092c\\u094d\\u0930\\u0941\\u0905\\u0930\\u0940 \\u092e\\u093e\\u0930\\u094d\\u091a \\u0905\\u092a\\u094d\\u0930\\u093f\\u0932 \\u092e\\u0947 \\u091c\\u0941\\u0928 \\u091c\\u0941\\u0932\\u093e\\u0908 \\u0905\\u0917\\u0938\\u094d\\u091f \\u0938\\u0947\\u092a\\u094d\\u091f\\u0947\\u092e\\u094d\\u092c\\u0930 \\u0905\\u0915\\u094d\\u091f\\u094b\\u092c\\u0930 \\u0928\\u094b\\u092d\\u0947\\u092e\\u094d\\u092c\\u0930 \\u0921\\u093f\\u0938\\u0947\\u092e\\u094d\\u092c\\u0930".split(" "),SHORTMONTHS:"\\u091c\\u0928\\u0935\\u0930\\u0940 \\u092b\\u0947\\u092c\\u094d\\u0930\\u0941\\u0905\\u0930\\u0940 \\u092e\\u093e\\u0930\\u094d\\u091a \\u0905\\u092a\\u094d\\u0930\\u093f\\u0932 \\u092e\\u0947 \\u091c\\u0941\\u0928 \\u091c\\u0941\\u0932\\u093e\\u0908 \\u0905\\u0917\\u0938\\u094d\\u091f \\u0938\\u0947\\u092a\\u094d\\u091f\\u0947\\u092e\\u094d\\u092c\\u0930 \\u0905\\u0915\\u094d\\u091f\\u094b\\u092c\\u0930 \\u0928\\u094b\\u092d\\u0947\\u092e\\u094d\\u092c\\u0930 \\u0921\\u093f\\u0938\\u0947\\u092e\\u094d\\u092c\\u0930".split(" "),\nSTANDALONESHORTMONTHS:"\\u091c\\u0928\\u0935\\u0930\\u0940 \\u092b\\u0947\\u092c\\u094d\\u0930\\u0941\\u0905\\u0930\\u0940 \\u092e\\u093e\\u0930\\u094d\\u091a \\u0905\\u092a\\u094d\\u0930\\u093f\\u0932 \\u092e\\u0947 \\u091c\\u0941\\u0928 \\u091c\\u0941\\u0932\\u093e\\u0908 \\u0905\\u0917\\u0938\\u094d\\u091f \\u0938\\u0947\\u092a\\u094d\\u091f\\u0947\\u092e\\u094d\\u092c\\u0930 \\u0905\\u0915\\u094d\\u091f\\u094b\\u092c\\u0930 \\u0928\\u094b\\u092d\\u0947\\u092e\\u094d\\u092c\\u0930 \\u0921\\u093f\\u0938\\u0947\\u092e\\u094d\\u092c\\u0930".split(" "),WEEKDAYS:"\\u0906\\u0907\\u0924\\u092c\\u093e\\u0930 \\u0938\\u094b\\u092e\\u092c\\u093e\\u0930 \\u092e\\u0919\\u094d\\u0917\\u0932\\u092c\\u093e\\u0930 \\u092c\\u0941\\u0927\\u092c\\u093e\\u0930 \\u092c\\u093f\\u0939\\u093f\\u092c\\u093e\\u0930 \\u0936\\u0941\\u0915\\u094d\\u0930\\u092c\\u093e\\u0930 \\u0936\\u0928\\u093f\\u092c\\u093e\\u0930".split(" "),\nSTANDALONEWEEKDAYS:"\\u0906\\u0907\\u0924\\u092c\\u093e\\u0930 \\u0938\\u094b\\u092e\\u092c\\u093e\\u0930 \\u092e\\u0919\\u094d\\u0917\\u0932\\u092c\\u093e\\u0930 \\u092c\\u0941\\u0927\\u092c\\u093e\\u0930 \\u092c\\u093f\\u0939\\u093f\\u092c\\u093e\\u0930 \\u0936\\u0941\\u0915\\u094d\\u0930\\u092c\\u093e\\u0930 \\u0936\\u0928\\u093f\\u092c\\u093e\\u0930".split(" "),SHORTWEEKDAYS:"\\u0906\\u0907\\u0924 \\u0938\\u094b\\u092e \\u092e\\u0919\\u094d\\u0917\\u0932 \\u092c\\u0941\\u0927 \\u092c\\u093f\\u0939\\u0940 \\u0936\\u0941\\u0915\\u094d\\u0930 \\u0936\\u0928\\u093f".split(" "),\nSTANDALONESHORTWEEKDAYS:"\\u0906\\u0907\\u0924 \\u0938\\u094b\\u092e \\u092e\\u0919\\u094d\\u0917\\u0932 \\u092c\\u0941\\u0927 \\u092c\\u093f\\u0939\\u0940 \\u0936\\u0941\\u0915\\u094d\\u0930 \\u0936\\u0928\\u093f".split(" "),NARROWWEEKDAYS:"\\u0906 \\u0938\\u094b \\u092e \\u092c\\u0941 \\u092c\\u093f \\u0936\\u0941 \\u0936".split(" "),STANDALONENARROWWEEKDAYS:"\\u0906 \\u0938\\u094b \\u092e \\u092c\\u0941 \\u092c\\u093f \\u0936\\u0941 \\u0936".split(" "),SHORTQUARTERS:["\\u092a\\u0939\\u093f\\u0932\\u094b \\u0938\\u0924\\u094d\\u0930","\\u0926\\u094b\\u0938\\u094d\\u0930\\u094b \\u0938\\u0924\\u094d\\u0930",\n"\\u0924\\u0947\\u0938\\u094d\\u0930\\u094b \\u0938\\u0924\\u094d\\u0930","\\u091a\\u094c\\u0925\\u094b \\u0938\\u0924\\u094d\\u0930"],QUARTERS:["\\u092a\\u0939\\u093f\\u0932\\u094b \\u0938\\u0924\\u094d\\u0930","\\u0926\\u094b\\u0938\\u094d\\u0930\\u094b \\u0938\\u0924\\u094d\\u0930","\\u0924\\u0947\\u0938\\u094d\\u0930\\u094b \\u0938\\u0924\\u094d\\u0930","\\u091a\\u094c\\u0925\\u094b \\u0938\\u0924\\u094d\\u0930"],AMPMS:["\\u092a\\u0942\\u0930\\u094d\\u0935\\u093e\\u0939\\u094d\\u0928","\\u0905\\u092a\\u0930\\u093e\\u0939\\u094d\\u0928"],DATEFORMATS:["y MMMM d, EEEE",\n"y MMMM d","y MMM d","y-MM-dd"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_nl={ERAS:["v.Chr.","n.Chr."],ERANAMES:["voor Christus","na Christus"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"januari februari maart april mei juni juli augustus september oktober november december".split(" "),STANDALONEMONTHS:"januari februari maart april mei juni juli augustus september oktober november december".split(" "),SHORTMONTHS:"jan. feb. mrt. apr. mei jun. jul. aug. sep. okt. nov. dec.".split(" "),STANDALONESHORTMONTHS:"jan. feb. mrt. apr. mei jun. jul. aug. sep. okt. nov. dec.".split(" "),\nWEEKDAYS:"zondag maandag dinsdag woensdag donderdag vrijdag zaterdag".split(" "),STANDALONEWEEKDAYS:"zondag maandag dinsdag woensdag donderdag vrijdag zaterdag".split(" "),SHORTWEEKDAYS:"zo ma di wo do vr za".split(" "),STANDALONESHORTWEEKDAYS:"zo ma di wo do vr za".split(" "),NARROWWEEKDAYS:"ZMDWDVZ".split(""),STANDALONENARROWWEEKDAYS:"ZMDWDVZ".split(""),SHORTQUARTERS:["K1","K2","K3","K4"],QUARTERS:["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],AMPMS:["a.m.","p.m."],DATEFORMATS:["EEEE d MMMM y",\n"d MMMM y","d MMM y","dd-MM-yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_no={ERAS:["f.Kr.","e.Kr."],ERANAMES:["f\\u00f8r Kristus","etter Kristus"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"januar februar mars april mai juni juli august september oktober november desember".split(" "),STANDALONEMONTHS:"januar februar mars april mai juni juli august september oktober november desember".split(" "),SHORTMONTHS:"jan. feb. mar. apr. mai jun. jul. aug. sep. okt. nov. des.".split(" "),STANDALONESHORTMONTHS:"jan feb mar apr mai jun jul aug sep okt nov des".split(" "),\nWEEKDAYS:"s\\u00f8ndag mandag tirsdag onsdag torsdag fredag l\\u00f8rdag".split(" "),STANDALONEWEEKDAYS:"s\\u00f8ndag mandag tirsdag onsdag torsdag fredag l\\u00f8rdag".split(" "),SHORTWEEKDAYS:"s\\u00f8n. man. tir. ons. tor. fre. l\\u00f8r.".split(" "),STANDALONESHORTWEEKDAYS:"s\\u00f8n. man. tir. ons. tor. fre. l\\u00f8r.".split(" "),NARROWWEEKDAYS:"SMTOTFL".split(""),STANDALONENARROWWEEKDAYS:"SMTOTFL".split(""),SHORTQUARTERS:["K1","K2","K3","K4"],QUARTERS:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],\nAMPMS:["a.m.","p.m."],DATEFORMATS:["EEEE d. MMMM y","d. MMMM y","d. MMM y","dd.MM.y"],TIMEFORMATS:["HH.mm.ss zzzz","HH.mm.ss z","HH.mm.ss","HH.mm"],DATETIMEFORMATS:["{1} {0}","{1} \'kl\'. {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};goog.i18n.DateTimeSymbols_no_NO=goog.i18n.DateTimeSymbols_no;\ngoog.i18n.DateTimeSymbols_or={ERAS:["BCE","CE"],ERANAMES:["BCE","CE"],NARROWMONTHS:"\\u0b1c\\u0b3e \\u0b2b\\u0b47 \\u0b2e\\u0b3e \\u0b05 \\u0b2e\\u0b07 \\u0b1c\\u0b41 \\u0b1c\\u0b41 \\u0b05 \\u0b38\\u0b47 \\u0b05 \\u0b28 \\u0b21\\u0b3f".split(" "),STANDALONENARROWMONTHS:"\\u0b1c\\u0b3e \\u0b2b\\u0b47 \\u0b2e\\u0b3e \\u0b05 \\u0b2e\\u0b07 \\u0b1c\\u0b41 \\u0b1c\\u0b41 \\u0b05 \\u0b38\\u0b47 \\u0b05 \\u0b28 \\u0b21\\u0b3f".split(" "),MONTHS:"\\u0b1c\\u0b3e\\u0b28\\u0b41\\u0b06\\u0b30\\u0b40 \\u0b2b\\u0b47\\u0b2c\\u0b43\\u0b06\\u0b30\\u0b40 \\u0b2e\\u0b3e\\u0b30\\u0b4d\\u0b1a\\u0b4d\\u0b1a \\u0b05\\u0b2a\\u0b4d\\u0b30\\u0b47\\u0b32 \\u0b2e\\u0b07 \\u0b1c\\u0b41\\u0b28 \\u0b1c\\u0b41\\u0b32\\u0b3e\\u0b07 \\u0b05\\u0b17\\u0b37\\u0b4d\\u0b1f \\u0b38\\u0b47\\u0b2a\\u0b4d\\u0b1f\\u0b47\\u0b2e\\u0b4d\\u0b2c\\u0b30 \\u0b05\\u0b15\\u0b4d\\u0b1f\\u0b4b\\u0b2c\\u0b30 \\u0b28\\u0b2d\\u0b47\\u0b2e\\u0b4d\\u0b2c\\u0b30 \\u0b21\\u0b3f\\u0b38\\u0b47\\u0b2e\\u0b4d\\u0b2c\\u0b30".split(" "),\nSTANDALONEMONTHS:"\\u0b1c\\u0b3e\\u0b28\\u0b41\\u0b06\\u0b30\\u0b40 \\u0b2b\\u0b47\\u0b2c\\u0b43\\u0b06\\u0b30\\u0b40 \\u0b2e\\u0b3e\\u0b30\\u0b4d\\u0b1a\\u0b4d\\u0b1a \\u0b05\\u0b2a\\u0b4d\\u0b30\\u0b47\\u0b32 \\u0b2e\\u0b07 \\u0b1c\\u0b41\\u0b28 \\u0b1c\\u0b41\\u0b32\\u0b3e\\u0b07 \\u0b05\\u0b17\\u0b37\\u0b4d\\u0b1f \\u0b38\\u0b47\\u0b2a\\u0b4d\\u0b1f\\u0b47\\u0b2e\\u0b4d\\u0b2c\\u0b30 \\u0b05\\u0b15\\u0b4d\\u0b1f\\u0b4b\\u0b2c\\u0b30 \\u0b28\\u0b2d\\u0b47\\u0b2e\\u0b4d\\u0b2c\\u0b30 \\u0b21\\u0b3f\\u0b38\\u0b47\\u0b2e\\u0b4d\\u0b2c\\u0b30".split(" "),SHORTMONTHS:"\\u0b1c\\u0b3e\\u0b28\\u0b41\\u0b06\\u0b30\\u0b40 \\u0b2b\\u0b47\\u0b2c\\u0b43\\u0b06\\u0b30\\u0b40 \\u0b2e\\u0b3e\\u0b30\\u0b4d\\u0b1a\\u0b4d\\u0b1a \\u0b05\\u0b2a\\u0b4d\\u0b30\\u0b47\\u0b32 \\u0b2e\\u0b07 \\u0b1c\\u0b41\\u0b28 \\u0b1c\\u0b41\\u0b32\\u0b3e\\u0b07 \\u0b05\\u0b17\\u0b37\\u0b4d\\u0b1f \\u0b38\\u0b47\\u0b2a\\u0b4d\\u0b1f\\u0b47\\u0b2e\\u0b4d\\u0b2c\\u0b30 \\u0b05\\u0b15\\u0b4d\\u0b1f\\u0b4b\\u0b2c\\u0b30 \\u0b28\\u0b2d\\u0b47\\u0b2e\\u0b4d\\u0b2c\\u0b30 \\u0b21\\u0b3f\\u0b38\\u0b47\\u0b2e\\u0b4d\\u0b2c\\u0b30".split(" "),\nSTANDALONESHORTMONTHS:"\\u0b1c\\u0b3e\\u0b28\\u0b41\\u0b06\\u0b30\\u0b40 \\u0b2b\\u0b47\\u0b2c\\u0b43\\u0b06\\u0b30\\u0b40 \\u0b2e\\u0b3e\\u0b30\\u0b4d\\u0b1a\\u0b4d\\u0b1a \\u0b05\\u0b2a\\u0b4d\\u0b30\\u0b47\\u0b32 \\u0b2e\\u0b07 \\u0b1c\\u0b41\\u0b28 \\u0b1c\\u0b41\\u0b32\\u0b3e\\u0b07 \\u0b05\\u0b17\\u0b37\\u0b4d\\u0b1f \\u0b38\\u0b47\\u0b2a\\u0b4d\\u0b1f\\u0b47\\u0b2e\\u0b4d\\u0b2c\\u0b30 \\u0b05\\u0b15\\u0b4d\\u0b1f\\u0b4b\\u0b2c\\u0b30 \\u0b28\\u0b2d\\u0b47\\u0b2e\\u0b4d\\u0b2c\\u0b30 \\u0b21\\u0b3f\\u0b38\\u0b47\\u0b2e\\u0b4d\\u0b2c\\u0b30".split(" "),WEEKDAYS:"\\u0b30\\u0b2c\\u0b3f\\u0b2c\\u0b3e\\u0b30 \\u0b38\\u0b4b\\u0b2e\\u0b2c\\u0b3e\\u0b30 \\u0b2e\\u0b19\\u0b4d\\u0b17\\u0b33\\u0b2c\\u0b3e\\u0b30 \\u0b2c\\u0b41\\u0b27\\u0b2c\\u0b3e\\u0b30 \\u0b17\\u0b41\\u0b30\\u0b41\\u0b2c\\u0b3e\\u0b30 \\u0b36\\u0b41\\u0b15\\u0b4d\\u0b30\\u0b2c\\u0b3e\\u0b30 \\u0b36\\u0b28\\u0b3f\\u0b2c\\u0b3e\\u0b30".split(" "),\nSTANDALONEWEEKDAYS:"\\u0b30\\u0b2c\\u0b3f\\u0b2c\\u0b3e\\u0b30 \\u0b38\\u0b4b\\u0b2e\\u0b2c\\u0b3e\\u0b30 \\u0b2e\\u0b19\\u0b4d\\u0b17\\u0b33\\u0b2c\\u0b3e\\u0b30 \\u0b2c\\u0b41\\u0b27\\u0b2c\\u0b3e\\u0b30 \\u0b17\\u0b41\\u0b30\\u0b41\\u0b2c\\u0b3e\\u0b30 \\u0b36\\u0b41\\u0b15\\u0b4d\\u0b30\\u0b2c\\u0b3e\\u0b30 \\u0b36\\u0b28\\u0b3f\\u0b2c\\u0b3e\\u0b30".split(" "),SHORTWEEKDAYS:"\\u0b30\\u0b2c\\u0b3f \\u0b38\\u0b4b\\u0b2e \\u0b2e\\u0b19\\u0b4d\\u0b17\\u0b33 \\u0b2c\\u0b41\\u0b27 \\u0b17\\u0b41\\u0b30\\u0b41 \\u0b36\\u0b41\\u0b15\\u0b4d\\u0b30 \\u0b36\\u0b28\\u0b3f".split(" "),\nSTANDALONESHORTWEEKDAYS:"\\u0b30\\u0b2c\\u0b3f \\u0b38\\u0b4b\\u0b2e \\u0b2e\\u0b19\\u0b4d\\u0b17\\u0b33 \\u0b2c\\u0b41\\u0b27 \\u0b17\\u0b41\\u0b30\\u0b41 \\u0b36\\u0b41\\u0b15\\u0b4d\\u0b30 \\u0b36\\u0b28\\u0b3f".split(" "),NARROWWEEKDAYS:"\\u0b30 \\u0b38\\u0b4b \\u0b2e \\u0b2c\\u0b41 \\u0b17\\u0b41 \\u0b36\\u0b41 \\u0b36".split(" "),STANDALONENARROWWEEKDAYS:"\\u0b30 \\u0b38\\u0b4b \\u0b2e \\u0b2c\\u0b41 \\u0b17\\u0b41 \\u0b36\\u0b41 \\u0b36".split(" "),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["Q1","Q2","Q3","Q4"],AMPMS:["am","pm"],DATEFORMATS:["EEEE, d MMMM y",\n"d MMMM y","d MMM y","d-M-yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[6,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_pa={ERAS:["\\u0a08. \\u0a2a\\u0a42.","\\u0a38\\u0a70\\u0a28"],ERANAMES:["\\u0a08\\u0a38\\u0a35\\u0a40 \\u0a2a\\u0a42\\u0a30\\u0a35","\\u0a08\\u0a38\\u0a35\\u0a40 \\u0a38\\u0a70\\u0a28"],NARROWMONTHS:"\\u0a1c \\u0a2b\\u0a3c \\u0a2e\\u0a3e \\u0a05 \\u0a2e \\u0a1c\\u0a42 \\u0a1c\\u0a41 \\u0a05 \\u0a38 \\u0a05 \\u0a28 \\u0a26".split(" "),STANDALONENARROWMONTHS:"\\u0a1c \\u0a2b\\u0a3c \\u0a2e\\u0a3e \\u0a05 \\u0a2e \\u0a1c\\u0a42 \\u0a1c\\u0a41 \\u0a05 \\u0a38 \\u0a05 \\u0a28 \\u0a26".split(" "),MONTHS:"\\u0a1c\\u0a28\\u0a35\\u0a30\\u0a40 \\u0a2b\\u0a3c\\u0a30\\u0a35\\u0a30\\u0a40 \\u0a2e\\u0a3e\\u0a30\\u0a1a \\u0a05\\u0a2a\\u0a4d\\u0a30\\u0a48\\u0a32 \\u0a2e\\u0a08 \\u0a1c\\u0a42\\u0a28 \\u0a1c\\u0a41\\u0a32\\u0a3e\\u0a08 \\u0a05\\u0a17\\u0a38\\u0a24 \\u0a38\\u0a24\\u0a70\\u0a2c\\u0a30 \\u0a05\\u0a15\\u0a24\\u0a42\\u0a2c\\u0a30 \\u0a28\\u0a35\\u0a70\\u0a2c\\u0a30 \\u0a26\\u0a38\\u0a70\\u0a2c\\u0a30".split(" "),\nSTANDALONEMONTHS:"\\u0a1c\\u0a28\\u0a35\\u0a30\\u0a40 \\u0a2b\\u0a3c\\u0a30\\u0a35\\u0a30\\u0a40 \\u0a2e\\u0a3e\\u0a30\\u0a1a \\u0a05\\u0a2a\\u0a4d\\u0a30\\u0a48\\u0a32 \\u0a2e\\u0a08 \\u0a1c\\u0a42\\u0a28 \\u0a1c\\u0a41\\u0a32\\u0a3e\\u0a08 \\u0a05\\u0a17\\u0a38\\u0a24 \\u0a38\\u0a24\\u0a70\\u0a2c\\u0a30 \\u0a05\\u0a15\\u0a24\\u0a42\\u0a2c\\u0a30 \\u0a28\\u0a35\\u0a70\\u0a2c\\u0a30 \\u0a26\\u0a38\\u0a70\\u0a2c\\u0a30".split(" "),SHORTMONTHS:"\\u0a1c\\u0a28 \\u0a2b\\u0a3c\\u0a30 \\u0a2e\\u0a3e\\u0a30\\u0a1a \\u0a05\\u0a2a\\u0a4d\\u0a30\\u0a48 \\u0a2e\\u0a08 \\u0a1c\\u0a42\\u0a28 \\u0a1c\\u0a41\\u0a32\\u0a3e \\u0a05\\u0a17 \\u0a38\\u0a24\\u0a70 \\u0a05\\u0a15\\u0a24\\u0a42 \\u0a28\\u0a35\\u0a70 \\u0a26\\u0a38\\u0a70".split(" "),\nSTANDALONESHORTMONTHS:"\\u0a1c\\u0a28 \\u0a2b\\u0a3c\\u0a30 \\u0a2e\\u0a3e\\u0a30\\u0a1a \\u0a05\\u0a2a\\u0a4d\\u0a30\\u0a48 \\u0a2e\\u0a08 \\u0a1c\\u0a42\\u0a28 \\u0a1c\\u0a41\\u0a32\\u0a3e \\u0a05\\u0a17 \\u0a38\\u0a24\\u0a70 \\u0a05\\u0a15\\u0a24\\u0a42 \\u0a28\\u0a35\\u0a70 \\u0a26\\u0a38\\u0a70".split(" "),WEEKDAYS:"\\u0a10\\u0a24\\u0a35\\u0a3e\\u0a30 \\u0a38\\u0a4b\\u0a2e\\u0a35\\u0a3e\\u0a30 \\u0a2e\\u0a70\\u0a17\\u0a32\\u0a35\\u0a3e\\u0a30 \\u0a2c\\u0a41\\u0a71\\u0a27\\u0a35\\u0a3e\\u0a30 \\u0a35\\u0a40\\u0a30\\u0a35\\u0a3e\\u0a30 \\u0a38\\u0a3c\\u0a41\\u0a71\\u0a15\\u0a30\\u0a35\\u0a3e\\u0a30 \\u0a38\\u0a3c\\u0a28\\u0a3f\\u0a71\\u0a1a\\u0a30\\u0a35\\u0a3e\\u0a30".split(" "),\nSTANDALONEWEEKDAYS:"\\u0a10\\u0a24\\u0a35\\u0a3e\\u0a30 \\u0a38\\u0a4b\\u0a2e\\u0a35\\u0a3e\\u0a30 \\u0a2e\\u0a70\\u0a17\\u0a32\\u0a35\\u0a3e\\u0a30 \\u0a2c\\u0a41\\u0a71\\u0a27\\u0a35\\u0a3e\\u0a30 \\u0a35\\u0a40\\u0a30\\u0a35\\u0a3e\\u0a30 \\u0a38\\u0a3c\\u0a41\\u0a71\\u0a15\\u0a30\\u0a35\\u0a3e\\u0a30 \\u0a38\\u0a3c\\u0a28\\u0a3f\\u0a71\\u0a1a\\u0a30\\u0a35\\u0a3e\\u0a30".split(" "),SHORTWEEKDAYS:"\\u0a10\\u0a24 \\u0a38\\u0a4b\\u0a2e \\u0a2e\\u0a70\\u0a17\\u0a32 \\u0a2c\\u0a41\\u0a71\\u0a27 \\u0a35\\u0a40\\u0a30 \\u0a38\\u0a3c\\u0a41\\u0a71\\u0a15\\u0a30 \\u0a38\\u0a3c\\u0a28\\u0a3f\\u0a71\\u0a1a\\u0a30".split(" "),\nSTANDALONESHORTWEEKDAYS:"\\u0a10\\u0a24 \\u0a38\\u0a4b\\u0a2e \\u0a2e\\u0a70\\u0a17\\u0a32 \\u0a2c\\u0a41\\u0a71\\u0a27 \\u0a35\\u0a40\\u0a30 \\u0a38\\u0a3c\\u0a41\\u0a71\\u0a15\\u0a30 \\u0a38\\u0a3c\\u0a28\\u0a3f\\u0a71\\u0a1a\\u0a30".split(" "),NARROWWEEKDAYS:"\\u0a10 \\u0a38\\u0a4b \\u0a2e\\u0a70 \\u0a2c\\u0a41\\u0a71 \\u0a35\\u0a40 \\u0a38\\u0a3c\\u0a41\\u0a71 \\u0a38\\u0a3c".split(" "),STANDALONENARROWWEEKDAYS:"\\u0a10 \\u0a38\\u0a4b \\u0a2e\\u0a70 \\u0a2c\\u0a41\\u0a71 \\u0a35\\u0a40 \\u0a38\\u0a3c\\u0a41\\u0a71 \\u0a38\\u0a3c".split(" "),SHORTQUARTERS:["\\u0a24\\u0a3f\\u0a2e\\u0a3e\\u0a39\\u0a401",\n"\\u0a24\\u0a3f\\u0a2e\\u0a3e\\u0a39\\u0a402","\\u0a24\\u0a3f\\u0a2e\\u0a3e\\u0a39\\u0a403","\\u0a24\\u0a3f\\u0a2e\\u0a3e\\u0a39\\u0a404"],QUARTERS:["\\u0a2a\\u0a39\\u0a3f\\u0a32\\u0a40 \\u0a24\\u0a3f\\u0a2e\\u0a3e\\u0a39\\u0a40","\\u0a26\\u0a42\\u0a1c\\u0a40 \\u0a24\\u0a3f\\u0a2e\\u0a3e\\u0a39\\u0a40","\\u0a24\\u0a40\\u0a1c\\u0a40 \\u0a24\\u0a3f\\u0a2e\\u0a3e\\u0a39\\u0a40","\\u0a1a\\u0a4c\\u0a25\\u0a40 \\u0a24\\u0a3f\\u0a2e\\u0a3e\\u0a39\\u0a40"],AMPMS:["\\u0a2a\\u0a42.\\u0a26\\u0a41.","\\u0a2c\\u0a3e.\\u0a26\\u0a41."],DATEFORMATS:["EEEE, d MMMM y","d MMMM y",\n"d MMM y","d/M/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[6,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_pl={ERAS:["p.n.e.","n.e."],ERANAMES:["p.n.e.","n.e."],NARROWMONTHS:"slmkmclswplg".split(""),STANDALONENARROWMONTHS:"slmkmclswplg".split(""),MONTHS:"stycznia lutego marca kwietnia maja czerwca lipca sierpnia wrze\\u015bnia pa\\u017adziernika listopada grudnia".split(" "),STANDALONEMONTHS:"stycze\\u0144 luty marzec kwiecie\\u0144 maj czerwiec lipiec sierpie\\u0144 wrzesie\\u0144 pa\\u017adziernik listopad grudzie\\u0144".split(" "),SHORTMONTHS:"sty lut mar kwi maj cze lip sie wrz pa\\u017a lis gru".split(" "),\nSTANDALONESHORTMONTHS:"sty lut mar kwi maj cze lip sie wrz pa\\u017a lis gru".split(" "),WEEKDAYS:"niedziela poniedzia\\u0142ek wtorek \\u015broda czwartek pi\\u0105tek sobota".split(" "),STANDALONEWEEKDAYS:"niedziela poniedzia\\u0142ek wtorek \\u015broda czwartek pi\\u0105tek sobota".split(" "),SHORTWEEKDAYS:"niedz. pon. wt. \\u015br. czw. pt. sob.".split(" "),STANDALONESHORTWEEKDAYS:"niedz. pon. wt. \\u015br. czw. pt. sob.".split(" "),NARROWWEEKDAYS:"NPW\\u015aCPS".split(""),STANDALONENARROWWEEKDAYS:"NPW\\u015aCPS".split(""),\nSHORTQUARTERS:["K1","K2","K3","K4"],QUARTERS:["I kwarta\\u0142","II kwarta\\u0142","III kwarta\\u0142","IV kwarta\\u0142"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, d MMMM y","d MMMM y","dd.MM.y","dd.MM.y"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_pt={ERAS:["a.C.","d.C."],ERANAMES:["antes de Cristo","depois de Cristo"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"janeiro fevereiro mar\\u00e7o abril maio junho julho agosto setembro outubro novembro dezembro".split(" "),STANDALONEMONTHS:"janeiro fevereiro mar\\u00e7o abril maio junho julho agosto setembro outubro novembro dezembro".split(" "),SHORTMONTHS:"jan fev mar abr mai jun jul ago set out nov dez".split(" "),STANDALONESHORTMONTHS:"jan fev mar abr mai jun jul ago set out nov dez".split(" "),\nWEEKDAYS:"domingo segunda-feira ter\\u00e7a-feira quarta-feira quinta-feira sexta-feira s\\u00e1bado".split(" "),STANDALONEWEEKDAYS:"domingo segunda-feira ter\\u00e7a-feira quarta-feira quinta-feira sexta-feira s\\u00e1bado".split(" "),SHORTWEEKDAYS:"dom seg ter qua qui sex s\\u00e1b".split(" "),STANDALONESHORTWEEKDAYS:"dom seg ter qua qui sex s\\u00e1b".split(" "),NARROWWEEKDAYS:"DSTQQSS".split(""),STANDALONENARROWWEEKDAYS:"DSTQQSS".split(""),SHORTQUARTERS:["T1","T2","T3","T4"],QUARTERS:["1\\u00ba trimestre",\n"2\\u00ba trimestre","3\\u00ba trimestre","4\\u00ba trimestre"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, d \'de\' MMMM \'de\' y","d \'de\' MMMM \'de\' y","d \'de\' MMM \'de\' y","dd/MM/yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};goog.i18n.DateTimeSymbols_pt_BR=goog.i18n.DateTimeSymbols_pt;\ngoog.i18n.DateTimeSymbols_pt_PT={ERAS:["a.C.","d.C."],ERANAMES:["antes de Cristo","depois de Cristo"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"janeiro fevereiro mar\\u00e7o abril maio junho julho agosto setembro outubro novembro dezembro".split(" "),STANDALONEMONTHS:"janeiro fevereiro mar\\u00e7o abril maio junho julho agosto setembro outubro novembro dezembro".split(" "),SHORTMONTHS:"jan fev mar abr mai jun jul ago set out nov dez".split(" "),STANDALONESHORTMONTHS:"jan fev mar abr mai jun jul ago set out nov dez".split(" "),\nWEEKDAYS:"domingo segunda-feira ter\\u00e7a-feira quarta-feira quinta-feira sexta-feira s\\u00e1bado".split(" "),STANDALONEWEEKDAYS:"domingo segunda-feira ter\\u00e7a-feira quarta-feira quinta-feira sexta-feira s\\u00e1bado".split(" "),SHORTWEEKDAYS:"domingo segunda ter\\u00e7a quarta quinta sexta s\\u00e1bado".split(" "),STANDALONESHORTWEEKDAYS:"domingo segunda ter\\u00e7a quarta quinta sexta s\\u00e1bado".split(" "),NARROWWEEKDAYS:"DSTQQSS".split(""),STANDALONENARROWWEEKDAYS:"DSTQQSS".split(""),SHORTQUARTERS:["T1",\n"T2","T3","T4"],QUARTERS:["1.\\u00ba trimestre","2.\\u00ba trimestre","3.\\u00ba trimestre","4.\\u00ba trimestre"],AMPMS:["da manh\\u00e3","da tarde"],DATEFORMATS:["EEEE, d \'de\' MMMM \'de\' y","d \'de\' MMMM \'de\' y","dd/MM/y","dd/MM/yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} \'\\u00e0s\' {0}","{1} \'\\u00e0s\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_ro={ERAS:["\\u00ee.Hr.","d.Hr."],ERANAMES:["\\u00eenainte de Hristos","dup\\u0103 Hristos"],NARROWMONTHS:"IFMAMIIASOND".split(""),STANDALONENARROWMONTHS:"IFMAMIIASOND".split(""),MONTHS:"ianuarie februarie martie aprilie mai iunie iulie august septembrie octombrie noiembrie decembrie".split(" "),STANDALONEMONTHS:"ianuarie februarie martie aprilie mai iunie iulie august septembrie octombrie noiembrie decembrie".split(" "),SHORTMONTHS:"ian. feb. mar. apr. mai iun. iul. aug. sept. oct. nov. dec.".split(" "),\nSTANDALONESHORTMONTHS:"ian. feb. mar. apr. mai iun. iul. aug. sept. oct. nov. dec.".split(" "),WEEKDAYS:"duminic\\u0103 luni mar\\u021bi miercuri joi vineri s\\u00e2mb\\u0103t\\u0103".split(" "),STANDALONEWEEKDAYS:"duminic\\u0103 luni mar\\u021bi miercuri joi vineri s\\u00e2mb\\u0103t\\u0103".split(" "),SHORTWEEKDAYS:"dum. lun. mar. mie. joi vin. s\\u00e2m.".split(" "),STANDALONESHORTWEEKDAYS:"dum. lun. mar. mie. joi vin. s\\u00e2m.".split(" "),NARROWWEEKDAYS:"DLMMJVS".split(""),STANDALONENARROWWEEKDAYS:"DLMMJVS".split(""),\nSHORTQUARTERS:["trim. I","trim. II","trim. III","trim. IV"],QUARTERS:["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],AMPMS:["a.m.","p.m."],DATEFORMATS:["EEEE, d MMMM y","d MMMM y","d MMM y","dd.MM.y"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1}, {0}","{1}, {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_ru={ERAS:["\\u0434\\u043e \\u043d. \\u044d.","\\u043d. \\u044d."],ERANAMES:["\\u0434\\u043e \\u0420\\u043e\\u0436\\u0434\\u0435\\u0441\\u0442\\u0432\\u0430 \\u0425\\u0440\\u0438\\u0441\\u0442\\u043e\\u0432\\u0430","\\u043e\\u0442 \\u0420\\u043e\\u0436\\u0434\\u0435\\u0441\\u0442\\u0432\\u0430 \\u0425\\u0440\\u0438\\u0441\\u0442\\u043e\\u0432\\u0430"],NARROWMONTHS:"\\u042f\\u0424\\u041c\\u0410\\u041c\\u0418\\u0418\\u0410\\u0421\\u041e\\u041d\\u0414".split(""),STANDALONENARROWMONTHS:"\\u042f\\u0424\\u041c\\u0410\\u041c\\u0418\\u0418\\u0410\\u0421\\u041e\\u041d\\u0414".split(""),\nMONTHS:"\\u044f\\u043d\\u0432\\u0430\\u0440\\u044f \\u0444\\u0435\\u0432\\u0440\\u0430\\u043b\\u044f \\u043c\\u0430\\u0440\\u0442\\u0430 \\u0430\\u043f\\u0440\\u0435\\u043b\\u044f \\u043c\\u0430\\u044f \\u0438\\u044e\\u043d\\u044f \\u0438\\u044e\\u043b\\u044f \\u0430\\u0432\\u0433\\u0443\\u0441\\u0442\\u0430 \\u0441\\u0435\\u043d\\u0442\\u044f\\u0431\\u0440\\u044f \\u043e\\u043a\\u0442\\u044f\\u0431\\u0440\\u044f \\u043d\\u043e\\u044f\\u0431\\u0440\\u044f \\u0434\\u0435\\u043a\\u0430\\u0431\\u0440\\u044f".split(" "),STANDALONEMONTHS:"\\u044f\\u043d\\u0432\\u0430\\u0440\\u044c \\u0444\\u0435\\u0432\\u0440\\u0430\\u043b\\u044c \\u043c\\u0430\\u0440\\u0442 \\u0430\\u043f\\u0440\\u0435\\u043b\\u044c \\u043c\\u0430\\u0439 \\u0438\\u044e\\u043d\\u044c \\u0438\\u044e\\u043b\\u044c \\u0430\\u0432\\u0433\\u0443\\u0441\\u0442 \\u0441\\u0435\\u043d\\u0442\\u044f\\u0431\\u0440\\u044c \\u043e\\u043a\\u0442\\u044f\\u0431\\u0440\\u044c \\u043d\\u043e\\u044f\\u0431\\u0440\\u044c \\u0434\\u0435\\u043a\\u0430\\u0431\\u0440\\u044c".split(" "),\nSHORTMONTHS:"\\u044f\\u043d\\u0432. \\u0444\\u0435\\u0432\\u0440. \\u043c\\u0430\\u0440. \\u0430\\u043f\\u0440. \\u043c\\u0430\\u044f \\u0438\\u044e\\u043d. \\u0438\\u044e\\u043b. \\u0430\\u0432\\u0433. \\u0441\\u0435\\u043d\\u0442. \\u043e\\u043a\\u0442. \\u043d\\u043e\\u044f\\u0431. \\u0434\\u0435\\u043a.".split(" "),STANDALONESHORTMONTHS:"\\u044f\\u043d\\u0432. \\u0444\\u0435\\u0432\\u0440. \\u043c\\u0430\\u0440\\u0442 \\u0430\\u043f\\u0440. \\u043c\\u0430\\u0439 \\u0438\\u044e\\u043d\\u044c \\u0438\\u044e\\u043b\\u044c \\u0430\\u0432\\u0433. \\u0441\\u0435\\u043d\\u0442. \\u043e\\u043a\\u0442. \\u043d\\u043e\\u044f\\u0431. \\u0434\\u0435\\u043a.".split(" "),\nWEEKDAYS:"\\u0432\\u043e\\u0441\\u043a\\u0440\\u0435\\u0441\\u0435\\u043d\\u044c\\u0435 \\u043f\\u043e\\u043d\\u0435\\u0434\\u0435\\u043b\\u044c\\u043d\\u0438\\u043a \\u0432\\u0442\\u043e\\u0440\\u043d\\u0438\\u043a \\u0441\\u0440\\u0435\\u0434\\u0430 \\u0447\\u0435\\u0442\\u0432\\u0435\\u0440\\u0433 \\u043f\\u044f\\u0442\\u043d\\u0438\\u0446\\u0430 \\u0441\\u0443\\u0431\\u0431\\u043e\\u0442\\u0430".split(" "),STANDALONEWEEKDAYS:"\\u0432\\u043e\\u0441\\u043a\\u0440\\u0435\\u0441\\u0435\\u043d\\u044c\\u0435 \\u043f\\u043e\\u043d\\u0435\\u0434\\u0435\\u043b\\u044c\\u043d\\u0438\\u043a \\u0432\\u0442\\u043e\\u0440\\u043d\\u0438\\u043a \\u0441\\u0440\\u0435\\u0434\\u0430 \\u0447\\u0435\\u0442\\u0432\\u0435\\u0440\\u0433 \\u043f\\u044f\\u0442\\u043d\\u0438\\u0446\\u0430 \\u0441\\u0443\\u0431\\u0431\\u043e\\u0442\\u0430".split(" "),\nSHORTWEEKDAYS:"\\u0432\\u0441 \\u043f\\u043d \\u0432\\u0442 \\u0441\\u0440 \\u0447\\u0442 \\u043f\\u0442 \\u0441\\u0431".split(" "),STANDALONESHORTWEEKDAYS:"\\u0432\\u0441 \\u043f\\u043d \\u0432\\u0442 \\u0441\\u0440 \\u0447\\u0442 \\u043f\\u0442 \\u0441\\u0431".split(" "),NARROWWEEKDAYS:"\\u0432\\u0441 \\u043f\\u043d \\u0432\\u0442 \\u0441\\u0440 \\u0447\\u0442 \\u043f\\u0442 \\u0441\\u0431".split(" "),STANDALONENARROWWEEKDAYS:"\\u0412\\u041f\\u0412\\u0421\\u0427\\u041f\\u0421".split(""),SHORTQUARTERS:["1-\\u0439 \\u043a\\u0432.","2-\\u0439 \\u043a\\u0432.",\n"3-\\u0439 \\u043a\\u0432.","4-\\u0439 \\u043a\\u0432."],QUARTERS:["1-\\u0439 \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b","2-\\u0439 \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b","3-\\u0439 \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b","4-\\u0439 \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b"],AMPMS:["\\u0414\\u041f","\\u041f\\u041f"],DATEFORMATS:["EEEE, d MMMM y \'\\u0433\'.","d MMMM y \'\\u0433\'.","d MMM y \'\\u0433\'.","dd.MM.yy"],TIMEFORMATS:["H:mm:ss zzzz","H:mm:ss z","H:mm:ss","H:mm"],DATETIMEFORMATS:["{1}, {0}","{1}, {0}",\n"{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_sh={ERAS:["p. n. e.","n. e."],ERANAMES:["pre nove ere","nove ere"],NARROWMONTHS:"jfmamjjasond".split(""),STANDALONENARROWMONTHS:"jfmamjjasond".split(""),MONTHS:"januar februar mart april maj jun jul avgust septembar oktobar novembar decembar".split(" "),STANDALONEMONTHS:"januar februar mart april maj jun jul avgust septembar oktobar novembar decembar".split(" "),SHORTMONTHS:"jan feb mar apr maj jun jul avg sep okt nov dec".split(" "),STANDALONESHORTMONTHS:"jan feb mar apr maj jun jul avg sep okt nov dec".split(" "),\nWEEKDAYS:"nedelja ponedeljak utorak sreda \\u010detvrtak petak subota".split(" "),STANDALONEWEEKDAYS:"nedelja ponedeljak utorak sreda \\u010detvrtak petak subota".split(" "),SHORTWEEKDAYS:"ned pon uto sre \\u010det pet sub".split(" "),STANDALONESHORTWEEKDAYS:"ned pon uto sre \\u010det pet sub".split(" "),NARROWWEEKDAYS:"npus\\u010dps".split(""),STANDALONENARROWWEEKDAYS:"npus\\u010dps".split(""),SHORTQUARTERS:["K1","K2","K3","K4"],QUARTERS:["prvi kvartal","drugi kvartal","tre\\u0107i kvartal","\\u010detvrti kvartal"],\nAMPMS:["pre podne","po podne"],DATEFORMATS:["EEEE, dd. MMMM y.","dd. MMMM y.","dd.MM.y.","d.M.yy."],TIMEFORMATS:["HH.mm.ss zzzz","HH.mm.ss z","HH.mm.ss","HH.mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_si={ERAS:["\\u0d9a\\u0dca\\u200d\\u0dbb\\u0dd2.\\u0db4\\u0dd6.","\\u0d9a\\u0dca\\u200d\\u0dbb\\u0dd2.\\u0dc0."],ERANAMES:["\\u0d9a\\u0dca\\u200d\\u0dbb\\u0dd2\\u0dc3\\u0dca\\u0dad\\u0dd4 \\u0db4\\u0dd6\\u0dbb\\u0dca\\u0dc0","\\u0d9a\\u0dca\\u200d\\u0dbb\\u0dd2\\u0dc3\\u0dca\\u0dad\\u0dd4 \\u0dc0\\u0dbb\\u0dca\\u0dc2"],NARROWMONTHS:"\\u0da2 \\u0db4\\u0dd9 \\u0db8\\u0dcf \\u0d85 \\u0db8\\u0dd0 \\u0da2\\u0dd6 \\u0da2\\u0dd6 \\u0d85 \\u0dc3\\u0dd0 \\u0d94 \\u0db1\\u0dd9 \\u0daf\\u0dd9".split(" "),STANDALONENARROWMONTHS:"\\u0da2 \\u0db4\\u0dd9 \\u0db8\\u0dcf \\u0d85 \\u0db8\\u0dd0 \\u0da2\\u0dd6 \\u0da2\\u0dd6 \\u0d85 \\u0dc3\\u0dd0 \\u0d94 \\u0db1\\u0dd9 \\u0daf\\u0dd9".split(" "),\nMONTHS:"\\u0da2\\u0db1\\u0dc0\\u0dcf\\u0dbb\\u0dd2 \\u0db4\\u0dd9\\u0db6\\u0dbb\\u0dc0\\u0dcf\\u0dbb\\u0dd2 \\u0db8\\u0dcf\\u0dbb\\u0dca\\u0dad\\u0dd4 \\u0d85\\u0db4\\u0dca\\u200d\\u0dbb\\u0dda\\u0dbd\\u0dca \\u0db8\\u0dd0\\u0dba\\u0dd2 \\u0da2\\u0dd6\\u0db1\\u0dd2 \\u0da2\\u0dd6\\u0dbd\\u0dd2 \\u0d85\\u0d9c\\u0ddd\\u0dc3\\u0dca\\u0dad\\u0dd4 \\u0dc3\\u0dd0\\u0db4\\u0dca\\u0dad\\u0dd0\\u0db8\\u0dca\\u0db6\\u0dbb\\u0dca \\u0d94\\u0d9a\\u0dca\\u0dad\\u0ddd\\u0db6\\u0dbb\\u0dca \\u0db1\\u0ddc\\u0dc0\\u0dd0\\u0db8\\u0dca\\u0db6\\u0dbb\\u0dca \\u0daf\\u0dd9\\u0dc3\\u0dd0\\u0db8\\u0dca\\u0db6\\u0dbb\\u0dca".split(" "),\nSTANDALONEMONTHS:"\\u0da2\\u0db1\\u0dc0\\u0dcf\\u0dbb\\u0dd2 \\u0db4\\u0dd9\\u0db6\\u0dbb\\u0dc0\\u0dcf\\u0dbb\\u0dd2 \\u0db8\\u0dcf\\u0dbb\\u0dca\\u0dad\\u0dd4 \\u0d85\\u0db4\\u0dca\\u200d\\u0dbb\\u0dda\\u0dbd\\u0dca \\u0db8\\u0dd0\\u0dba\\u0dd2 \\u0da2\\u0dd6\\u0db1\\u0dd2 \\u0da2\\u0dd6\\u0dbd\\u0dd2 \\u0d85\\u0d9c\\u0ddd\\u0dc3\\u0dca\\u0dad\\u0dd4 \\u0dc3\\u0dd0\\u0db4\\u0dca\\u0dad\\u0dd0\\u0db8\\u0dca\\u0db6\\u0dbb\\u0dca \\u0d94\\u0d9a\\u0dca\\u0dad\\u0ddd\\u0db6\\u0dbb\\u0dca \\u0db1\\u0ddc\\u0dc0\\u0dd0\\u0db8\\u0dca\\u0db6\\u0dbb\\u0dca \\u0daf\\u0dd9\\u0dc3\\u0dd0\\u0db8\\u0dca\\u0db6\\u0dbb\\u0dca".split(" "),\nSHORTMONTHS:"\\u0da2\\u0db1 \\u0db4\\u0dd9\\u0db6 \\u0db8\\u0dcf\\u0dbb\\u0dca\\u0dad\\u0dd4 \\u0d85\\u0db4\\u0dca\\u200d\\u0dbb\\u0dda\\u0dbd\\u0dca \\u0db8\\u0dd0\\u0dba\\u0dd2 \\u0da2\\u0dd6\\u0db1\\u0dd2 \\u0da2\\u0dd6\\u0dbd\\u0dd2 \\u0d85\\u0d9c\\u0ddd \\u0dc3\\u0dd0\\u0db4\\u0dca \\u0d94\\u0d9a\\u0dca \\u0db1\\u0ddc\\u0dc0\\u0dd0 \\u0daf\\u0dd9\\u0dc3\\u0dd0".split(" "),STANDALONESHORTMONTHS:"\\u0da2\\u0db1 \\u0db4\\u0dd9\\u0db6 \\u0db8\\u0dcf\\u0dbb\\u0dca \\u0d85\\u0db4\\u0dca\\u200d\\u0dbb\\u0dda\\u0dbd\\u0dca \\u0db8\\u0dd0\\u0dba\\u0dd2 \\u0da2\\u0dd6\\u0db1\\u0dd2 \\u0da2\\u0dd6\\u0dbd\\u0dd2 \\u0d85\\u0d9c\\u0ddd \\u0dc3\\u0dd0\\u0db4\\u0dca \\u0d94\\u0d9a\\u0dca \\u0db1\\u0ddc\\u0dc0\\u0dd0 \\u0daf\\u0dd9\\u0dc3\\u0dd0".split(" "),\nWEEKDAYS:"\\u0d89\\u0dbb\\u0dd2\\u0daf\\u0dcf \\u0dc3\\u0db3\\u0dd4\\u0daf\\u0dcf \\u0d85\\u0d9f\\u0dc4\\u0dbb\\u0dd4\\u0dc0\\u0dcf\\u0daf\\u0dcf \\u0db6\\u0daf\\u0dcf\\u0daf\\u0dcf \\u0db6\\u0dca\\u200d\\u0dbb\\u0dc4\\u0dc3\\u0dca\\u0db4\\u0dad\\u0dd2\\u0db1\\u0dca\\u0daf\\u0dcf \\u0dc3\\u0dd2\\u0d9a\\u0dd4\\u0dbb\\u0dcf\\u0daf\\u0dcf \\u0dc3\\u0dd9\\u0db1\\u0dc3\\u0dd4\\u0dbb\\u0dcf\\u0daf\\u0dcf".split(" "),STANDALONEWEEKDAYS:"\\u0d89\\u0dbb\\u0dd2\\u0daf\\u0dcf \\u0dc3\\u0db3\\u0dd4\\u0daf\\u0dcf \\u0d85\\u0d9f\\u0dc4\\u0dbb\\u0dd4\\u0dc0\\u0dcf\\u0daf\\u0dcf \\u0db6\\u0daf\\u0dcf\\u0daf\\u0dcf \\u0db6\\u0dca\\u200d\\u0dbb\\u0dc4\\u0dc3\\u0dca\\u0db4\\u0dad\\u0dd2\\u0db1\\u0dca\\u0daf\\u0dcf \\u0dc3\\u0dd2\\u0d9a\\u0dd4\\u0dbb\\u0dcf\\u0daf\\u0dcf \\u0dc3\\u0dd9\\u0db1\\u0dc3\\u0dd4\\u0dbb\\u0dcf\\u0daf\\u0dcf".split(" "),\nSHORTWEEKDAYS:"\\u0d89\\u0dbb\\u0dd2\\u0daf\\u0dcf \\u0dc3\\u0db3\\u0dd4\\u0daf\\u0dcf \\u0d85\\u0d9f\\u0dc4 \\u0db6\\u0daf\\u0dcf\\u0daf\\u0dcf \\u0db6\\u0dca\\u200d\\u0dbb\\u0dc4\\u0dc3\\u0dca \\u0dc3\\u0dd2\\u0d9a\\u0dd4 \\u0dc3\\u0dd9\\u0db1".split(" "),STANDALONESHORTWEEKDAYS:"\\u0d89\\u0dbb\\u0dd2\\u0daf\\u0dcf \\u0dc3\\u0db3\\u0dd4\\u0daf\\u0dcf \\u0d85\\u0d9f\\u0dc4 \\u0db6\\u0daf\\u0dcf\\u0daf\\u0dcf \\u0db6\\u0dca\\u200d\\u0dbb\\u0dc4\\u0dc3\\u0dca \\u0dc3\\u0dd2\\u0d9a\\u0dd4 \\u0dc3\\u0dd9\\u0db1".split(" "),NARROWWEEKDAYS:"\\u0d89 \\u0dc3 \\u0d85 \\u0db6 \\u0db6\\u0dca\\u200d\\u0dbb \\u0dc3\\u0dd2 \\u0dc3\\u0dd9".split(" "),\nSTANDALONENARROWWEEKDAYS:"\\u0d89 \\u0dc3 \\u0d85 \\u0db6 \\u0db6\\u0dca\\u200d\\u0dbb \\u0dc3\\u0dd2 \\u0dc3\\u0dd9".split(" "),SHORTQUARTERS:["\\u0d9a\\u0dcf\\u0dbb\\u0dca:1","\\u0d9a\\u0dcf\\u0dbb\\u0dca:2","\\u0d9a\\u0dcf\\u0dbb\\u0dca:3","\\u0d9a\\u0dcf\\u0dbb\\u0dca:4"],QUARTERS:["1 \\u0dc0\\u0db1 \\u0d9a\\u0dcf\\u0dbb\\u0dca\\u0dad\\u0dd4\\u0dc0","2 \\u0dc0\\u0db1 \\u0d9a\\u0dcf\\u0dbb\\u0dca\\u0dad\\u0dd4\\u0dc0","3 \\u0dc0\\u0db1 \\u0d9a\\u0dcf\\u0dbb\\u0dca\\u0dad\\u0dd4\\u0dc0","4 \\u0dc0\\u0db1 \\u0d9a\\u0dcf\\u0dbb\\u0dca\\u0dad\\u0dd4\\u0dc0"],AMPMS:["\\u0db4\\u0dd9.\\u0dc0.",\n"\\u0db4.\\u0dc0."],DATEFORMATS:["y MMMM d, EEEE","y MMMM d","y MMM d","y-MM-dd"],TIMEFORMATS:["HH.mm.ss zzzz","HH.mm.ss z","HH.mm.ss","HH.mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_sk={ERAS:["pred Kr.","po Kr."],ERANAMES:["pred Kristom","po Kristovi"],NARROWMONTHS:"jfmamjjasond".split(""),STANDALONENARROWMONTHS:"jfmamjjasond".split(""),MONTHS:"janu\\u00e1ra febru\\u00e1ra marca apr\\u00edla m\\u00e1ja j\\u00fana j\\u00fala augusta septembra okt\\u00f3bra novembra decembra".split(" "),STANDALONEMONTHS:"janu\\u00e1r febru\\u00e1r marec apr\\u00edl m\\u00e1j j\\u00fan j\\u00fal august september okt\\u00f3ber november december".split(" "),SHORTMONTHS:"jan feb mar apr m\\u00e1j j\\u00fan j\\u00fal aug sep okt nov dec".split(" "),\nSTANDALONESHORTMONTHS:"jan feb mar apr m\\u00e1j j\\u00fan j\\u00fal aug sep okt nov dec".split(" "),WEEKDAYS:"nede\\u013ea pondelok utorok streda \\u0161tvrtok piatok sobota".split(" "),STANDALONEWEEKDAYS:"nede\\u013ea pondelok utorok streda \\u0161tvrtok piatok sobota".split(" "),SHORTWEEKDAYS:"ne po ut st \\u0161t pi so".split(" "),STANDALONESHORTWEEKDAYS:"ne po ut st \\u0161t pi so".split(" "),NARROWWEEKDAYS:"npus\\u0161ps".split(""),STANDALONENARROWWEEKDAYS:"npus\\u0161ps".split(""),SHORTQUARTERS:["Q1",\n"Q2","Q3","Q4"],QUARTERS:["1. \\u0161tvr\\u0165rok","2. \\u0161tvr\\u0165rok","3. \\u0161tvr\\u0165rok","4. \\u0161tvr\\u0165rok"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, d. MMMM y","d. MMMM y","d. M. y","d.M.yy"],TIMEFORMATS:["H:mm:ss zzzz","H:mm:ss z","H:mm:ss","H:mm"],DATETIMEFORMATS:["{1}, {0}","{1}, {0}","{1}, {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_sl={ERAS:["pr. Kr.","po n. \\u0161t."],ERANAMES:["pred Kristusom","na\\u0161e \\u0161tetje"],NARROWMONTHS:"jfmamjjasond".split(""),STANDALONENARROWMONTHS:"jfmamjjasond".split(""),MONTHS:"januar februar marec april maj junij julij avgust september oktober november december".split(" "),STANDALONEMONTHS:"januar februar marec april maj junij julij avgust september oktober november december".split(" "),SHORTMONTHS:"jan. feb. mar. apr. maj jun. jul. avg. sep. okt. nov. dec.".split(" "),\nSTANDALONESHORTMONTHS:"jan feb mar apr maj jun jul avg sep okt nov dec".split(" "),WEEKDAYS:"nedelja ponedeljek torek sreda \\u010detrtek petek sobota".split(" "),STANDALONEWEEKDAYS:"nedelja ponedeljek torek sreda \\u010detrtek petek sobota".split(" "),SHORTWEEKDAYS:"ned. pon. tor. sre. \\u010det. pet. sob.".split(" "),STANDALONESHORTWEEKDAYS:"ned pon tor sre \\u010det pet sob".split(" "),NARROWWEEKDAYS:"npts\\u010dps".split(""),STANDALONENARROWWEEKDAYS:"npts\\u010dps".split(""),SHORTQUARTERS:["1. \\u010det.",\n"2. \\u010det.","3. \\u010det.","4. \\u010det."],QUARTERS:["1. \\u010detrtletje","2. \\u010detrtletje","3. \\u010detrtletje","4. \\u010detrtletje"],AMPMS:["dop.","pop."],DATEFORMATS:["EEEE, dd. MMMM y","dd. MMMM y","d. MMM y","d. MM. yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_sq={ERAS:["p.e.r.","e.r."],ERANAMES:["para er\\u00ebs s\\u00eb re","er\\u00ebs s\\u00eb re"],NARROWMONTHS:"JSMPMQKGSTND".split(""),STANDALONENARROWMONTHS:"JSMPMQKGSTND".split(""),MONTHS:"janar shkurt mars prill maj qershor korrik gusht shtator tetor n\\u00ebntor dhjetor".split(" "),STANDALONEMONTHS:"Janar Shkurt Mars Prill Maj Qershor Korrik Gusht Shtator Tetor N\\u00ebntor Dhjetor".split(" "),SHORTMONTHS:"Jan Shk Mar Pri Maj Qer Kor Gsh Sht Tet N\\u00ebn Dhj".split(" "),STANDALONESHORTMONTHS:"Jan Shk Mar Pri Maj Qer Kor Gsh Sht Tet N\\u00ebn Dhj".split(" "),\nWEEKDAYS:"e diel;e h\\u00ebn\\u00eb;e mart\\u00eb;e m\\u00ebrkur\\u00eb;e enjte;e premte;e shtun\\u00eb".split(";"),STANDALONEWEEKDAYS:"E diel;E h\\u00ebn\\u00eb;E mart\\u00eb;E m\\u00ebrkur\\u00eb;E enjte;E premte;E shtun\\u00eb".split(";"),SHORTWEEKDAYS:"Die H\\u00ebn Mar M\\u00ebr Enj Pre Sht".split(" "),STANDALONESHORTWEEKDAYS:"Die H\\u00ebn Mar M\\u00ebr Enj Pre Sht".split(" "),NARROWWEEKDAYS:"DHMMEPS".split(""),STANDALONENARROWWEEKDAYS:"DHMMEPS".split(""),SHORTQUARTERS:["tremujori I","tremujori II","tremujori III",\n"tremujori IV"],QUARTERS:["tremujori i par\\u00eb","tremujori i dyt\\u00eb","tremujori i tret\\u00eb","tremujori i kat\\u00ebrt"],AMPMS:["e paradites","e pasdites"],DATEFORMATS:["EEEE, d MMMM y","d MMMM y","d MMM y","d.M.yy"],TIMEFORMATS:["h:mm:ss a, zzzz","h:mm:ss a, z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} \'n\\u00eb\' {0}","{1} \'n\\u00eb\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_sr={ERAS:["\\u043f. \\u043d. \\u0435.","\\u043d. \\u0435."],ERANAMES:["\\u043f\\u0440\\u0435 \\u043d\\u043e\\u0432\\u0435 \\u0435\\u0440\\u0435","\\u043d\\u043e\\u0432\\u0435 \\u0435\\u0440\\u0435"],NARROWMONTHS:"\\u0458\\u0444\\u043c\\u0430\\u043c\\u0458\\u0458\\u0430\\u0441\\u043e\\u043d\\u0434".split(""),STANDALONENARROWMONTHS:"\\u0458\\u0444\\u043c\\u0430\\u043c\\u0458\\u0458\\u0430\\u0441\\u043e\\u043d\\u0434".split(""),MONTHS:"\\u0458\\u0430\\u043d\\u0443\\u0430\\u0440 \\u0444\\u0435\\u0431\\u0440\\u0443\\u0430\\u0440 \\u043c\\u0430\\u0440\\u0442 \\u0430\\u043f\\u0440\\u0438\\u043b \\u043c\\u0430\\u0458 \\u0458\\u0443\\u043d \\u0458\\u0443\\u043b \\u0430\\u0432\\u0433\\u0443\\u0441\\u0442 \\u0441\\u0435\\u043f\\u0442\\u0435\\u043c\\u0431\\u0430\\u0440 \\u043e\\u043a\\u0442\\u043e\\u0431\\u0430\\u0440 \\u043d\\u043e\\u0432\\u0435\\u043c\\u0431\\u0430\\u0440 \\u0434\\u0435\\u0446\\u0435\\u043c\\u0431\\u0430\\u0440".split(" "),\nSTANDALONEMONTHS:"\\u0458\\u0430\\u043d\\u0443\\u0430\\u0440 \\u0444\\u0435\\u0431\\u0440\\u0443\\u0430\\u0440 \\u043c\\u0430\\u0440\\u0442 \\u0430\\u043f\\u0440\\u0438\\u043b \\u043c\\u0430\\u0458 \\u0458\\u0443\\u043d \\u0458\\u0443\\u043b \\u0430\\u0432\\u0433\\u0443\\u0441\\u0442 \\u0441\\u0435\\u043f\\u0442\\u0435\\u043c\\u0431\\u0430\\u0440 \\u043e\\u043a\\u0442\\u043e\\u0431\\u0430\\u0440 \\u043d\\u043e\\u0432\\u0435\\u043c\\u0431\\u0430\\u0440 \\u0434\\u0435\\u0446\\u0435\\u043c\\u0431\\u0430\\u0440".split(" "),SHORTMONTHS:"\\u0458\\u0430\\u043d \\u0444\\u0435\\u0431 \\u043c\\u0430\\u0440 \\u0430\\u043f\\u0440 \\u043c\\u0430\\u0458 \\u0458\\u0443\\u043d \\u0458\\u0443\\u043b \\u0430\\u0432\\u0433 \\u0441\\u0435\\u043f \\u043e\\u043a\\u0442 \\u043d\\u043e\\u0432 \\u0434\\u0435\\u0446".split(" "),\nSTANDALONESHORTMONTHS:"\\u0458\\u0430\\u043d \\u0444\\u0435\\u0431 \\u043c\\u0430\\u0440 \\u0430\\u043f\\u0440 \\u043c\\u0430\\u0458 \\u0458\\u0443\\u043d \\u0458\\u0443\\u043b \\u0430\\u0432\\u0433 \\u0441\\u0435\\u043f \\u043e\\u043a\\u0442 \\u043d\\u043e\\u0432 \\u0434\\u0435\\u0446".split(" "),WEEKDAYS:"\\u043d\\u0435\\u0434\\u0435\\u0459\\u0430 \\u043f\\u043e\\u043d\\u0435\\u0434\\u0435\\u0459\\u0430\\u043a \\u0443\\u0442\\u043e\\u0440\\u0430\\u043a \\u0441\\u0440\\u0435\\u0434\\u0430 \\u0447\\u0435\\u0442\\u0432\\u0440\\u0442\\u0430\\u043a \\u043f\\u0435\\u0442\\u0430\\u043a \\u0441\\u0443\\u0431\\u043e\\u0442\\u0430".split(" "),\nSTANDALONEWEEKDAYS:"\\u043d\\u0435\\u0434\\u0435\\u0459\\u0430 \\u043f\\u043e\\u043d\\u0435\\u0434\\u0435\\u0459\\u0430\\u043a \\u0443\\u0442\\u043e\\u0440\\u0430\\u043a \\u0441\\u0440\\u0435\\u0434\\u0430 \\u0447\\u0435\\u0442\\u0432\\u0440\\u0442\\u0430\\u043a \\u043f\\u0435\\u0442\\u0430\\u043a \\u0441\\u0443\\u0431\\u043e\\u0442\\u0430".split(" "),SHORTWEEKDAYS:"\\u043d\\u0435\\u0434 \\u043f\\u043e\\u043d \\u0443\\u0442\\u043e \\u0441\\u0440\\u0435 \\u0447\\u0435\\u0442 \\u043f\\u0435\\u0442 \\u0441\\u0443\\u0431".split(" "),STANDALONESHORTWEEKDAYS:"\\u043d\\u0435\\u0434 \\u043f\\u043e\\u043d \\u0443\\u0442\\u043e \\u0441\\u0440\\u0435 \\u0447\\u0435\\u0442 \\u043f\\u0435\\u0442 \\u0441\\u0443\\u0431".split(" "),\nNARROWWEEKDAYS:"\\u043d\\u043f\\u0443\\u0441\\u0447\\u043f\\u0441".split(""),STANDALONENARROWWEEKDAYS:"\\u043d\\u043f\\u0443\\u0441\\u0447\\u043f\\u0441".split(""),SHORTQUARTERS:["\\u041a1","\\u041a2","\\u041a3","\\u041a4"],QUARTERS:["\\u043f\\u0440\\u0432\\u0438 \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b","\\u0434\\u0440\\u0443\\u0433\\u0438 \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b","\\u0442\\u0440\\u0435\\u045b\\u0438 \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b","\\u0447\\u0435\\u0442\\u0432\\u0440\\u0442\\u0438 \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b"],\nAMPMS:["\\u043f\\u0440\\u0435 \\u043f\\u043e\\u0434\\u043d\\u0435","\\u043f\\u043e \\u043f\\u043e\\u0434\\u043d\\u0435"],DATEFORMATS:["EEEE, dd. MMMM y.","dd. MMMM y.","dd.MM.y.","d.M.yy."],TIMEFORMATS:["HH.mm.ss zzzz","HH.mm.ss z","HH.mm.ss","HH.mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_sr_Latn={ERAS:["p. n. e.","n. e."],ERANAMES:["pre nove ere","nove ere"],NARROWMONTHS:"jfmamjjasond".split(""),STANDALONENARROWMONTHS:"jfmamjjasond".split(""),MONTHS:"januar februar mart april maj jun jul avgust septembar oktobar novembar decembar".split(" "),STANDALONEMONTHS:"januar februar mart april maj jun jul avgust septembar oktobar novembar decembar".split(" "),SHORTMONTHS:"jan feb mar apr maj jun jul avg sep okt nov dec".split(" "),STANDALONESHORTMONTHS:"jan feb mar apr maj jun jul avg sep okt nov dec".split(" "),\nWEEKDAYS:"nedelja ponedeljak utorak sreda \\u010detvrtak petak subota".split(" "),STANDALONEWEEKDAYS:"nedelja ponedeljak utorak sreda \\u010detvrtak petak subota".split(" "),SHORTWEEKDAYS:"ned pon uto sre \\u010det pet sub".split(" "),STANDALONESHORTWEEKDAYS:"ned pon uto sre \\u010det pet sub".split(" "),NARROWWEEKDAYS:"npus\\u010dps".split(""),STANDALONENARROWWEEKDAYS:"npus\\u010dps".split(""),SHORTQUARTERS:["K1","K2","K3","K4"],QUARTERS:["prvi kvartal","drugi kvartal","tre\\u0107i kvartal","\\u010detvrti kvartal"],\nAMPMS:["pre podne","po podne"],DATEFORMATS:["EEEE, dd. MMMM y.","dd. MMMM y.","dd.MM.y.","d.M.yy."],TIMEFORMATS:["HH.mm.ss zzzz","HH.mm.ss z","HH.mm.ss","HH.mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_sv={ERAS:["f.Kr.","e.Kr."],ERANAMES:["f\\u00f6re Kristus","efter Kristus"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"januari februari mars april maj juni juli augusti september oktober november december".split(" "),STANDALONEMONTHS:"januari februari mars april maj juni juli augusti september oktober november december".split(" "),SHORTMONTHS:"jan. feb. mars apr. maj juni juli aug. sep. okt. nov. dec.".split(" "),STANDALONESHORTMONTHS:"jan. feb. mars apr. maj juni juli aug. sep. okt. nov. dec.".split(" "),\nWEEKDAYS:"s\\u00f6ndag m\\u00e5ndag tisdag onsdag torsdag fredag l\\u00f6rdag".split(" "),STANDALONEWEEKDAYS:"s\\u00f6ndag m\\u00e5ndag tisdag onsdag torsdag fredag l\\u00f6rdag".split(" "),SHORTWEEKDAYS:"s\\u00f6n m\\u00e5n tis ons tors fre l\\u00f6r".split(" "),STANDALONESHORTWEEKDAYS:"s\\u00f6n m\\u00e5n tis ons tors fre l\\u00f6r".split(" "),NARROWWEEKDAYS:"SMTOTFL".split(""),STANDALONENARROWWEEKDAYS:"SMTOTFL".split(""),SHORTQUARTERS:["K1","K2","K3","K4"],QUARTERS:["1:a kvartalet","2:a kvartalet","3:e kvartalet",\n"4:e kvartalet"],AMPMS:["fm","em"],DATEFORMATS:["EEEE d MMMM y","d MMMM y","d MMM y","y-MM-dd"],TIMEFORMATS:["\'kl\'. HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:3};\ngoog.i18n.DateTimeSymbols_sw={ERAS:["BC","AD"],ERANAMES:["Kabla ya Kristo","Baada ya Kristo"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"Januari Februari Machi Aprili Mei Juni Julai Agosti Septemba Oktoba Novemba Desemba".split(" "),STANDALONEMONTHS:"Januari Februari Machi Aprili Mei Juni Julai Agosti Septemba Oktoba Novemba Desemba".split(" "),SHORTMONTHS:"Jan Feb Mac Apr Mei Jun Jul Ago Sep Okt Nov Des".split(" "),STANDALONESHORTMONTHS:"Jan Feb Mac Apr Mei Jun Jul Ago Sep Okt Nov Des".split(" "),\nWEEKDAYS:"Jumapili Jumatatu Jumanne Jumatano Alhamisi Ijumaa Jumamosi".split(" "),STANDALONEWEEKDAYS:"Jumapili Jumatatu Jumanne Jumatano Alhamisi Ijumaa Jumamosi".split(" "),SHORTWEEKDAYS:"Jumapili Jumatatu Jumanne Jumatano Alhamisi Ijumaa Jumamosi".split(" "),STANDALONESHORTWEEKDAYS:"Jumapili Jumatatu Jumanne Jumatano Alhamisi Ijumaa Jumamosi".split(" "),NARROWWEEKDAYS:"SMTWTFS".split(""),STANDALONENARROWWEEKDAYS:"SMTWTFS".split(""),SHORTQUARTERS:["Robo ya 1","Robo ya 2","Robo ya 3","Robo ya 4"],\nQUARTERS:["Robo ya 1","Robo ya 2","Robo ya 3","Robo ya 4"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, d MMMM y","d MMMM y","d MMM y","dd/MM/y"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_ta={ERAS:["\\u0b95\\u0bbf.\\u0bae\\u0bc1.","\\u0b95\\u0bbf.\\u0baa\\u0bbf."],ERANAMES:["\\u0b95\\u0bbf\\u0bb1\\u0bbf\\u0bb8\\u0bcd\\u0ba4\\u0bc1\\u0bb5\\u0bc1\\u0b95\\u0bcd\\u0b95\\u0bc1 \\u0bae\\u0bc1\\u0ba9\\u0bcd","\\u0b85\\u0ba9\\u0bcd\\u0ba9\\u0bcb \\u0b9f\\u0bcb\\u0bae\\u0bbf\\u0ba9\\u0bbf"],NARROWMONTHS:"\\u0b9c \\u0baa\\u0bbf \\u0bae\\u0bbe \\u0b8f \\u0bae\\u0bc7 \\u0b9c\\u0bc2 \\u0b9c\\u0bc2 \\u0b86 \\u0b9a\\u0bc6 \\u0b85 \\u0ba8 \\u0b9f\\u0bbf".split(" "),STANDALONENARROWMONTHS:"\\u0b9c \\u0baa\\u0bbf \\u0bae\\u0bbe \\u0b8f \\u0bae\\u0bc7 \\u0b9c\\u0bc2 \\u0b9c\\u0bc2 \\u0b86 \\u0b9a\\u0bc6 \\u0b85 \\u0ba8 \\u0b9f\\u0bbf".split(" "),\nMONTHS:"\\u0b9c\\u0ba9\\u0bb5\\u0bb0\\u0bbf \\u0baa\\u0bbf\\u0baa\\u0bcd\\u0bb0\\u0bb5\\u0bb0\\u0bbf \\u0bae\\u0bbe\\u0bb0\\u0bcd\\u0b9a\\u0bcd \\u0b8f\\u0baa\\u0bcd\\u0bb0\\u0bb2\\u0bcd \\u0bae\\u0bc7 \\u0b9c\\u0bc2\\u0ba9\\u0bcd \\u0b9c\\u0bc2\\u0bb2\\u0bc8 \\u0b86\\u0b95\\u0bb8\\u0bcd\\u0b9f\\u0bcd \\u0b9a\\u0bc6\\u0baa\\u0bcd\\u0b9f\\u0bae\\u0bcd\\u0baa\\u0bb0\\u0bcd \\u0b85\\u0b95\\u0bcd\\u0b9f\\u0bcb\\u0baa\\u0bb0\\u0bcd \\u0ba8\\u0bb5\\u0bae\\u0bcd\\u0baa\\u0bb0\\u0bcd \\u0b9f\\u0bbf\\u0b9a\\u0bae\\u0bcd\\u0baa\\u0bb0\\u0bcd".split(" "),STANDALONEMONTHS:"\\u0b9c\\u0ba9\\u0bb5\\u0bb0\\u0bbf \\u0baa\\u0bbf\\u0baa\\u0bcd\\u0bb0\\u0bb5\\u0bb0\\u0bbf \\u0bae\\u0bbe\\u0bb0\\u0bcd\\u0b9a\\u0bcd \\u0b8f\\u0baa\\u0bcd\\u0bb0\\u0bb2\\u0bcd \\u0bae\\u0bc7 \\u0b9c\\u0bc2\\u0ba9\\u0bcd \\u0b9c\\u0bc2\\u0bb2\\u0bc8 \\u0b86\\u0b95\\u0bb8\\u0bcd\\u0b9f\\u0bc1 \\u0b9a\\u0bc6\\u0baa\\u0bcd\\u0b9f\\u0bae\\u0bcd\\u0baa\\u0bb0\\u0bcd \\u0b85\\u0b95\\u0bcd\\u0b9f\\u0bcb\\u0baa\\u0bb0\\u0bcd \\u0ba8\\u0bb5\\u0bae\\u0bcd\\u0baa\\u0bb0\\u0bcd \\u0b9f\\u0bbf\\u0b9a\\u0bae\\u0bcd\\u0baa\\u0bb0\\u0bcd".split(" "),\nSHORTMONTHS:"\\u0b9c\\u0ba9. \\u0baa\\u0bbf\\u0baa\\u0bcd. \\u0bae\\u0bbe\\u0bb0\\u0bcd. \\u0b8f\\u0baa\\u0bcd. \\u0bae\\u0bc7 \\u0b9c\\u0bc2\\u0ba9\\u0bcd \\u0b9c\\u0bc2\\u0bb2\\u0bc8 \\u0b86\\u0b95. \\u0b9a\\u0bc6\\u0baa\\u0bcd. \\u0b85\\u0b95\\u0bcd. \\u0ba8\\u0bb5. \\u0b9f\\u0bbf\\u0b9a.".split(" "),STANDALONESHORTMONTHS:"\\u0b9c\\u0ba9. \\u0baa\\u0bbf\\u0baa\\u0bcd. \\u0bae\\u0bbe\\u0bb0\\u0bcd. \\u0b8f\\u0baa\\u0bcd. \\u0bae\\u0bc7 \\u0b9c\\u0bc2\\u0ba9\\u0bcd \\u0b9c\\u0bc2\\u0bb2\\u0bc8 \\u0b86\\u0b95. \\u0b9a\\u0bc6\\u0baa\\u0bcd. \\u0b85\\u0b95\\u0bcd. \\u0ba8\\u0bb5. \\u0b9f\\u0bbf\\u0b9a.".split(" "),\nWEEKDAYS:"\\u0b9e\\u0bbe\\u0baf\\u0bbf\\u0bb1\\u0bc1 \\u0ba4\\u0bbf\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b9a\\u0bc6\\u0bb5\\u0bcd\\u0bb5\\u0bbe\\u0baf\\u0bcd \\u0baa\\u0bc1\\u0ba4\\u0ba9\\u0bcd \\u0bb5\\u0bbf\\u0baf\\u0bbe\\u0bb4\\u0ba9\\u0bcd \\u0bb5\\u0bc6\\u0bb3\\u0bcd\\u0bb3\\u0bbf \\u0b9a\\u0ba9\\u0bbf".split(" "),STANDALONEWEEKDAYS:"\\u0b9e\\u0bbe\\u0baf\\u0bbf\\u0bb1\\u0bc1 \\u0ba4\\u0bbf\\u0b99\\u0bcd\\u0b95\\u0bb3\\u0bcd \\u0b9a\\u0bc6\\u0bb5\\u0bcd\\u0bb5\\u0bbe\\u0baf\\u0bcd \\u0baa\\u0bc1\\u0ba4\\u0ba9\\u0bcd \\u0bb5\\u0bbf\\u0baf\\u0bbe\\u0bb4\\u0ba9\\u0bcd \\u0bb5\\u0bc6\\u0bb3\\u0bcd\\u0bb3\\u0bbf \\u0b9a\\u0ba9\\u0bbf".split(" "),\nSHORTWEEKDAYS:"\\u0b9e\\u0bbe\\u0baf\\u0bbf. \\u0ba4\\u0bbf\\u0b99\\u0bcd. \\u0b9a\\u0bc6\\u0bb5\\u0bcd. \\u0baa\\u0bc1\\u0ba4. \\u0bb5\\u0bbf\\u0baf\\u0bbe. \\u0bb5\\u0bc6\\u0bb3\\u0bcd. \\u0b9a\\u0ba9\\u0bbf".split(" "),STANDALONESHORTWEEKDAYS:"\\u0b9e\\u0bbe\\u0baf\\u0bbf. \\u0ba4\\u0bbf\\u0b99\\u0bcd. \\u0b9a\\u0bc6\\u0bb5\\u0bcd. \\u0baa\\u0bc1\\u0ba4. \\u0bb5\\u0bbf\\u0baf\\u0bbe. \\u0bb5\\u0bc6\\u0bb3\\u0bcd. \\u0b9a\\u0ba9\\u0bbf".split(" "),NARROWWEEKDAYS:"\\u0b9e\\u0bbe \\u0ba4\\u0bbf \\u0b9a\\u0bc6 \\u0baa\\u0bc1 \\u0bb5\\u0bbf \\u0bb5\\u0bc6 \\u0b9a".split(" "),\nSTANDALONENARROWWEEKDAYS:"\\u0b9e\\u0bbe \\u0ba4\\u0bbf \\u0b9a\\u0bc6 \\u0baa\\u0bc1 \\u0bb5\\u0bbf \\u0bb5\\u0bc6 \\u0b9a".split(" "),SHORTQUARTERS:["\\u0b95\\u0bbe\\u0bb2\\u0bbe.1","\\u0b95\\u0bbe\\u0bb2\\u0bbe.2","\\u0b95\\u0bbe\\u0bb2\\u0bbe.3","\\u0b95\\u0bbe\\u0bb2\\u0bbe.4"],QUARTERS:["1\\u0b86\\u0bae\\u0bcd \\u0b95\\u0bbe\\u0bb2\\u0bbe\\u0ba3\\u0bcd\\u0b9f\\u0bc1","2\\u0b86\\u0bae\\u0bcd \\u0b95\\u0bbe\\u0bb2\\u0bbe\\u0ba3\\u0bcd\\u0b9f\\u0bc1","3\\u0b86\\u0bae\\u0bcd \\u0b95\\u0bbe\\u0bb2\\u0bbe\\u0ba3\\u0bcd\\u0b9f\\u0bc1","4\\u0b86\\u0bae\\u0bcd \\u0b95\\u0bbe\\u0bb2\\u0bbe\\u0ba3\\u0bcd\\u0b9f\\u0bc1"],\nAMPMS:["\\u0bae\\u0bc1\\u0bb1\\u0bcd\\u0baa\\u0b95\\u0bb2\\u0bcd","\\u0baa\\u0bbf\\u0bb1\\u0bcd\\u0baa\\u0b95\\u0bb2\\u0bcd"],DATEFORMATS:["EEEE, d MMMM, y","d MMMM, y","d MMM, y","d/M/yy"],TIMEFORMATS:["a h:mm:ss zzzz","a h:mm:ss z","a h:mm:ss","a h:mm"],DATETIMEFORMATS:["{1} \\u2019\\u0b85\\u0ba9\\u0bcd\\u0bb1\\u0bc1\\u2019 {0}","{1} \\u2019\\u0b85\\u0ba9\\u0bcd\\u0bb1\\u0bc1\\u2019 {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[6,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_te={ERAS:["\\u0c15\\u0c4d\\u0c30\\u0c40\\u0c2a\\u0c42","\\u0c15\\u0c4d\\u0c30\\u0c40\\u0c36"],ERANAMES:["\\u0c15\\u0c4d\\u0c30\\u0c40\\u0c38\\u0c4d\\u0c24\\u0c41 \\u0c2a\\u0c42\\u0c30\\u0c4d\\u0c35\\u0c02","\\u0c15\\u0c4d\\u0c30\\u0c40\\u0c38\\u0c4d\\u0c24\\u0c41 \\u0c36\\u0c15\\u0c02"],NARROWMONTHS:"\\u0c1c \\u0c2b\\u0c3f \\u0c2e\\u0c3e \\u0c0f \\u0c2e\\u0c47 \\u0c1c\\u0c42 \\u0c1c\\u0c41 \\u0c06 \\u0c38\\u0c46 \\u0c05 \\u0c28 \\u0c21\\u0c3f".split(" "),STANDALONENARROWMONTHS:"\\u0c1c \\u0c2b\\u0c3f \\u0c2e\\u0c3e \\u0c0f \\u0c2e\\u0c47 \\u0c1c\\u0c42 \\u0c1c\\u0c41 \\u0c06 \\u0c38\\u0c46 \\u0c05 \\u0c28 \\u0c21\\u0c3f".split(" "),\nMONTHS:"\\u0c1c\\u0c28\\u0c35\\u0c30\\u0c3f \\u0c2b\\u0c3f\\u0c2c\\u0c4d\\u0c30\\u0c35\\u0c30\\u0c3f \\u0c2e\\u0c3e\\u0c30\\u0c4d\\u0c1a\\u0c3f \\u0c0f\\u0c2a\\u0c4d\\u0c30\\u0c3f\\u0c32\\u0c4d \\u0c2e\\u0c47 \\u0c1c\\u0c42\\u0c28\\u0c4d \\u0c1c\\u0c41\\u0c32\\u0c48 \\u0c06\\u0c17\\u0c38\\u0c4d\\u0c1f\\u0c41 \\u0c38\\u0c46\\u0c2a\\u0c4d\\u0c1f\\u0c46\\u0c02\\u0c2c\\u0c30\\u0c4d \\u0c05\\u0c15\\u0c4d\\u0c1f\\u0c4b\\u0c2c\\u0c30\\u0c4d \\u0c28\\u0c35\\u0c02\\u0c2c\\u0c30\\u0c4d \\u0c21\\u0c3f\\u0c38\\u0c46\\u0c02\\u0c2c\\u0c30\\u0c4d".split(" "),STANDALONEMONTHS:"\\u0c1c\\u0c28\\u0c35\\u0c30\\u0c3f \\u0c2b\\u0c3f\\u0c2c\\u0c4d\\u0c30\\u0c35\\u0c30\\u0c3f \\u0c2e\\u0c3e\\u0c30\\u0c4d\\u0c1a\\u0c3f \\u0c0f\\u0c2a\\u0c4d\\u0c30\\u0c3f\\u0c32\\u0c4d \\u0c2e\\u0c47 \\u0c1c\\u0c42\\u0c28\\u0c4d \\u0c1c\\u0c41\\u0c32\\u0c48 \\u0c06\\u0c17\\u0c38\\u0c4d\\u0c1f\\u0c41 \\u0c38\\u0c46\\u0c2a\\u0c4d\\u0c1f\\u0c46\\u0c02\\u0c2c\\u0c30\\u0c4d \\u0c05\\u0c15\\u0c4d\\u0c1f\\u0c4b\\u0c2c\\u0c30\\u0c4d \\u0c28\\u0c35\\u0c02\\u0c2c\\u0c30\\u0c4d \\u0c21\\u0c3f\\u0c38\\u0c46\\u0c02\\u0c2c\\u0c30\\u0c4d".split(" "),\nSHORTMONTHS:"\\u0c1c\\u0c28 \\u0c2b\\u0c3f\\u0c2c\\u0c4d\\u0c30 \\u0c2e\\u0c3e\\u0c30\\u0c4d\\u0c1a\\u0c3f \\u0c0f\\u0c2a\\u0c4d\\u0c30\\u0c3f \\u0c2e\\u0c47 \\u0c1c\\u0c42\\u0c28\\u0c4d \\u0c1c\\u0c41\\u0c32\\u0c48 \\u0c06\\u0c17 \\u0c38\\u0c46\\u0c2a\\u0c4d\\u0c1f\\u0c46\\u0c02 \\u0c05\\u0c15\\u0c4d\\u0c1f\\u0c4b \\u0c28\\u0c35\\u0c02 \\u0c21\\u0c3f\\u0c38\\u0c46\\u0c02".split(" "),STANDALONESHORTMONTHS:"\\u0c1c\\u0c28 \\u0c2b\\u0c3f\\u0c2c\\u0c4d\\u0c30 \\u0c2e\\u0c3e\\u0c30\\u0c4d\\u0c1a\\u0c3f \\u0c0f\\u0c2a\\u0c4d\\u0c30\\u0c3f \\u0c2e\\u0c47 \\u0c1c\\u0c42\\u0c28\\u0c4d \\u0c1c\\u0c41\\u0c32\\u0c48 \\u0c06\\u0c17\\u0c38\\u0c4d\\u0c1f\\u0c41 \\u0c38\\u0c46\\u0c2a\\u0c4d\\u0c1f\\u0c46\\u0c02 \\u0c05\\u0c15\\u0c4d\\u0c1f\\u0c4b \\u0c28\\u0c35\\u0c02 \\u0c21\\u0c3f\\u0c38\\u0c46\\u0c02".split(" "),\nWEEKDAYS:"\\u0c06\\u0c26\\u0c3f\\u0c35\\u0c3e\\u0c30\\u0c02 \\u0c38\\u0c4b\\u0c2e\\u0c35\\u0c3e\\u0c30\\u0c02 \\u0c2e\\u0c02\\u0c17\\u0c33\\u0c35\\u0c3e\\u0c30\\u0c02 \\u0c2c\\u0c41\\u0c27\\u0c35\\u0c3e\\u0c30\\u0c02 \\u0c17\\u0c41\\u0c30\\u0c41\\u0c35\\u0c3e\\u0c30\\u0c02 \\u0c36\\u0c41\\u0c15\\u0c4d\\u0c30\\u0c35\\u0c3e\\u0c30\\u0c02 \\u0c36\\u0c28\\u0c3f\\u0c35\\u0c3e\\u0c30\\u0c02".split(" "),STANDALONEWEEKDAYS:"\\u0c06\\u0c26\\u0c3f\\u0c35\\u0c3e\\u0c30\\u0c02 \\u0c38\\u0c4b\\u0c2e\\u0c35\\u0c3e\\u0c30\\u0c02 \\u0c2e\\u0c02\\u0c17\\u0c33\\u0c35\\u0c3e\\u0c30\\u0c02 \\u0c2c\\u0c41\\u0c27\\u0c35\\u0c3e\\u0c30\\u0c02 \\u0c17\\u0c41\\u0c30\\u0c41\\u0c35\\u0c3e\\u0c30\\u0c02 \\u0c36\\u0c41\\u0c15\\u0c4d\\u0c30\\u0c35\\u0c3e\\u0c30\\u0c02 \\u0c36\\u0c28\\u0c3f\\u0c35\\u0c3e\\u0c30\\u0c02".split(" "),\nSHORTWEEKDAYS:"\\u0c06\\u0c26\\u0c3f \\u0c38\\u0c4b\\u0c2e \\u0c2e\\u0c02\\u0c17\\u0c33 \\u0c2c\\u0c41\\u0c27 \\u0c17\\u0c41\\u0c30\\u0c41 \\u0c36\\u0c41\\u0c15\\u0c4d\\u0c30 \\u0c36\\u0c28\\u0c3f".split(" "),STANDALONESHORTWEEKDAYS:"\\u0c06\\u0c26\\u0c3f \\u0c38\\u0c4b\\u0c2e \\u0c2e\\u0c02\\u0c17\\u0c33 \\u0c2c\\u0c41\\u0c27 \\u0c17\\u0c41\\u0c30\\u0c41 \\u0c36\\u0c41\\u0c15\\u0c4d\\u0c30 \\u0c36\\u0c28\\u0c3f".split(" "),NARROWWEEKDAYS:"\\u0c06 \\u0c38\\u0c4b \\u0c2e \\u0c2c\\u0c41 \\u0c17\\u0c41 \\u0c36\\u0c41 \\u0c36".split(" "),STANDALONENARROWWEEKDAYS:"\\u0c06 \\u0c38\\u0c4b \\u0c2e \\u0c2c\\u0c41 \\u0c17\\u0c41 \\u0c36\\u0c41 \\u0c36".split(" "),\nSHORTQUARTERS:["\\u0c24\\u0c4d\\u0c30\\u0c481","\\u0c24\\u0c4d\\u0c30\\u0c482","\\u0c24\\u0c4d\\u0c30\\u0c483","\\u0c24\\u0c4d\\u0c30\\u0c484"],QUARTERS:["1\\u0c35 \\u0c24\\u0c4d\\u0c30\\u0c48\\u0c2e\\u0c3e\\u0c38\\u0c02","2\\u0c35 \\u0c24\\u0c4d\\u0c30\\u0c48\\u0c2e\\u0c3e\\u0c38\\u0c02","3\\u0c35 \\u0c24\\u0c4d\\u0c30\\u0c48\\u0c2e\\u0c3e\\u0c38\\u0c02","4\\u0c35 \\u0c24\\u0c4d\\u0c30\\u0c48\\u0c2e\\u0c3e\\u0c38\\u0c02"],AMPMS:["[AM]","[PM]"],DATEFORMATS:["d, MMMM y, EEEE","d MMMM, y","d MMM, y","dd-MM-yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z",\n"h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[6,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_th={ERAS:["\\u0e1b\\u0e35\\u0e01\\u0e48\\u0e2d\\u0e19 \\u0e04.\\u0e28.","\\u0e04.\\u0e28."],ERANAMES:["\\u0e1b\\u0e35\\u0e01\\u0e48\\u0e2d\\u0e19\\u0e04\\u0e23\\u0e34\\u0e2a\\u0e15\\u0e4c\\u0e28\\u0e31\\u0e01\\u0e23\\u0e32\\u0e0a","\\u0e04\\u0e23\\u0e34\\u0e2a\\u0e15\\u0e4c\\u0e28\\u0e31\\u0e01\\u0e23\\u0e32\\u0e0a"],NARROWMONTHS:"\\u0e21.\\u0e04. \\u0e01.\\u0e1e. \\u0e21\\u0e35.\\u0e04. \\u0e40\\u0e21.\\u0e22. \\u0e1e.\\u0e04. \\u0e21\\u0e34.\\u0e22. \\u0e01.\\u0e04. \\u0e2a.\\u0e04. \\u0e01.\\u0e22. \\u0e15.\\u0e04. \\u0e1e.\\u0e22. \\u0e18.\\u0e04.".split(" "),STANDALONENARROWMONTHS:"\\u0e21.\\u0e04. \\u0e01.\\u0e1e. \\u0e21\\u0e35.\\u0e04. \\u0e40\\u0e21.\\u0e22. \\u0e1e.\\u0e04. \\u0e21\\u0e34.\\u0e22. \\u0e01.\\u0e04. \\u0e2a.\\u0e04. \\u0e01.\\u0e22. \\u0e15.\\u0e04. \\u0e1e.\\u0e22. \\u0e18.\\u0e04.".split(" "),\nMONTHS:"\\u0e21\\u0e01\\u0e23\\u0e32\\u0e04\\u0e21 \\u0e01\\u0e38\\u0e21\\u0e20\\u0e32\\u0e1e\\u0e31\\u0e19\\u0e18\\u0e4c \\u0e21\\u0e35\\u0e19\\u0e32\\u0e04\\u0e21 \\u0e40\\u0e21\\u0e29\\u0e32\\u0e22\\u0e19 \\u0e1e\\u0e24\\u0e29\\u0e20\\u0e32\\u0e04\\u0e21 \\u0e21\\u0e34\\u0e16\\u0e38\\u0e19\\u0e32\\u0e22\\u0e19 \\u0e01\\u0e23\\u0e01\\u0e0e\\u0e32\\u0e04\\u0e21 \\u0e2a\\u0e34\\u0e07\\u0e2b\\u0e32\\u0e04\\u0e21 \\u0e01\\u0e31\\u0e19\\u0e22\\u0e32\\u0e22\\u0e19 \\u0e15\\u0e38\\u0e25\\u0e32\\u0e04\\u0e21 \\u0e1e\\u0e24\\u0e28\\u0e08\\u0e34\\u0e01\\u0e32\\u0e22\\u0e19 \\u0e18\\u0e31\\u0e19\\u0e27\\u0e32\\u0e04\\u0e21".split(" "),\nSTANDALONEMONTHS:"\\u0e21\\u0e01\\u0e23\\u0e32\\u0e04\\u0e21 \\u0e01\\u0e38\\u0e21\\u0e20\\u0e32\\u0e1e\\u0e31\\u0e19\\u0e18\\u0e4c \\u0e21\\u0e35\\u0e19\\u0e32\\u0e04\\u0e21 \\u0e40\\u0e21\\u0e29\\u0e32\\u0e22\\u0e19 \\u0e1e\\u0e24\\u0e29\\u0e20\\u0e32\\u0e04\\u0e21 \\u0e21\\u0e34\\u0e16\\u0e38\\u0e19\\u0e32\\u0e22\\u0e19 \\u0e01\\u0e23\\u0e01\\u0e0e\\u0e32\\u0e04\\u0e21 \\u0e2a\\u0e34\\u0e07\\u0e2b\\u0e32\\u0e04\\u0e21 \\u0e01\\u0e31\\u0e19\\u0e22\\u0e32\\u0e22\\u0e19 \\u0e15\\u0e38\\u0e25\\u0e32\\u0e04\\u0e21 \\u0e1e\\u0e24\\u0e28\\u0e08\\u0e34\\u0e01\\u0e32\\u0e22\\u0e19 \\u0e18\\u0e31\\u0e19\\u0e27\\u0e32\\u0e04\\u0e21".split(" "),\nSHORTMONTHS:"\\u0e21.\\u0e04. \\u0e01.\\u0e1e. \\u0e21\\u0e35.\\u0e04. \\u0e40\\u0e21.\\u0e22. \\u0e1e.\\u0e04. \\u0e21\\u0e34.\\u0e22. \\u0e01.\\u0e04. \\u0e2a.\\u0e04. \\u0e01.\\u0e22. \\u0e15.\\u0e04. \\u0e1e.\\u0e22. \\u0e18.\\u0e04.".split(" "),STANDALONESHORTMONTHS:"\\u0e21.\\u0e04. \\u0e01.\\u0e1e. \\u0e21\\u0e35.\\u0e04. \\u0e40\\u0e21.\\u0e22. \\u0e1e.\\u0e04. \\u0e21\\u0e34.\\u0e22. \\u0e01.\\u0e04. \\u0e2a.\\u0e04. \\u0e01.\\u0e22. \\u0e15.\\u0e04. \\u0e1e.\\u0e22. \\u0e18.\\u0e04.".split(" "),WEEKDAYS:"\\u0e27\\u0e31\\u0e19\\u0e2d\\u0e32\\u0e17\\u0e34\\u0e15\\u0e22\\u0e4c \\u0e27\\u0e31\\u0e19\\u0e08\\u0e31\\u0e19\\u0e17\\u0e23\\u0e4c \\u0e27\\u0e31\\u0e19\\u0e2d\\u0e31\\u0e07\\u0e04\\u0e32\\u0e23 \\u0e27\\u0e31\\u0e19\\u0e1e\\u0e38\\u0e18 \\u0e27\\u0e31\\u0e19\\u0e1e\\u0e24\\u0e2b\\u0e31\\u0e2a\\u0e1a\\u0e14\\u0e35 \\u0e27\\u0e31\\u0e19\\u0e28\\u0e38\\u0e01\\u0e23\\u0e4c \\u0e27\\u0e31\\u0e19\\u0e40\\u0e2a\\u0e32\\u0e23\\u0e4c".split(" "),\nSTANDALONEWEEKDAYS:"\\u0e27\\u0e31\\u0e19\\u0e2d\\u0e32\\u0e17\\u0e34\\u0e15\\u0e22\\u0e4c \\u0e27\\u0e31\\u0e19\\u0e08\\u0e31\\u0e19\\u0e17\\u0e23\\u0e4c \\u0e27\\u0e31\\u0e19\\u0e2d\\u0e31\\u0e07\\u0e04\\u0e32\\u0e23 \\u0e27\\u0e31\\u0e19\\u0e1e\\u0e38\\u0e18 \\u0e27\\u0e31\\u0e19\\u0e1e\\u0e24\\u0e2b\\u0e31\\u0e2a\\u0e1a\\u0e14\\u0e35 \\u0e27\\u0e31\\u0e19\\u0e28\\u0e38\\u0e01\\u0e23\\u0e4c \\u0e27\\u0e31\\u0e19\\u0e40\\u0e2a\\u0e32\\u0e23\\u0e4c".split(" "),SHORTWEEKDAYS:"\\u0e2d\\u0e32. \\u0e08. \\u0e2d. \\u0e1e. \\u0e1e\\u0e24. \\u0e28. \\u0e2a.".split(" "),STANDALONESHORTWEEKDAYS:"\\u0e2d\\u0e32. \\u0e08. \\u0e2d. \\u0e1e. \\u0e1e\\u0e24. \\u0e28. \\u0e2a.".split(" "),\nNARROWWEEKDAYS:"\\u0e2d\\u0e32 \\u0e08 \\u0e2d \\u0e1e \\u0e1e\\u0e24 \\u0e28 \\u0e2a".split(" "),STANDALONENARROWWEEKDAYS:"\\u0e2d\\u0e32 \\u0e08 \\u0e2d \\u0e1e \\u0e1e\\u0e24 \\u0e28 \\u0e2a".split(" "),SHORTQUARTERS:["\\u0e44\\u0e15\\u0e23\\u0e21\\u0e32\\u0e2a 1","\\u0e44\\u0e15\\u0e23\\u0e21\\u0e32\\u0e2a 2","\\u0e44\\u0e15\\u0e23\\u0e21\\u0e32\\u0e2a 3","\\u0e44\\u0e15\\u0e23\\u0e21\\u0e32\\u0e2a 4"],QUARTERS:["\\u0e44\\u0e15\\u0e23\\u0e21\\u0e32\\u0e2a 1","\\u0e44\\u0e15\\u0e23\\u0e21\\u0e32\\u0e2a 2","\\u0e44\\u0e15\\u0e23\\u0e21\\u0e32\\u0e2a 3",\n"\\u0e44\\u0e15\\u0e23\\u0e21\\u0e32\\u0e2a 4"],AMPMS:["\\u0e01\\u0e48\\u0e2d\\u0e19\\u0e40\\u0e17\\u0e35\\u0e48\\u0e22\\u0e07","\\u0e2b\\u0e25\\u0e31\\u0e07\\u0e40\\u0e17\\u0e35\\u0e48\\u0e22\\u0e07"],DATEFORMATS:["EEEE\\u0e17\\u0e35\\u0e48 d MMMM G y","d MMMM G y","d MMM y","d/M/yy"],TIMEFORMATS:["H \\u0e19\\u0e32\\u0e2c\\u0e34\\u0e01\\u0e32 mm \\u0e19\\u0e32\\u0e17\\u0e35 ss \\u0e27\\u0e34\\u0e19\\u0e32\\u0e17\\u0e35 zzzz","H \\u0e19\\u0e32\\u0e2c\\u0e34\\u0e01\\u0e32 mm \\u0e19\\u0e32\\u0e17\\u0e35 ss \\u0e27\\u0e34\\u0e19\\u0e32\\u0e17\\u0e35 z","HH:mm:ss",\n"HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_tl={ERAS:["BC","AD"],ERANAMES:["BC","AD"],NARROWMONTHS:"Ene Peb Mar Abr May Hun Hul Ago Set Okt Nob Dis".split(" "),STANDALONENARROWMONTHS:"E P M A M Hun Hul Ago Set Okt Nob Dis".split(" "),MONTHS:"Enero Pebrero Marso Abril Mayo Hunyo Hulyo Agosto Setyembre Oktubre Nobyembre Disyembre".split(" "),STANDALONEMONTHS:"Enero Pebrero Marso Abril Mayo Hunyo Hulyo Agosto Setyembre Oktubre Nobyembre Disyembre".split(" "),SHORTMONTHS:"Ene Peb Mar Abr May Hun Hul Ago Set Okt Nob Dis".split(" "),\nSTANDALONESHORTMONTHS:"Ene Peb Mar Abr May Hun Hul Ago Set Okt Nob Dis".split(" "),WEEKDAYS:"Linggo Lunes Martes Miyerkules Huwebes Biyernes Sabado".split(" "),STANDALONEWEEKDAYS:"Linggo Lunes Martes Miyerkules Huwebes Biyernes Sabado".split(" "),SHORTWEEKDAYS:"Lin Lun Mar Miy Huw Biy Sab".split(" "),STANDALONESHORTWEEKDAYS:"Lin Lun Mar Miy Huw Biy Sab".split(" "),NARROWWEEKDAYS:"Lin Lun Mar Miy Huw Biy Sab".split(" "),STANDALONENARROWWEEKDAYS:"Lin Lun Mar Miy Huw Biy Sab".split(" "),SHORTQUARTERS:["Q1",\n"Q2","Q3","Q4"],QUARTERS:["ika-1 quarter","ika-2 quarter","ika-3 quarter","ika-4 na quarter"],AMPMS:["AM","PM"],DATEFORMATS:["EEEE, MMMM d, y","MMMM d, y","MMM d, y","M/d/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} \'nang\' {0}","{1} \'nang\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_tr={ERAS:["M\\u00d6","MS"],ERANAMES:["Milattan \\u00d6nce","Milattan Sonra"],NARROWMONTHS:"O\\u015eMNMHTAEEKA".split(""),STANDALONENARROWMONTHS:"O\\u015eMNMHTAEEKA".split(""),MONTHS:"Ocak \\u015eubat Mart Nisan May\\u0131s Haziran Temmuz A\\u011fustos Eyl\\u00fcl Ekim Kas\\u0131m Aral\\u0131k".split(" "),STANDALONEMONTHS:"Ocak \\u015eubat Mart Nisan May\\u0131s Haziran Temmuz A\\u011fustos Eyl\\u00fcl Ekim Kas\\u0131m Aral\\u0131k".split(" "),SHORTMONTHS:"Oca \\u015eub Mar Nis May Haz Tem A\\u011fu Eyl Eki Kas Ara".split(" "),\nSTANDALONESHORTMONTHS:"Oca \\u015eub Mar Nis May Haz Tem A\\u011fu Eyl Eki Kas Ara".split(" "),WEEKDAYS:"Pazar Pazartesi Sal\\u0131 \\u00c7ar\\u015famba Per\\u015fembe Cuma Cumartesi".split(" "),STANDALONEWEEKDAYS:"Pazar Pazartesi Sal\\u0131 \\u00c7ar\\u015famba Per\\u015fembe Cuma Cumartesi".split(" "),SHORTWEEKDAYS:"Paz Pzt Sal \\u00c7ar Per Cum Cmt".split(" "),STANDALONESHORTWEEKDAYS:"Paz Pzt Sal \\u00c7ar Per Cum Cmt".split(" "),NARROWWEEKDAYS:"PPS\\u00c7PCC".split(""),STANDALONENARROWWEEKDAYS:"PPS\\u00c7PCC".split(""),\nSHORTQUARTERS:["\\u00c71","\\u00c72","\\u00c73","\\u00c74"],QUARTERS:["1. \\u00e7eyrek","2. \\u00e7eyrek","3. \\u00e7eyrek","4. \\u00e7eyrek"],AMPMS:["\\u00d6\\u00d6","\\u00d6S"],DATEFORMATS:["d MMMM y EEEE","d MMMM y","d MMM y","d.MM.y"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_uk={ERAS:["\\u0434\\u043e \\u043d. \\u0435.","\\u043d. \\u0435."],ERANAMES:["\\u0434\\u043e \\u043d\\u0430\\u0448\\u043e\\u0457 \\u0435\\u0440\\u0438","\\u043d\\u0430\\u0448\\u043e\\u0457 \\u0435\\u0440\\u0438"],NARROWMONTHS:"\\u0421\\u041b\\u0411\\u041a\\u0422\\u0427\\u041b\\u0421\\u0412\\u0416\\u041b\\u0413".split(""),STANDALONENARROWMONTHS:"\\u0421\\u041b\\u0411\\u041a\\u0422\\u0427\\u041b\\u0421\\u0412\\u0416\\u041b\\u0413".split(""),MONTHS:"\\u0441\\u0456\\u0447\\u043d\\u044f \\u043b\\u044e\\u0442\\u043e\\u0433\\u043e \\u0431\\u0435\\u0440\\u0435\\u0437\\u043d\\u044f \\u043a\\u0432\\u0456\\u0442\\u043d\\u044f \\u0442\\u0440\\u0430\\u0432\\u043d\\u044f \\u0447\\u0435\\u0440\\u0432\\u043d\\u044f \\u043b\\u0438\\u043f\\u043d\\u044f \\u0441\\u0435\\u0440\\u043f\\u043d\\u044f \\u0432\\u0435\\u0440\\u0435\\u0441\\u043d\\u044f \\u0436\\u043e\\u0432\\u0442\\u043d\\u044f \\u043b\\u0438\\u0441\\u0442\\u043e\\u043f\\u0430\\u0434\\u0430 \\u0433\\u0440\\u0443\\u0434\\u043d\\u044f".split(" "),\nSTANDALONEMONTHS:"\\u0441\\u0456\\u0447\\u0435\\u043d\\u044c \\u043b\\u044e\\u0442\\u0438\\u0439 \\u0431\\u0435\\u0440\\u0435\\u0437\\u0435\\u043d\\u044c \\u043a\\u0432\\u0456\\u0442\\u0435\\u043d\\u044c \\u0442\\u0440\\u0430\\u0432\\u0435\\u043d\\u044c \\u0447\\u0435\\u0440\\u0432\\u0435\\u043d\\u044c \\u043b\\u0438\\u043f\\u0435\\u043d\\u044c \\u0441\\u0435\\u0440\\u043f\\u0435\\u043d\\u044c \\u0432\\u0435\\u0440\\u0435\\u0441\\u0435\\u043d\\u044c \\u0436\\u043e\\u0432\\u0442\\u0435\\u043d\\u044c \\u043b\\u0438\\u0441\\u0442\\u043e\\u043f\\u0430\\u0434 \\u0433\\u0440\\u0443\\u0434\\u0435\\u043d\\u044c".split(" "),\nSHORTMONTHS:"\\u0441\\u0456\\u0447. \\u043b\\u044e\\u0442. \\u0431\\u0435\\u0440. \\u043a\\u0432\\u0456\\u0442. \\u0442\\u0440\\u0430\\u0432. \\u0447\\u0435\\u0440\\u0432. \\u043b\\u0438\\u043f. \\u0441\\u0435\\u0440\\u043f. \\u0432\\u0435\\u0440. \\u0436\\u043e\\u0432\\u0442. \\u043b\\u0438\\u0441\\u0442. \\u0433\\u0440\\u0443\\u0434.".split(" "),STANDALONESHORTMONTHS:"\\u0421\\u0456\\u0447 \\u041b\\u044e\\u0442 \\u0411\\u0435\\u0440 \\u041a\\u0432\\u0456 \\u0422\\u0440\\u0430 \\u0427\\u0435\\u0440 \\u041b\\u0438\\u043f \\u0421\\u0435\\u0440 \\u0412\\u0435\\u0440 \\u0416\\u043e\\u0432 \\u041b\\u0438\\u0441 \\u0413\\u0440\\u0443".split(" "),\nWEEKDAYS:"\\u043d\\u0435\\u0434\\u0456\\u043b\\u044f \\u043f\\u043e\\u043d\\u0435\\u0434\\u0456\\u043b\\u043e\\u043a \\u0432\\u0456\\u0432\\u0442\\u043e\\u0440\\u043e\\u043a \\u0441\\u0435\\u0440\\u0435\\u0434\\u0430 \\u0447\\u0435\\u0442\\u0432\\u0435\\u0440 \\u043f\\u02bc\\u044f\\u0442\\u043d\\u0438\\u0446\\u044f \\u0441\\u0443\\u0431\\u043e\\u0442\\u0430".split(" "),STANDALONEWEEKDAYS:"\\u043d\\u0435\\u0434\\u0456\\u043b\\u044f \\u043f\\u043e\\u043d\\u0435\\u0434\\u0456\\u043b\\u043e\\u043a \\u0432\\u0456\\u0432\\u0442\\u043e\\u0440\\u043e\\u043a \\u0441\\u0435\\u0440\\u0435\\u0434\\u0430 \\u0447\\u0435\\u0442\\u0432\\u0435\\u0440 \\u043f\\u02bc\\u044f\\u0442\\u043d\\u0438\\u0446\\u044f \\u0441\\u0443\\u0431\\u043e\\u0442\\u0430".split(" "),\nSHORTWEEKDAYS:"\\u041d\\u0434 \\u041f\\u043d \\u0412\\u0442 \\u0421\\u0440 \\u0427\\u0442 \\u041f\\u0442 \\u0421\\u0431".split(" "),STANDALONESHORTWEEKDAYS:"\\u041d\\u0434 \\u041f\\u043d \\u0412\\u0442 \\u0421\\u0440 \\u0427\\u0442 \\u041f\\u0442 \\u0421\\u0431".split(" "),NARROWWEEKDAYS:"\\u041d\\u041f\\u0412\\u0421\\u0427\\u041f\\u0421".split(""),STANDALONENARROWWEEKDAYS:"\\u041d\\u041f\\u0412\\u0421\\u0427\\u041f\\u0421".split(""),SHORTQUARTERS:["1-\\u0439 \\u043a\\u0432.","2-\\u0439 \\u043a\\u0432.","3-\\u0439 \\u043a\\u0432.","4-\\u0439 \\u043a\\u0432."],\nQUARTERS:["1-\\u0439 \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b","2-\\u0439 \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b","3-\\u0439 \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b","4-\\u0439 \\u043a\\u0432\\u0430\\u0440\\u0442\\u0430\\u043b"],AMPMS:["\\u0434\\u043f","\\u043f\\u043f"],DATEFORMATS:["EEEE, d MMMM y \'\\u0440\'.","d MMMM y \'\\u0440\'.","d MMM y \'\\u0440\'.","dd.MM.yy"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1} \'\\u043e\' {0}","{1} \'\\u043e\' {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,\nWEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_ur={ERAS:["\\u0642\\u0628\\u0644 \\u0645\\u0633\\u06cc\\u062d","\\u0639\\u06cc\\u0633\\u0648\\u06cc"],ERANAMES:["\\u0642\\u0628\\u0644 \\u0645\\u0633\\u06cc\\u062d","\\u0639\\u06cc\\u0633\\u0648\\u06cc"],NARROWMONTHS:"JFMAMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"\\u062c\\u0646\\u0648\\u0631\\u06cc \\u0641\\u0631\\u0648\\u0631\\u06cc \\u0645\\u0627\\u0631\\u0686 \\u0627\\u067e\\u0631\\u06cc\\u0644 \\u0645\\u0626\\u06cc \\u062c\\u0648\\u0646 \\u062c\\u0648\\u0644\\u0627\\u0626\\u06cc \\u0627\\u06af\\u0633\\u062a \\u0633\\u062a\\u0645\\u0628\\u0631 \\u0627\\u06a9\\u062a\\u0648\\u0628\\u0631 \\u0646\\u0648\\u0645\\u0628\\u0631 \\u062f\\u0633\\u0645\\u0628\\u0631".split(" "),STANDALONEMONTHS:"\\u062c\\u0646\\u0648\\u0631\\u06cc \\u0641\\u0631\\u0648\\u0631\\u06cc \\u0645\\u0627\\u0631\\u0686 \\u0627\\u067e\\u0631\\u06cc\\u0644 \\u0645\\u0626\\u06cc \\u062c\\u0648\\u0646 \\u062c\\u0648\\u0644\\u0627\\u0626\\u06cc \\u0627\\u06af\\u0633\\u062a \\u0633\\u062a\\u0645\\u0628\\u0631 \\u0627\\u06a9\\u062a\\u0648\\u0628\\u0631 \\u0646\\u0648\\u0645\\u0628\\u0631 \\u062f\\u0633\\u0645\\u0628\\u0631".split(" "),\nSHORTMONTHS:"\\u062c\\u0646\\u0648\\u0631\\u06cc \\u0641\\u0631\\u0648\\u0631\\u06cc \\u0645\\u0627\\u0631\\u0686 \\u0627\\u067e\\u0631\\u06cc\\u0644 \\u0645\\u0626\\u06cc \\u062c\\u0648\\u0646 \\u062c\\u0648\\u0644\\u0627\\u0626\\u06cc \\u0627\\u06af\\u0633\\u062a \\u0633\\u062a\\u0645\\u0628\\u0631 \\u0627\\u06a9\\u062a\\u0648\\u0628\\u0631 \\u0646\\u0648\\u0645\\u0628\\u0631 \\u062f\\u0633\\u0645\\u0628\\u0631".split(" "),STANDALONESHORTMONTHS:"\\u062c\\u0646\\u0648\\u0631\\u06cc \\u0641\\u0631\\u0648\\u0631\\u06cc \\u0645\\u0627\\u0631\\u0686 \\u0627\\u067e\\u0631\\u06cc\\u0644 \\u0645\\u0626\\u06cc \\u062c\\u0648\\u0646 \\u062c\\u0648\\u0644\\u0627\\u0626\\u06cc \\u0627\\u06af\\u0633\\u062a \\u0633\\u062a\\u0645\\u0628\\u0631 \\u0627\\u06a9\\u062a\\u0648\\u0628\\u0631 \\u0646\\u0648\\u0645\\u0628\\u0631 \\u062f\\u0633\\u0645\\u0628\\u0631".split(" "),\nWEEKDAYS:"\\u0627\\u062a\\u0648\\u0627\\u0631 \\u0633\\u0648\\u0645\\u0648\\u0627\\u0631 \\u0645\\u0646\\u06af\\u0644 \\u0628\\u062f\\u06be \\u062c\\u0645\\u0639\\u0631\\u0627\\u062a \\u062c\\u0645\\u0639\\u06c1 \\u06c1\\u0641\\u062a\\u06c1".split(" "),STANDALONEWEEKDAYS:"\\u0627\\u062a\\u0648\\u0627\\u0631 \\u0633\\u0648\\u0645\\u0648\\u0627\\u0631 \\u0645\\u0646\\u06af\\u0644 \\u0628\\u062f\\u06be \\u062c\\u0645\\u0639\\u0631\\u0627\\u062a \\u062c\\u0645\\u0639\\u06c1 \\u06c1\\u0641\\u062a\\u06c1".split(" "),SHORTWEEKDAYS:"\\u0627\\u062a\\u0648\\u0627\\u0631 \\u0633\\u0648\\u0645\\u0648\\u0627\\u0631 \\u0645\\u0646\\u06af\\u0644 \\u0628\\u062f\\u06be \\u062c\\u0645\\u0639\\u0631\\u0627\\u062a \\u062c\\u0645\\u0639\\u06c1 \\u06c1\\u0641\\u062a\\u06c1".split(" "),\nSTANDALONESHORTWEEKDAYS:"\\u0627\\u062a\\u0648\\u0627\\u0631 \\u0633\\u0648\\u0645\\u0648\\u0627\\u0631 \\u0645\\u0646\\u06af\\u0644 \\u0628\\u062f\\u06be \\u062c\\u0645\\u0639\\u0631\\u0627\\u062a \\u062c\\u0645\\u0639\\u06c1 \\u06c1\\u0641\\u062a\\u06c1".split(" "),NARROWWEEKDAYS:"SMTWTFS".split(""),STANDALONENARROWWEEKDAYS:"SMTWTFS".split(""),SHORTQUARTERS:["\\u067e\\u06c1\\u0644\\u06cc \\u0633\\u06c1 \\u0645\\u0627\\u06c1\\u06cc","\\u062f\\u0648\\u0633\\u0631\\u06cc \\u0633\\u06c1 \\u0645\\u0627\\u06c1\\u06cc","\\u062a\\u06cc\\u0633\\u0631\\u06cc \\u0633\\u06c1 \\u0645\\u0627\\u06c1\\u06cc",\n"\\u0686\\u0648\\u062a\\u0647\\u06cc \\u0633\\u06c1 \\u0645\\u0627\\u06c1\\u06cc"],QUARTERS:["\\u067e\\u06c1\\u0644\\u06cc \\u0633\\u06c1 \\u0645\\u0627\\u06c1\\u06cc","\\u062f\\u0648\\u0633\\u0631\\u06cc \\u0633\\u06c1 \\u0645\\u0627\\u06c1\\u06cc","\\u062a\\u06cc\\u0633\\u0631\\u06cc \\u0633\\u06c1 \\u0645\\u0627\\u06c1\\u06cc","\\u0686\\u0648\\u062a\\u0647\\u06cc \\u0633\\u06c1 \\u0645\\u0627\\u06c1\\u06cc"],AMPMS:["\\u0642\\u0628\\u0644 \\u062f\\u0648\\u067e\\u06c1\\u0631","\\u0628\\u0639\\u062f \\u062f\\u0648\\u067e\\u06c1\\u0631"],DATEFORMATS:["EEEE\\u060c d MMMM\\u060c y",\n"d MMMM\\u060c y","d MMM\\u060c y","d/M/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_uz={ERAS:["m.a.","milodiy"],ERANAMES:["miloddan avvalgi","milodiy"],NARROWMONTHS:"YFMAMIIASOND".split(""),STANDALONENARROWMONTHS:"YFMAMIIASOND".split(""),MONTHS:"yanvar fevral mart aprel may iyun iyul avgust Sentabr Oktabr noyabr dekabr".split(" "),STANDALONEMONTHS:"Yanvar Fevral Mart Aprel May Iyun Iyul Avgust Sentabr Oktabr Noyabr Dekabr".split(" "),SHORTMONTHS:"yan fev mar apr may iyn iyl avg sen okt noy dek".split(" "),STANDALONESHORTMONTHS:"Yanv Fev Mar Apr May Iyun Iyul Avg Sen Okt Noya Dek".split(" "),\nWEEKDAYS:"yakshanba dushanba seshanba chorshanba payshanba juma shanba".split(" "),STANDALONEWEEKDAYS:"yakshanba dushanba seshanba chorshanba payshanba juma shanba".split(" "),SHORTWEEKDAYS:"Ya Du Se Ch Pa Ju Sh".split(" "),STANDALONESHORTWEEKDAYS:"Ya Du Se Ch Pa Ju Sh".split(" "),NARROWWEEKDAYS:"YDSCPJS".split(""),STANDALONENARROWWEEKDAYS:"YDSCPJS".split(""),SHORTQUARTERS:["1-ch","2-ch","3-ch","4-ch"],QUARTERS:["1-chorak","2-chorak","3-chorak","4-chorak"],AMPMS:["TO","TK"],DATEFORMATS:["EEEE, y MMMM dd",\n"d-MMMM, y","d-MMM, y","dd/MM/yy"],TIMEFORMATS:["H:mm:ss (zzzz)","H:mm:ss (z)","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{1}, {0}","{1}, {0}","{1}, {0}","{1}, {0}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_vi={ERAS:["tr. CN","sau CN"],ERANAMES:["tr. CN","sau CN"],NARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),STANDALONENARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),MONTHS:"th\\u00e1ng 1;th\\u00e1ng 2;th\\u00e1ng 3;th\\u00e1ng 4;th\\u00e1ng 5;th\\u00e1ng 6;th\\u00e1ng 7;th\\u00e1ng 8;th\\u00e1ng 9;th\\u00e1ng 10;th\\u00e1ng 11;th\\u00e1ng 12".split(";"),STANDALONEMONTHS:"Th\\u00e1ng 1;Th\\u00e1ng 2;Th\\u00e1ng 3;Th\\u00e1ng 4;Th\\u00e1ng 5;Th\\u00e1ng 6;Th\\u00e1ng 7;Th\\u00e1ng 8;Th\\u00e1ng 9;Th\\u00e1ng 10;Th\\u00e1ng 11;Th\\u00e1ng 12".split(";"),\nSHORTMONTHS:"thg 1;thg 2;thg 3;thg 4;thg 5;thg 6;thg 7;thg 8;thg 9;thg 10;thg 11;thg 12".split(";"),STANDALONESHORTMONTHS:"Thg 1;Thg 2;Thg 3;Thg 4;Thg 5;Thg 6;Thg 7;Thg 8;Thg 9;Thg 10;Thg 11;Thg 12".split(";"),WEEKDAYS:"Ch\\u1ee7 Nh\\u1eadt;Th\\u1ee9 Hai;Th\\u1ee9 Ba;Th\\u1ee9 T\\u01b0;Th\\u1ee9 N\\u0103m;Th\\u1ee9 S\\u00e1u;Th\\u1ee9 B\\u1ea3y".split(";"),STANDALONEWEEKDAYS:"Ch\\u1ee7 Nh\\u1eadt;Th\\u1ee9 Hai;Th\\u1ee9 Ba;Th\\u1ee9 T\\u01b0;Th\\u1ee9 N\\u0103m;Th\\u1ee9 S\\u00e1u;Th\\u1ee9 B\\u1ea3y".split(";"),SHORTWEEKDAYS:"CN;Th 2;Th 3;Th 4;Th 5;Th 6;Th 7".split(";"),\nSTANDALONESHORTWEEKDAYS:"CN;Th 2;Th 3;Th 4;Th 5;Th 6;Th 7".split(";"),NARROWWEEKDAYS:"CN T2 T3 T4 T5 T6 T7".split(" "),STANDALONENARROWWEEKDAYS:"CN T2 T3 T4 T5 T6 T7".split(" "),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["Qu\\u00fd 1","Qu\\u00fd 2","Qu\\u00fd 3","Qu\\u00fd 4"],AMPMS:["SA","CH"],DATEFORMATS:["EEEE, \'ng\\u00e0y\' dd MMMM \'n\\u0103m\' y","\'Ng\\u00e0y\' dd \'th\\u00e1ng\' MM \'n\\u0103m\' y","d MMM, y","dd/MM/y"],TIMEFORMATS:["HH:mm:ss zzzz","HH:mm:ss z","HH:mm:ss","HH:mm"],DATETIMEFORMATS:["{0} {1}",\n"{0} {1}","{0}, {1}","{0}, {1}"],FIRSTDAYOFWEEK:0,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:6};\ngoog.i18n.DateTimeSymbols_zh={ERAS:["\\u516c\\u5143\\u524d","\\u516c\\u5143"],ERANAMES:["\\u516c\\u5143\\u524d","\\u516c\\u5143"],NARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),STANDALONENARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),MONTHS:"\\u4e00\\u6708 \\u4e8c\\u6708 \\u4e09\\u6708 \\u56db\\u6708 \\u4e94\\u6708 \\u516d\\u6708 \\u4e03\\u6708 \\u516b\\u6708 \\u4e5d\\u6708 \\u5341\\u6708 \\u5341\\u4e00\\u6708 \\u5341\\u4e8c\\u6708".split(" "),STANDALONEMONTHS:"\\u4e00\\u6708 \\u4e8c\\u6708 \\u4e09\\u6708 \\u56db\\u6708 \\u4e94\\u6708 \\u516d\\u6708 \\u4e03\\u6708 \\u516b\\u6708 \\u4e5d\\u6708 \\u5341\\u6708 \\u5341\\u4e00\\u6708 \\u5341\\u4e8c\\u6708".split(" "),\nSHORTMONTHS:"1\\u6708 2\\u6708 3\\u6708 4\\u6708 5\\u6708 6\\u6708 7\\u6708 8\\u6708 9\\u6708 10\\u6708 11\\u6708 12\\u6708".split(" "),STANDALONESHORTMONTHS:"1\\u6708 2\\u6708 3\\u6708 4\\u6708 5\\u6708 6\\u6708 7\\u6708 8\\u6708 9\\u6708 10\\u6708 11\\u6708 12\\u6708".split(" "),WEEKDAYS:"\\u661f\\u671f\\u65e5 \\u661f\\u671f\\u4e00 \\u661f\\u671f\\u4e8c \\u661f\\u671f\\u4e09 \\u661f\\u671f\\u56db \\u661f\\u671f\\u4e94 \\u661f\\u671f\\u516d".split(" "),STANDALONEWEEKDAYS:"\\u661f\\u671f\\u65e5 \\u661f\\u671f\\u4e00 \\u661f\\u671f\\u4e8c \\u661f\\u671f\\u4e09 \\u661f\\u671f\\u56db \\u661f\\u671f\\u4e94 \\u661f\\u671f\\u516d".split(" "),\nSHORTWEEKDAYS:"\\u5468\\u65e5 \\u5468\\u4e00 \\u5468\\u4e8c \\u5468\\u4e09 \\u5468\\u56db \\u5468\\u4e94 \\u5468\\u516d".split(" "),STANDALONESHORTWEEKDAYS:"\\u5468\\u65e5 \\u5468\\u4e00 \\u5468\\u4e8c \\u5468\\u4e09 \\u5468\\u56db \\u5468\\u4e94 \\u5468\\u516d".split(" "),NARROWWEEKDAYS:"\\u65e5\\u4e00\\u4e8c\\u4e09\\u56db\\u4e94\\u516d".split(""),STANDALONENARROWWEEKDAYS:"\\u65e5\\u4e00\\u4e8c\\u4e09\\u56db\\u4e94\\u516d".split(""),SHORTQUARTERS:["1\\u5b63\\u5ea6","2\\u5b63\\u5ea6","3\\u5b63\\u5ea6","4\\u5b63\\u5ea6"],QUARTERS:["\\u7b2c\\u4e00\\u5b63\\u5ea6",\n"\\u7b2c\\u4e8c\\u5b63\\u5ea6","\\u7b2c\\u4e09\\u5b63\\u5ea6","\\u7b2c\\u56db\\u5b63\\u5ea6"],AMPMS:["\\u4e0a\\u5348","\\u4e0b\\u5348"],DATEFORMATS:["y\\u5e74M\\u6708d\\u65e5EEEE","y\\u5e74M\\u6708d\\u65e5","y\\u5e74M\\u6708d\\u65e5","y/M/d"],TIMEFORMATS:["zzzz ah:mm:ss","z ah:mm:ss","ah:mm:ss","ah:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};goog.i18n.DateTimeSymbols_zh_CN=goog.i18n.DateTimeSymbols_zh;\ngoog.i18n.DateTimeSymbols_zh_HK={ERAS:["\\u516c\\u5143\\u524d","\\u516c\\u5143"],ERANAMES:["\\u516c\\u5143\\u524d","\\u516c\\u5143"],NARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),STANDALONENARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),MONTHS:"1\\u6708 2\\u6708 3\\u6708 4\\u6708 5\\u6708 6\\u6708 7\\u6708 8\\u6708 9\\u6708 10\\u6708 11\\u6708 12\\u6708".split(" "),STANDALONEMONTHS:"1\\u6708 2\\u6708 3\\u6708 4\\u6708 5\\u6708 6\\u6708 7\\u6708 8\\u6708 9\\u6708 10\\u6708 11\\u6708 12\\u6708".split(" "),SHORTMONTHS:"1\\u6708 2\\u6708 3\\u6708 4\\u6708 5\\u6708 6\\u6708 7\\u6708 8\\u6708 9\\u6708 10\\u6708 11\\u6708 12\\u6708".split(" "),\nSTANDALONESHORTMONTHS:"1\\u6708 2\\u6708 3\\u6708 4\\u6708 5\\u6708 6\\u6708 7\\u6708 8\\u6708 9\\u6708 10\\u6708 11\\u6708 12\\u6708".split(" "),WEEKDAYS:"\\u661f\\u671f\\u65e5 \\u661f\\u671f\\u4e00 \\u661f\\u671f\\u4e8c \\u661f\\u671f\\u4e09 \\u661f\\u671f\\u56db \\u661f\\u671f\\u4e94 \\u661f\\u671f\\u516d".split(" "),STANDALONEWEEKDAYS:"\\u661f\\u671f\\u65e5 \\u661f\\u671f\\u4e00 \\u661f\\u671f\\u4e8c \\u661f\\u671f\\u4e09 \\u661f\\u671f\\u56db \\u661f\\u671f\\u4e94 \\u661f\\u671f\\u516d".split(" "),SHORTWEEKDAYS:"\\u9031\\u65e5 \\u9031\\u4e00 \\u9031\\u4e8c \\u9031\\u4e09 \\u9031\\u56db \\u9031\\u4e94 \\u9031\\u516d".split(" "),\nSTANDALONESHORTWEEKDAYS:"\\u9031\\u65e5 \\u9031\\u4e00 \\u9031\\u4e8c \\u9031\\u4e09 \\u9031\\u56db \\u9031\\u4e94 \\u9031\\u516d".split(" "),NARROWWEEKDAYS:"\\u65e5\\u4e00\\u4e8c\\u4e09\\u56db\\u4e94\\u516d".split(""),STANDALONENARROWWEEKDAYS:"\\u65e5\\u4e00\\u4e8c\\u4e09\\u56db\\u4e94\\u516d".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["\\u7b2c1\\u5b63","\\u7b2c2\\u5b63","\\u7b2c3\\u5b63","\\u7b2c4\\u5b63"],AMPMS:["\\u4e0a\\u5348","\\u4e0b\\u5348"],DATEFORMATS:["y\\u5e74M\\u6708d\\u65e5EEEE","y\\u5e74M\\u6708d\\u65e5","y\\u5e74M\\u6708d\\u65e5",\n"d/M/y"],TIMEFORMATS:["ah:mm:ss [zzzz]","ah:mm:ss [z]","ah:mm:ss","ah:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_zh_TW={ERAS:["\\u897f\\u5143\\u524d","\\u897f\\u5143"],ERANAMES:["\\u897f\\u5143\\u524d","\\u897f\\u5143"],NARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),STANDALONENARROWMONTHS:"1 2 3 4 5 6 7 8 9 10 11 12".split(" "),MONTHS:"1\\u6708 2\\u6708 3\\u6708 4\\u6708 5\\u6708 6\\u6708 7\\u6708 8\\u6708 9\\u6708 10\\u6708 11\\u6708 12\\u6708".split(" "),STANDALONEMONTHS:"1\\u6708 2\\u6708 3\\u6708 4\\u6708 5\\u6708 6\\u6708 7\\u6708 8\\u6708 9\\u6708 10\\u6708 11\\u6708 12\\u6708".split(" "),SHORTMONTHS:"1\\u6708 2\\u6708 3\\u6708 4\\u6708 5\\u6708 6\\u6708 7\\u6708 8\\u6708 9\\u6708 10\\u6708 11\\u6708 12\\u6708".split(" "),\nSTANDALONESHORTMONTHS:"1\\u6708 2\\u6708 3\\u6708 4\\u6708 5\\u6708 6\\u6708 7\\u6708 8\\u6708 9\\u6708 10\\u6708 11\\u6708 12\\u6708".split(" "),WEEKDAYS:"\\u661f\\u671f\\u65e5 \\u661f\\u671f\\u4e00 \\u661f\\u671f\\u4e8c \\u661f\\u671f\\u4e09 \\u661f\\u671f\\u56db \\u661f\\u671f\\u4e94 \\u661f\\u671f\\u516d".split(" "),STANDALONEWEEKDAYS:"\\u661f\\u671f\\u65e5 \\u661f\\u671f\\u4e00 \\u661f\\u671f\\u4e8c \\u661f\\u671f\\u4e09 \\u661f\\u671f\\u56db \\u661f\\u671f\\u4e94 \\u661f\\u671f\\u516d".split(" "),SHORTWEEKDAYS:"\\u9031\\u65e5 \\u9031\\u4e00 \\u9031\\u4e8c \\u9031\\u4e09 \\u9031\\u56db \\u9031\\u4e94 \\u9031\\u516d".split(" "),\nSTANDALONESHORTWEEKDAYS:"\\u9031\\u65e5 \\u9031\\u4e00 \\u9031\\u4e8c \\u9031\\u4e09 \\u9031\\u56db \\u9031\\u4e94 \\u9031\\u516d".split(" "),NARROWWEEKDAYS:"\\u65e5\\u4e00\\u4e8c\\u4e09\\u56db\\u4e94\\u516d".split(""),STANDALONENARROWWEEKDAYS:"\\u65e5\\u4e00\\u4e8c\\u4e09\\u56db\\u4e94\\u516d".split(""),SHORTQUARTERS:["1\\u5b63","2\\u5b63","3\\u5b63","4\\u5b63"],QUARTERS:["\\u7b2c1\\u5b63","\\u7b2c2\\u5b63","\\u7b2c3\\u5b63","\\u7b2c4\\u5b63"],AMPMS:["\\u4e0a\\u5348","\\u4e0b\\u5348"],DATEFORMATS:["y\\u5e74M\\u6708d\\u65e5 EEEE","y\\u5e74M\\u6708d\\u65e5",\n"y\\u5e74M\\u6708d\\u65e5","y/M/d"],TIMEFORMATS:["ah:mm:ss [zzzz]","ah:mm:ss [z]","ah:mm:ss","ah:mm"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};\ngoog.i18n.DateTimeSymbols_zu={ERAS:["BC","AD"],ERANAMES:["BC","AD"],NARROWMONTHS:"JFMEMJJASOND".split(""),STANDALONENARROWMONTHS:"JFMAMJJASOND".split(""),MONTHS:"Januwari Februwari Mashi Ephreli Meyi Juni Julayi Agasti Septhemba Okthoba Novemba Disemba".split(" "),STANDALONEMONTHS:"Januwari Februwari Mashi Ephreli Meyi Juni Julayi Agasti Septhemba Okthoba Novemba Disemba".split(" "),SHORTMONTHS:"Jan Feb Mas Eph Mey Jun Jul Aga Sep Okt Nov Dis".split(" "),STANDALONESHORTMONTHS:"Jan Feb Mas Eph Mey Jun Jul Aga Sep Okt Nov Dis".split(" "),\nWEEKDAYS:"ISonto UMsombuluko ULwesibili ULwesithathu ULwesine ULwesihlanu UMgqibelo".split(" "),STANDALONEWEEKDAYS:"ISonto UMsombuluko ULwesibili ULwesithathu ULwesine ULwesihlanu UMgqibelo".split(" "),SHORTWEEKDAYS:"Son Mso Bil Tha Sin Hla Mgq".split(" "),STANDALONESHORTWEEKDAYS:"Son Mso Bil Tha Sin Hla Mgq".split(" "),NARROWWEEKDAYS:"SMBTSHM".split(""),STANDALONENARROWWEEKDAYS:"SMBTSHM".split(""),SHORTQUARTERS:["Q1","Q2","Q3","Q4"],QUARTERS:["ikota yesi-1","ikota yesi-2","ikota yesi-3","ikota yesi-4"],\nAMPMS:["AM","PM"],DATEFORMATS:["EEEE, MMMM d, y","MMMM d, y","MMM d, y","M/d/yy"],TIMEFORMATS:["h:mm:ss a zzzz","h:mm:ss a z","h:mm:ss a","h:mm a"],DATETIMEFORMATS:["{1} {0}","{1} {0}","{1} {0}","{1} {0}"],FIRSTDAYOFWEEK:6,WEEKENDRANGE:[5,6],FIRSTWEEKCUTOFFDAY:5};goog.i18n.DateTimeSymbolsType=function(){};goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_en;"af"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_af);"am"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_am);\n"ar"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_ar);"az"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_az);"be"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_be);"bg"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_bg);"bn"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_bn);"br"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_br);\n"bs"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_bs);"ca"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_ca);"chr"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_chr);"cs"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_cs);"cy"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_cy);"da"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_da);\n"de"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_de);if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_de_AT;if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_de_CH;"el"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_el);"en"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_en);\nif("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_en_AU;if("en_CA"==goog.LOCALE||"en-CA"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_en_CA;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_en_GB;if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_en_IE;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_en_IN;\nif("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_en_SG;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_en_US;if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_en_ZA;"es"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_es);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_es_419;\nif("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_es_ES;if("es_MX"==goog.LOCALE||"es-MX"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_es_MX;if("es_US"==goog.LOCALE||"es-US"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_es_US;"et"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_et);"eu"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_eu);\n"fa"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_fa);"fi"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_fi);"fil"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_fil);"fr"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_fr);if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_fr_CA;"ga"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_ga);\n"gl"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_gl);"gsw"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_gsw);"gu"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_gu);"haw"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_haw);"he"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_he);"hi"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_hi);\n"hr"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_hr);"hu"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_hu);"hy"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_hy);"id"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_id);"in"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_in);"is"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_is);\n"it"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_it);"iw"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_iw);"ja"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_ja);"ka"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_ka);"kk"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_kk);"km"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_km);\n"kn"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_kn);"ko"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_ko);"ky"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_ky);"ln"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_ln);"lo"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_lo);"lt"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_lt);\n"lv"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_lv);"mk"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_mk);"ml"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_ml);"mn"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_mn);"mo"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_mo);"mr"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_mr);\n"ms"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_ms);"mt"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_mt);"my"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_my);"nb"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_nb);"ne"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_ne);"nl"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_nl);\n"no"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_no);if("no_NO"==goog.LOCALE||"no-NO"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_no_NO;"or"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_or);"pa"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_pa);"pl"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_pl);"pt"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_pt);\nif("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_pt_BR;if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_pt_PT;"ro"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_ro);"ru"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_ru);"sh"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_sh);"si"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_si);\n"sk"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_sk);"sl"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_sl);"sq"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_sq);"sr"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_sr);if("sr_Latn"==goog.LOCALE||"sr-Latn"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_sr_Latn;"sv"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_sv);\n"sw"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_sw);"ta"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_ta);"te"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_te);"th"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_th);"tl"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_tl);"tr"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_tr);\n"uk"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_uk);"ur"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_ur);"uz"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_uz);"vi"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_vi);"zh"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_zh);if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_zh_CN;\nif("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_zh_HK;if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_zh_TW;"zu"==goog.LOCALE&&(goog.i18n.DateTimeSymbols=goog.i18n.DateTimeSymbols_zu);goog.date.weekDay={MON:0,TUE:1,WED:2,THU:3,FRI:4,SAT:5,SUN:6};goog.date.month={JAN:0,FEB:1,MAR:2,APR:3,MAY:4,JUN:5,JUL:6,AUG:7,SEP:8,OCT:9,NOV:10,DEC:11};goog.date.formatMonthAndYear=function(a,b){return goog.getMsg("{$monthName} {$yearNum}",{monthName:a,yearNum:b})};goog.date.splitDateStringRegex_=/^(\\d{4})(?:(?:-?(\\d{2})(?:-?(\\d{2}))?)|(?:-?(\\d{3}))|(?:-?W(\\d{2})(?:-?([1-7]))?))?$/;goog.date.splitTimeStringRegex_=/^(\\d{2})(?::?(\\d{2})(?::?(\\d{2})(\\.\\d+)?)?)?$/;\ngoog.date.splitTimezoneStringRegex_=/Z|(?:([-+])(\\d{2})(?::?(\\d{2}))?)$/;goog.date.splitDurationRegex_=/^(-)?P(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)D)?(T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+(?:\\.\\d+)?)S)?)?$/;goog.date.MS_PER_DAY=864E5;goog.date.isLeapYear=function(a){return 0==a%4&&(0!=a%100||0==a%400)};goog.date.isLongIsoYear=function(a){var b=5*a+12-4*(Math.floor(a/100)-Math.floor(a/400)),b=b+(Math.floor((a-100)/400)-Math.floor((a-102)/400)),b=b+(Math.floor((a-200)/400)-Math.floor((a-199)/400));return 5>b%28};\ngoog.date.getNumberOfDaysInMonth=function(a,b){switch(b){case goog.date.month.FEB:return goog.date.isLeapYear(a)?29:28;case goog.date.month.JUN:case goog.date.month.SEP:case goog.date.month.NOV:case goog.date.month.APR:return 30}return 31};goog.date.isSameDay=function(a,b){var c=b||new Date(goog.now());return a.getDate()==c.getDate()&&goog.date.isSameMonth(a,c)};goog.date.isSameMonth=function(a,b){var c=b||new Date(goog.now());return a.getMonth()==c.getMonth()&&goog.date.isSameYear(a,c)};\ngoog.date.isSameYear=function(a,b){var c=b||new Date(goog.now());return a.getFullYear()==c.getFullYear()};goog.date.getWeekNumber=function(a,b,c,d,e){a=new Date(a,b,c);d=goog.isDef(d)?d:goog.date.weekDay.THU;e=e||goog.date.weekDay.MON;b=(a.getDay()+6)%7;e=a.valueOf()+((d-e+7)%7-(b-e+7)%7)*goog.date.MS_PER_DAY;d=(new Date((new Date(e)).getFullYear(),0,1)).valueOf();return Math.floor(Math.round((e-d)/goog.date.MS_PER_DAY)/7)+1};goog.date.min=function(a,b){return a<b?a:b};\ngoog.date.max=function(a,b){return a>b?a:b};goog.date.fromIsoString=function(a){var b=new goog.date.DateTime(2E3);return goog.date.setIso8601DateTime(b,a)?b:null};goog.date.setIso8601DateTime=function(a,b){b=goog.string.trim(b);var c=-1==b.indexOf("T")?" ":"T",c=b.split(c);return goog.date.setIso8601DateOnly_(a,c[0])&&(2>c.length||goog.date.setIso8601TimeOnly_(a,c[1]))};\ngoog.date.setIso8601DateOnly_=function(a,b){var c=b.match(goog.date.splitDateStringRegex_);if(!c)return!1;var d=Number(c[2]),e=Number(c[3]),f=Number(c[4]),g=Number(c[5]),h=Number(c[6])||1;a.setFullYear(Number(c[1]));f?(a.setDate(1),a.setMonth(0),a.add(new goog.date.Interval(goog.date.Interval.DAYS,f-1))):g?goog.date.setDateFromIso8601Week_(a,g,h):(d&&(a.setDate(1),a.setMonth(d-1)),e&&a.setDate(e));return!0};\ngoog.date.setDateFromIso8601Week_=function(a,b,c){a.setMonth(0);a.setDate(1);var d=a.getDay()||7;b=new goog.date.Interval(goog.date.Interval.DAYS,(4>=d?1-d:8-d)+(Number(c)+7*(Number(b)-1))-1);a.add(b)};\ngoog.date.setIso8601TimeOnly_=function(a,b){var c=b.match(goog.date.splitTimezoneStringRegex_),d=0;c&&("Z"!=c[0]&&(d=60*Number(c[2])+Number(c[3]),d*="-"==c[1]?1:-1),d-=a.getTimezoneOffset(),b=b.substr(0,b.length-c[0].length));c=b.match(goog.date.splitTimeStringRegex_);if(!c)return!1;a.setHours(Number(c[1]));a.setMinutes(Number(c[2])||0);a.setSeconds(Number(c[3])||0);a.setMilliseconds(c[4]?1E3*Number(c[4]):0);0!=d&&a.setTime(a.getTime()+6E4*d);return!0};\ngoog.date.Interval=function(a,b,c,d,e,f){goog.isString(a)?(this.years=a==goog.date.Interval.YEARS?b:0,this.months=a==goog.date.Interval.MONTHS?b:0,this.days=a==goog.date.Interval.DAYS?b:0,this.hours=a==goog.date.Interval.HOURS?b:0,this.minutes=a==goog.date.Interval.MINUTES?b:0,this.seconds=a==goog.date.Interval.SECONDS?b:0):(this.years=a||0,this.months=b||0,this.days=c||0,this.hours=d||0,this.minutes=e||0,this.seconds=f||0)};\ngoog.date.Interval.fromIsoString=function(a){a=a.match(goog.date.splitDurationRegex_);if(!a)return null;var b=!(a[6]||a[7]||a[8]);if(b&&!(a[2]||a[3]||a[4])||b&&a[5])return null;var b=a[1],c=parseInt(a[2],10)||0,d=parseInt(a[3],10)||0,e=parseInt(a[4],10)||0,f=parseInt(a[6],10)||0,g=parseInt(a[7],10)||0;a=parseFloat(a[8])||0;return b?new goog.date.Interval(-c,-d,-e,-f,-g,-a):new goog.date.Interval(c,d,e,f,g,a)};\ngoog.date.Interval.prototype.toIsoString=function(a){var b=Math.min(this.years,this.months,this.days,this.hours,this.minutes,this.seconds),c=Math.max(this.years,this.months,this.days,this.hours,this.minutes,this.seconds);if(0>b&&0<c)return null;if(!a&&0==b&&0==c)return"PT0S";c=[];0>b&&c.push("-");c.push("P");(this.years||a)&&c.push(Math.abs(this.years)+"Y");(this.months||a)&&c.push(Math.abs(this.months)+"M");(this.days||a)&&c.push(Math.abs(this.days)+"D");if(this.hours||this.minutes||this.seconds||\na)c.push("T"),(this.hours||a)&&c.push(Math.abs(this.hours)+"H"),(this.minutes||a)&&c.push(Math.abs(this.minutes)+"M"),(this.seconds||a)&&c.push(Math.abs(this.seconds)+"S");return c.join("")};goog.date.Interval.prototype.equals=function(a){return a.years==this.years&&a.months==this.months&&a.days==this.days&&a.hours==this.hours&&a.minutes==this.minutes&&a.seconds==this.seconds};\ngoog.date.Interval.prototype.clone=function(){return new goog.date.Interval(this.years,this.months,this.days,this.hours,this.minutes,this.seconds)};goog.date.Interval.YEARS="y";goog.date.Interval.MONTHS="m";goog.date.Interval.DAYS="d";goog.date.Interval.HOURS="h";goog.date.Interval.MINUTES="n";goog.date.Interval.SECONDS="s";goog.date.Interval.prototype.isZero=function(){return 0==this.years&&0==this.months&&0==this.days&&0==this.hours&&0==this.minutes&&0==this.seconds};\ngoog.date.Interval.prototype.getInverse=function(){return this.times(-1)};goog.date.Interval.prototype.times=function(a){return new goog.date.Interval(this.years*a,this.months*a,this.days*a,this.hours*a,this.minutes*a,this.seconds*a)};goog.date.Interval.prototype.getTotalSeconds=function(){goog.asserts.assert(0==this.years&&0==this.months);return 60*(60*(24*this.days+this.hours)+this.minutes)+this.seconds};\ngoog.date.Interval.prototype.add=function(a){this.years+=a.years;this.months+=a.months;this.days+=a.days;this.hours+=a.hours;this.minutes+=a.minutes;this.seconds+=a.seconds};\ngoog.date.Date=function(a,b,c){goog.isNumber(a)?(this.date=this.buildDate_(a,b||0,c||1),this.maybeFixDst_(c||1)):goog.isObject(a)?(this.date=this.buildDate_(a.getFullYear(),a.getMonth(),a.getDate()),this.maybeFixDst_(a.getDate())):(this.date=new Date(goog.now()),a=this.date.getDate(),this.date.setHours(0),this.date.setMinutes(0),this.date.setSeconds(0),this.date.setMilliseconds(0),this.maybeFixDst_(a))};\ngoog.date.Date.prototype.buildDate_=function(a,b,c){b=new Date(a,b,c);0<=a&&100>a&&b.setFullYear(b.getFullYear()-1900);return b};goog.date.Date.prototype.firstDayOfWeek_=goog.i18n.DateTimeSymbols.FIRSTDAYOFWEEK;goog.date.Date.prototype.firstWeekCutOffDay_=goog.i18n.DateTimeSymbols.FIRSTWEEKCUTOFFDAY;goog.date.Date.prototype.clone=function(){var a=new goog.date.Date(this.date);a.firstDayOfWeek_=this.firstDayOfWeek_;a.firstWeekCutOffDay_=this.firstWeekCutOffDay_;return a};\ngoog.date.Date.prototype.getFullYear=function(){return this.date.getFullYear()};goog.date.Date.prototype.getYear=function(){return this.getFullYear()};goog.date.Date.prototype.getMonth=function(){return this.date.getMonth()};goog.date.Date.prototype.getDate=function(){return this.date.getDate()};goog.date.Date.prototype.getTime=function(){return this.date.getTime()};goog.date.Date.prototype.getDay=function(){return this.date.getDay()};\ngoog.date.Date.prototype.getIsoWeekday=function(){return(this.getDay()+6)%7};goog.date.Date.prototype.getWeekday=function(){return(this.getIsoWeekday()-this.firstDayOfWeek_+7)%7};goog.date.Date.prototype.getUTCFullYear=function(){return this.date.getUTCFullYear()};goog.date.Date.prototype.getUTCMonth=function(){return this.date.getUTCMonth()};goog.date.Date.prototype.getUTCDate=function(){return this.date.getUTCDate()};goog.date.Date.prototype.getUTCDay=function(){return this.date.getDay()};\ngoog.date.Date.prototype.getUTCHours=function(){return this.date.getUTCHours()};goog.date.Date.prototype.getUTCMinutes=function(){return this.date.getUTCMinutes()};goog.date.Date.prototype.getUTCIsoWeekday=function(){return(this.date.getUTCDay()+6)%7};goog.date.Date.prototype.getUTCWeekday=function(){return(this.getUTCIsoWeekday()-this.firstDayOfWeek_+7)%7};goog.date.Date.prototype.getFirstDayOfWeek=function(){return this.firstDayOfWeek_};goog.date.Date.prototype.getFirstWeekCutOffDay=function(){return this.firstWeekCutOffDay_};\ngoog.date.Date.prototype.getNumberOfDaysInMonth=function(){return goog.date.getNumberOfDaysInMonth(this.getFullYear(),this.getMonth())};goog.date.Date.prototype.getWeekNumber=function(){return goog.date.getWeekNumber(this.getFullYear(),this.getMonth(),this.getDate(),this.firstWeekCutOffDay_,this.firstDayOfWeek_)};goog.date.Date.prototype.getDayOfYear=function(){for(var a=this.getDate(),b=this.getFullYear(),c=this.getMonth()-1;0<=c;c--)a+=goog.date.getNumberOfDaysInMonth(b,c);return a};\ngoog.date.Date.prototype.getTimezoneOffset=function(){return this.date.getTimezoneOffset()};goog.date.Date.prototype.getTimezoneOffsetString=function(){var a;a=this.getTimezoneOffset();if(0==a)a="Z";else{var b=Math.abs(a)/60,c=Math.floor(b),b=60*(b-c);a=(0<a?"-":"+")+goog.string.padNumber(c,2)+":"+goog.string.padNumber(b,2)}return a};goog.date.Date.prototype.set=function(a){this.date=new Date(a.getFullYear(),a.getMonth(),a.getDate())};goog.date.Date.prototype.setFullYear=function(a){this.date.setFullYear(a)};\ngoog.date.Date.prototype.setYear=function(a){this.setFullYear(a)};goog.date.Date.prototype.setMonth=function(a){this.date.setMonth(a)};goog.date.Date.prototype.setDate=function(a){this.date.setDate(a)};goog.date.Date.prototype.setTime=function(a){this.date.setTime(a)};goog.date.Date.prototype.setUTCFullYear=function(a){this.date.setUTCFullYear(a)};goog.date.Date.prototype.setUTCMonth=function(a){this.date.setUTCMonth(a)};goog.date.Date.prototype.setUTCDate=function(a){this.date.setUTCDate(a)};\ngoog.date.Date.prototype.setFirstDayOfWeek=function(a){this.firstDayOfWeek_=a};goog.date.Date.prototype.setFirstWeekCutOffDay=function(a){this.firstWeekCutOffDay_=a};\ngoog.date.Date.prototype.add=function(a){if(a.years||a.months){var b=this.getMonth()+a.months+12*a.years,c=this.getYear()+Math.floor(b/12),b=b%12;0>b&&(b+=12);var d=goog.date.getNumberOfDaysInMonth(c,b),d=Math.min(d,this.getDate());this.setDate(1);this.setFullYear(c);this.setMonth(b);this.setDate(d)}a.days&&(b=new Date(this.getYear(),this.getMonth(),this.getDate(),12),a=new Date(b.getTime()+864E5*a.days),this.setDate(1),this.setFullYear(a.getFullYear()),this.setMonth(a.getMonth()),this.setDate(a.getDate()),\nthis.maybeFixDst_(a.getDate()))};goog.date.Date.prototype.toIsoString=function(a,b){return[this.getFullYear(),goog.string.padNumber(this.getMonth()+1,2),goog.string.padNumber(this.getDate(),2)].join(a?"-":"")+(b?this.getTimezoneOffsetString():"")};goog.date.Date.prototype.toUTCIsoString=function(a,b){return[this.getUTCFullYear(),goog.string.padNumber(this.getUTCMonth()+1,2),goog.string.padNumber(this.getUTCDate(),2)].join(a?"-":"")+(b?"Z":"")};\ngoog.date.Date.prototype.equals=function(a){return!(!a||this.getYear()!=a.getYear()||this.getMonth()!=a.getMonth()||this.getDate()!=a.getDate())};goog.date.Date.prototype.toString=function(){return this.toIsoString()};goog.date.Date.prototype.maybeFixDst_=function(a){this.getDate()!=a&&(a=this.getDate()<a?1:-1,this.date.setUTCHours(this.date.getUTCHours()+a))};goog.date.Date.prototype.valueOf=function(){return this.date.valueOf()};goog.date.Date.compare=function(a,b){return a.getTime()-b.getTime()};\ngoog.date.DateTime=function(a,b,c,d,e,f,g){goog.isNumber(a)?this.date=new Date(a,b||0,c||1,d||0,e||0,f||0,g||0):this.date=new Date(a&&a.getTime?a.getTime():goog.now())};goog.inherits(goog.date.DateTime,goog.date.Date);goog.date.DateTime.fromTimestamp=function(a){var b=new goog.date.DateTime;b.setTime(a);return b};goog.date.DateTime.fromRfc822String=function(a){a=new Date(a);return isNaN(a.getTime())?null:new goog.date.DateTime(a)};goog.date.DateTime.prototype.getHours=function(){return this.date.getHours()};\ngoog.date.DateTime.prototype.getMinutes=function(){return this.date.getMinutes()};goog.date.DateTime.prototype.getSeconds=function(){return this.date.getSeconds()};goog.date.DateTime.prototype.getMilliseconds=function(){return this.date.getMilliseconds()};goog.date.DateTime.prototype.getUTCDay=function(){return this.date.getUTCDay()};goog.date.DateTime.prototype.getUTCHours=function(){return this.date.getUTCHours()};goog.date.DateTime.prototype.getUTCMinutes=function(){return this.date.getUTCMinutes()};\ngoog.date.DateTime.prototype.getUTCSeconds=function(){return this.date.getUTCSeconds()};goog.date.DateTime.prototype.getUTCMilliseconds=function(){return this.date.getUTCMilliseconds()};goog.date.DateTime.prototype.setHours=function(a){this.date.setHours(a)};goog.date.DateTime.prototype.setMinutes=function(a){this.date.setMinutes(a)};goog.date.DateTime.prototype.setSeconds=function(a){this.date.setSeconds(a)};goog.date.DateTime.prototype.setMilliseconds=function(a){this.date.setMilliseconds(a)};\ngoog.date.DateTime.prototype.setUTCHours=function(a){this.date.setUTCHours(a)};goog.date.DateTime.prototype.setUTCMinutes=function(a){this.date.setUTCMinutes(a)};goog.date.DateTime.prototype.setUTCSeconds=function(a){this.date.setUTCSeconds(a)};goog.date.DateTime.prototype.setUTCMilliseconds=function(a){this.date.setUTCMilliseconds(a)};goog.date.DateTime.prototype.isMidnight=function(){return 0==this.getHours()&&0==this.getMinutes()&&0==this.getSeconds()&&0==this.getMilliseconds()};\ngoog.date.DateTime.prototype.add=function(a){goog.date.Date.prototype.add.call(this,a);a.hours&&this.setUTCHours(this.date.getUTCHours()+a.hours);a.minutes&&this.setUTCMinutes(this.date.getUTCMinutes()+a.minutes);a.seconds&&this.setUTCSeconds(this.date.getUTCSeconds()+a.seconds)};\ngoog.date.DateTime.prototype.toIsoString=function(a,b){var c=goog.date.Date.prototype.toIsoString.call(this,a);return a?c+" "+goog.string.padNumber(this.getHours(),2)+":"+goog.string.padNumber(this.getMinutes(),2)+":"+goog.string.padNumber(this.getSeconds(),2)+(b?this.getTimezoneOffsetString():""):c+"T"+goog.string.padNumber(this.getHours(),2)+goog.string.padNumber(this.getMinutes(),2)+goog.string.padNumber(this.getSeconds(),2)+(b?this.getTimezoneOffsetString():"")};\ngoog.date.DateTime.prototype.toXmlDateTime=function(a){return goog.date.Date.prototype.toIsoString.call(this,!0)+"T"+goog.string.padNumber(this.getHours(),2)+":"+goog.string.padNumber(this.getMinutes(),2)+":"+goog.string.padNumber(this.getSeconds(),2)+(a?this.getTimezoneOffsetString():"")};\ngoog.date.DateTime.prototype.toUTCIsoString=function(a,b){var c=goog.date.Date.prototype.toUTCIsoString.call(this,a);return a?c+" "+goog.string.padNumber(this.getUTCHours(),2)+":"+goog.string.padNumber(this.getUTCMinutes(),2)+":"+goog.string.padNumber(this.getUTCSeconds(),2)+(b?"Z":""):c+"T"+goog.string.padNumber(this.getUTCHours(),2)+goog.string.padNumber(this.getUTCMinutes(),2)+goog.string.padNumber(this.getUTCSeconds(),2)+(b?"Z":"")};\ngoog.date.DateTime.prototype.equals=function(a){return this.getTime()==a.getTime()};goog.date.DateTime.prototype.toString=function(){return this.toIsoString()};goog.date.DateTime.prototype.toUsTimeString=function(a,b,c){var d=this.getHours();goog.isDef(b)||(b=!0);var e=12==d;12<d&&(d-=12,e=!0);0==d&&b&&(d=12);a=a?goog.string.padNumber(d,2):String(d);d=this.getMinutes();if(!c||0<d)a+=":"+goog.string.padNumber(d,2);b&&(b=goog.getMsg("am"),c=goog.getMsg("pm"),a+=e?c:b);return a};\ngoog.date.DateTime.prototype.toIsoTimeString=function(a){var b=this.getHours(),b=goog.string.padNumber(b,2)+":"+goog.string.padNumber(this.getMinutes(),2);if(!goog.isDef(a)||a)b+=":"+goog.string.padNumber(this.getSeconds(),2);return b};goog.date.DateTime.prototype.clone=function(){var a=new goog.date.DateTime(this.date);a.setFirstDayOfWeek(this.getFirstDayOfWeek());a.setFirstWeekCutOffDay(this.getFirstWeekCutOffDay());return a};goog.date.DateRange=function(a,b){this.startDate_=a;this.endDate_=b};goog.date.DateRange.MINIMUM_DATE=new goog.date.Date(0,0,1);goog.date.DateRange.MAXIMUM_DATE=new goog.date.Date(9999,11,31);goog.date.DateRange.prototype.getStartDate=function(){return this.startDate_};goog.date.DateRange.prototype.getEndDate=function(){return this.endDate_};goog.date.DateRange.prototype.contains=function(a){return a.valueOf()>=this.startDate_.valueOf()&&a.valueOf()<=this.endDate_.valueOf()};\ngoog.date.DateRange.prototype.iterator=function(){return new goog.date.DateRange.Iterator(this)};goog.date.DateRange.equals=function(a,b){return a===b?!0:null==a||null==b?!1:a.startDate_.equals(b.startDate_)&&a.endDate_.equals(b.endDate_)};goog.date.DateRange.offsetInDays_=function(a,b){var c=a.clone();c.add(new goog.date.Interval(goog.date.Interval.DAYS,b));return c};\ngoog.date.DateRange.offsetInMonths_=function(a,b){var c=a.clone();c.setDate(1);c.add(new goog.date.Interval(goog.date.Interval.MONTHS,b));return c};goog.date.DateRange.yesterday=function(a){a=goog.date.DateRange.cloneOrCreate_(a);a=goog.date.DateRange.offsetInDays_(a,-1);return new goog.date.DateRange(a,a.clone())};goog.date.DateRange.today=function(a){a=goog.date.DateRange.cloneOrCreate_(a);return new goog.date.DateRange(a,a.clone())};\ngoog.date.DateRange.last7Days=function(a){a=goog.date.DateRange.cloneOrCreate_(a);var b=goog.date.DateRange.offsetInDays_(a,-1);return new goog.date.DateRange(goog.date.DateRange.offsetInDays_(a,-7),b)};goog.date.DateRange.thisMonth=function(a){a=goog.date.DateRange.cloneOrCreate_(a);return new goog.date.DateRange(goog.date.DateRange.offsetInMonths_(a,0),goog.date.DateRange.offsetInDays_(goog.date.DateRange.offsetInMonths_(a,1),-1))};\ngoog.date.DateRange.lastMonth=function(a){a=goog.date.DateRange.cloneOrCreate_(a);return new goog.date.DateRange(goog.date.DateRange.offsetInMonths_(a,-1),goog.date.DateRange.offsetInDays_(goog.date.DateRange.offsetInMonths_(a,0),-1))};goog.date.DateRange.thisWeek=function(a){a=goog.date.DateRange.cloneOrCreate_(a);var b=a.getIsoWeekday(),c=a.getFirstDayOfWeek();a=goog.date.DateRange.offsetInDays_(a,-(b>=c?b-c:b+(7-c)));b=goog.date.DateRange.offsetInDays_(a,6);return new goog.date.DateRange(a,b)};\ngoog.date.DateRange.lastWeek=function(a){var b=goog.date.DateRange.thisWeek(a);a=goog.date.DateRange.offsetInDays_(b.getStartDate(),-7);b=goog.date.DateRange.offsetInDays_(b.getEndDate(),-7);return new goog.date.DateRange(a,b)};goog.date.DateRange.lastBusinessWeek=function(a){a=goog.date.DateRange.cloneOrCreate_(a);a=goog.date.DateRange.offsetInDays_(a,-7-a.getIsoWeekday());var b=goog.date.DateRange.offsetInDays_(a,4);return new goog.date.DateRange(a,b)};\ngoog.date.DateRange.allTime=function(a){return new goog.date.DateRange(goog.date.DateRange.MINIMUM_DATE,goog.date.DateRange.MAXIMUM_DATE)};goog.date.DateRange.StandardDateRangeKeys={YESTERDAY:"yesterday",TODAY:"today",LAST_7_DAYS:"last7days",THIS_MONTH:"thismonth",LAST_MONTH:"lastmonth",THIS_WEEK:"thisweek",LAST_WEEK:"lastweek",LAST_BUSINESS_WEEK:"lastbusinessweek",ALL_TIME:"alltime"};\ngoog.date.DateRange.standardDateRange=function(a,b){switch(a){case goog.date.DateRange.StandardDateRangeKeys.YESTERDAY:return goog.date.DateRange.yesterday(b);case goog.date.DateRange.StandardDateRangeKeys.TODAY:return goog.date.DateRange.today(b);case goog.date.DateRange.StandardDateRangeKeys.LAST_7_DAYS:return goog.date.DateRange.last7Days(b);case goog.date.DateRange.StandardDateRangeKeys.THIS_MONTH:return goog.date.DateRange.thisMonth(b);case goog.date.DateRange.StandardDateRangeKeys.LAST_MONTH:return goog.date.DateRange.lastMonth(b);\ncase goog.date.DateRange.StandardDateRangeKeys.THIS_WEEK:return goog.date.DateRange.thisWeek(b);case goog.date.DateRange.StandardDateRangeKeys.LAST_WEEK:return goog.date.DateRange.lastWeek(b);case goog.date.DateRange.StandardDateRangeKeys.LAST_BUSINESS_WEEK:return goog.date.DateRange.lastBusinessWeek(b);case goog.date.DateRange.StandardDateRangeKeys.ALL_TIME:return goog.date.DateRange.allTime(b);default:throw Error("no such date range key: "+a);}};\ngoog.date.DateRange.cloneOrCreate_=function(a){return a?a.clone():new goog.date.Date};goog.date.DateRange.Iterator=function(a){this.nextDate_=a.getStartDate().clone();this.endDate_=Number(a.getEndDate().toIsoString())};goog.inherits(goog.date.DateRange.Iterator,goog.iter.Iterator);\ngoog.date.DateRange.Iterator.prototype.next=function(){if(Number(this.nextDate_.toIsoString())>this.endDate_)throw goog.iter.StopIteration;var a=this.nextDate_.clone();this.nextDate_.add(new goog.date.Interval(goog.date.Interval.DAYS,1));return a};goog.i18n.TimeZone=function(){};goog.i18n.TimeZone.MILLISECONDS_PER_HOUR_=36E5;goog.i18n.TimeZone.NameType={STD_SHORT_NAME:0,STD_LONG_NAME:1,DLT_SHORT_NAME:2,DLT_LONG_NAME:3};goog.i18n.TimeZone.createTimeZone=function(a){if("number"==typeof a)return goog.i18n.TimeZone.createSimpleTimeZone_(a);var b=new goog.i18n.TimeZone;b.timeZoneId_=a.id;b.standardOffset_=-a.std_offset;b.tzNames_=a.names;b.tzNamesExt_=a.names_ext;b.transitions_=a.transitions;return b};\ngoog.i18n.TimeZone.createSimpleTimeZone_=function(a){var b=new goog.i18n.TimeZone;b.standardOffset_=a;b.timeZoneId_=goog.i18n.TimeZone.composePosixTimeZoneID_(a);var c=goog.i18n.TimeZone.composeUTCString_(a);a=goog.i18n.TimeZone.composeGMTString_(a);b.tzNames_=[c,c];b.tzNamesExt_={STD_LONG_NAME_GMT:a,STD_GENERIC_LOCATION:a};b.transitions_=[];return b};\ngoog.i18n.TimeZone.composeGMTString_=function(a){var b=["GMT"];b.push(0>=a?"+":"-");a=Math.abs(a);b.push(goog.string.padNumber(Math.floor(a/60)%100,2),":",goog.string.padNumber(a%60,2));return b.join("")};goog.i18n.TimeZone.composePosixTimeZoneID_=function(a){if(0==a)return"Etc/GMT";var b=["Etc/GMT",0>a?"-":"+"];a=Math.abs(a);b.push(Math.floor(a/60)%100);a%=60;0!=a&&b.push(":",goog.string.padNumber(a,2));return b.join("")};\ngoog.i18n.TimeZone.composeUTCString_=function(a){if(0==a)return"UTC";var b=["UTC",0>a?"+":"-"];a=Math.abs(a);b.push(Math.floor(a/60)%100);a%=60;0!=a&&b.push(":",a);return b.join("")};goog.i18n.TimeZone.prototype.getTimeZoneData=function(){return{id:this.timeZoneId_,std_offset:-this.standardOffset_,names:goog.array.clone(this.tzNames_),names_ext:goog.object.clone(this.tzNamesExt_),transitions:goog.array.clone(this.transitions_)}};\ngoog.i18n.TimeZone.prototype.getDaylightAdjustment=function(a){a=Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),a.getUTCMinutes())/goog.i18n.TimeZone.MILLISECONDS_PER_HOUR_;for(var b=0;b<this.transitions_.length&&a>=this.transitions_[b];)b+=2;return 0==b?0:this.transitions_[b-1]};goog.i18n.TimeZone.prototype.getGMTString=function(a){return goog.i18n.TimeZone.composeGMTString_(this.getOffset(a))};\ngoog.i18n.TimeZone.prototype.getLongName=function(a){return this.tzNames_[this.isDaylightTime(a)?goog.i18n.TimeZone.NameType.DLT_LONG_NAME:goog.i18n.TimeZone.NameType.STD_LONG_NAME]};goog.i18n.TimeZone.prototype.getOffset=function(a){return this.standardOffset_-this.getDaylightAdjustment(a)};goog.i18n.TimeZone.prototype.getRFCTimeZoneString=function(a){a=-this.getOffset(a);var b=[0>a?"-":"+"];a=Math.abs(a);b.push(goog.string.padNumber(Math.floor(a/60)%100,2),goog.string.padNumber(a%60,2));return b.join("")};\ngoog.i18n.TimeZone.prototype.getShortName=function(a){return this.tzNames_[this.isDaylightTime(a)?goog.i18n.TimeZone.NameType.DLT_SHORT_NAME:goog.i18n.TimeZone.NameType.STD_SHORT_NAME]};goog.i18n.TimeZone.prototype.getTimeZoneId=function(){return this.timeZoneId_};goog.i18n.TimeZone.prototype.isDaylightTime=function(a){return 0<this.getDaylightAdjustment(a)};\ngoog.i18n.TimeZone.prototype.getLongNameGMT=function(a){return this.isDaylightTime(a)?(goog.isDef(this.tzNamesExt_.DST_LONG_NAME_GMT),this.tzNamesExt_.DST_LONG_NAME_GMT):(goog.isDef(this.tzNamesExt_.STD_LONG_NAME_GMT),this.tzNamesExt_.STD_LONG_NAME_GMT)};goog.i18n.TimeZone.prototype.getGenericLocation=function(a){return this.isDaylightTime(a)?(goog.isDef(this.tzNamesExt_.DST_GENERIC_LOCATION),this.tzNamesExt_.DST_GENERIC_LOCATION):(goog.isDef(this.tzNamesExt_.STD_GENERIC_LOCATION),this.tzNamesExt_.STD_GENERIC_LOCATION)};goog.i18n.DateTimeFormat=function(a,b){goog.asserts.assert(goog.isDef(a),"Pattern must be defined");goog.asserts.assert(goog.isDef(b)||goog.isDef(goog.i18n.DateTimeSymbols),"goog.i18n.DateTimeSymbols or explicit symbols must be defined");this.patternParts_=[];this.dateTimeSymbols_=b||goog.i18n.DateTimeSymbols;"number"==typeof a?this.applyStandardPattern_(a):this.applyPattern_(a)};\ngoog.i18n.DateTimeFormat.Format={FULL_DATE:0,LONG_DATE:1,MEDIUM_DATE:2,SHORT_DATE:3,FULL_TIME:4,LONG_TIME:5,MEDIUM_TIME:6,SHORT_TIME:7,FULL_DATETIME:8,LONG_DATETIME:9,MEDIUM_DATETIME:10,SHORT_DATETIME:11};goog.i18n.DateTimeFormat.TOKENS_=[/^\\\'(?:[^\\\']|\\\'\\\')*(\\\'|$)/,/^(?:G+|y+|M+|k+|S+|E+|a+|h+|K+|H+|c+|L+|Q+|d+|m+|s+|v+|V+|w+|z+|Z+)/,/^[^\\\'GyMkSEahKHcLQdmsvVwzZ]+/];goog.i18n.DateTimeFormat.PartTypes_={QUOTED_STRING:0,FIELD:1,LITERAL:2};\ngoog.i18n.DateTimeFormat.getHours_=function(a){return a.getHours?a.getHours():0};\ngoog.i18n.DateTimeFormat.prototype.applyPattern_=function(a){for(goog.i18n.DateTimeFormat.removeRlmInPatterns_&&(a=a.replace(/\\u200f/g,""));a;){for(var b=a,c=0;c<goog.i18n.DateTimeFormat.TOKENS_.length;++c){var d=a.match(goog.i18n.DateTimeFormat.TOKENS_[c]);if(d){var e=d[0];a=a.substring(e.length);c==goog.i18n.DateTimeFormat.PartTypes_.QUOTED_STRING&&("\'\'"==e?e="\'":(e=e.substring(1,"\'"==d[1]?e.length-1:e.length),e=e.replace(/\\\'\\\'/g,"\'")));this.patternParts_.push({text:e,type:c});break}}if(b===a)throw Error("Malformed pattern part: "+\na);}};\ngoog.i18n.DateTimeFormat.prototype.format=function(a,b){if(!a)throw Error("The date to format must be non-null.");var c=b?6E4*(a.getTimezoneOffset()-b.getOffset(a)):0,d=c?new Date(a.getTime()+c):a,e=d;b&&d.getTimezoneOffset()!=a.getTimezoneOffset()&&(e=6E4*(d.getTimezoneOffset()-a.getTimezoneOffset()),d=new Date(d.getTime()+e),c+=0<c?-goog.date.MS_PER_DAY:goog.date.MS_PER_DAY,e=new Date(a.getTime()+c));for(var c=[],f=0;f<this.patternParts_.length;++f){var g=this.patternParts_[f].text;goog.i18n.DateTimeFormat.PartTypes_.FIELD==this.patternParts_[f].type?\nc.push(this.formatField_(g,a,d,e,b)):c.push(g)}return c.join("")};goog.i18n.DateTimeFormat.prototype.applyStandardPattern_=function(a){var b;if(4>a)b=this.dateTimeSymbols_.DATEFORMATS[a];else if(8>a)b=this.dateTimeSymbols_.TIMEFORMATS[a-4];else if(12>a)b=this.dateTimeSymbols_.DATETIMEFORMATS[a-8],b=b.replace("{1}",this.dateTimeSymbols_.DATEFORMATS[a-8]),b=b.replace("{0}",this.dateTimeSymbols_.TIMEFORMATS[a-8]);else{this.applyStandardPattern_(goog.i18n.DateTimeFormat.Format.MEDIUM_DATETIME);return}this.applyPattern_(b)};\ngoog.i18n.DateTimeFormat.prototype.localizeNumbers_=function(a){return goog.i18n.DateTimeFormat.localizeNumbers(a,this.dateTimeSymbols_)};goog.i18n.DateTimeFormat.enforceAsciiDigits_=!1;goog.i18n.DateTimeFormat.removeRlmInPatterns_=!1;goog.i18n.DateTimeFormat.setEnforceAsciiDigits=function(a){goog.i18n.DateTimeFormat.enforceAsciiDigits_=a;goog.i18n.DateTimeFormat.removeRlmInPatterns_=a};goog.i18n.DateTimeFormat.isEnforceAsciiDigits=function(){return goog.i18n.DateTimeFormat.enforceAsciiDigits_};\ngoog.i18n.DateTimeFormat.localizeNumbers=function(a,b){a=String(a);var c=b||goog.i18n.DateTimeSymbols;if(void 0===c.ZERODIGIT||goog.i18n.DateTimeFormat.enforceAsciiDigits_)return a;for(var d=[],e=0;e<a.length;e++){var f=a.charCodeAt(e);d.push(48<=f&&57>=f?String.fromCharCode(c.ZERODIGIT+f-48):a.charAt(e))}return d.join("")};goog.i18n.DateTimeFormat.prototype.formatEra_=function(a,b){var c=0<b.getFullYear()?1:0;return 4<=a?this.dateTimeSymbols_.ERANAMES[c]:this.dateTimeSymbols_.ERAS[c]};\ngoog.i18n.DateTimeFormat.prototype.formatYear_=function(a,b){var c=b.getFullYear();0>c&&(c=-c);2==a&&(c%=100);return this.localizeNumbers_(goog.string.padNumber(c,a))};goog.i18n.DateTimeFormat.prototype.formatMonth_=function(a,b){var c=b.getMonth();switch(a){case 5:return this.dateTimeSymbols_.NARROWMONTHS[c];case 4:return this.dateTimeSymbols_.MONTHS[c];case 3:return this.dateTimeSymbols_.SHORTMONTHS[c];default:return this.localizeNumbers_(goog.string.padNumber(c+1,a))}};\ngoog.i18n.DateTimeFormat.validateDateHasTime_=function(a){if(!(a.getHours&&a.getSeconds&&a.getMinutes))throw Error("The date to format has no time (probably a goog.date.Date). Use Date or goog.date.DateTime, or use a pattern without time fields.");};goog.i18n.DateTimeFormat.prototype.format24Hours_=function(a,b){goog.i18n.DateTimeFormat.validateDateHasTime_(b);var c=goog.i18n.DateTimeFormat.getHours_(b)||24;return this.localizeNumbers_(goog.string.padNumber(c,a))};\ngoog.i18n.DateTimeFormat.prototype.formatFractionalSeconds_=function(a,b){var c=b.getTime()%1E3/1E3;return this.localizeNumbers_(c.toFixed(Math.min(3,a)).substr(2)+(3<a?goog.string.padNumber(0,a-3):""))};goog.i18n.DateTimeFormat.prototype.formatDayOfWeek_=function(a,b){var c=b.getDay();return 4<=a?this.dateTimeSymbols_.WEEKDAYS[c]:this.dateTimeSymbols_.SHORTWEEKDAYS[c]};\ngoog.i18n.DateTimeFormat.prototype.formatAmPm_=function(a,b){goog.i18n.DateTimeFormat.validateDateHasTime_(b);var c=goog.i18n.DateTimeFormat.getHours_(b);return this.dateTimeSymbols_.AMPMS[12<=c&&24>c?1:0]};goog.i18n.DateTimeFormat.prototype.format1To12Hours_=function(a,b){goog.i18n.DateTimeFormat.validateDateHasTime_(b);var c=goog.i18n.DateTimeFormat.getHours_(b)%12||12;return this.localizeNumbers_(goog.string.padNumber(c,a))};\ngoog.i18n.DateTimeFormat.prototype.format0To11Hours_=function(a,b){goog.i18n.DateTimeFormat.validateDateHasTime_(b);var c=goog.i18n.DateTimeFormat.getHours_(b)%12;return this.localizeNumbers_(goog.string.padNumber(c,a))};goog.i18n.DateTimeFormat.prototype.format0To23Hours_=function(a,b){goog.i18n.DateTimeFormat.validateDateHasTime_(b);var c=goog.i18n.DateTimeFormat.getHours_(b);return this.localizeNumbers_(goog.string.padNumber(c,a))};\ngoog.i18n.DateTimeFormat.prototype.formatStandaloneDay_=function(a,b){var c=b.getDay();switch(a){case 5:return this.dateTimeSymbols_.STANDALONENARROWWEEKDAYS[c];case 4:return this.dateTimeSymbols_.STANDALONEWEEKDAYS[c];case 3:return this.dateTimeSymbols_.STANDALONESHORTWEEKDAYS[c];default:return this.localizeNumbers_(goog.string.padNumber(c,1))}};\ngoog.i18n.DateTimeFormat.prototype.formatStandaloneMonth_=function(a,b){var c=b.getMonth();switch(a){case 5:return this.dateTimeSymbols_.STANDALONENARROWMONTHS[c];case 4:return this.dateTimeSymbols_.STANDALONEMONTHS[c];case 3:return this.dateTimeSymbols_.STANDALONESHORTMONTHS[c];default:return this.localizeNumbers_(goog.string.padNumber(c+1,a))}};goog.i18n.DateTimeFormat.prototype.formatQuarter_=function(a,b){var c=Math.floor(b.getMonth()/3);return 4>a?this.dateTimeSymbols_.SHORTQUARTERS[c]:this.dateTimeSymbols_.QUARTERS[c]};\ngoog.i18n.DateTimeFormat.prototype.formatDate_=function(a,b){return this.localizeNumbers_(goog.string.padNumber(b.getDate(),a))};goog.i18n.DateTimeFormat.prototype.formatMinutes_=function(a,b){goog.i18n.DateTimeFormat.validateDateHasTime_(b);return this.localizeNumbers_(goog.string.padNumber(b.getMinutes(),a))};goog.i18n.DateTimeFormat.prototype.formatSeconds_=function(a,b){goog.i18n.DateTimeFormat.validateDateHasTime_(b);return this.localizeNumbers_(goog.string.padNumber(b.getSeconds(),a))};\ngoog.i18n.DateTimeFormat.prototype.formatWeekOfYear_=function(a,b){var c=goog.date.getWeekNumber(b.getFullYear(),b.getMonth(),b.getDate(),this.dateTimeSymbols_.FIRSTWEEKCUTOFFDAY,this.dateTimeSymbols_.FIRSTDAYOFWEEK);return this.localizeNumbers_(goog.string.padNumber(c,a))};goog.i18n.DateTimeFormat.prototype.formatTimeZoneRFC_=function(a,b,c){c=c||goog.i18n.TimeZone.createTimeZone(b.getTimezoneOffset());return 4>a?c.getRFCTimeZoneString(b):this.localizeNumbers_(c.getGMTString(b))};\ngoog.i18n.DateTimeFormat.prototype.formatTimeZone_=function(a,b,c){c=c||goog.i18n.TimeZone.createTimeZone(b.getTimezoneOffset());return 4>a?c.getShortName(b):c.getLongName(b)};goog.i18n.DateTimeFormat.prototype.formatTimeZoneId_=function(a,b){b=b||goog.i18n.TimeZone.createTimeZone(a.getTimezoneOffset());return b.getTimeZoneId()};goog.i18n.DateTimeFormat.prototype.formatTimeZoneLocationId_=function(a,b,c){c=c||goog.i18n.TimeZone.createTimeZone(b.getTimezoneOffset());return 2>=a?c.getTimeZoneId():c.getGenericLocation(b)};\ngoog.i18n.DateTimeFormat.prototype.formatField_=function(a,b,c,d,e){var f=a.length;switch(a.charAt(0)){case "G":return this.formatEra_(f,c);case "y":return this.formatYear_(f,c);case "M":return this.formatMonth_(f,c);case "k":return this.format24Hours_(f,d);case "S":return this.formatFractionalSeconds_(f,d);case "E":return this.formatDayOfWeek_(f,c);case "a":return this.formatAmPm_(f,d);case "h":return this.format1To12Hours_(f,d);case "K":return this.format0To11Hours_(f,d);case "H":return this.format0To23Hours_(f,\nd);case "c":return this.formatStandaloneDay_(f,c);case "L":return this.formatStandaloneMonth_(f,c);case "Q":return this.formatQuarter_(f,c);case "d":return this.formatDate_(f,c);case "m":return this.formatMinutes_(f,d);case "s":return this.formatSeconds_(f,d);case "v":return this.formatTimeZoneId_(b,e);case "V":return this.formatTimeZoneLocationId_(f,b,e);case "w":return this.formatWeekOfYear_(f,d);case "z":return this.formatTimeZone_(f,b,e);case "Z":return this.formatTimeZoneRFC_(f,b,e);default:return""}};goog.i18n.DateTimePatterns_af={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMM",MONTH_DAY_SHORT:"dd-MM",MONTH_DAY_MEDIUM:"d MMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_am={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"M/d",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE\\u1363 MMM d",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE\\u1363 MMM d y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_ar={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/\\u200fM",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM\\u060c y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE\\u060c d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE\\u060c d MMM\\u060c y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_az={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"y MMMM",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"dd.MM",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"d MMM, EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"d MMM y, EEE",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_be={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"LLL y",YEAR_MONTH_FULL:"LLLL y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d.M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_bg={YEAR_FULL:"y \'\\u0433\'.",YEAR_FULL_WITH_ERA:"y \'\\u0433\'. G",YEAR_MONTH_ABBR:"MM.y \'\\u0433\'.",YEAR_MONTH_FULL:"MMMM y \'\\u0433\'.",MONTH_DAY_ABBR:"d.MM",MONTH_DAY_FULL:"d MMMM",MONTH_DAY_SHORT:"d.MM",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d.MM.y \'\\u0433\'.",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d.MM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d.MM.y \'\\u0433\'.",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_bn={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM, y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM, y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_br={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"y MMMM",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"dd/MM",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_bs={YEAR_FULL:"y.",YEAR_FULL_WITH_ERA:"y. G",YEAR_MONTH_ABBR:"MMM y.",YEAR_MONTH_FULL:"LLLL y.",MONTH_DAY_ABBR:"dd. MMM",MONTH_DAY_FULL:"dd. MMMM",MONTH_DAY_SHORT:"dd.MM.",MONTH_DAY_MEDIUM:"d. MMMM",MONTH_DAY_YEAR_MEDIUM:"dd. MMM y.",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, dd. MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, dd. MMM y.",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_ca={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"LLL \'de\' y",YEAR_MONTH_FULL:"LLLL \'de\' y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_chr={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"M/d",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"MMM d, y",WEEKDAY_MONTH_DAY_MEDIUM:"MMM d, EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, MMM d, y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_cs={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"LLLL y",YEAR_MONTH_FULL:"LLLL y",MONTH_DAY_ABBR:"d. M.",MONTH_DAY_FULL:"dd. MMMM",MONTH_DAY_SHORT:"d. M.",MONTH_DAY_MEDIUM:"d. MMMM",MONTH_DAY_YEAR_MEDIUM:"d. M. y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d. M.",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d. M. y",DAY_ABBR:"d."};\ngoog.i18n.DateTimePatterns_cy={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_da={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d. MMM",MONTH_DAY_FULL:"dd. MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d. MMMM",MONTH_DAY_YEAR_MEDIUM:"d. MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d. MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d. MMM y",DAY_ABBR:"d."};\ngoog.i18n.DateTimePatterns_de={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d. MMM",MONTH_DAY_FULL:"dd. MMMM",MONTH_DAY_SHORT:"d.M.",MONTH_DAY_MEDIUM:"d. MMMM",MONTH_DAY_YEAR_MEDIUM:"d. MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d. MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d. MMM y",DAY_ABBR:"d"};goog.i18n.DateTimePatterns_de_AT=goog.i18n.DateTimePatterns_de;goog.i18n.DateTimePatterns_de_CH=goog.i18n.DateTimePatterns_de;\ngoog.i18n.DateTimePatterns_el={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_en={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"M/d",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"MMM d, y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, MMM d",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, MMM d, y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_en_AU={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"dd/MM",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_en_CA={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"MM-dd",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"MMM d, y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, MMM d",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, MMM d, y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_en_GB={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"dd/MM",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_en_IE={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_en_IN={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"dd/MM",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d MMM, y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_en_SG={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"dd/MM",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};goog.i18n.DateTimePatterns_en_US=goog.i18n.DateTimePatterns_en;\ngoog.i18n.DateTimePatterns_en_ZA={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"dd MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"MM/dd",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"dd MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, dd MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, dd MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_es={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM \'de\' y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd \'de\' MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d \'de\' MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_es_419={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMMM \'de\' y",YEAR_MONTH_FULL:"MMMM \'de\' y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd \'de\' MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d \'de\' MMMM",MONTH_DAY_YEAR_MEDIUM:"d \'de\' MMMM \'de\' y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d \'de\' MMM \'de\' y",DAY_ABBR:"d"};goog.i18n.DateTimePatterns_es_ES=goog.i18n.DateTimePatterns_es;\ngoog.i18n.DateTimePatterns_es_MX={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMMM \'de\' y",YEAR_MONTH_FULL:"MMMM \'de\' y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd \'de\' MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d \'de\' MMMM",MONTH_DAY_YEAR_MEDIUM:"d \'de\' MMMM \'de\' y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d \'de\' MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d \'de\' MMMM \'de\' y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_es_US={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMMM \'de\' y",YEAR_MONTH_FULL:"MMMM \'de\' y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd \'de\' MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d \'de\' MMMM",MONTH_DAY_YEAR_MEDIUM:"d \'de\' MMMM \'de\' y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d \'de\' MMM \'de\' y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_et={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d. MMM",MONTH_DAY_FULL:"dd. MMMM",MONTH_DAY_SHORT:"d.M",MONTH_DAY_MEDIUM:"d. MMMM",MONTH_DAY_YEAR_MEDIUM:"d. MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d. MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d. MMMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_eu={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"y MMM",YEAR_MONTH_FULL:"y(\'e\')\'ko\' MMMM",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"M/d",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"y MMM d",WEEKDAY_MONTH_DAY_MEDIUM:"MMM d, EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y MMM d, EEE",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_fa={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d LLL",MONTH_DAY_FULL:"dd LLLL",MONTH_DAY_SHORT:"M/d",MONTH_DAY_MEDIUM:"d LLLL",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d LLL",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_fi={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"LLL y",YEAR_MONTH_FULL:"LLLL y",MONTH_DAY_ABBR:"d. MMM",MONTH_DAY_FULL:"dd. MMMM",MONTH_DAY_SHORT:"d.M.",MONTH_DAY_MEDIUM:"d. MMMM",MONTH_DAY_YEAR_MEDIUM:"d. MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"ccc d. MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d. MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_fil={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"M/d",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"MMM d, y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, MMM d",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, MMM d, y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_fr={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"dd/MM",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_fr_CA={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"M-d",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_ga={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"dd/MM",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_gl={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d-M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM, y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM, y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_gsw={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d. MMM",MONTH_DAY_FULL:"dd. MMMM",MONTH_DAY_SHORT:"d.M.",MONTH_DAY_MEDIUM:"d. MMMM",MONTH_DAY_YEAR_MEDIUM:"y MMM d",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d. MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d. MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_gu={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM, y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM, y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_haw={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"y MMMM",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_he={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d \\u05d1MMM",MONTH_DAY_FULL:"dd \\u05d1MMMM",MONTH_DAY_SHORT:"d.M",MONTH_DAY_MEDIUM:"d \\u05d1MMMM",MONTH_DAY_YEAR_MEDIUM:"d \\u05d1MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d \\u05d1MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d \\u05d1MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_hi={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_hr={YEAR_FULL:"y.",YEAR_FULL_WITH_ERA:"y. G",YEAR_MONTH_ABBR:"LLL y.",YEAR_MONTH_FULL:"LLLL y.",MONTH_DAY_ABBR:"d. MMM",MONTH_DAY_FULL:"dd. MMMM",MONTH_DAY_SHORT:"dd.MM.",MONTH_DAY_MEDIUM:"d. MMMM",MONTH_DAY_YEAR_MEDIUM:"d. MMM y.",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d. MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d. MMM y.",DAY_ABBR:"d."};\ngoog.i18n.DateTimePatterns_hu={YEAR_FULL:"y.",YEAR_FULL_WITH_ERA:"G y.",YEAR_MONTH_ABBR:"y. MMM",YEAR_MONTH_FULL:"y. MMMM",MONTH_DAY_ABBR:"MMM d.",MONTH_DAY_FULL:"MMMM dd.",MONTH_DAY_SHORT:"M. d.",MONTH_DAY_MEDIUM:"MMMM d.",MONTH_DAY_YEAR_MEDIUM:"y. MMM d.",WEEKDAY_MONTH_DAY_MEDIUM:"MMM d., EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y. MMM d., EEE",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_hy={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y\\u0569.",YEAR_MONTH_ABBR:"y\\u0569. LLL",YEAR_MONTH_FULL:"y\\u0569\\u2024 MMMM",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"dd.MM",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"d MMM, y\\u0569.",WEEKDAY_MONTH_DAY_MEDIUM:"d MMM, EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y\\u0569. MMM d, EEE",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_id={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_in={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_is={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d. MMM",MONTH_DAY_FULL:"dd. MMMM",MONTH_DAY_SHORT:"d.M.",MONTH_DAY_MEDIUM:"d. MMMM",MONTH_DAY_YEAR_MEDIUM:"d. MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d. MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d. MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_it={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_iw={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d \\u05d1MMM",MONTH_DAY_FULL:"dd \\u05d1MMMM",MONTH_DAY_SHORT:"d.M",MONTH_DAY_MEDIUM:"d \\u05d1MMMM",MONTH_DAY_YEAR_MEDIUM:"d \\u05d1MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d \\u05d1MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d \\u05d1MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_ja={YEAR_FULL:"y\\u5e74",YEAR_FULL_WITH_ERA:"Gy\\u5e74",YEAR_MONTH_ABBR:"y\\u5e74M\\u6708",YEAR_MONTH_FULL:"y\\u5e74M\\u6708",MONTH_DAY_ABBR:"M\\u6708d\\u65e5",MONTH_DAY_FULL:"M\\u6708dd\\u65e5",MONTH_DAY_SHORT:"M/d",MONTH_DAY_MEDIUM:"M\\u6708d\\u65e5",MONTH_DAY_YEAR_MEDIUM:"y\\u5e74M\\u6708d\\u65e5",WEEKDAY_MONTH_DAY_MEDIUM:"M\\u6708d\\u65e5(EEE)",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y\\u5e74M\\u6708d\\u65e5(EEE)",DAY_ABBR:"d\\u65e5"};\ngoog.i18n.DateTimePatterns_ka={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM. y",YEAR_MONTH_FULL:"MMMM, y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d.M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM. y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM. y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_kk={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y \'\\u0436\'.",YEAR_MONTH_ABBR:"y \'\\u0436\'. MMM",YEAR_MONTH_FULL:"y \'\\u0436\'. MMMM",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"dd.MM",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"y \'\\u0436\'. d MMM",WEEKDAY_MONTH_DAY_MEDIUM:"d MMM, EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y \'\\u0436\'. d MMM, EEE",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_km={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y \\u1793\\u17c3 G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"d-M",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_kn={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"MMM d,y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, MMM d, y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_ko={YEAR_FULL:"y\\ub144",YEAR_FULL_WITH_ERA:"G y\\ub144",YEAR_MONTH_ABBR:"y\\ub144 MMM",YEAR_MONTH_FULL:"y\\ub144 MMMM",MONTH_DAY_ABBR:"MMM d\\uc77c",MONTH_DAY_FULL:"MMMM dd\\uc77c",MONTH_DAY_SHORT:"M. d.",MONTH_DAY_MEDIUM:"MMMM d\\uc77c",MONTH_DAY_YEAR_MEDIUM:"y\\ub144 MMM d\\uc77c",WEEKDAY_MONTH_DAY_MEDIUM:"MMM d\\uc77c (EEE)",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y\\ub144 MMM d\\uc77c (EEE)",DAY_ABBR:"d\\uc77c"};\ngoog.i18n.DateTimePatterns_ky={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y-\'\\u0436\'.",YEAR_MONTH_ABBR:"y-\'\\u0436\'. MMM",YEAR_MONTH_FULL:"y MMMM",MONTH_DAY_ABBR:"d-MMM",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"dd-MM",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"y-\'\\u0436\'. d-MMM",WEEKDAY_MONTH_DAY_MEDIUM:"d-MMM, EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y-\'\\u0436\'. d-MMM, EEE",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_ln={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"y MMMM",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_lo={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"y MMMM",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_lt={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y \'m\'. G",YEAR_MONTH_ABBR:"y-MM",YEAR_MONTH_FULL:"y \'m\'. LLLL",MONTH_DAY_ABBR:"MM-dd",MONTH_DAY_FULL:"MMMM dd \'d\'.",MONTH_DAY_SHORT:"MM-d",MONTH_DAY_MEDIUM:"MMMM d \'d\'.",MONTH_DAY_YEAR_MEDIUM:"y-MM-dd",WEEKDAY_MONTH_DAY_MEDIUM:"MM-dd, EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y-MM-dd, EEE",DAY_ABBR:"dd"};\ngoog.i18n.DateTimePatterns_lv={YEAR_FULL:"y. \'g\'.",YEAR_FULL_WITH_ERA:"G y. \'g\'.",YEAR_MONTH_ABBR:"y. \'g\'. MMM",YEAR_MONTH_FULL:"y. \'g\'. MMMM",MONTH_DAY_ABBR:"d. MMM",MONTH_DAY_FULL:"dd. MMMM",MONTH_DAY_SHORT:"dd.MM.",MONTH_DAY_MEDIUM:"d. MMMM",MONTH_DAY_YEAR_MEDIUM:"y. \'g\'. d. MMM",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d. MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, y. \'g\'. d. MMM",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_mk={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y \'\\u0433\'.",YEAR_MONTH_FULL:"MMMM y \'\\u0433\'.",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d.M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y \'\\u0433\'.",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y \'\\u0433\'.",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_ml={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"y MMM",YEAR_MONTH_FULL:"y MMMM",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"y MMM d",WEEKDAY_MONTH_DAY_MEDIUM:"MMM d, EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y MMM d, EEE",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_mn={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"y MMM",YEAR_MONTH_FULL:"y MMMM",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"M-d",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"y MMM d",WEEKDAY_MONTH_DAY_MEDIUM:"EEE MMM d",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, y MMM d",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_mo={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"dd.MM",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_mr={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM, y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d, MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_ms={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d-M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_mt={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"y MMM",YEAR_MONTH_FULL:"y MMMM",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"MM-dd",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"y MMM d",WEEKDAY_MONTH_DAY_MEDIUM:"MMM d, EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y MMM d, EEE",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_my={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE\\u104a d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE\\u104a d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_nb={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d. MMM",MONTH_DAY_FULL:"dd. MMMM",MONTH_DAY_SHORT:"d.M.",MONTH_DAY_MEDIUM:"d. MMMM",MONTH_DAY_YEAR_MEDIUM:"d. MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d. MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d. MMM y",DAY_ABBR:"d."};\ngoog.i18n.DateTimePatterns_ne={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"y MMM",YEAR_MONTH_FULL:"y MMMM",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"MM-dd",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"y MMM d",WEEKDAY_MONTH_DAY_MEDIUM:"MMM d, EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y MMM d, EEE",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_nl={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d-M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_no={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d. MMM",MONTH_DAY_FULL:"dd. MMMM",MONTH_DAY_SHORT:"d.M.",MONTH_DAY_MEDIUM:"d. MMMM",MONTH_DAY_YEAR_MEDIUM:"d. MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d. MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d. MMM y",DAY_ABBR:"d."};goog.i18n.DateTimePatterns_no_NO=goog.i18n.DateTimePatterns_no;\ngoog.i18n.DateTimePatterns_or={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"y MMM",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"d-M",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"MMM d, EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y MMM d, EEE",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_pa={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"y MMMM",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_pl={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MM.y",YEAR_MONTH_FULL:"LLLL y",MONTH_DAY_ABBR:"d.MM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d.MM",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d.MM.y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d.MM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d.MM.y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_pt={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM \'de\' y",YEAR_MONTH_FULL:"MMMM \'de\' y",MONTH_DAY_ABBR:"d \'de\' MMM",MONTH_DAY_FULL:"dd \'de\' MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d \'de\' MMMM",MONTH_DAY_YEAR_MEDIUM:"d \'de\' MMM \'de\' y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d \'de\' MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d \'de\' MMM \'de\' y",DAY_ABBR:"d"};goog.i18n.DateTimePatterns_pt_BR=goog.i18n.DateTimePatterns_pt;\ngoog.i18n.DateTimePatterns_pt_PT={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MM/y",YEAR_MONTH_FULL:"MMMM \'de\' y",MONTH_DAY_ABBR:"d/MM",MONTH_DAY_FULL:"dd \'de\' MMMM",MONTH_DAY_SHORT:"dd/MM",MONTH_DAY_MEDIUM:"d \'de\' MMMM",MONTH_DAY_YEAR_MEDIUM:"d/MM/y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d/MM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d/MM/y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_ro={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"dd.MM",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_ru={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y \'\\u0433\'. G",YEAR_MONTH_ABBR:"LLL y \'\\u0433\'.",YEAR_MONTH_FULL:"LLLL y \'\\u0433\'.",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"dd.MM",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y \'\\u0433\'.",WEEKDAY_MONTH_DAY_MEDIUM:"ccc, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y \'\\u0433\'.",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_sh={YEAR_FULL:"y.",YEAR_FULL_WITH_ERA:"y. G",YEAR_MONTH_ABBR:"MMM y.",YEAR_MONTH_FULL:"MMMM y.",MONTH_DAY_ABBR:"d. MMM",MONTH_DAY_FULL:"dd. MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d. MMMM",MONTH_DAY_YEAR_MEDIUM:"d. MMM y.",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d. MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d. MMM y.",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_si={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"y MMM",YEAR_MONTH_FULL:"y MMMM",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"M-d",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"y MMM d",WEEKDAY_MONTH_DAY_MEDIUM:"MMM d EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y MMM d, EEE",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_sk={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"M/y",YEAR_MONTH_FULL:"LLLL y",MONTH_DAY_ABBR:"d. M.",MONTH_DAY_FULL:"dd. MMMM",MONTH_DAY_SHORT:"d. M.",MONTH_DAY_MEDIUM:"d. MMMM",MONTH_DAY_YEAR_MEDIUM:"d. M. y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d. M.",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d. M. y",DAY_ABBR:"d."};\ngoog.i18n.DateTimePatterns_sl={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d. MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d. M.",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d. MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d. MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d. MMM y",DAY_ABBR:"d."};\ngoog.i18n.DateTimePatterns_sq={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d.M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_sr={YEAR_FULL:"y.",YEAR_FULL_WITH_ERA:"y. G",YEAR_MONTH_ABBR:"MMM y.",YEAR_MONTH_FULL:"MMMM y.",MONTH_DAY_ABBR:"d. MMM",MONTH_DAY_FULL:"dd. MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d. MMMM",MONTH_DAY_YEAR_MEDIUM:"d. MMM y.",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d. MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d. MMM y.",DAY_ABBR:"d"};goog.i18n.DateTimePatterns_sr_Latn=goog.i18n.DateTimePatterns_sr;\ngoog.i18n.DateTimePatterns_sv={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_sw={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, MMM d, y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_ta={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM, y",WEEKDAY_MONTH_DAY_MEDIUM:"MMM d, EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM, y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_te={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d, MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d, MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_th={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM G y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_tl={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"M/d",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"MMM d, y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, MMM d",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, MMM d, y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_tr={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"dd/MM",MONTH_DAY_MEDIUM:"dd MMMM",MONTH_DAY_YEAR_MEDIUM:"dd MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"d MMMM EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"d MMM y EEE",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_uk={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"LLL y",YEAR_MONTH_FULL:"LLLL y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"dd.MM",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_ur={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"y MMMM",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"d MMM\\u060c y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE\\u060c d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE\\u060c d MMM\\u060c y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_uz={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM, y",YEAR_MONTH_FULL:"MMMM, y",MONTH_DAY_ABBR:"d-MMM",MONTH_DAY_FULL:"dd-MMMM",MONTH_DAY_SHORT:"dd/MM",MONTH_DAY_MEDIUM:"d-MMMM",MONTH_DAY_YEAR_MEDIUM:"d-MMM, y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d-MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d-MMM, y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_vi={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"y G",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM \'n\\u0103m\' y",MONTH_DAY_ABBR:"d MMM",MONTH_DAY_FULL:"dd MMMM",MONTH_DAY_SHORT:"dd/M",MONTH_DAY_MEDIUM:"d MMMM",MONTH_DAY_YEAR_MEDIUM:"d MMM, y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, d MMM",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, d MMM, y",DAY_ABBR:"d"};\ngoog.i18n.DateTimePatterns_zh={YEAR_FULL:"y\\u5e74",YEAR_FULL_WITH_ERA:"Gy\\u5e74",YEAR_MONTH_ABBR:"y\\u5e74M\\u6708",YEAR_MONTH_FULL:"y\\u5e74M\\u6708",MONTH_DAY_ABBR:"M\\u6708d\\u65e5",MONTH_DAY_FULL:"M\\u6708dd\\u65e5",MONTH_DAY_SHORT:"M/d",MONTH_DAY_MEDIUM:"M\\u6708d\\u65e5",MONTH_DAY_YEAR_MEDIUM:"y\\u5e74M\\u6708d\\u65e5",WEEKDAY_MONTH_DAY_MEDIUM:"M\\u6708d\\u65e5EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y\\u5e74M\\u6708d\\u65e5EEE",DAY_ABBR:"d\\u65e5"};goog.i18n.DateTimePatterns_zh_CN=goog.i18n.DateTimePatterns_zh;\ngoog.i18n.DateTimePatterns_zh_HK={YEAR_FULL:"y\\u5e74",YEAR_FULL_WITH_ERA:"Gy\\u5e74",YEAR_MONTH_ABBR:"y\\u5e74M\\u6708",YEAR_MONTH_FULL:"y\\u5e74M\\u6708",MONTH_DAY_ABBR:"M\\u6708d\\u65e5",MONTH_DAY_FULL:"M\\u6708dd\\u65e5",MONTH_DAY_SHORT:"d/M",MONTH_DAY_MEDIUM:"M\\u6708d\\u65e5",MONTH_DAY_YEAR_MEDIUM:"y\\u5e74M\\u6708d\\u65e5",WEEKDAY_MONTH_DAY_MEDIUM:"M\\u6708d\\u65e5EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y\\u5e74M\\u6708d\\u65e5EEE",DAY_ABBR:"d\\u65e5"};\ngoog.i18n.DateTimePatterns_zh_TW={YEAR_FULL:"y\\u5e74",YEAR_FULL_WITH_ERA:"Gy\\u5e74",YEAR_MONTH_ABBR:"y\\u5e74M\\u6708",YEAR_MONTH_FULL:"y\\u5e74M\\u6708",MONTH_DAY_ABBR:"M\\u6708d\\u65e5",MONTH_DAY_FULL:"M\\u6708dd\\u65e5",MONTH_DAY_SHORT:"M/d",MONTH_DAY_MEDIUM:"M\\u6708d\\u65e5",MONTH_DAY_YEAR_MEDIUM:"y\\u5e74M\\u6708d\\u65e5",WEEKDAY_MONTH_DAY_MEDIUM:"M\\u6708d\\u65e5 EEE",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"y\\u5e74M\\u6708d\\u65e5 EEE",DAY_ABBR:"d\\u65e5"};\ngoog.i18n.DateTimePatterns_zu={YEAR_FULL:"y",YEAR_FULL_WITH_ERA:"G y",YEAR_MONTH_ABBR:"MMM y",YEAR_MONTH_FULL:"MMMM y",MONTH_DAY_ABBR:"MMM d",MONTH_DAY_FULL:"MMMM dd",MONTH_DAY_SHORT:"M/d",MONTH_DAY_MEDIUM:"MMMM d",MONTH_DAY_YEAR_MEDIUM:"MMM d, y",WEEKDAY_MONTH_DAY_MEDIUM:"EEE, MMM d",WEEKDAY_MONTH_DAY_YEAR_MEDIUM:"EEE, MMM d, y",DAY_ABBR:"d"};goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_en;"af"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_af);\n"am"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_am);"ar"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_ar);"az"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_az);"be"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_be);"bg"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_bg);"bn"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_bn);\n"br"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_br);"bs"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_bs);"ca"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_ca);"chr"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_chr);"cs"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_cs);"cy"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_cy);\n"da"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_da);"de"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_de);if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_de_AT;if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_de_CH;"el"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_el);"en"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_en);\nif("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_en_AU;if("en_CA"==goog.LOCALE||"en-CA"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_en_CA;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_en_GB;if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_en_IE;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_en_IN;\nif("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_en_SG;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_en_US;if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_en_ZA;"es"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_es);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_es_419;\nif("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_es_ES;if("es_MX"==goog.LOCALE||"es-MX"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_es_MX;if("es_US"==goog.LOCALE||"es-US"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_es_US;"et"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_et);"eu"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_eu);\n"fa"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_fa);"fi"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_fi);"fil"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_fil);"fr"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_fr);if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_fr_CA;"ga"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_ga);\n"gl"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_gl);"gsw"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_gsw);"gu"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_gu);"haw"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_haw);"he"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_he);"hi"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_hi);\n"hr"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_hr);"hu"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_hu);"hy"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_hy);"id"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_id);"in"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_in);"is"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_is);\n"it"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_it);"iw"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_iw);"ja"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_ja);"ka"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_ka);"kk"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_kk);"km"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_km);\n"kn"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_kn);"ko"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_ko);"ky"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_ky);"ln"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_ln);"lo"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_lo);"lt"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_lt);\n"lv"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_lv);"mk"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_mk);"ml"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_ml);"mn"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_mn);"mo"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_mo);"mr"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_mr);\n"ms"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_ms);"mt"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_mt);"my"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_my);"nb"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_nb);"ne"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_ne);"nl"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_nl);\n"no"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_no);if("no_NO"==goog.LOCALE||"no-NO"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_no_NO;"or"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_or);"pa"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_pa);"pl"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_pl);"pt"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_pt);\nif("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_pt_BR;if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_pt_PT;"ro"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_ro);"ru"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_ru);"sh"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_sh);"si"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_si);\n"sk"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_sk);"sl"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_sl);"sq"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_sq);"sr"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_sr);if("sr_Latn"==goog.LOCALE||"sr-Latn"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_sr_Latn;"sv"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_sv);\n"sw"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_sw);"ta"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_ta);"te"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_te);"th"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_th);"tl"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_tl);"tr"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_tr);\n"uk"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_uk);"ur"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_ur);"uz"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_uz);"vi"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_vi);"zh"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_zh);if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_zh_CN;\nif("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_zh_HK;if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_zh_TW;"zu"==goog.LOCALE&&(goog.i18n.DateTimePatterns=goog.i18n.DateTimePatterns_zu);goog.ui.DatePickerRenderer=function(){};goog.ui.DatePickerRenderer.prototype.renderNavigationRow=goog.abstractMethod;goog.ui.DatePickerRenderer.prototype.renderFooterRow=goog.abstractMethod;goog.ui.DefaultDatePickerRenderer=function(a,b){this.baseCssClass_=a;this.dom_=b||goog.dom.getDomHelper()};goog.ui.DefaultDatePickerRenderer.prototype.getDomHelper=function(){return this.dom_};goog.ui.DefaultDatePickerRenderer.prototype.getBaseCssClass=function(){return this.baseCssClass_};\ngoog.ui.DefaultDatePickerRenderer.prototype.renderNavigationRow=function(a,b,c,d){b?(d=this.getDomHelper().createElement("TD"),d.colSpan=c?1:2,this.createButton_(d,"\\u00ab",this.getBaseCssClass()+"-previousMonth"),a.appendChild(d),d=this.getDomHelper().createElement("TD"),d.colSpan=c?6:5,d.className=this.getBaseCssClass()+"-monthyear",a.appendChild(d),d=this.getDomHelper().createElement("TD"),this.createButton_(d,"\\u00bb",this.getBaseCssClass()+"-nextMonth"),a.appendChild(d)):(c=this.getDomHelper().createElement("TD"),\nc.colSpan=5,this.createButton_(c,"\\u00ab",this.getBaseCssClass()+"-previousMonth"),this.createButton_(c,"",this.getBaseCssClass()+"-month"),this.createButton_(c,"\\u00bb",this.getBaseCssClass()+"-nextMonth"),b=this.getDomHelper().createElement("TD"),b.colSpan=3,this.createButton_(b,"\\u00ab",this.getBaseCssClass()+"-previousYear"),this.createButton_(b,"",this.getBaseCssClass()+"-year"),this.createButton_(b,"\\u00bb",this.getBaseCssClass()+"-nextYear"),d.indexOf("y")<d.indexOf("m")?(a.appendChild(b),\na.appendChild(c)):(a.appendChild(c),a.appendChild(b)))};\ngoog.ui.DefaultDatePickerRenderer.prototype.renderFooterRow=function(a,b){var c=this.getDomHelper().createElement("TD");c.colSpan=b?2:3;c.className=this.getBaseCssClass()+"-today-cont";var d=goog.getMsg("Today");this.createButton_(c,d,this.getBaseCssClass()+"-today-btn");a.appendChild(c);c=this.getDomHelper().createElement("TD");c.colSpan=b?4:3;a.appendChild(c);c=this.getDomHelper().createElement("TD");c.colSpan=2;c.className=this.getBaseCssClass()+"-none-cont";d=goog.getMsg("None");this.createButton_(c,\nd,this.getBaseCssClass()+"-none-btn");a.appendChild(c)};goog.ui.DefaultDatePickerRenderer.prototype.createButton_=function(a,b,c){var d=[this.getBaseCssClass()+"-btn"];c&&d.push(c);c=this.getDomHelper().createElement("BUTTON");c.className=d.join(" ");c.appendChild(this.getDomHelper().createTextNode(b));a.appendChild(c);return c};goog.ui.DatePicker=function(a,b,c,d){goog.ui.Component.call(this,c);this.symbols_=b||goog.i18n.DateTimeSymbols;this.wdayNames_=this.symbols_.STANDALONESHORTWEEKDAYS;this.i18nDateFormatterDay_=new goog.i18n.DateTimeFormat("d",this.symbols_);this.i18nDateFormatterDay2_=new goog.i18n.DateTimeFormat("dd",this.symbols_);this.i18nDateFormatterWeek_=new goog.i18n.DateTimeFormat("w",this.symbols_);this.i18nDateFormatterYear_=new goog.i18n.DateTimeFormat(goog.i18n.DateTimePatterns.YEAR_FULL||"y",this.symbols_);\nthis.i18nDateFormatterMonthYear_=new goog.i18n.DateTimeFormat(goog.i18n.DateTimePatterns.YEAR_MONTH_FULL||"MMMM y",this.symbols_);this.renderer_=d||new goog.ui.DefaultDatePickerRenderer(this.getBaseCssClass(),this.getDomHelper());this.date_=new goog.date.Date(a);this.date_.setFirstWeekCutOffDay(this.symbols_.FIRSTWEEKCUTOFFDAY);this.date_.setFirstDayOfWeek(this.symbols_.FIRSTDAYOFWEEK);this.activeMonth_=this.date_.clone();this.activeMonth_.setDate(1);this.wdayStyles_="      ".split(" ");this.wdayStyles_[this.symbols_.WEEKENDRANGE[0]]=\nthis.getBaseCssClass()+"-wkend-start";this.wdayStyles_[this.symbols_.WEEKENDRANGE[1]]=this.getBaseCssClass()+"-wkend-end";this.keyHandlers_={};this.grid_=[]};goog.inherits(goog.ui.DatePicker,goog.ui.Component);goog.tagUnsealableClass(goog.ui.DatePicker);goog.ui.DatePicker.prototype.showFixedNumWeeks_=!0;goog.ui.DatePicker.prototype.showOtherMonths_=!0;goog.ui.DatePicker.prototype.userSelectableDateRange_=goog.date.DateRange.allTime();goog.ui.DatePicker.prototype.extraWeekAtEnd_=!0;\ngoog.ui.DatePicker.prototype.showWeekNum_=!0;goog.ui.DatePicker.prototype.showWeekdays_=!0;goog.ui.DatePicker.prototype.allowNone_=!0;goog.ui.DatePicker.prototype.showToday_=!0;goog.ui.DatePicker.prototype.simpleNavigation_=!1;goog.ui.DatePicker.prototype.decoratorFunction_=null;goog.ui.DatePicker.prototype.longDateFormat_=!1;goog.ui.DatePicker.prototype.elNavRow_=null;goog.ui.DatePicker.prototype.elMonthYear_=null;goog.ui.DatePicker.prototype.elFootRow_=null;\ngoog.ui.DatePicker.prototype.cellIdGenerator_=goog.ui.IdGenerator.getInstance();goog.ui.DatePicker.BASE_CSS_CLASS_="goog-date-picker";goog.ui.DatePicker.YEAR_MENU_RANGE_=5;goog.ui.DatePicker.Events={CHANGE:"change",CHANGE_ACTIVE_MONTH:"changeActiveMonth",SELECT:"select"};goog.ui.DatePicker.prototype.isCreated=goog.ui.DatePicker.prototype.isInDocument;goog.ui.DatePicker.prototype.getFirstWeekday=function(){return this.activeMonth_.getFirstDayOfWeek()};goog.ui.DatePicker.prototype.getWeekdayClass=function(a){return this.wdayStyles_[a]};\ngoog.ui.DatePicker.prototype.getShowFixedNumWeeks=function(){return this.showFixedNumWeeks_};goog.ui.DatePicker.prototype.getShowOtherMonths=function(){return this.showOtherMonths_};goog.ui.DatePicker.prototype.getExtraWeekAtEnd=function(){return this.extraWeekAtEnd_};goog.ui.DatePicker.prototype.getShowWeekNum=function(){return this.showWeekNum_};goog.ui.DatePicker.prototype.getShowWeekdayNames=function(){return this.showWeekdays_};goog.ui.DatePicker.prototype.getAllowNone=function(){return this.allowNone_};\ngoog.ui.DatePicker.prototype.getShowToday=function(){return this.showToday_};goog.ui.DatePicker.prototype.getBaseCssClass=function(){return goog.ui.DatePicker.BASE_CSS_CLASS_};goog.ui.DatePicker.prototype.setFirstWeekday=function(a){this.activeMonth_.setFirstDayOfWeek(a);this.updateCalendarGrid_();this.redrawWeekdays_()};goog.ui.DatePicker.prototype.setWeekdayClass=function(a,b){this.wdayStyles_[a]=b;this.redrawCalendarGrid_()};\ngoog.ui.DatePicker.prototype.setShowFixedNumWeeks=function(a){this.showFixedNumWeeks_=a;this.updateCalendarGrid_()};goog.ui.DatePicker.prototype.setShowOtherMonths=function(a){this.showOtherMonths_=a;this.redrawCalendarGrid_()};goog.ui.DatePicker.prototype.setUserSelectableDateRange=function(a){this.userSelectableDateRange_=a};goog.ui.DatePicker.prototype.getUserSelectableDateRange=function(){return this.userSelectableDateRange_};goog.ui.DatePicker.prototype.isUserSelectableDate_=function(a){return this.userSelectableDateRange_.contains(a)};\ngoog.ui.DatePicker.prototype.setUseSimpleNavigationMenu=function(a){this.simpleNavigation_=a;this.updateNavigationRow_();this.updateCalendarGrid_()};goog.ui.DatePicker.prototype.setExtraWeekAtEnd=function(a){this.extraWeekAtEnd_=a;this.updateCalendarGrid_()};goog.ui.DatePicker.prototype.setShowWeekNum=function(a){this.showWeekNum_=a;this.updateNavigationRow_();this.updateFooterRow_();this.updateCalendarGrid_()};\ngoog.ui.DatePicker.prototype.setShowWeekdayNames=function(a){this.showWeekdays_=a;this.redrawWeekdays_();this.redrawCalendarGrid_()};goog.ui.DatePicker.prototype.setUseNarrowWeekdayNames=function(a){this.wdayNames_=a?this.symbols_.STANDALONENARROWWEEKDAYS:this.symbols_.STANDALONESHORTWEEKDAYS;this.redrawWeekdays_()};goog.ui.DatePicker.prototype.setAllowNone=function(a){this.allowNone_=a;this.elNone_&&this.updateTodayAndNone_()};\ngoog.ui.DatePicker.prototype.setShowToday=function(a){this.showToday_=a;this.elToday_&&this.updateTodayAndNone_()};goog.ui.DatePicker.prototype.updateTodayAndNone_=function(){goog.style.setElementShown(this.elToday_,this.showToday_);goog.style.setElementShown(this.elNone_,this.allowNone_);goog.style.setElementShown(this.tableFoot_,this.showToday_||this.allowNone_)};goog.ui.DatePicker.prototype.setDecorator=function(a){this.decoratorFunction_=a};\ngoog.ui.DatePicker.prototype.setLongDateFormat=function(a){this.longDateFormat_=a;this.redrawCalendarGrid_()};goog.ui.DatePicker.prototype.previousMonth=function(){this.activeMonth_.add(new goog.date.Interval(goog.date.Interval.MONTHS,-1));this.updateCalendarGrid_();this.fireChangeActiveMonthEvent_()};goog.ui.DatePicker.prototype.nextMonth=function(){this.activeMonth_.add(new goog.date.Interval(goog.date.Interval.MONTHS,1));this.updateCalendarGrid_();this.fireChangeActiveMonthEvent_()};\ngoog.ui.DatePicker.prototype.previousYear=function(){this.activeMonth_.add(new goog.date.Interval(goog.date.Interval.YEARS,-1));this.updateCalendarGrid_();this.fireChangeActiveMonthEvent_()};goog.ui.DatePicker.prototype.nextYear=function(){this.activeMonth_.add(new goog.date.Interval(goog.date.Interval.YEARS,1));this.updateCalendarGrid_();this.fireChangeActiveMonthEvent_()};goog.ui.DatePicker.prototype.selectToday=function(){this.setDate(new goog.date.Date)};\ngoog.ui.DatePicker.prototype.selectNone=function(){this.allowNone_&&this.setDate(null)};goog.ui.DatePicker.prototype.getActiveMonth=function(){return this.activeMonth_.clone()};goog.ui.DatePicker.prototype.getDate=function(){return this.date_&&this.date_.clone()};goog.ui.DatePicker.prototype.getDateAt=function(a,b){return this.grid_[a]?this.grid_[a][b]?this.grid_[a][b].clone():null:null};\ngoog.ui.DatePicker.prototype.getDateElementAt=function(a,b){if(0>a||0>b)return null;var c=a+1;return this.elTable_[c]?this.elTable_[c][b+1]||null:null};goog.ui.DatePicker.prototype.setDate=function(a){this.setDate_(a,!0)};\ngoog.ui.DatePicker.prototype.setDate_=function(a,b){var c=a==this.date_||a&&this.date_&&a.getFullYear()==this.date_.getFullYear()&&a.getMonth()==this.date_.getMonth(),d=a==this.date_||c&&a.getDate()==this.date_.getDate();this.date_=a&&new goog.date.Date(a);a&&(this.activeMonth_.set(this.date_),this.activeMonth_.setFullYear(this.date_.getFullYear()),this.activeMonth_.setDate(1));this.updateCalendarGrid_();if(b){var e=new goog.ui.DatePickerEvent(goog.ui.DatePicker.Events.SELECT,this,this.date_);this.dispatchEvent(e)}d||\n(d=new goog.ui.DatePickerEvent(goog.ui.DatePicker.Events.CHANGE,this,this.date_),this.dispatchEvent(d));c||this.fireChangeActiveMonthEvent_()};\ngoog.ui.DatePicker.prototype.updateNavigationRow_=function(){if(this.elNavRow_){for(var a=this.elNavRow_;a.firstChild;)a.removeChild(a.firstChild);var b=this.symbols_.DATEFORMATS[goog.i18n.DateTimeFormat.Format.FULL_DATE].toLowerCase();this.renderer_.renderNavigationRow(a,this.simpleNavigation_,this.showWeekNum_,b);this.simpleNavigation_?(this.addPreventDefaultClickHandler_(a,this.getBaseCssClass()+"-previousMonth",this.previousMonth),this.addPreventDefaultClickHandler_(a,this.getBaseCssClass()+"-nextMonth",\nthis.nextMonth),this.elMonthYear_=goog.dom.getElementByClass(this.getBaseCssClass()+"-monthyear",a)):(this.addPreventDefaultClickHandler_(a,this.getBaseCssClass()+"-previousMonth",this.previousMonth),this.addPreventDefaultClickHandler_(a,this.getBaseCssClass()+"-nextMonth",this.nextMonth),this.addPreventDefaultClickHandler_(a,this.getBaseCssClass()+"-month",this.showMonthMenu_),this.addPreventDefaultClickHandler_(a,this.getBaseCssClass()+"-previousYear",this.previousYear),this.addPreventDefaultClickHandler_(a,\nthis.getBaseCssClass()+"-nextYear",this.nextYear),this.addPreventDefaultClickHandler_(a,this.getBaseCssClass()+"-year",this.showYearMenu_),this.elMonth_=goog.dom.getElementByClass(this.getBaseCssClass()+"-month",a),this.elYear_=goog.dom.getDomHelper().getElementByClass(this.getBaseCssClass()+"-year",a))}};\ngoog.ui.DatePicker.prototype.addPreventDefaultClickHandler_=function(a,b,c){a=goog.dom.getElementByClass(b,a);this.getHandler().listen(a,goog.events.EventType.CLICK,function(a){a.preventDefault();c.call(this,a)})};\ngoog.ui.DatePicker.prototype.updateFooterRow_=function(){if(this.elFootRow_){var a=this.elFootRow_;goog.dom.removeChildren(a);this.renderer_.renderFooterRow(a,this.showWeekNum_);this.addPreventDefaultClickHandler_(a,this.getBaseCssClass()+"-today-btn",this.selectToday);this.addPreventDefaultClickHandler_(a,this.getBaseCssClass()+"-none-btn",this.selectNone);this.elToday_=goog.dom.getElementByClass(this.getBaseCssClass()+"-today-btn",a);this.elNone_=goog.dom.getElementByClass(this.getBaseCssClass()+\n"-none-btn",a);this.updateTodayAndNone_()}};\ngoog.ui.DatePicker.prototype.decorateInternal=function(a){goog.ui.DatePicker.superClass_.decorateInternal.call(this,a);goog.asserts.assert(a);goog.dom.classlist.add(a,this.getBaseCssClass());var b=this.dom_.createElement("TABLE"),c=this.dom_.createElement("THEAD"),d=this.dom_.createElement("TBODY"),e=this.dom_.createElement("TFOOT");goog.a11y.aria.setRole(d,"grid");d.tabIndex=0;this.tableBody_=d;this.tableFoot_=e;var f=this.dom_.createElement("TR");f.className=this.getBaseCssClass()+"-head";this.elNavRow_=\nf;this.updateNavigationRow_();c.appendChild(f);var g;this.elTable_=[];for(var h=0;7>h;h++){f=this.dom_.createElement("TR");this.elTable_[h]=[];for(var k=0;8>k;k++)g=this.dom_.createElement(0==k||0==h?"th":"td"),0!=k&&0!=h||k==h||(g.className=0==k?this.getBaseCssClass()+"-week":this.getBaseCssClass()+"-wday",goog.a11y.aria.setRole(g,0==k?"rowheader":"columnheader")),f.appendChild(g),this.elTable_[h][k]=g;d.appendChild(f)}f=this.dom_.createElement("TR");f.className=this.getBaseCssClass()+"-foot";this.elFootRow_=\nf;this.updateFooterRow_();e.appendChild(f);b.cellSpacing="0";b.cellPadding="0";b.appendChild(c);b.appendChild(d);b.appendChild(e);a.appendChild(b);this.redrawWeekdays_();this.updateCalendarGrid_();a.tabIndex=0};goog.ui.DatePicker.prototype.createDom=function(){goog.ui.DatePicker.superClass_.createDom.call(this);this.decorateInternal(this.getElement())};\ngoog.ui.DatePicker.prototype.enterDocument=function(){goog.ui.DatePicker.superClass_.enterDocument.call(this);var a=this.getHandler();a.listen(this.tableBody_,goog.events.EventType.CLICK,this.handleGridClick_);a.listen(this.getKeyHandlerForElement_(this.getElement()),goog.events.KeyHandler.EventType.KEY,this.handleGridKeyPress_)};\ngoog.ui.DatePicker.prototype.exitDocument=function(){goog.ui.DatePicker.superClass_.exitDocument.call(this);this.destroyMenu_();for(var a in this.keyHandlers_)this.keyHandlers_[a].dispose();this.keyHandlers_={}};goog.ui.DatePicker.prototype.create=goog.ui.DatePicker.prototype.decorate;\ngoog.ui.DatePicker.prototype.disposeInternal=function(){goog.ui.DatePicker.superClass_.disposeInternal.call(this);this.elNone_=this.elToday_=this.elYear_=this.elMonthYear_=this.elMonth_=this.elFootRow_=this.elNavRow_=this.tableFoot_=this.tableBody_=this.elTable_=null};\ngoog.ui.DatePicker.prototype.handleGridClick_=function(a){if("TD"==a.target.tagName){var b,c=-2,d=-2;for(b=a.target;b;b=b.previousSibling,c++);for(b=a.target.parentNode;b;b=b.previousSibling,d++);a=this.grid_[d][c];this.isUserSelectableDate_(a)&&this.setDate(a.clone())}};\ngoog.ui.DatePicker.prototype.handleGridKeyPress_=function(a){var b,c;switch(a.keyCode){case 33:a.preventDefault();b=-1;break;case 34:a.preventDefault();b=1;break;case 37:a.preventDefault();c=-1;break;case 39:a.preventDefault();c=1;break;case 38:a.preventDefault();c=-7;break;case 40:a.preventDefault();c=7;break;case 36:a.preventDefault(),this.selectToday();case 46:a.preventDefault();this.selectNone();break;case 13:case 32:a.preventDefault(),this.setDate_(this.date_,!0);default:return}this.date_?(a=\nthis.date_.clone(),a.add(new goog.date.Interval(0,b,c))):(a=this.activeMonth_.clone(),a.setDate(1));this.isUserSelectableDate_(a)&&this.setDate_(a,!1)};goog.ui.DatePicker.prototype.showMonthMenu_=function(a){a.stopPropagation();a=[];for(var b=0;12>b;b++)a.push(this.symbols_.STANDALONEMONTHS[b]);this.createMenu_(this.elMonth_,a,this.handleMonthMenuClick_,this.symbols_.STANDALONEMONTHS[this.activeMonth_.getMonth()])};\ngoog.ui.DatePicker.prototype.showYearMenu_=function(a){a.stopPropagation();a=[];for(var b=this.activeMonth_.getFullYear(),c=this.activeMonth_.clone(),d=-goog.ui.DatePicker.YEAR_MENU_RANGE_;d<=goog.ui.DatePicker.YEAR_MENU_RANGE_;d++)c.setFullYear(b+d),a.push(this.i18nDateFormatterYear_.format(c));this.createMenu_(this.elYear_,a,this.handleYearMenuClick_,this.i18nDateFormatterYear_.format(this.activeMonth_))};\ngoog.ui.DatePicker.prototype.handleMonthMenuClick_=function(a){a=Number(a.getAttribute("itemIndex"));this.activeMonth_.setMonth(a);this.updateCalendarGrid_();this.elMonth_.focus&&this.elMonth_.focus()};goog.ui.DatePicker.prototype.handleYearMenuClick_=function(a){if(a.firstChild.nodeType==goog.dom.NodeType.TEXT){a=Number(a.getAttribute("itemIndex"));var b=this.activeMonth_.getFullYear();this.activeMonth_.setFullYear(b+a-goog.ui.DatePicker.YEAR_MENU_RANGE_);this.updateCalendarGrid_()}this.elYear_.focus()};\ngoog.ui.DatePicker.prototype.createMenu_=function(a,b,c,d){this.destroyMenu_();var e=this.dom_.createElement("DIV");e.className=this.getBaseCssClass()+"-menu";this.menuSelected_=null;for(var f=this.dom_.createElement("UL"),g=0;g<b.length;g++){var h=this.dom_.createDom("LI",null,b[g]);h.setAttribute("itemIndex",g);b[g]==d&&(this.menuSelected_=h);f.appendChild(h)}e.appendChild(f);e.style.left=a.offsetLeft+a.parentNode.offsetLeft+"px";e.style.top=a.offsetTop+"px";e.style.width=a.clientWidth+"px";this.elMonth_.parentNode.appendChild(e);\nthis.menu_=e;this.menuSelected_||(this.menuSelected_=f.firstChild);this.menuSelected_.className=this.getBaseCssClass()+"-menu-selected";this.menuCallback_=c;a=this.getHandler();a.listen(this.menu_,goog.events.EventType.CLICK,this.handleMenuClick_);a.listen(this.getKeyHandlerForElement_(this.menu_),goog.events.KeyHandler.EventType.KEY,this.handleMenuKeyPress_);a.listen(this.dom_.getDocument(),goog.events.EventType.CLICK,this.destroyMenu_);e.tabIndex=0;e.focus()};\ngoog.ui.DatePicker.prototype.handleMenuClick_=function(a){a.stopPropagation();this.destroyMenu_();this.menuCallback_&&this.menuCallback_(a.target)};\ngoog.ui.DatePicker.prototype.handleMenuKeyPress_=function(a){a.stopPropagation();var b,c=this.menuSelected_;switch(a.keyCode){case 35:a.preventDefault();b=c.parentNode.lastChild;break;case 36:a.preventDefault();b=c.parentNode.firstChild;break;case 38:a.preventDefault();b=c.previousSibling;break;case 40:a.preventDefault();b=c.nextSibling;break;case 13:case 9:case 0:a.preventDefault(),this.destroyMenu_(),this.menuCallback_(c)}b&&b!=c&&(c.className="",b.className=this.getBaseCssClass()+"-menu-selected",\nthis.menuSelected_=b)};goog.ui.DatePicker.prototype.destroyMenu_=function(){if(this.menu_){var a=this.getHandler();a.unlisten(this.menu_,goog.events.EventType.CLICK,this.handleMenuClick_);a.unlisten(this.getKeyHandlerForElement_(this.menu_),goog.events.KeyHandler.EventType.KEY,this.handleMenuKeyPress_);a.unlisten(this.dom_.getDocument(),goog.events.EventType.CLICK,this.destroyMenu_);goog.dom.removeNode(this.menu_);delete this.menu_}};\ngoog.ui.DatePicker.prototype.updateCalendarGrid_=function(){if(this.getElement()){var a=this.activeMonth_.clone();a.setDate(1);this.elMonthYear_&&goog.dom.setTextContent(this.elMonthYear_,this.i18nDateFormatterMonthYear_.format(a));this.elMonth_&&goog.dom.setTextContent(this.elMonth_,this.symbols_.STANDALONEMONTHS[a.getMonth()]);this.elYear_&&goog.dom.setTextContent(this.elYear_,this.i18nDateFormatterYear_.format(a));var b=a.getWeekday(),c=a.getNumberOfDaysInMonth();a.add(new goog.date.Interval(goog.date.Interval.MONTHS,\n-1));a.setDate(a.getNumberOfDaysInMonth()-(b-1));this.showFixedNumWeeks_&&!this.extraWeekAtEnd_&&33>c+b&&a.add(new goog.date.Interval(goog.date.Interval.DAYS,-7));b=new goog.date.Interval(goog.date.Interval.DAYS,1);this.grid_=[];for(c=0;6>c;c++){this.grid_[c]=[];for(var d=0;7>d;d++){this.grid_[c][d]=a.clone();var e=a.getFullYear();a.add(b);0==a.getMonth()&&1==a.getDate()&&e++;a.setFullYear(e)}}this.redrawCalendarGrid_()}};\ngoog.ui.DatePicker.prototype.redrawCalendarGrid_=function(){if(this.getElement())for(var a=this.activeMonth_.getMonth(),b=new goog.date.Date,c=b.getFullYear(),d=b.getMonth(),b=b.getDate(),e=0;6>e;e++){this.showWeekNum_?(goog.dom.setTextContent(this.elTable_[e+1][0],this.i18nDateFormatterWeek_.format(this.grid_[e][0])),goog.dom.classlist.set(this.elTable_[e+1][0],this.getBaseCssClass()+"-week")):(goog.dom.setTextContent(this.elTable_[e+1][0],""),goog.dom.classlist.set(this.elTable_[e+1][0],""));for(var f=\n0;7>f;f++){var g=this.grid_[e][f],h=this.elTable_[e+1][f+1];h.id||(h.id=this.cellIdGenerator_.getNextUniqueId());goog.asserts.assert(h,"The table DOM element cannot be null.");goog.a11y.aria.setRole(h,"gridcell");var k=[this.getBaseCssClass()+"-date"];this.isUserSelectableDate_(g)||k.push(this.getBaseCssClass()+"-unavailable-date");if(this.showOtherMonths_||g.getMonth()==a){g.getMonth()!=a&&k.push(this.getBaseCssClass()+"-other-month");var l=(f+this.activeMonth_.getFirstDayOfWeek()+7)%7;this.wdayStyles_[l]&&\nk.push(this.wdayStyles_[l]);g.getDate()==b&&g.getMonth()==d&&g.getFullYear()==c&&k.push(this.getBaseCssClass()+"-today");this.date_&&g.getDate()==this.date_.getDate()&&g.getMonth()==this.date_.getMonth()&&g.getFullYear()==this.date_.getFullYear()&&(k.push(this.getBaseCssClass()+"-selected"),goog.asserts.assert(this.tableBody_,"The table body DOM element cannot be null"),goog.a11y.aria.setState(this.tableBody_,"activedescendant",h.id));this.decoratorFunction_&&(l=this.decoratorFunction_(g))&&k.push(l);\ng=this.longDateFormat_?this.i18nDateFormatterDay2_.format(g):this.i18nDateFormatterDay_.format(g);goog.dom.setTextContent(h,g)}else goog.dom.setTextContent(h,"");goog.dom.classlist.set(h,k.join(" "))}4<=e&&goog.style.setElementShown(this.elTable_[e+1][0].parentElement||this.elTable_[e+1][0].parentNode,this.grid_[e][0].getMonth()==a||this.showFixedNumWeeks_)}};\ngoog.ui.DatePicker.prototype.fireChangeActiveMonthEvent_=function(){var a=new goog.ui.DatePickerEvent(goog.ui.DatePicker.Events.CHANGE_ACTIVE_MONTH,this,this.getActiveMonth());this.dispatchEvent(a)};\ngoog.ui.DatePicker.prototype.redrawWeekdays_=function(){if(this.getElement()){if(this.showWeekdays_)for(var a=0;7>a;a++){var b=this.elTable_[0][a+1],c=(a+this.activeMonth_.getFirstDayOfWeek()+7)%7;goog.dom.setTextContent(b,this.wdayNames_[(c+1)%7])}goog.style.setElementShown(this.elTable_[0][0].parentElement||this.elTable_[0][0].parentNode,this.showWeekdays_)}};\ngoog.ui.DatePicker.prototype.getKeyHandlerForElement_=function(a){var b=goog.getUid(a);b in this.keyHandlers_||(this.keyHandlers_[b]=new goog.events.KeyHandler(a));return this.keyHandlers_[b]};goog.ui.DatePickerEvent=function(a,b,c){goog.events.Event.call(this,a,b);this.date=c};goog.inherits(goog.ui.DatePickerEvent,goog.events.Event);\n// Copyright 2013 Google Inc.  Apache License 2.0\nvar Blockly={Blocks:{}};\n// Copyright 2016 Google Inc.  Apache License 2.0\nBlockly.Touch={};Blockly.Touch.touchIdentifier_=null;Blockly.Touch.onTouchUpWrapper_=null;Blockly.Touch.TOUCH_MAP={};goog.events.BrowserFeature.TOUCH_ENABLED&&(Blockly.Touch.TOUCH_MAP={mousedown:["touchstart"],mousemove:["touchmove"],mouseup:["touchend","touchcancel"]});Blockly.longPid_=0;Blockly.longStart_=function(a,b){Blockly.longStop_();Blockly.longPid_=setTimeout(function(){a.button=2;b.onMouseDown_(a)},Blockly.LONGPRESS)};\nBlockly.longStop_=function(){Blockly.longPid_&&(clearTimeout(Blockly.longPid_),Blockly.longPid_=0)};\nBlockly.onMouseUp_=function(a){a=Blockly.getMainWorkspace();a.dragMode_!=Blockly.DRAG_NONE&&(Blockly.Touch.clearTouchIdentifier(),Blockly.Css.setCursor(Blockly.Css.Cursor.OPEN),a.dragMode_=Blockly.DRAG_NONE,Blockly.Touch.onTouchUpWrapper_&&(Blockly.unbindEvent_(Blockly.Touch.onTouchUpWrapper_),Blockly.Touch.onTouchUpWrapper_=null),Blockly.onMouseMoveWrapper_&&(Blockly.unbindEvent_(Blockly.onMouseMoveWrapper_),Blockly.onMouseMoveWrapper_=null))};\nBlockly.onMouseMove_=function(a){var b=Blockly.getMainWorkspace();if(b.dragMode_!=Blockly.DRAG_NONE){var c=a.clientX-b.startDragMouseX,d=a.clientY-b.startDragMouseY,e=b.startDragMetrics,f=b.startScrollX+c,g=b.startScrollY+d,f=Math.min(f,-e.contentLeft),g=Math.min(g,-e.contentTop),f=Math.max(f,e.viewWidth-e.contentLeft-e.contentWidth),g=Math.max(g,e.viewHeight-e.contentTop-e.contentHeight);b.scrollbar.set(-f-e.contentLeft,-g-e.contentTop);Math.sqrt(c*c+d*d)>Blockly.DRAG_RADIUS&&(Blockly.longStop_(),\nb.dragMode_=Blockly.DRAG_FREE);a.stopPropagation();a.preventDefault()}};Blockly.Touch.clearTouchIdentifier=function(){Blockly.Touch.touchIdentifier_=null};Blockly.Touch.shouldHandleEvent=function(a){return!Blockly.Touch.isMouseOrTouchEvent(a)||Blockly.Touch.checkTouchIdentifier(a)};\nBlockly.Touch.checkTouchIdentifier=function(a){var b=a.changedTouches&&a.changedTouches[0]&&void 0!=a.changedTouches[0].identifier&&null!=a.changedTouches[0].identifier?a.changedTouches[0].identifier:"mouse";return void 0!=Blockly.Touch.touchIdentifier_&&null!=Blockly.Touch.touchIdentifier_?Blockly.Touch.touchIdentifier_==b:"mousedown"==a.type||"touchstart"==a.type?(Blockly.Touch.touchIdentifier_=b,!0):!1};\nBlockly.Touch.setClientFromTouch=function(a){if(goog.string.startsWith(a.type,"touch")){var b=a.changedTouches[0];a.clientX=b.clientX;a.clientY=b.clientY}};Blockly.Touch.isMouseOrTouchEvent=function(a){return goog.string.startsWith(a.type,"touch")||goog.string.startsWith(a.type,"mouse")};\nBlockly.Touch.splitEventByTouches=function(a){var b=[];if(a.changedTouches)for(var c=0;c<a.changedTouches.length;c++)b[c]={type:a.type,changedTouches:[a.changedTouches[c]],target:a.target,stopPropagation:function(){a.stopPropagation()},preventDefault:function(){a.preventDefault()}};else b.push(a);return b};\n// Copyright 2012 Google Inc.  Apache License 2.0\nBlockly.Workspace=function(a){this.id=Blockly.genUid();Blockly.Workspace.WorkspaceDB_[this.id]=this;this.options=a||{};this.RTL=!!this.options.RTL;this.horizontalLayout=!!this.options.horizontalLayout;this.toolboxPosition=this.options.toolboxPosition;this.topBlocks_=[];this.listeners_=[];this.undoStack_=[];this.redoStack_=[];this.blockDB_=Object.create(null);this.variableList=[]};Blockly.Workspace.prototype.rendered=!1;Blockly.Workspace.prototype.MAX_UNDO=1024;\nBlockly.Workspace.prototype.dispose=function(){this.listeners_.length=0;this.clear();delete Blockly.Workspace.WorkspaceDB_[this.id]};Blockly.Workspace.SCAN_ANGLE=3;Blockly.Workspace.prototype.addTopBlock=function(a){this.topBlocks_.push(a);if(this.isFlyout){a=Blockly.Variables.allUsedVariables(a);for(var b=0;b<a.length;b++)-1==this.variableList.indexOf(a[b])&&this.variableList.push(a[b])}};\nBlockly.Workspace.prototype.removeTopBlock=function(a){if(!goog.array.remove(this.topBlocks_,a))throw"Block not present in workspace\'s list of top-most blocks.";};Blockly.Workspace.prototype.getTopBlocks=function(a){var b=[].concat(this.topBlocks_);if(a&&1<b.length){var c=Math.sin(goog.math.toRadians(Blockly.Workspace.SCAN_ANGLE));this.RTL&&(c*=-1);b.sort(function(a,b){var d=a.getRelativeToSurfaceXY(),e=b.getRelativeToSurfaceXY();return d.y+c*d.x-(e.y+c*e.x)})}return b};\nBlockly.Workspace.prototype.getAllBlocks=function(){for(var a=this.getTopBlocks(!1),b=0;b<a.length;b++)a.push.apply(a,a[b].getChildren());return a};Blockly.Workspace.prototype.clear=function(){var a=Blockly.Events.getGroup();for(a||Blockly.Events.setGroup(!0);this.topBlocks_.length;)this.topBlocks_[0].dispose();a||Blockly.Events.setGroup(!1);this.variableList.length=0};\nBlockly.Workspace.prototype.updateVariableList=function(a){if(!this.isFlyout){a&&(this.variableList.length=0);a=Blockly.Variables.allUsedVariables(this);for(var b=0;b<a.length;b++)this.createVariable(a[b])}};\nBlockly.Workspace.prototype.renameVariable=function(a,b){var c=this.variableIndexOf(a),d=this.variableIndexOf(b);if(-1!=d&&this.variableList[d]!=b)var e=this.variableList[d];Blockly.Events.setGroup(!0);for(var f=this.getAllBlocks(),g=0;g<f.length;g++)f[g].renameVar(a,b),e&&f[g].renameVar(e,b);Blockly.Events.setGroup(!1);c==d||-1!=c&&-1==d?this.variableList[c]=b:-1!=c&&-1!=d?(this.variableList.splice(c,1),this.variableList[d]=b):(this.variableList.push(b),console.log("Tried to rename an non-existent variable."))};\nBlockly.Workspace.prototype.createVariable=function(a){-1==this.variableIndexOf(a)&&this.variableList.push(a)};Blockly.Workspace.prototype.getVariableUses=function(a){for(var b=[],c=this.getAllBlocks(),d=0;d<c.length;d++){var e=c[d].getVars();if(e)for(var f=0;f<e.length;f++){var g=e[f];g&&Blockly.Names.equals(g,a)&&b.push(c[d])}}return b};\nBlockly.Workspace.prototype.deleteVariable=function(a){var b=this.variableIndexOf(a);if(-1!=b){var c=this.getVariableUses(a);if(1<c.length){for(var d=0,e;e=c[d];d++)if("procedures_defnoreturn"==e.type||"procedures_defreturn"==e.type){b=e.getFieldValue("NAME");window.alert(Blockly.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE.replace("%1",a).replace("%2",b));return}if(!window.confirm(Blockly.Msg.DELETE_VARIABLE_CONFIRMATION.replace("%1",c.length).replace("%2",a)))return}Blockly.Events.setGroup(!0);for(d=0;d<\nc.length;d++)c[d].dispose(!0,!1);Blockly.Events.setGroup(!1);this.variableList.splice(b,1)}};Blockly.Workspace.prototype.variableIndexOf=function(a){for(var b=0,c;c=this.variableList[b];b++)if(Blockly.Names.equals(c,a))return b;return-1};Blockly.Workspace.prototype.getWidth=function(){return 0};Blockly.Workspace.prototype.newBlock=function(a,b){return new Blockly.Block(this,a,b)};\nBlockly.Workspace.prototype.remainingCapacity=function(){return isNaN(this.options.maxBlocks)?Infinity:this.options.maxBlocks-this.getAllBlocks().length};\nBlockly.Workspace.prototype.undo=function(a){var b=a?this.redoStack_:this.undoStack_,c=a?this.undoStack_:this.redoStack_,d=b.pop();if(d){for(var e=[d];b.length&&d.group&&d.group==b[b.length-1].group;)e.push(b.pop());for(b=0;d=e[b];b++)c.push(d);e=Blockly.Events.filter(e,a);Blockly.Events.recordUndo=!1;for(b=0;d=e[b];b++)d.run(a);Blockly.Events.recordUndo=!0}};Blockly.Workspace.prototype.clearUndo=function(){this.undoStack_.length=0;this.redoStack_.length=0;Blockly.Events.clearPendingUndo()};\nBlockly.Workspace.prototype.addChangeListener=function(a){this.listeners_.push(a);return a};Blockly.Workspace.prototype.removeChangeListener=function(a){goog.array.remove(this.listeners_,a)};Blockly.Workspace.prototype.fireChangeListener=function(a){a.recordUndo&&(this.undoStack_.push(a),this.redoStack_.length=0,this.undoStack_.length>this.MAX_UNDO&&this.undoStack_.unshift());for(var b=0,c;c=this.listeners_[b];b++)c(a)};\nBlockly.Workspace.prototype.getBlockById=function(a){return this.blockDB_[a]||null};Blockly.Workspace.WorkspaceDB_=Object.create(null);Blockly.Workspace.getById=function(a){return Blockly.Workspace.WorkspaceDB_[a]||null};Blockly.Workspace.prototype.clear=Blockly.Workspace.prototype.clear;Blockly.Workspace.prototype.clearUndo=Blockly.Workspace.prototype.clearUndo;Blockly.Workspace.prototype.addChangeListener=Blockly.Workspace.prototype.addChangeListener;\nBlockly.Workspace.prototype.removeChangeListener=Blockly.Workspace.prototype.removeChangeListener;Blockly.Bubble=function(a,b,c,d,e,f){this.workspace_=a;this.content_=b;this.shape_=c;c=Blockly.Bubble.ARROW_ANGLE;this.workspace_.RTL&&(c=-c);this.arrow_radians_=goog.math.toRadians(c);a.getBubbleCanvas().appendChild(this.createDom_(b,!(!e||!f)));this.setAnchorLocation(d);e&&f||(b=this.content_.getBBox(),e=b.width+2*Blockly.Bubble.BORDER_WIDTH,f=b.height+2*Blockly.Bubble.BORDER_WIDTH);this.setBubbleSize(e,f);this.positionBubble_();this.renderArrow_();this.rendered_=!0;a.options.readOnly||(Blockly.bindEventWithChecks_(this.bubbleBack_,\n"mousedown",this,this.bubbleMouseDown_),this.resizeGroup_&&Blockly.bindEventWithChecks_(this.resizeGroup_,"mousedown",this,this.resizeMouseDown_))};Blockly.Bubble.BORDER_WIDTH=6;Blockly.Bubble.ARROW_THICKNESS=5;Blockly.Bubble.ARROW_ANGLE=20;Blockly.Bubble.ARROW_BEND=4;Blockly.Bubble.ANCHOR_RADIUS=8;Blockly.Bubble.onMouseUpWrapper_=null;Blockly.Bubble.onMouseMoveWrapper_=null;Blockly.Bubble.prototype.resizeCallback_=null;\nBlockly.Bubble.unbindDragEvents_=function(){Blockly.Bubble.onMouseUpWrapper_&&(Blockly.unbindEvent_(Blockly.Bubble.onMouseUpWrapper_),Blockly.Bubble.onMouseUpWrapper_=null);Blockly.Bubble.onMouseMoveWrapper_&&(Blockly.unbindEvent_(Blockly.Bubble.onMouseMoveWrapper_),Blockly.Bubble.onMouseMoveWrapper_=null)};Blockly.Bubble.bubbleMouseUp_=function(){Blockly.Touch.clearTouchIdentifier();Blockly.Css.setCursor(Blockly.Css.Cursor.OPEN);Blockly.Bubble.unbindDragEvents_()};\nBlockly.Bubble.prototype.rendered_=!1;Blockly.Bubble.prototype.anchorXY_=null;Blockly.Bubble.prototype.relativeLeft_=0;Blockly.Bubble.prototype.relativeTop_=0;Blockly.Bubble.prototype.width_=0;Blockly.Bubble.prototype.height_=0;Blockly.Bubble.prototype.autoLayout_=!0;\nBlockly.Bubble.prototype.createDom_=function(a,b){this.bubbleGroup_=Blockly.createSvgElement("g",{},null);var c={filter:"url(#"+this.workspace_.options.embossFilterId+")"};-1!=goog.userAgent.getUserAgentString().indexOf("JavaFX")&&(c={});c=Blockly.createSvgElement("g",c,this.bubbleGroup_);this.bubbleArrow_=Blockly.createSvgElement("path",{},c);this.bubbleBack_=Blockly.createSvgElement("rect",{"class":"blocklyDraggable",x:0,y:0,rx:Blockly.Bubble.BORDER_WIDTH,ry:Blockly.Bubble.BORDER_WIDTH},c);b?(this.resizeGroup_=\nBlockly.createSvgElement("g",{"class":this.workspace_.RTL?"blocklyResizeSW":"blocklyResizeSE"},this.bubbleGroup_),c=2*Blockly.Bubble.BORDER_WIDTH,Blockly.createSvgElement("polygon",{points:"0,x x,x x,0".replace(/x/g,c.toString())},this.resizeGroup_),Blockly.createSvgElement("line",{"class":"blocklyResizeLine",x1:c/3,y1:c-1,x2:c-1,y2:c/3},this.resizeGroup_),Blockly.createSvgElement("line",{"class":"blocklyResizeLine",x1:2*c/3,y1:c-1,x2:c-1,y2:2*c/3},this.resizeGroup_)):this.resizeGroup_=null;this.bubbleGroup_.appendChild(a);\nreturn this.bubbleGroup_};\nBlockly.Bubble.prototype.bubbleMouseDown_=function(a){this.promote_();Blockly.Bubble.unbindDragEvents_();Blockly.isRightButton(a)?a.stopPropagation():Blockly.isTargetInput_(a)||(Blockly.Css.setCursor(Blockly.Css.Cursor.CLOSED),this.workspace_.startDrag(a,new goog.math.Coordinate(this.workspace_.RTL?-this.relativeLeft_:this.relativeLeft_,this.relativeTop_)),Blockly.Bubble.onMouseUpWrapper_=Blockly.bindEventWithChecks_(document,"mouseup",this,Blockly.Bubble.bubbleMouseUp_),Blockly.Bubble.onMouseMoveWrapper_=\nBlockly.bindEventWithChecks_(document,"mousemove",this,this.bubbleMouseMove_),Blockly.hideChaff(),a.stopPropagation())};Blockly.Bubble.prototype.bubbleMouseMove_=function(a){this.autoLayout_=!1;a=this.workspace_.moveDrag(a);this.relativeLeft_=this.workspace_.RTL?-a.x:a.x;this.relativeTop_=a.y;this.positionBubble_();this.renderArrow_()};\nBlockly.Bubble.prototype.resizeMouseDown_=function(a){this.promote_();Blockly.Bubble.unbindDragEvents_();Blockly.isRightButton(a)||(Blockly.Css.setCursor(Blockly.Css.Cursor.CLOSED),this.workspace_.startDrag(a,new goog.math.Coordinate(this.workspace_.RTL?-this.width_:this.width_,this.height_)),Blockly.Bubble.onMouseUpWrapper_=Blockly.bindEventWithChecks_(document,"mouseup",this,Blockly.Bubble.bubbleMouseUp_),Blockly.Bubble.onMouseMoveWrapper_=Blockly.bindEventWithChecks_(document,"mousemove",this,\nthis.resizeMouseMove_),Blockly.hideChaff());a.stopPropagation()};Blockly.Bubble.prototype.resizeMouseMove_=function(a){this.autoLayout_=!1;a=this.workspace_.moveDrag(a);this.setBubbleSize(this.workspace_.RTL?-a.x:a.x,a.y);this.workspace_.RTL&&this.positionBubble_()};Blockly.Bubble.prototype.registerResizeEvent=function(a){this.resizeCallback_=a};Blockly.Bubble.prototype.promote_=function(){this.bubbleGroup_.parentNode.appendChild(this.bubbleGroup_)};\nBlockly.Bubble.prototype.setAnchorLocation=function(a){this.anchorXY_=a;this.rendered_&&this.positionBubble_()};\nBlockly.Bubble.prototype.layoutBubble_=function(){var a=-this.width_/4,b=-this.height_-Blockly.BlockSvg.MIN_BLOCK_Y,c=this.workspace_.getMetrics();c.viewWidth/=this.workspace_.scale;c.viewLeft/=this.workspace_.scale;var d=this.anchorXY_.x;this.workspace_.RTL?d-c.viewLeft-a-this.width_<Blockly.Scrollbar.scrollbarThickness?a=d-c.viewLeft-this.width_-Blockly.Scrollbar.scrollbarThickness:d-c.viewLeft-a>c.viewWidth&&(a=d-c.viewLeft-c.viewWidth):d+a<c.viewLeft?a=c.viewLeft-d:c.viewLeft+c.viewWidth<d+a+\nthis.width_+Blockly.BlockSvg.SEP_SPACE_X+Blockly.Scrollbar.scrollbarThickness&&(a=c.viewLeft+c.viewWidth-d-this.width_-Blockly.Scrollbar.scrollbarThickness);this.anchorXY_.y+b<c.viewTop&&(b=this.shape_.getBBox().height);this.relativeLeft_=a;this.relativeTop_=b};\nBlockly.Bubble.prototype.positionBubble_=function(){var a=this.anchorXY_.x,a=this.workspace_.RTL?a-(this.relativeLeft_+this.width_):a+this.relativeLeft_;this.bubbleGroup_.setAttribute("transform","translate("+a+","+(this.relativeTop_+this.anchorXY_.y)+")")};Blockly.Bubble.prototype.getBubbleSize=function(){return{width:this.width_,height:this.height_}};\nBlockly.Bubble.prototype.setBubbleSize=function(a,b){var c=2*Blockly.Bubble.BORDER_WIDTH;a=Math.max(a,c+45);b=Math.max(b,c+20);this.width_=a;this.height_=b;this.bubbleBack_.setAttribute("width",a);this.bubbleBack_.setAttribute("height",b);this.resizeGroup_&&(this.workspace_.RTL?this.resizeGroup_.setAttribute("transform","translate("+2*Blockly.Bubble.BORDER_WIDTH+","+(b-c)+") scale(-1 1)"):this.resizeGroup_.setAttribute("transform","translate("+(a-c)+","+(b-c)+")"));this.rendered_&&(this.autoLayout_&&\nthis.layoutBubble_(),this.positionBubble_(),this.renderArrow_());this.resizeCallback_&&this.resizeCallback_()};\nBlockly.Bubble.prototype.renderArrow_=function(){var a=[],b=this.width_/2,c=this.height_/2,d=-this.relativeLeft_,e=-this.relativeTop_;if(b==d&&c==e)a.push("M "+b+","+c);else{e-=c;d-=b;this.workspace_.RTL&&(d*=-1);var f=Math.sqrt(e*e+d*d),g=Math.acos(d/f);0>e&&(g=2*Math.PI-g);var h=g+Math.PI/2;h>2*Math.PI&&(h-=2*Math.PI);var k=Math.sin(h),l=Math.cos(h),p=this.getBubbleSize(),h=(p.width+p.height)/Blockly.Bubble.ARROW_THICKNESS,h=Math.min(h,p.width,p.height)/4,p=1-Blockly.Bubble.ANCHOR_RADIUS/f,d=b+\np*d,e=c+p*e,p=b+h*l,m=c+h*k,b=b-h*l,c=c-h*k,k=g+this.arrow_radians_;k>2*Math.PI&&(k-=2*Math.PI);g=Math.sin(k)*f/Blockly.Bubble.ARROW_BEND;f=Math.cos(k)*f/Blockly.Bubble.ARROW_BEND;a.push("M"+p+","+m);a.push("C"+(p+f)+","+(m+g)+" "+d+","+e+" "+d+","+e);a.push("C"+d+","+e+" "+(b+f)+","+(c+g)+" "+b+","+c)}a.push("z");this.bubbleArrow_.setAttribute("d",a.join(" "))};Blockly.Bubble.prototype.setColour=function(a){this.bubbleBack_.setAttribute("fill",a);this.bubbleArrow_.setAttribute("fill",a)};\nBlockly.Bubble.prototype.dispose=function(){Blockly.Bubble.unbindDragEvents_();goog.dom.removeNode(this.bubbleGroup_);this.shape_=this.content_=this.workspace_=this.resizeGroup_=this.bubbleBack_=this.bubbleArrow_=this.bubbleGroup_=null};Blockly.Icon=function(a){this.block_=a};Blockly.Icon.prototype.collapseHidden=!0;Blockly.Icon.prototype.SIZE=17;Blockly.Icon.prototype.bubble_=null;Blockly.Icon.prototype.iconXY_=null;\nBlockly.Icon.prototype.createIcon=function(){this.iconGroup_||(this.iconGroup_=Blockly.createSvgElement("g",{"class":"blocklyIconGroup"},null),this.block_.isInFlyout&&Blockly.addClass_(this.iconGroup_,"blocklyIconGroupReadonly"),this.drawIcon_(this.iconGroup_),this.block_.getSvgRoot().appendChild(this.iconGroup_),Blockly.bindEventWithChecks_(this.iconGroup_,"mouseup",this,this.iconClick_),this.updateEditable())};\nBlockly.Icon.prototype.dispose=function(){goog.dom.removeNode(this.iconGroup_);this.iconGroup_=null;this.setVisible(!1);this.block_=null};Blockly.Icon.prototype.updateEditable=function(){};Blockly.Icon.prototype.isVisible=function(){return!!this.bubble_};Blockly.Icon.prototype.iconClick_=function(a){this.block_.workspace.isDragging()||this.block_.isInFlyout||Blockly.isRightButton(a)||this.setVisible(!this.isVisible())};Blockly.Icon.prototype.updateColour=function(){this.isVisible()&&this.bubble_.setColour(this.block_.getColour())};\nBlockly.Icon.prototype.renderIcon=function(a){if(this.collapseHidden&&this.block_.isCollapsed())return this.iconGroup_.setAttribute("display","none"),a;this.iconGroup_.setAttribute("display","block");var b=this.SIZE;this.block_.RTL&&(a-=b);this.iconGroup_.setAttribute("transform","translate("+a+",5)");this.computeIconLocation();return a=this.block_.RTL?a-Blockly.BlockSvg.SEP_SPACE_X:a+(b+Blockly.BlockSvg.SEP_SPACE_X)};\nBlockly.Icon.prototype.setIconLocation=function(a){this.iconXY_=a;this.isVisible()&&this.bubble_.setAnchorLocation(a)};Blockly.Icon.prototype.computeIconLocation=function(){var a=this.block_.getRelativeToSurfaceXY(),b=Blockly.getRelativeXY_(this.iconGroup_),a=new goog.math.Coordinate(a.x+b.x+this.SIZE/2,a.y+b.y+this.SIZE/2);goog.math.Coordinate.equals(this.getIconLocation(),a)||this.setIconLocation(a)};Blockly.Icon.prototype.getIconLocation=function(){return this.iconXY_};\n// Copyright 2011 Google Inc.  Apache License 2.0\nBlockly.Comment=function(a){Blockly.Comment.superClass_.constructor.call(this,a);this.createIcon()};goog.inherits(Blockly.Comment,Blockly.Icon);Blockly.Comment.prototype.text_="";Blockly.Comment.prototype.width_=160;Blockly.Comment.prototype.height_=80;\nBlockly.Comment.prototype.drawIcon_=function(a){Blockly.createSvgElement("circle",{"class":"blocklyIconShape",r:"8",cx:"8",cy:"8"},a);Blockly.createSvgElement("path",{"class":"blocklyIconSymbol",d:"m6.8,10h2c0.003,-0.617 0.271,-0.962 0.633,-1.266 2.875,-2.405 0.607,-5.534 -3.765,-3.874v1.7c3.12,-1.657 3.698,0.118 2.336,1.25 -1.201,0.998 -1.201,1.528 -1.204,2.19z"},a);Blockly.createSvgElement("rect",{"class":"blocklyIconSymbol",x:"6.8",y:"10.78",height:"2",width:"2"},a)};\nBlockly.Comment.prototype.createEditor_=function(){this.foreignObject_=Blockly.createSvgElement("foreignObject",{x:Blockly.Bubble.BORDER_WIDTH,y:Blockly.Bubble.BORDER_WIDTH},null);var a=document.createElementNS(Blockly.HTML_NS,"body");a.setAttribute("xmlns",Blockly.HTML_NS);a.className="blocklyMinimalBody";var b=document.createElementNS(Blockly.HTML_NS,"textarea");b.className="blocklyCommentTextarea";b.setAttribute("dir",this.block_.RTL?"RTL":"LTR");a.appendChild(b);this.textarea_=b;this.foreignObject_.appendChild(a);\nBlockly.bindEventWithChecks_(b,"mouseup",this,this.textareaFocus_);Blockly.bindEventWithChecks_(b,"wheel",this,function(a){a.stopPropagation()});Blockly.bindEventWithChecks_(b,"change",this,function(a){this.text_!=b.value&&(Blockly.Events.fire(new Blockly.Events.Change(this.block_,"comment",null,this.text_,b.value)),this.text_=b.value)});setTimeout(function(){b.focus()},0);return this.foreignObject_};\nBlockly.Comment.prototype.updateEditable=function(){this.isVisible()&&(this.setVisible(!1),this.setVisible(!0));Blockly.Icon.prototype.updateEditable.call(this)};Blockly.Comment.prototype.resizeBubble_=function(){if(this.isVisible()){var a=this.bubble_.getBubbleSize(),b=2*Blockly.Bubble.BORDER_WIDTH;this.foreignObject_.setAttribute("width",a.width-b);this.foreignObject_.setAttribute("height",a.height-b);this.textarea_.style.width=a.width-b-4+"px";this.textarea_.style.height=a.height-b-4+"px"}};\nBlockly.Comment.prototype.setVisible=function(a){if(a!=this.isVisible())if(Blockly.Events.fire(new Blockly.Events.Ui(this.block_,"commentOpen",!a,a)),!this.block_.isEditable()&&!this.textarea_||goog.userAgent.IE)Blockly.Warning.prototype.setVisible.call(this,a);else{var b=this.getText(),c=this.getBubbleSize();a?(this.bubble_=new Blockly.Bubble(this.block_.workspace,this.createEditor_(),this.block_.svgPath_,this.iconXY_,this.width_,this.height_),this.bubble_.registerResizeEvent(this.resizeBubble_.bind(this)),\nthis.updateColour()):(this.bubble_.dispose(),this.foreignObject_=this.textarea_=this.bubble_=null);this.setText(b);this.setBubbleSize(c.width,c.height)}};Blockly.Comment.prototype.textareaFocus_=function(a){this.bubble_.promote_();this.textarea_.focus()};Blockly.Comment.prototype.getBubbleSize=function(){return this.isVisible()?this.bubble_.getBubbleSize():{width:this.width_,height:this.height_}};\nBlockly.Comment.prototype.setBubbleSize=function(a,b){this.textarea_?this.bubble_.setBubbleSize(a,b):(this.width_=a,this.height_=b)};Blockly.Comment.prototype.getText=function(){return this.textarea_?this.textarea_.value:this.text_};Blockly.Comment.prototype.setText=function(a){this.text_!=a&&(Blockly.Events.fire(new Blockly.Events.Change(this.block_,"comment",null,this.text_,a)),this.text_=a);this.textarea_&&(this.textarea_.value=a)};\nBlockly.Comment.prototype.dispose=function(){Blockly.Events.isEnabled()&&this.setText("");this.block_.comment=null;Blockly.Icon.prototype.dispose.call(this)};Blockly.Connection=function(a,b){this.sourceBlock_=a;this.type=b;a.workspace.connectionDBList&&(this.db_=a.workspace.connectionDBList[b],this.dbOpposite_=a.workspace.connectionDBList[Blockly.OPPOSITE_TYPE[b]],this.hidden_=!this.db_)};Blockly.Connection.CAN_CONNECT=0;Blockly.Connection.REASON_SELF_CONNECTION=1;Blockly.Connection.REASON_WRONG_TYPE=2;Blockly.Connection.REASON_TARGET_NULL=3;Blockly.Connection.REASON_CHECKS_FAILED=4;Blockly.Connection.REASON_DIFFERENT_WORKSPACES=5;\nBlockly.Connection.REASON_SHADOW_PARENT=6;Blockly.Connection.prototype.targetConnection=null;Blockly.Connection.prototype.check_=null;Blockly.Connection.prototype.shadowDom_=null;Blockly.Connection.prototype.x_=0;Blockly.Connection.prototype.y_=0;Blockly.Connection.prototype.inDB_=!1;Blockly.Connection.prototype.db_=null;Blockly.Connection.prototype.dbOpposite_=null;Blockly.Connection.prototype.hidden_=null;\nBlockly.Connection.prototype.connect_=function(a){var b=this,c=b.getSourceBlock(),d=a.getSourceBlock();a.isConnected()&&a.disconnect();if(b.isConnected()){var e=b.targetBlock(),f=b.getShadowDom();b.setShadowDom(null);if(e.isShadow())f=Blockly.Xml.blockToDom(e),e.dispose(),e=null;else if(b.type==Blockly.INPUT_VALUE){if(!e.outputConnection)throw"Orphan block does not have an output connection.";var g=Blockly.Connection.lastConnectionInRow_(d,e);g&&(e.outputConnection.connect(g),e=null)}else if(b.type==\nBlockly.NEXT_STATEMENT){if(!e.previousConnection)throw"Orphan block does not have a previous connection.";for(g=d;g.nextConnection;){var h=g.getNextBlock();if(h&&!h.isShadow())g=h;else{e.previousConnection.checkType_(g.nextConnection)&&(g.nextConnection.connect(e.previousConnection),e=null);break}}}if(e&&(b.disconnect(),Blockly.Events.recordUndo)){var k=Blockly.Events.getGroup();setTimeout(function(){e.workspace&&!e.getParent()&&(Blockly.Events.setGroup(k),e.outputConnection?e.outputConnection.bumpAwayFrom_(b):\ne.previousConnection&&e.previousConnection.bumpAwayFrom_(b),Blockly.Events.setGroup(!1))},Blockly.BUMP_DELAY)}b.setShadowDom(f)}var l;Blockly.Events.isEnabled()&&(l=new Blockly.Events.Move(d));Blockly.Connection.connectReciprocally_(b,a);d.setParent(c);l&&(l.recordNew(),Blockly.Events.fire(l))};\nBlockly.Connection.prototype.dispose=function(){if(this.isConnected())throw"Disconnect connection before disposing of it.";this.inDB_&&this.db_.removeConnection_(this);Blockly.highlightedConnection_==this&&(Blockly.highlightedConnection_=null);Blockly.localConnection_==this&&(Blockly.localConnection_=null);this.dbOpposite_=this.db_=null};Blockly.Connection.prototype.getSourceBlock=function(){return this.sourceBlock_};\nBlockly.Connection.prototype.isSuperior=function(){return this.type==Blockly.INPUT_VALUE||this.type==Blockly.NEXT_STATEMENT};Blockly.Connection.prototype.isConnected=function(){return!!this.targetConnection};\nBlockly.Connection.prototype.canConnectWithReason_=function(a){if(!a)return Blockly.Connection.REASON_TARGET_NULL;if(this.isSuperior())var b=this.sourceBlock_,c=a.getSourceBlock();else c=this.sourceBlock_,b=a.getSourceBlock();return b&&b==c?Blockly.Connection.REASON_SELF_CONNECTION:a.type!=Blockly.OPPOSITE_TYPE[this.type]?Blockly.Connection.REASON_WRONG_TYPE:b&&c&&b.workspace!==c.workspace?Blockly.Connection.REASON_DIFFERENT_WORKSPACES:this.checkType_(a)?b.isShadow()&&!c.isShadow()?Blockly.Connection.REASON_SHADOW_PARENT:\nBlockly.Connection.CAN_CONNECT:Blockly.Connection.REASON_CHECKS_FAILED};\nBlockly.Connection.prototype.checkConnection_=function(a){switch(this.canConnectWithReason_(a)){case Blockly.Connection.CAN_CONNECT:break;case Blockly.Connection.REASON_SELF_CONNECTION:throw"Attempted to connect a block to itself.";case Blockly.Connection.REASON_DIFFERENT_WORKSPACES:throw"Blocks not on same workspace.";case Blockly.Connection.REASON_WRONG_TYPE:throw"Attempt to connect incompatible types.";case Blockly.Connection.REASON_TARGET_NULL:throw"Target connection is null.";case Blockly.Connection.REASON_CHECKS_FAILED:throw"Connection checks failed.";\ncase Blockly.Connection.REASON_SHADOW_PARENT:throw"Connecting non-shadow to shadow block.";default:throw"Unknown connection failure: this should never happen!";}};\nBlockly.Connection.prototype.isConnectionAllowed=function(a){if(this.canConnectWithReason_(a)!=Blockly.Connection.CAN_CONNECT)return!1;if(a.type==Blockly.OUTPUT_VALUE||a.type==Blockly.PREVIOUS_STATEMENT)if(a.isConnected()||this.isConnected())return!1;return a.type==Blockly.INPUT_VALUE&&a.isConnected()&&!a.targetBlock().isMovable()&&!a.targetBlock().isShadow()||this.type==Blockly.PREVIOUS_STATEMENT&&a.isConnected()&&!this.sourceBlock_.nextConnection&&!a.targetBlock().isShadow()&&a.targetBlock().nextConnection||\n-1!=Blockly.draggingConnections_.indexOf(a)?!1:!0};Blockly.Connection.prototype.connect=function(a){this.targetConnection!=a&&(this.checkConnection_(a),this.isSuperior()?this.connect_(a):a.connect_(this))};Blockly.Connection.connectReciprocally_=function(a,b){goog.asserts.assert(a&&b,"Cannot connect null connections.");a.targetConnection=b;b.targetConnection=a};\nBlockly.Connection.singleConnection_=function(a,b){for(var c=!1,d=0;d<a.inputList.length;d++){var e=a.inputList[d].connection;if(e&&e.type==Blockly.INPUT_VALUE&&b.outputConnection.checkType_(e)){if(c)return null;c=e}}return c};Blockly.Connection.lastConnectionInRow_=function(a,b){for(var c=a,d;d=Blockly.Connection.singleConnection_(c,b);)if(c=d.targetBlock(),!c||c.isShadow())return d;return null};\nBlockly.Connection.prototype.disconnect=function(){var a=this.targetConnection;goog.asserts.assert(a,"Source connection not connected.");goog.asserts.assert(a.targetConnection==this,"Target connection not connected to source connection.");var b,c;this.isSuperior()?(b=this.sourceBlock_,c=a.getSourceBlock(),a=this):(b=a.getSourceBlock(),c=this.sourceBlock_);this.disconnectInternal_(b,c);a.respawnShadow_()};\nBlockly.Connection.prototype.disconnectInternal_=function(a,b){var c;Blockly.Events.isEnabled()&&(c=new Blockly.Events.Move(b));this.targetConnection=this.targetConnection.targetConnection=null;b.setParent(null);c&&(c.recordNew(),Blockly.Events.fire(c))};\nBlockly.Connection.prototype.respawnShadow_=function(){var a=this.getSourceBlock(),b=this.getShadowDom();if(a.workspace&&b&&Blockly.Events.recordUndo)if(a=Blockly.Xml.domToBlock(b,a.workspace),a.outputConnection)this.connect(a.outputConnection);else if(a.previousConnection)this.connect(a.previousConnection);else throw"Child block does not have output or previous statement.";};Blockly.Connection.prototype.targetBlock=function(){return this.isConnected()?this.targetConnection.getSourceBlock():null};\nBlockly.Connection.prototype.checkType_=function(a){if(!this.check_||!a.check_)return!0;for(var b=0;b<this.check_.length;b++)if(-1!=a.check_.indexOf(this.check_[b]))return!0;return!1};Blockly.Connection.prototype.setCheck=function(a){a?(goog.isArray(a)||(a=[a]),this.check_=a,this.isConnected()&&!this.checkType_(this.targetConnection)&&((this.isSuperior()?this.targetBlock():this.sourceBlock_).unplug(),this.sourceBlock_.bumpNeighbours_())):this.check_=null;return this};\nBlockly.Connection.prototype.setShadowDom=function(a){this.shadowDom_=a};Blockly.Connection.prototype.getShadowDom=function(){return this.shadowDom_};Blockly.Field=function(a,b){this.size_=new goog.math.Size(0,25);this.setValue(a);this.setValidator(b)};Blockly.Field.cacheWidths_=null;Blockly.Field.cacheReference_=0;Blockly.Field.prototype.name=void 0;Blockly.Field.prototype.maxDisplayLength=50;Blockly.Field.prototype.text_="";Blockly.Field.prototype.sourceBlock_=null;Blockly.Field.prototype.visible_=!0;Blockly.Field.prototype.validator_=null;Blockly.Field.NBSP="\\u00a0";Blockly.Field.prototype.EDITABLE=!0;\nBlockly.Field.prototype.setSourceBlock=function(a){goog.asserts.assert(!this.sourceBlock_,"Field already bound to a block.");this.sourceBlock_=a};\nBlockly.Field.prototype.init=function(){this.fieldGroup_||(this.fieldGroup_=Blockly.createSvgElement("g",{},null),this.visible_||(this.fieldGroup_.style.display="none"),this.borderRect_=Blockly.createSvgElement("rect",{rx:4,ry:4,x:-Blockly.BlockSvg.SEP_SPACE_X/2,y:0,height:16},this.fieldGroup_,this.sourceBlock_.workspace),this.textElement_=Blockly.createSvgElement("text",{"class":"blocklyText",y:this.size_.height-12.5},this.fieldGroup_),this.updateEditable(),this.sourceBlock_.getSvgRoot().appendChild(this.fieldGroup_),\nthis.mouseUpWrapper_=Blockly.bindEventWithChecks_(this.fieldGroup_,"mouseup",this,this.onMouseUp_),this.updateTextNode_())};Blockly.Field.prototype.dispose=function(){this.mouseUpWrapper_&&(Blockly.unbindEvent_(this.mouseUpWrapper_),this.mouseUpWrapper_=null);this.sourceBlock_=null;goog.dom.removeNode(this.fieldGroup_);this.validator_=this.borderRect_=this.textElement_=this.fieldGroup_=null};\nBlockly.Field.prototype.updateEditable=function(){var a=this.fieldGroup_;this.EDITABLE&&a&&(this.sourceBlock_.isEditable()?(Blockly.addClass_(a,"blocklyEditableText"),Blockly.removeClass_(a,"blocklyNonEditableText"),this.fieldGroup_.style.cursor=this.CURSOR):(Blockly.addClass_(a,"blocklyNonEditableText"),Blockly.removeClass_(a,"blocklyEditableText"),this.fieldGroup_.style.cursor=""))};Blockly.Field.prototype.isVisible=function(){return this.visible_};\nBlockly.Field.prototype.setVisible=function(a){if(this.visible_!=a){this.visible_=a;var b=this.getSvgRoot();b&&(b.style.display=a?"block":"none",this.render_())}};Blockly.Field.prototype.setValidator=function(a){this.validator_=a};Blockly.Field.prototype.getValidator=function(){return this.validator_};Blockly.Field.prototype.classValidator=function(a){return a};\nBlockly.Field.prototype.callValidator=function(a){var b=this.classValidator(a);if(null===b)return null;void 0!==b&&(a=b);if(b=this.getValidator()){b=b.call(this,a);if(null===b)return null;void 0!==b&&(a=b)}return a};Blockly.Field.prototype.getSvgRoot=function(){return this.fieldGroup_};\nBlockly.Field.prototype.render_=function(){if(this.visible_&&this.textElement_){var a=this.textElement_.textContent+"\\n"+this.textElement_.className.baseVal;if(Blockly.Field.cacheWidths_&&Blockly.Field.cacheWidths_[a])var b=Blockly.Field.cacheWidths_[a];else{try{b=this.textElement_.getComputedTextLength()}catch(c){b=8*this.textElement_.textContent.length}Blockly.Field.cacheWidths_&&(Blockly.Field.cacheWidths_[a]=b)}this.borderRect_&&this.borderRect_.setAttribute("width",b+Blockly.BlockSvg.SEP_SPACE_X)}else b=\n0;this.size_.width=b};Blockly.Field.startCache=function(){Blockly.Field.cacheReference_++;Blockly.Field.cacheWidths_||(Blockly.Field.cacheWidths_={})};Blockly.Field.stopCache=function(){Blockly.Field.cacheReference_--;Blockly.Field.cacheReference_||(Blockly.Field.cacheWidths_=null)};Blockly.Field.prototype.getSize=function(){this.size_.width||this.render_();return this.size_};\nBlockly.Field.prototype.getScaledBBox_=function(){var a=this.borderRect_.getBBox();return new goog.math.Size(a.width*this.sourceBlock_.workspace.scale,a.height*this.sourceBlock_.workspace.scale)};Blockly.Field.prototype.getText=function(){return this.text_};Blockly.Field.prototype.setText=function(a){null!==a&&(a=String(a),a!==this.text_&&(this.text_=a,this.updateTextNode_(),this.sourceBlock_&&this.sourceBlock_.rendered&&(this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours_())))};\nBlockly.Field.prototype.updateTextNode_=function(){if(this.textElement_){var a=this.text_;a.length>this.maxDisplayLength&&(a=a.substring(0,this.maxDisplayLength-2)+"\\u2026");goog.dom.removeChildren(this.textElement_);a=a.replace(/\\s/g,Blockly.Field.NBSP);this.sourceBlock_.RTL&&a&&(a+="\\u200f");a||(a=Blockly.Field.NBSP);a=document.createTextNode(a);this.textElement_.appendChild(a);this.size_.width=0}};Blockly.Field.prototype.getValue=function(){return this.getText()};\nBlockly.Field.prototype.setValue=function(a){if(null!==a){var b=this.getValue();b!=a&&(this.sourceBlock_&&Blockly.Events.isEnabled()&&Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_,"field",this.name,b,a)),this.setText(a))}};\nBlockly.Field.prototype.onMouseUp_=function(a){if(!goog.userAgent.IPHONE&&!goog.userAgent.IPAD||goog.userAgent.isVersionOrHigher("537.51.2")||0===a.layerX||0===a.layerY)Blockly.isRightButton(a)||this.sourceBlock_.workspace.isDragging()||this.sourceBlock_.isEditable()&&this.showEditor_()};Blockly.Field.prototype.setTooltip=function(a){};Blockly.Field.prototype.getAbsoluteXY_=function(){return goog.style.getPageOffset(this.borderRect_)};Blockly.Tooltip={};Blockly.Tooltip.visible=!1;Blockly.Tooltip.LIMIT=50;Blockly.Tooltip.mouseOutPid_=0;Blockly.Tooltip.showPid_=0;Blockly.Tooltip.lastX_=0;Blockly.Tooltip.lastY_=0;Blockly.Tooltip.element_=null;Blockly.Tooltip.poisonedElement_=null;Blockly.Tooltip.OFFSET_X=0;Blockly.Tooltip.OFFSET_Y=10;Blockly.Tooltip.RADIUS_OK=10;Blockly.Tooltip.HOVER_MS=750;Blockly.Tooltip.MARGINS=5;Blockly.Tooltip.DIV=null;\nBlockly.Tooltip.createDom=function(){Blockly.Tooltip.DIV||(Blockly.Tooltip.DIV=goog.dom.createDom("DIV","blocklyTooltipDiv"),document.body.appendChild(Blockly.Tooltip.DIV))};Blockly.Tooltip.bindMouseEvents=function(a){Blockly.bindEvent_(a,"mouseover",null,Blockly.Tooltip.onMouseOver_);Blockly.bindEvent_(a,"mouseout",null,Blockly.Tooltip.onMouseOut_);a.addEventListener("mousemove",Blockly.Tooltip.onMouseMove_,!1)};\nBlockly.Tooltip.onMouseOver_=function(a){for(a=a.target;!goog.isString(a.tooltip)&&!goog.isFunction(a.tooltip);)a=a.tooltip;Blockly.Tooltip.element_!=a&&(Blockly.Tooltip.hide(),Blockly.Tooltip.poisonedElement_=null,Blockly.Tooltip.element_=a);clearTimeout(Blockly.Tooltip.mouseOutPid_)};Blockly.Tooltip.onMouseOut_=function(a){Blockly.Tooltip.mouseOutPid_=setTimeout(function(){Blockly.Tooltip.element_=null;Blockly.Tooltip.poisonedElement_=null;Blockly.Tooltip.hide()},1);clearTimeout(Blockly.Tooltip.showPid_)};\nBlockly.Tooltip.onMouseMove_=function(a){if(Blockly.Tooltip.element_&&Blockly.Tooltip.element_.tooltip&&Blockly.dragMode_==Blockly.DRAG_NONE&&!Blockly.WidgetDiv.isVisible())if(Blockly.Tooltip.visible){var b=Blockly.Tooltip.lastX_-a.pageX;a=Blockly.Tooltip.lastY_-a.pageY;Math.sqrt(b*b+a*a)>Blockly.Tooltip.RADIUS_OK&&Blockly.Tooltip.hide()}else Blockly.Tooltip.poisonedElement_!=Blockly.Tooltip.element_&&(clearTimeout(Blockly.Tooltip.showPid_),Blockly.Tooltip.lastX_=a.pageX,Blockly.Tooltip.lastY_=a.pageY,\nBlockly.Tooltip.showPid_=setTimeout(Blockly.Tooltip.show_,Blockly.Tooltip.HOVER_MS))};Blockly.Tooltip.hide=function(){Blockly.Tooltip.visible&&(Blockly.Tooltip.visible=!1,Blockly.Tooltip.DIV&&(Blockly.Tooltip.DIV.style.display="none"));clearTimeout(Blockly.Tooltip.showPid_)};\nBlockly.Tooltip.show_=function(){Blockly.Tooltip.poisonedElement_=Blockly.Tooltip.element_;if(Blockly.Tooltip.DIV){goog.dom.removeChildren(Blockly.Tooltip.DIV);for(var a=Blockly.Tooltip.element_.tooltip;goog.isFunction(a);)a=a();for(var a=Blockly.utils.wrap(a,Blockly.Tooltip.LIMIT),a=a.split("\\n"),b=0;b<a.length;b++){var c=document.createElement("div");c.appendChild(document.createTextNode(a[b]));Blockly.Tooltip.DIV.appendChild(c)}a=Blockly.Tooltip.element_.RTL;b=goog.dom.getViewportSize();Blockly.Tooltip.DIV.style.direction=\na?"rtl":"ltr";Blockly.Tooltip.DIV.style.display="block";Blockly.Tooltip.visible=!0;var c=Blockly.Tooltip.lastX_,c=a?c-(Blockly.Tooltip.OFFSET_X+Blockly.Tooltip.DIV.offsetWidth):c+Blockly.Tooltip.OFFSET_X,d=Blockly.Tooltip.lastY_+Blockly.Tooltip.OFFSET_Y;d+Blockly.Tooltip.DIV.offsetHeight>b.height+window.scrollY&&(d-=Blockly.Tooltip.DIV.offsetHeight+2*Blockly.Tooltip.OFFSET_Y);a?c=Math.max(Blockly.Tooltip.MARGINS-window.scrollX,c):c+Blockly.Tooltip.DIV.offsetWidth>b.width+window.scrollX-2*Blockly.Tooltip.MARGINS&&\n(c=b.width-Blockly.Tooltip.DIV.offsetWidth-2*Blockly.Tooltip.MARGINS);Blockly.Tooltip.DIV.style.top=d+"px";Blockly.Tooltip.DIV.style.left=c+"px"}};Blockly.FieldLabel=function(a,b){this.size_=new goog.math.Size(0,17.5);this.class_=b;this.setValue(a)};goog.inherits(Blockly.FieldLabel,Blockly.Field);Blockly.FieldLabel.prototype.EDITABLE=!1;\nBlockly.FieldLabel.prototype.init=function(){this.textElement_||(this.textElement_=Blockly.createSvgElement("text",{"class":"blocklyText",y:this.size_.height-5},null),this.class_&&Blockly.addClass_(this.textElement_,this.class_),this.visible_||(this.textElement_.style.display="none"),this.sourceBlock_.getSvgRoot().appendChild(this.textElement_),this.textElement_.tooltip=this.sourceBlock_,Blockly.Tooltip.bindMouseEvents(this.textElement_),this.updateTextNode_())};\nBlockly.FieldLabel.prototype.dispose=function(){goog.dom.removeNode(this.textElement_);this.textElement_=null};Blockly.FieldLabel.prototype.getSvgRoot=function(){return this.textElement_};Blockly.FieldLabel.prototype.setTooltip=function(a){this.textElement_.tooltip=a};Blockly.Input=function(a,b,c,d){this.type=a;this.name=b;this.sourceBlock_=c;this.connection=d;this.fieldRow=[]};Blockly.Input.prototype.align=Blockly.ALIGN_LEFT;Blockly.Input.prototype.visible_=!0;\nBlockly.Input.prototype.appendField=function(a,b){if(!a&&!b)return this;goog.isString(a)&&(a=new Blockly.FieldLabel(a));a.setSourceBlock(this.sourceBlock_);this.sourceBlock_.rendered&&a.init();a.name=b;a.prefixField&&this.appendField(a.prefixField);this.fieldRow.push(a);a.suffixField&&this.appendField(a.suffixField);this.sourceBlock_.rendered&&(this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours_());return this};\nBlockly.Input.prototype.appendTitle=function(a,b){console.warn("Deprecated call to appendTitle, use appendField instead.");return this.appendField(a,b)};Blockly.Input.prototype.removeField=function(a){for(var b=0,c;c=this.fieldRow[b];b++)if(c.name===a){c.dispose();this.fieldRow.splice(b,1);this.sourceBlock_.rendered&&(this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours_());return}goog.asserts.fail(\'Field "%s" not found.\',a)};Blockly.Input.prototype.isVisible=function(){return this.visible_};\nBlockly.Input.prototype.setVisible=function(a){var b=[];if(this.visible_==a)return b;for(var c=(this.visible_=a)?"block":"none",d=0,e;e=this.fieldRow[d];d++)e.setVisible(a);this.connection&&(a?b=this.connection.unhideAll():this.connection.hideAll(),d=this.connection.targetBlock())&&(d.getSvgRoot().style.display=c,a||(d.rendered=!1));return b};Blockly.Input.prototype.setCheck=function(a){if(!this.connection)throw"This input does not have a connection.";this.connection.setCheck(a);return this};\nBlockly.Input.prototype.setAlign=function(a){this.align=a;this.sourceBlock_.rendered&&this.sourceBlock_.render();return this};Blockly.Input.prototype.init=function(){if(this.sourceBlock_.workspace.rendered)for(var a=0;a<this.fieldRow.length;a++)this.fieldRow[a].init()};Blockly.Input.prototype.dispose=function(){for(var a=0,b;b=this.fieldRow[a];a++)b.dispose();this.connection&&this.connection.dispose();this.sourceBlock_=null};Blockly.ConnectionDB=function(){};Blockly.ConnectionDB.prototype=[];Blockly.ConnectionDB.constructor=Blockly.ConnectionDB;Blockly.ConnectionDB.prototype.addConnection=function(a){if(a.inDB_)throw"Connection already in database.";if(!a.getSourceBlock().isInFlyout){var b=this.findPositionForConnection_(a);this.splice(b,0,a);a.inDB_=!0}};\nBlockly.ConnectionDB.prototype.findConnection=function(a){if(!this.length)return-1;var b=this.findPositionForConnection_(a);if(b>=this.length)return-1;for(var c=a.y_,d=b;0<=d&&this[d].y_==c;){if(this[d]==a)return d;d--}for(;b<this.length&&this[b].y_==c;){if(this[b]==a)return b;b++}return-1};\nBlockly.ConnectionDB.prototype.findPositionForConnection_=function(a){if(!this.length)return 0;for(var b=0,c=this.length;b<c;){var d=Math.floor((b+c)/2);if(this[d].y_<a.y_)b=d+1;else if(this[d].y_>a.y_)c=d;else{b=d;break}}return b};Blockly.ConnectionDB.prototype.removeConnection_=function(a){if(!a.inDB_)throw"Connection not in database.";var b=this.findConnection(a);if(-1==b)throw"Unable to find connection in connectionDB.";a.inDB_=!1;this.splice(b,1)};\nBlockly.ConnectionDB.prototype.getNeighbours=function(a,b){function c(a){var c=e-d[a].x_,g=f-d[a].y_;Math.sqrt(c*c+g*g)<=b&&l.push(d[a]);return g<b}for(var d=this,e=a.x_,f=a.y_,g=0,h=d.length-2,k=h;g<k;)d[k].y_<f?g=k:h=k,k=Math.floor((g+h)/2);var l=[],h=g=k;if(d.length){for(;0<=g&&c(g);)g--;do h++;while(h<d.length&&c(h))}return l};Blockly.ConnectionDB.prototype.isInYRange_=function(a,b,c){return Math.abs(this[a].y_-b)<=c};\nBlockly.ConnectionDB.prototype.searchForClosest=function(a,b,c){if(!this.length)return{connection:null,radius:b};var d=a.y_,e=a.x_;a.x_=e+c.x;a.y_=d+c.y;var f=this.findPositionForConnection_(a);c=null;for(var g=b,h,k=f-1;0<=k&&this.isInYRange_(k,a.y_,b);)h=this[k],a.isConnectionAllowed(h,g)&&(c=h,g=h.distanceFrom(a)),k--;for(;f<this.length&&this.isInYRange_(f,a.y_,b);)h=this[f],a.isConnectionAllowed(h,g)&&(c=h,g=h.distanceFrom(a)),f++;a.x_=e;a.y_=d;return{connection:c,radius:g}};\nBlockly.ConnectionDB.init=function(a){var b=[];b[Blockly.INPUT_VALUE]=new Blockly.ConnectionDB;b[Blockly.OUTPUT_VALUE]=new Blockly.ConnectionDB;b[Blockly.NEXT_STATEMENT]=new Blockly.ConnectionDB;b[Blockly.PREVIOUS_STATEMENT]=new Blockly.ConnectionDB;a.connectionDBList=b};Blockly.constants={};Blockly.DRAG_RADIUS=5;Blockly.SNAP_RADIUS=20;Blockly.BUMP_DELAY=250;Blockly.COLLAPSE_CHARS=30;Blockly.LONGPRESS=750;Blockly.SOUND_LIMIT=100;Blockly.HSV_SATURATION=.45;Blockly.HSV_VALUE=.65;Blockly.SPRITE={width:96,height:124,url:"sprites.png"};Blockly.SVG_NS="http://www.w3.org/2000/svg";Blockly.HTML_NS="http://www.w3.org/1999/xhtml";Blockly.INPUT_VALUE=1;Blockly.OUTPUT_VALUE=2;Blockly.NEXT_STATEMENT=3;Blockly.PREVIOUS_STATEMENT=4;Blockly.DUMMY_INPUT=5;Blockly.ALIGN_LEFT=-1;\nBlockly.ALIGN_CENTRE=0;Blockly.ALIGN_RIGHT=1;Blockly.DRAG_NONE=0;Blockly.DRAG_STICKY=1;Blockly.DRAG_BEGIN=1;Blockly.DRAG_FREE=2;Blockly.OPPOSITE_TYPE=[];Blockly.OPPOSITE_TYPE[Blockly.INPUT_VALUE]=Blockly.OUTPUT_VALUE;Blockly.OPPOSITE_TYPE[Blockly.OUTPUT_VALUE]=Blockly.INPUT_VALUE;Blockly.OPPOSITE_TYPE[Blockly.NEXT_STATEMENT]=Blockly.PREVIOUS_STATEMENT;Blockly.OPPOSITE_TYPE[Blockly.PREVIOUS_STATEMENT]=Blockly.NEXT_STATEMENT;Blockly.TOOLBOX_AT_TOP=0;Blockly.TOOLBOX_AT_BOTTOM=1;\nBlockly.TOOLBOX_AT_LEFT=2;Blockly.TOOLBOX_AT_RIGHT=3;Blockly.Options=function(a){var b=!!a.readOnly;if(b)var c=null,d=!1,e=!1,f=!1,g=!1,h=!1,k=!1;else c=Blockly.Options.parseToolboxTree(a.toolbox),d=!(!c||!c.getElementsByTagName("category").length),e=a.trashcan,void 0===e&&(e=d),f=a.collapse,void 0===f&&(f=d),g=a.comments,void 0===g&&(g=d),h=a.disable,void 0===h&&(h=d),k=a.sounds,void 0===k&&(k=!0);var l=!!a.rtl,p=a.horizontalLayout;void 0===p&&(p=!1);var m=a.toolboxPosition,m="end"===m?!1:!0,m=p?m?Blockly.TOOLBOX_AT_TOP:Blockly.TOOLBOX_AT_BOTTOM:m==\nl?Blockly.TOOLBOX_AT_RIGHT:Blockly.TOOLBOX_AT_LEFT,n=a.scrollbars;void 0===n&&(n=d);var q=a.css;void 0===q&&(q=!0);var t="https://blockly-demo.appspot.com/static/media/";a.media?t=a.media:a.path&&(t=a.path+"media/");var r=void 0===a.oneBasedIndex?!0:!!a.oneBasedIndex;this.RTL=l;this.oneBasedIndex=r;this.collapse=f;this.comments=g;this.disable=h;this.readOnly=b;this.maxBlocks=a.maxBlocks||Infinity;this.pathToMedia=t;this.hasCategories=d;this.hasScrollbars=n;this.hasTrashcan=e;this.hasSounds=k;this.hasCss=\nq;this.horizontalLayout=p;this.languageTree=c;this.gridOptions=Blockly.Options.parseGridOptions_(a);this.zoomOptions=Blockly.Options.parseZoomOptions_(a);this.toolboxPosition=m};Blockly.Options.prototype.parentWorkspace=null;Blockly.Options.prototype.setMetrics=null;Blockly.Options.prototype.getMetrics=null;\nBlockly.Options.parseZoomOptions_=function(a){a=a.zoom||{};var b={};b.controls=void 0===a.controls?!1:!!a.controls;b.wheel=void 0===a.wheel?!1:!!a.wheel;b.startScale=void 0===a.startScale?1:parseFloat(a.startScale);b.maxScale=void 0===a.maxScale?3:parseFloat(a.maxScale);b.minScale=void 0===a.minScale?.3:parseFloat(a.minScale);b.scaleSpeed=void 0===a.scaleSpeed?1.2:parseFloat(a.scaleSpeed);return b};\nBlockly.Options.parseGridOptions_=function(a){a=a.grid||{};var b={};b.spacing=parseFloat(a.spacing)||0;b.colour=a.colour||"#888";b.length=parseFloat(a.length)||1;b.snap=0<b.spacing&&!!a.snap;return b};Blockly.Options.parseToolboxTree=function(a){a?("string"!=typeof a&&("undefined"==typeof XSLTProcessor&&a.outerHTML?a=a.outerHTML:a instanceof Element||(a=null)),"string"==typeof a&&(a=Blockly.Xml.textToDom(a))):a=null;return a};Blockly.ScrollbarPair=function(a){this.workspace_=a;this.hScroll=new Blockly.Scrollbar(a,!0,!0);this.vScroll=new Blockly.Scrollbar(a,!1,!0);this.corner_=Blockly.createSvgElement("rect",{height:Blockly.Scrollbar.scrollbarThickness,width:Blockly.Scrollbar.scrollbarThickness,"class":"blocklyScrollbarBackground"},null);Blockly.Scrollbar.insertAfter_(this.corner_,a.getBubbleCanvas())};Blockly.ScrollbarPair.prototype.oldHostMetrics_=null;\nBlockly.ScrollbarPair.prototype.dispose=function(){goog.dom.removeNode(this.corner_);this.oldHostMetrics_=this.workspace_=this.corner_=null;this.hScroll.dispose();this.hScroll=null;this.vScroll.dispose();this.vScroll=null};\nBlockly.ScrollbarPair.prototype.resize=function(){var a=this.workspace_.getMetrics();if(a){var b=!1,c=!1;this.oldHostMetrics_&&this.oldHostMetrics_.viewWidth==a.viewWidth&&this.oldHostMetrics_.viewHeight==a.viewHeight&&this.oldHostMetrics_.absoluteTop==a.absoluteTop&&this.oldHostMetrics_.absoluteLeft==a.absoluteLeft?(this.oldHostMetrics_&&this.oldHostMetrics_.contentWidth==a.contentWidth&&this.oldHostMetrics_.viewLeft==a.viewLeft&&this.oldHostMetrics_.contentLeft==a.contentLeft||(b=!0),this.oldHostMetrics_&&\nthis.oldHostMetrics_.contentHeight==a.contentHeight&&this.oldHostMetrics_.viewTop==a.viewTop&&this.oldHostMetrics_.contentTop==a.contentTop||(c=!0)):c=b=!0;b&&this.hScroll.resize(a);c&&this.vScroll.resize(a);this.oldHostMetrics_&&this.oldHostMetrics_.viewWidth==a.viewWidth&&this.oldHostMetrics_.absoluteLeft==a.absoluteLeft||this.corner_.setAttribute("x",this.vScroll.position_.x);this.oldHostMetrics_&&this.oldHostMetrics_.viewHeight==a.viewHeight&&this.oldHostMetrics_.absoluteTop==a.absoluteTop||this.corner_.setAttribute("y",\nthis.hScroll.position_.y);this.oldHostMetrics_=a}};Blockly.ScrollbarPair.prototype.set=function(a,b){var c={},d=a*this.hScroll.ratio_,e=b*this.vScroll.ratio_,f=this.vScroll.scrollViewSize_;c.x=this.getRatio_(d,this.hScroll.scrollViewSize_);c.y=this.getRatio_(e,f);this.workspace_.setMetrics(c);this.hScroll.setHandlePosition(d);this.vScroll.setHandlePosition(e)};Blockly.ScrollbarPair.prototype.getRatio_=function(a,b){var c=a/b;return isNaN(c)?0:c};\nBlockly.Scrollbar=function(a,b,c){this.workspace_=a;this.pair_=c||!1;this.horizontal_=b;this.oldHostMetrics_=null;this.createDom_();this.position_=new goog.math.Coordinate(0,0);b?(this.svgBackground_.setAttribute("height",Blockly.Scrollbar.scrollbarThickness),this.svgHandle_.setAttribute("height",Blockly.Scrollbar.scrollbarThickness-5),this.svgHandle_.setAttribute("y",2.5),this.lengthAttribute_="width",this.positionAttribute_="x"):(this.svgBackground_.setAttribute("width",Blockly.Scrollbar.scrollbarThickness),\nthis.svgHandle_.setAttribute("width",Blockly.Scrollbar.scrollbarThickness-5),this.svgHandle_.setAttribute("x",2.5),this.lengthAttribute_="height",this.positionAttribute_="y");this.onMouseDownBarWrapper_=Blockly.bindEventWithChecks_(this.svgBackground_,"mousedown",this,this.onMouseDownBar_);this.onMouseDownHandleWrapper_=Blockly.bindEventWithChecks_(this.svgHandle_,"mousedown",this,this.onMouseDownHandle_)};Blockly.Scrollbar.prototype.scrollViewSize_=0;Blockly.Scrollbar.prototype.handleLength_=0;\nBlockly.Scrollbar.prototype.handlePosition_=0;Blockly.Scrollbar.prototype.isVisible_=!0;Blockly.Scrollbar.scrollbarThickness=15;goog.events.BrowserFeature.TOUCH_ENABLED&&(Blockly.Scrollbar.scrollbarThickness=25);\nBlockly.Scrollbar.metricsAreEquivalent_=function(a,b){return a&&b&&a.viewWidth==b.viewWidth&&a.viewHeight==b.viewHeight&&a.viewLeft==b.viewLeft&&a.viewTop==b.viewTop&&a.absoluteTop==b.absoluteTop&&a.absoluteLeft==b.absoluteLeft&&a.contentWidth==b.contentWidth&&a.contentHeight==b.contentHeight&&a.contentLeft==b.contentLeft&&a.contentTop==b.contentTop?!0:!1};\nBlockly.Scrollbar.prototype.dispose=function(){this.cleanUp_();Blockly.unbindEvent_(this.onMouseDownBarWrapper_);this.onMouseDownBarWrapper_=null;Blockly.unbindEvent_(this.onMouseDownHandleWrapper_);this.onMouseDownHandleWrapper_=null;goog.dom.removeNode(this.svgGroup_);this.workspace_=this.svgHandle_=this.svgBackground_=this.svgGroup_=null};Blockly.Scrollbar.prototype.setHandleLength_=function(a){this.handleLength_=a;this.svgHandle_.setAttribute(this.lengthAttribute_,this.handleLength_)};\nBlockly.Scrollbar.prototype.setHandlePosition=function(a){this.handlePosition_=a;this.svgHandle_.setAttribute(this.positionAttribute_,this.handlePosition_)};Blockly.Scrollbar.prototype.setScrollViewSize_=function(a){this.scrollViewSize_=a;this.svgBackground_.setAttribute(this.lengthAttribute_,this.scrollViewSize_)};Blockly.Scrollbar.prototype.setPosition=function(a,b){this.position_.x=a;this.position_.y=b;this.svgGroup_.setAttribute("transform","translate("+this.position_.x+","+this.position_.y+")")};\nBlockly.Scrollbar.prototype.resize=function(a){if(!a&&(a=this.workspace_.getMetrics(),!a))return;Blockly.Scrollbar.metricsAreEquivalent_(a,this.oldHostMetrics_)||(this.oldHostMetrics_=a,this.horizontal_?this.resizeHorizontal_(a):this.resizeVertical_(a),this.onScroll_())};Blockly.Scrollbar.prototype.resizeHorizontal_=function(a){this.resizeViewHorizontal(a)};\nBlockly.Scrollbar.prototype.resizeViewHorizontal=function(a){var b=a.viewWidth-1;this.pair_&&(b-=Blockly.Scrollbar.scrollbarThickness);this.setScrollViewSize_(Math.max(0,b));b=a.absoluteLeft+.5;this.pair_&&this.workspace_.RTL&&(b+=Blockly.Scrollbar.scrollbarThickness);this.setPosition(b,a.absoluteTop+a.viewHeight-Blockly.Scrollbar.scrollbarThickness-.5);this.resizeContentHorizontal(a)};\nBlockly.Scrollbar.prototype.resizeContentHorizontal=function(a){this.pair_||this.setVisible(this.scrollViewSize_<a.contentWidth);this.ratio_=this.scrollViewSize_/a.contentWidth;if(-Infinity==this.ratio_||Infinity==this.ratio_||isNaN(this.ratio_))this.ratio_=0;this.setHandleLength_(Math.max(0,a.viewWidth*this.ratio_));this.setHandlePosition(this.constrainHandle_((a.viewLeft-a.contentLeft)*this.ratio_))};Blockly.Scrollbar.prototype.resizeVertical_=function(a){this.resizeViewVertical(a)};\nBlockly.Scrollbar.prototype.resizeViewVertical=function(a){var b=a.viewHeight-1;this.pair_&&(b-=Blockly.Scrollbar.scrollbarThickness);this.setScrollViewSize_(Math.max(0,b));b=a.absoluteLeft+.5;this.workspace_.RTL||(b+=a.viewWidth-Blockly.Scrollbar.scrollbarThickness-1);this.setPosition(b,a.absoluteTop+.5);this.resizeContentVertical(a)};\nBlockly.Scrollbar.prototype.resizeContentVertical=function(a){this.pair_||this.setVisible(this.scrollViewSize_<a.contentHeight);this.ratio_=this.scrollViewSize_/a.contentHeight;if(-Infinity==this.ratio_||Infinity==this.ratio_||isNaN(this.ratio_))this.ratio_=0;this.setHandleLength_(Math.max(0,a.viewHeight*this.ratio_));this.setHandlePosition(this.constrainHandle_((a.viewTop-a.contentTop)*this.ratio_))};\nBlockly.Scrollbar.prototype.createDom_=function(){this.svgGroup_=Blockly.createSvgElement("g",{"class":"blocklyScrollbar"+(this.horizontal_?"Horizontal":"Vertical")},null);this.svgBackground_=Blockly.createSvgElement("rect",{"class":"blocklyScrollbarBackground"},this.svgGroup_);var a=Math.floor((Blockly.Scrollbar.scrollbarThickness-5)/2);this.svgHandle_=Blockly.createSvgElement("rect",{"class":"blocklyScrollbarHandle",rx:a,ry:a},this.svgGroup_);Blockly.Scrollbar.insertAfter_(this.svgGroup_,this.workspace_.getBubbleCanvas())};\nBlockly.Scrollbar.prototype.isVisible=function(){return this.isVisible_};Blockly.Scrollbar.prototype.setVisible=function(a){if(a!=this.isVisible()){if(this.pair_)throw"Unable to toggle visibility of paired scrollbars.";(this.isVisible_=a)?this.svgGroup_.setAttribute("display","block"):(this.workspace_.setMetrics({x:0,y:0}),this.svgGroup_.setAttribute("display","none"))}};\nBlockly.Scrollbar.prototype.onMouseDownBar_=function(a){Blockly.Touch.clearTouchIdentifier();this.cleanUp_();if(Blockly.isRightButton(a))a.stopPropagation();else{var b=Blockly.mouseToSvg(a,this.workspace_.getParentSvg(),this.workspace_.getInverseScreenCTM()),b=this.horizontal_?b.x:b.y,c=Blockly.getSvgXY_(this.svgHandle_,this.workspace_),c=this.horizontal_?c.x:c.y,d=this.handlePosition_,e=.95*this.handleLength_;b<=c?d-=e:b>=c+this.handleLength_&&(d+=e);this.setHandlePosition(this.constrainHandle_(d));\nthis.onScroll_();a.stopPropagation();a.preventDefault()}};\nBlockly.Scrollbar.prototype.onMouseDownHandle_=function(a){this.cleanUp_();Blockly.isRightButton(a)?a.stopPropagation():(this.startDragHandle=this.handlePosition_,this.startDragMouse=this.horizontal_?a.clientX:a.clientY,Blockly.Scrollbar.onMouseUpWrapper_=Blockly.bindEventWithChecks_(document,"mouseup",this,this.onMouseUpHandle_),Blockly.Scrollbar.onMouseMoveWrapper_=Blockly.bindEventWithChecks_(document,"mousemove",this,this.onMouseMoveHandle_),a.stopPropagation(),a.preventDefault())};\nBlockly.Scrollbar.prototype.onMouseMoveHandle_=function(a){this.setHandlePosition(this.constrainHandle_(this.startDragHandle+((this.horizontal_?a.clientX:a.clientY)-this.startDragMouse)));this.onScroll_()};Blockly.Scrollbar.prototype.onMouseUpHandle_=function(){Blockly.Touch.clearTouchIdentifier();this.cleanUp_()};\nBlockly.Scrollbar.prototype.cleanUp_=function(){Blockly.hideChaff(!0);Blockly.Scrollbar.onMouseUpWrapper_&&(Blockly.unbindEvent_(Blockly.Scrollbar.onMouseUpWrapper_),Blockly.Scrollbar.onMouseUpWrapper_=null);Blockly.Scrollbar.onMouseMoveWrapper_&&(Blockly.unbindEvent_(Blockly.Scrollbar.onMouseMoveWrapper_),Blockly.Scrollbar.onMouseMoveWrapper_=null)};\nBlockly.Scrollbar.prototype.constrainHandle_=function(a){return a=0>=a||isNaN(a)||this.scrollViewSize_<this.handleLength_?0:Math.min(a,this.scrollViewSize_-this.handleLength_)};Blockly.Scrollbar.prototype.onScroll_=function(){var a=this.handlePosition_/this.scrollViewSize_;isNaN(a)&&(a=0);var b={};this.horizontal_?b.x=a:b.y=a;this.workspace_.setMetrics(b)};Blockly.Scrollbar.prototype.set=function(a){this.setHandlePosition(this.constrainHandle_(a*this.ratio_));this.onScroll_()};\nBlockly.Scrollbar.insertAfter_=function(a,b){var c=b.nextSibling,d=b.parentNode;if(!d)throw"Reference node has no parent.";c?d.insertBefore(a,c):d.appendChild(a)};Blockly.Trashcan=function(a){this.workspace_=a};Blockly.Trashcan.prototype.WIDTH_=47;Blockly.Trashcan.prototype.BODY_HEIGHT_=44;Blockly.Trashcan.prototype.LID_HEIGHT_=16;Blockly.Trashcan.prototype.MARGIN_BOTTOM_=20;Blockly.Trashcan.prototype.MARGIN_SIDE_=20;Blockly.Trashcan.prototype.MARGIN_HOTSPOT_=10;Blockly.Trashcan.prototype.SPRITE_LEFT_=0;Blockly.Trashcan.prototype.SPRITE_TOP_=32;Blockly.Trashcan.prototype.isOpen=!1;Blockly.Trashcan.prototype.svgGroup_=null;\nBlockly.Trashcan.prototype.svgLid_=null;Blockly.Trashcan.prototype.lidTask_=0;Blockly.Trashcan.prototype.lidOpen_=0;Blockly.Trashcan.prototype.left_=0;Blockly.Trashcan.prototype.top_=0;\nBlockly.Trashcan.prototype.createDom=function(){this.svgGroup_=Blockly.createSvgElement("g",{"class":"blocklyTrash"},null);var a=String(Math.random()).substring(2),b=Blockly.createSvgElement("clipPath",{id:"blocklyTrashBodyClipPath"+a},this.svgGroup_);Blockly.createSvgElement("rect",{width:this.WIDTH_,height:this.BODY_HEIGHT_,y:this.LID_HEIGHT_},b);Blockly.createSvgElement("image",{width:Blockly.SPRITE.width,x:-this.SPRITE_LEFT_,height:Blockly.SPRITE.height,y:-this.SPRITE_TOP_,"clip-path":"url(#blocklyTrashBodyClipPath"+\na+")"},this.svgGroup_).setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",this.workspace_.options.pathToMedia+Blockly.SPRITE.url);b=Blockly.createSvgElement("clipPath",{id:"blocklyTrashLidClipPath"+a},this.svgGroup_);Blockly.createSvgElement("rect",{width:this.WIDTH_,height:this.LID_HEIGHT_},b);this.svgLid_=Blockly.createSvgElement("image",{width:Blockly.SPRITE.width,x:-this.SPRITE_LEFT_,height:Blockly.SPRITE.height,y:-this.SPRITE_TOP_,"clip-path":"url(#blocklyTrashLidClipPath"+a+")"},this.svgGroup_);\nthis.svgLid_.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",this.workspace_.options.pathToMedia+Blockly.SPRITE.url);Blockly.bindEventWithChecks_(this.svgGroup_,"mouseup",this,this.click);this.animateLid_();return this.svgGroup_};Blockly.Trashcan.prototype.init=function(a){this.bottom_=this.MARGIN_BOTTOM_+a;this.setOpen_(!1);return this.bottom_+this.BODY_HEIGHT_+this.LID_HEIGHT_};\nBlockly.Trashcan.prototype.dispose=function(){this.svgGroup_&&(goog.dom.removeNode(this.svgGroup_),this.svgGroup_=null);this.workspace_=this.svgLid_=null;goog.Timer.clear(this.lidTask_)};\nBlockly.Trashcan.prototype.position=function(){var a=this.workspace_.getMetrics();a&&(this.workspace_.RTL?(this.left_=this.MARGIN_SIDE_+Blockly.Scrollbar.scrollbarThickness,a.toolboxPosition==Blockly.TOOLBOX_AT_LEFT&&(this.left_+=a.flyoutWidth,this.workspace_.toolbox_&&(this.left_+=a.absoluteLeft))):(this.left_=a.viewWidth+a.absoluteLeft-this.WIDTH_-this.MARGIN_SIDE_-Blockly.Scrollbar.scrollbarThickness,a.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT&&(this.left_-=a.flyoutWidth)),this.top_=a.viewHeight+\na.absoluteTop-(this.BODY_HEIGHT_+this.LID_HEIGHT_)-this.bottom_,a.toolboxPosition==Blockly.TOOLBOX_AT_BOTTOM&&(this.top_-=a.flyoutHeight),this.svgGroup_.setAttribute("transform","translate("+this.left_+","+this.top_+")"))};\nBlockly.Trashcan.prototype.getClientRect=function(){if(!this.svgGroup_)return null;var a=this.svgGroup_.getBoundingClientRect();return new goog.math.Rect(a.left+this.SPRITE_LEFT_-this.MARGIN_HOTSPOT_,a.top+this.SPRITE_TOP_-this.MARGIN_HOTSPOT_,this.WIDTH_+2*this.MARGIN_HOTSPOT_,this.LID_HEIGHT_+this.BODY_HEIGHT_+2*this.MARGIN_HOTSPOT_)};Blockly.Trashcan.prototype.setOpen_=function(a){this.isOpen!=a&&(goog.Timer.clear(this.lidTask_),this.isOpen=a,this.animateLid_())};\nBlockly.Trashcan.prototype.animateLid_=function(){this.lidOpen_+=this.isOpen?.2:-.2;this.lidOpen_=goog.math.clamp(this.lidOpen_,0,1);var a=45*this.lidOpen_;this.svgLid_.setAttribute("transform","rotate("+(this.workspace_.RTL?-a:a)+","+(this.workspace_.RTL?4:this.WIDTH_-4)+","+(this.LID_HEIGHT_-2)+")");a=goog.math.lerp(.4,.8,this.lidOpen_);this.svgGroup_.style.opacity=a;0<this.lidOpen_&&1>this.lidOpen_&&(this.lidTask_=goog.Timer.callOnce(this.animateLid_,20,this))};\nBlockly.Trashcan.prototype.close=function(){this.setOpen_(!1)};Blockly.Trashcan.prototype.click=function(){var a=this.workspace_.startScrollX-this.workspace_.scrollX,b=this.workspace_.startScrollY-this.workspace_.scrollY;Math.sqrt(a*a+b*b)>Blockly.DRAG_RADIUS||console.log("TODO: Inspect trash.")};Blockly.Xml={};Blockly.Xml.workspaceToDom=function(a,b){for(var c=goog.dom.createDom("xml"),d=a.getTopBlocks(!0),e=0,f;f=d[e];e++)c.appendChild(Blockly.Xml.blockToDomWithXY(f,b));return c};Blockly.Xml.blockToDomWithXY=function(a,b){var c;a.workspace.RTL&&(c=a.workspace.getWidth());var d=Blockly.Xml.blockToDom(a,b),e=a.getRelativeToSurfaceXY();d.setAttribute("x",Math.round(a.workspace.RTL?c-e.x:e.x));d.setAttribute("y",Math.round(e.y));return d};\nBlockly.Xml.blockToDom=function(a,b){var c=goog.dom.createDom(a.isShadow()?"shadow":"block");c.setAttribute("type",a.type);b||c.setAttribute("id",a.id);if(a.mutationToDom){var d=a.mutationToDom();d&&(d.hasChildNodes()||d.hasAttributes())&&c.appendChild(d)}for(var d=0,e;e=a.inputList[d];d++)for(var f=0,g;g=e.fieldRow[f];f++)if(g.name&&g.EDITABLE){var h=goog.dom.createDom("field",null,g.getValue());h.setAttribute("name",g.name);c.appendChild(h)}if(d=a.getCommentText())d=goog.dom.createDom("comment",\nnull,d),"object"==typeof a.comment&&(d.setAttribute("pinned",a.comment.isVisible()),e=a.comment.getBubbleSize(),d.setAttribute("h",e.height),d.setAttribute("w",e.width)),c.appendChild(d);a.data&&(d=goog.dom.createDom("data",null,a.data),c.appendChild(d));for(d=0;e=a.inputList[d];d++){var k;g=!0;e.type!=Blockly.DUMMY_INPUT&&(h=e.connection.targetBlock(),e.type==Blockly.INPUT_VALUE?k=goog.dom.createDom("value"):e.type==Blockly.NEXT_STATEMENT&&(k=goog.dom.createDom("statement")),f=e.connection.getShadowDom(),\n!f||h&&h.isShadow()||k.appendChild(Blockly.Xml.cloneShadow_(f)),h&&(k.appendChild(Blockly.Xml.blockToDom(h,b)),g=!1),k.setAttribute("name",e.name),g||c.appendChild(k))}a.inputsInlineDefault!=a.inputsInline&&c.setAttribute("inline",a.inputsInline);a.isCollapsed()&&c.setAttribute("collapsed",!0);a.disabled&&c.setAttribute("disabled",!0);a.isDeletable()||a.isShadow()||c.setAttribute("deletable",!1);a.isMovable()||a.isShadow()||c.setAttribute("movable",!1);a.isEditable()||c.setAttribute("editable",!1);\nif(d=a.getNextBlock())k=goog.dom.createDom("next",null,Blockly.Xml.blockToDom(d,b)),c.appendChild(k);f=a.nextConnection&&a.nextConnection.getShadowDom();!f||d&&d.isShadow()||k.appendChild(Blockly.Xml.cloneShadow_(f));return c};\nBlockly.Xml.cloneShadow_=function(a){for(var b=a=a.cloneNode(!0),c;b;)if(b.firstChild)b=b.firstChild;else{for(;b&&!b.nextSibling;)c=b,b=b.parentNode,3==c.nodeType&&""==c.data.trim()&&b.firstChild!=c&&goog.dom.removeNode(c);b&&(c=b,b=b.nextSibling,3==c.nodeType&&""==c.data.trim()&&goog.dom.removeNode(c))}return a};Blockly.Xml.domToText=function(a){return(new XMLSerializer).serializeToString(a)};\nBlockly.Xml.domToPrettyText=function(a){a=Blockly.Xml.domToText(a).split("<");for(var b="",c=1;c<a.length;c++){var d=a[c];"/"==d[0]&&(b=b.substring(2));a[c]=b+"<"+d;"/"!=d[0]&&"/>"!=d.slice(-2)&&(b+="  ")}a=a.join("\\n");a=a.replace(/(<(\\w+)\\b[^>]*>[^\\n]*)\\n *<\\/\\2>/g,"$1</$2>");return a.replace(/^\\n/,"")};\nBlockly.Xml.textToDom=function(a){(a=(new DOMParser).parseFromString(a,"text/xml"))&&a.firstChild&&"xml"==a.firstChild.nodeName.toLowerCase()&&a.firstChild===a.lastChild||goog.asserts.fail("Blockly.Xml.textToDom did not obtain a valid XML tree.");return a.firstChild};\nBlockly.Xml.domToWorkspace=function(a,b){if(a instanceof Blockly.Workspace){var c=a;a=b;b=c;console.warn("Deprecated call to Blockly.Xml.domToWorkspace, swap the arguments.")}var d;b.RTL&&(d=b.getWidth());Blockly.Field.startCache();var c=a.childNodes.length,e=Blockly.Events.getGroup();e||Blockly.Events.setGroup(!0);for(var f=0;f<c;f++){var g=a.childNodes[f],h=g.nodeName.toLowerCase();if("block"==h||"shadow"==h&&!Blockly.Events.recordUndo){var h=Blockly.Xml.domToBlock(g,b),k=parseInt(g.getAttribute("x"),\n10),g=parseInt(g.getAttribute("y"),10);isNaN(k)||isNaN(g)||h.moveBy(b.RTL?d-k:k,g)}else"shadow"==h&&goog.asserts.fail("Shadow block cannot be a top-level block.")}e||Blockly.Events.setGroup(!1);Blockly.Field.stopCache();b.updateVariableList(!1)};\nBlockly.Xml.domToBlock=function(a,b){if(a instanceof Blockly.Workspace){var c=a;a=b;b=c;console.warn("Deprecated call to Blockly.Xml.domToBlock, swap the arguments.")}Blockly.Events.disable();try{var d=Blockly.Xml.domToBlockHeadless_(a,b);if(b.rendered){d.setConnectionsHidden(!0);for(var e=d.getDescendants(),f=e.length-1;0<=f;f--)e[f].initSvg();for(f=e.length-1;0<=f;f--)e[f].render(!1);setTimeout(function(){d.workspace&&d.setConnectionsHidden(!1)},1);d.updateDisabled();b.resizeContents()}}finally{Blockly.Events.enable()}Blockly.Events.isEnabled()&&\nBlockly.Events.fire(new Blockly.Events.Create(d));return d};\nBlockly.Xml.domToBlockHeadless_=function(a,b){var c=null,d=a.getAttribute("type");goog.asserts.assert(d,"Block type unspecified: %s",a.outerHTML);for(var e=a.getAttribute("id"),c=b.newBlock(d,e),f=null,e=0,g;g=a.childNodes[e];e++)if(3!=g.nodeType){for(var h=f=null,k=0,l;l=g.childNodes[k];k++)1==l.nodeType&&("block"==l.nodeName.toLowerCase()?f=l:"shadow"==l.nodeName.toLowerCase()&&(h=l));!f&&h&&(f=h);k=g.getAttribute("name");switch(g.nodeName.toLowerCase()){case "mutation":c.domToMutation&&(c.domToMutation(g),\nc.initSvg&&c.initSvg());break;case "comment":c.setCommentText(g.textContent);var p=g.getAttribute("pinned");p&&!c.isInFlyout&&setTimeout(function(){c.comment&&c.comment.setVisible&&c.comment.setVisible("true"==p)},1);f=parseInt(g.getAttribute("w"),10);g=parseInt(g.getAttribute("h"),10);!isNaN(f)&&!isNaN(g)&&c.comment&&c.comment.setVisible&&c.comment.setBubbleSize(f,g);break;case "data":c.data=g.textContent;break;case "title":case "field":f=c.getField(k);if(!f){console.warn("Ignoring non-existent field "+\nk+" in block "+d);break}f.setValue(g.textContent);break;case "value":case "statement":g=c.getInput(k);if(!g){console.warn("Ignoring non-existent input "+k+" in block "+d);break}h&&g.connection.setShadowDom(h);f&&(f=Blockly.Xml.domToBlockHeadless_(f,b),f.outputConnection?g.connection.connect(f.outputConnection):f.previousConnection?g.connection.connect(f.previousConnection):goog.asserts.fail("Child block does not have output or previous statement."));break;case "next":h&&c.nextConnection&&c.nextConnection.setShadowDom(h);\nf&&(goog.asserts.assert(c.nextConnection,"Next statement does not exist."),goog.asserts.assert(!c.nextConnection.isConnected(),"Next statement is already connected."),f=Blockly.Xml.domToBlockHeadless_(f,b),goog.asserts.assert(f.previousConnection,"Next block does not have previous statement."),c.nextConnection.connect(f.previousConnection));break;default:console.warn("Ignoring unknown tag: "+g.nodeName)}}(e=a.getAttribute("inline"))&&c.setInputsInline("true"==e);(e=a.getAttribute("disabled"))&&c.setDisabled("true"==\ne);(e=a.getAttribute("deletable"))&&c.setDeletable("true"==e);(e=a.getAttribute("movable"))&&c.setMovable("true"==e);(e=a.getAttribute("editable"))&&c.setEditable("true"==e);(e=a.getAttribute("collapsed"))&&c.setCollapsed("true"==e);if("shadow"==a.nodeName.toLowerCase()){d=c.getChildren();for(e=0;g=d[e];e++)goog.asserts.assert(g.isShadow(),"Shadow block not allowed non-shadow child.");c.setShadow(!0)}return c};\nBlockly.Xml.deleteNext=function(a){for(var b=0,c;c=a.childNodes[b];b++)if("next"==c.nodeName.toLowerCase()){a.removeChild(c);break}};goog.global.Blockly||(goog.global.Blockly={});goog.global.Blockly.Xml||(goog.global.Blockly.Xml={});goog.global.Blockly.Xml.domToText=Blockly.Xml.domToText;goog.global.Blockly.Xml.domToWorkspace=Blockly.Xml.domToWorkspace;goog.global.Blockly.Xml.textToDom=Blockly.Xml.textToDom;goog.global.Blockly.Xml.workspaceToDom=Blockly.Xml.workspaceToDom;\n// Copyright 2015 Google Inc.  Apache License 2.0\nBlockly.ZoomControls=function(a){this.workspace_=a};Blockly.ZoomControls.prototype.WIDTH_=32;Blockly.ZoomControls.prototype.HEIGHT_=110;Blockly.ZoomControls.prototype.MARGIN_BOTTOM_=20;Blockly.ZoomControls.prototype.MARGIN_SIDE_=20;Blockly.ZoomControls.prototype.svgGroup_=null;Blockly.ZoomControls.prototype.left_=0;Blockly.ZoomControls.prototype.top_=0;\nBlockly.ZoomControls.prototype.createDom=function(){var a=this.workspace_;this.svgGroup_=Blockly.createSvgElement("g",{"class":"blocklyZoom"},null);var b=String(Math.random()).substring(2),c=Blockly.createSvgElement("clipPath",{id:"blocklyZoomoutClipPath"+b},this.svgGroup_);Blockly.createSvgElement("rect",{width:32,height:32,y:77},c);var d=Blockly.createSvgElement("image",{width:Blockly.SPRITE.width,height:Blockly.SPRITE.height,x:-64,y:-15,"clip-path":"url(#blocklyZoomoutClipPath"+b+")"},this.svgGroup_);\nd.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a.options.pathToMedia+Blockly.SPRITE.url);c=Blockly.createSvgElement("clipPath",{id:"blocklyZoominClipPath"+b},this.svgGroup_);Blockly.createSvgElement("rect",{width:32,height:32,y:43},c);var e=Blockly.createSvgElement("image",{width:Blockly.SPRITE.width,height:Blockly.SPRITE.height,x:-32,y:-49,"clip-path":"url(#blocklyZoominClipPath"+b+")"},this.svgGroup_);e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a.options.pathToMedia+\nBlockly.SPRITE.url);c=Blockly.createSvgElement("clipPath",{id:"blocklyZoomresetClipPath"+b},this.svgGroup_);Blockly.createSvgElement("rect",{width:32,height:32},c);b=Blockly.createSvgElement("image",{width:Blockly.SPRITE.width,height:Blockly.SPRITE.height,y:-92,"clip-path":"url(#blocklyZoomresetClipPath"+b+")"},this.svgGroup_);b.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a.options.pathToMedia+Blockly.SPRITE.url);Blockly.bindEventWithChecks_(b,"mousedown",null,function(b){a.setScale(a.options.zoomOptions.startScale);\na.scrollCenter();Blockly.Touch.clearTouchIdentifier();b.stopPropagation();b.preventDefault()});Blockly.bindEventWithChecks_(e,"mousedown",null,function(b){a.zoomCenter(1);Blockly.Touch.clearTouchIdentifier();b.stopPropagation();b.preventDefault()});Blockly.bindEventWithChecks_(d,"mousedown",null,function(b){a.zoomCenter(-1);Blockly.Touch.clearTouchIdentifier();b.stopPropagation();b.preventDefault()});return this.svgGroup_};\nBlockly.ZoomControls.prototype.init=function(a){this.bottom_=this.MARGIN_BOTTOM_+a;return this.bottom_+this.HEIGHT_};Blockly.ZoomControls.prototype.dispose=function(){this.svgGroup_&&(goog.dom.removeNode(this.svgGroup_),this.svgGroup_=null);this.workspace_=null};\nBlockly.ZoomControls.prototype.position=function(){var a=this.workspace_.getMetrics();a&&(this.workspace_.RTL?(this.left_=this.MARGIN_SIDE_+Blockly.Scrollbar.scrollbarThickness,a.toolboxPosition==Blockly.TOOLBOX_AT_LEFT&&(this.left_+=a.flyoutWidth,this.workspace_.toolbox_&&(this.left_+=a.absoluteLeft))):(this.left_=a.viewWidth+a.absoluteLeft-this.WIDTH_-this.MARGIN_SIDE_-Blockly.Scrollbar.scrollbarThickness,a.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT&&(this.left_-=a.flyoutWidth)),this.top_=a.viewHeight+\na.absoluteTop-this.HEIGHT_-this.bottom_,a.toolboxPosition==Blockly.TOOLBOX_AT_BOTTOM&&(this.top_-=a.flyoutHeight),this.svgGroup_.setAttribute("transform","translate("+this.left_+","+this.top_+")"))};\n// Copyright 2014 Google Inc.  Apache License 2.0\nBlockly.WorkspaceSvg=function(a){Blockly.WorkspaceSvg.superClass_.constructor.call(this,a);this.getMetrics=a.getMetrics||Blockly.WorkspaceSvg.getTopLevelWorkspaceMetrics_;this.setMetrics=a.setMetrics||Blockly.WorkspaceSvg.setTopLevelWorkspaceMetrics_;Blockly.ConnectionDB.init(this);this.SOUNDS_=Object.create(null)};goog.inherits(Blockly.WorkspaceSvg,Blockly.Workspace);Blockly.WorkspaceSvg.prototype.resizeHandlerWrapper_=null;Blockly.WorkspaceSvg.prototype.rendered=!0;\nBlockly.WorkspaceSvg.prototype.isFlyout=!1;Blockly.WorkspaceSvg.prototype.isMutator=!1;Blockly.WorkspaceSvg.prototype.dragMode_=Blockly.DRAG_NONE;Blockly.WorkspaceSvg.prototype.scrollX=0;Blockly.WorkspaceSvg.prototype.scrollY=0;Blockly.WorkspaceSvg.prototype.startScrollX=0;Blockly.WorkspaceSvg.prototype.startScrollY=0;Blockly.WorkspaceSvg.prototype.dragDeltaXY_=null;Blockly.WorkspaceSvg.prototype.scale=1;Blockly.WorkspaceSvg.prototype.trashcan=null;Blockly.WorkspaceSvg.prototype.scrollbar=null;\nBlockly.WorkspaceSvg.prototype.lastSound_=null;Blockly.WorkspaceSvg.prototype.lastRecordedPageScroll_=null;Blockly.WorkspaceSvg.prototype.inverseScreenCTM_=null;Blockly.WorkspaceSvg.prototype.getInverseScreenCTM=function(){return this.inverseScreenCTM_};Blockly.WorkspaceSvg.prototype.updateInverseScreenCTM=function(){var a=this.getParentSvg().getScreenCTM();a&&(this.inverseScreenCTM_=a.inverse())};Blockly.WorkspaceSvg.prototype.setResizeHandlerWrapper=function(a){this.resizeHandlerWrapper_=a};\nBlockly.WorkspaceSvg.prototype.createDom=function(a){this.svgGroup_=Blockly.createSvgElement("g",{"class":"blocklyWorkspace"},null);a&&(this.svgBackground_=Blockly.createSvgElement("rect",{height:"100%",width:"100%","class":a},this.svgGroup_),"blocklyMainBackground"==a&&(this.svgBackground_.style.fill="url(#"+this.options.gridPattern.id+")"));this.svgBlockCanvas_=Blockly.createSvgElement("g",{"class":"blocklyBlockCanvas"},this.svgGroup_,this);this.svgBubbleCanvas_=Blockly.createSvgElement("g",{"class":"blocklyBubbleCanvas"},\nthis.svgGroup_,this);a=Blockly.Scrollbar.scrollbarThickness;this.options.hasTrashcan&&(a=this.addTrashcan_(a));this.options.zoomOptions&&this.options.zoomOptions.controls&&(a=this.addZoomControls_(a));if(!this.isFlyout){Blockly.bindEventWithChecks_(this.svgGroup_,"mousedown",this,this.onMouseDown_);var b=this;Blockly.bindEventWithChecks_(this.svgGroup_,"touchstart",null,function(a){Blockly.longStart_(a,b)});this.options.zoomOptions&&this.options.zoomOptions.wheel&&Blockly.bindEventWithChecks_(this.svgGroup_,\n"wheel",this,this.onMouseWheel_)}this.options.hasCategories?this.toolbox_=new Blockly.Toolbox(this):this.options.languageTree&&this.addFlyout_();this.updateGridPattern_();this.recordDeleteAreas();return this.svgGroup_};\nBlockly.WorkspaceSvg.prototype.dispose=function(){this.rendered=!1;Blockly.WorkspaceSvg.superClass_.dispose.call(this);this.svgGroup_&&(goog.dom.removeNode(this.svgGroup_),this.svgGroup_=null);this.svgBubbleCanvas_=this.svgBlockCanvas_=null;this.toolbox_&&(this.toolbox_.dispose(),this.toolbox_=null);this.flyout_&&(this.flyout_.dispose(),this.flyout_=null);this.trashcan&&(this.trashcan.dispose(),this.trashcan=null);this.scrollbar&&(this.scrollbar.dispose(),this.scrollbar=null);this.zoomControls_&&\n(this.zoomControls_.dispose(),this.zoomControls_=null);this.options.parentWorkspace||goog.dom.removeNode(this.getParentSvg().parentNode);this.resizeHandlerWrapper_&&(Blockly.unbindEvent_(this.resizeHandlerWrapper_),this.resizeHandlerWrapper_=null)};Blockly.WorkspaceSvg.prototype.newBlock=function(a,b){return new Blockly.BlockSvg(this,a,b)};\nBlockly.WorkspaceSvg.prototype.addTrashcan_=function(a){this.trashcan=new Blockly.Trashcan(this);var b=this.trashcan.createDom();this.svgGroup_.insertBefore(b,this.svgBlockCanvas_);return this.trashcan.init(a)};Blockly.WorkspaceSvg.prototype.addZoomControls_=function(a){this.zoomControls_=new Blockly.ZoomControls(this);var b=this.zoomControls_.createDom();this.svgGroup_.appendChild(b);return this.zoomControls_.init(a)};\nBlockly.WorkspaceSvg.prototype.addFlyout_=function(){this.flyout_=new Blockly.Flyout({disabledPatternId:this.options.disabledPatternId,parentWorkspace:this,RTL:this.RTL,oneBasedIndex:this.options.oneBasedIndex,horizontalLayout:this.horizontalLayout,toolboxPosition:this.options.toolboxPosition});this.flyout_.autoClose=!1;var a=this.flyout_.createDom();this.svgGroup_.insertBefore(a,this.svgBlockCanvas_)};\nBlockly.WorkspaceSvg.prototype.updateScreenCalculations_=function(){this.updateInverseScreenCTM();this.recordDeleteAreas()};Blockly.WorkspaceSvg.prototype.resizeContents=function(){this.scrollbar&&this.scrollbar.resize();this.updateInverseScreenCTM()};\nBlockly.WorkspaceSvg.prototype.resize=function(){this.toolbox_&&this.toolbox_.position();this.flyout_&&this.flyout_.position();this.trashcan&&this.trashcan.position();this.zoomControls_&&this.zoomControls_.position();this.scrollbar&&this.scrollbar.resize();this.updateScreenCalculations_()};Blockly.WorkspaceSvg.prototype.updateScreenCalculationsIfScrolled=function(){var a=goog.dom.getDocumentScroll();goog.math.Coordinate.equals(this.lastRecordedPageScroll_,a)||(this.lastRecordedPageScroll_=a,this.updateScreenCalculations_())};\nBlockly.WorkspaceSvg.prototype.getCanvas=function(){return this.svgBlockCanvas_};Blockly.WorkspaceSvg.prototype.getBubbleCanvas=function(){return this.svgBubbleCanvas_};Blockly.WorkspaceSvg.prototype.getParentSvg=function(){if(this.cachedParentSvg_)return this.cachedParentSvg_;for(var a=this.svgGroup_;a;){if("svg"==a.tagName)return this.cachedParentSvg_=a;a=a.parentNode}return null};\nBlockly.WorkspaceSvg.prototype.translate=function(a,b){var c="translate("+a+","+b+") scale("+this.scale+")";this.svgBlockCanvas_.setAttribute("transform",c);this.svgBubbleCanvas_.setAttribute("transform",c)};Blockly.WorkspaceSvg.prototype.getWidth=function(){var a=this.getMetrics();return a?a.viewWidth/this.scale:0};\nBlockly.WorkspaceSvg.prototype.setVisible=function(a){this.getParentSvg().style.display=a?"block":"none";this.toolbox_&&(this.toolbox_.HtmlDiv.style.display=a?"block":"none");a?(this.render(),this.toolbox_&&this.toolbox_.position()):Blockly.hideChaff(!0)};Blockly.WorkspaceSvg.prototype.render=function(){for(var a=this.getAllBlocks(),b=a.length-1;0<=b;b--)a[b].render(!1)};\nBlockly.WorkspaceSvg.prototype.traceOn=function(a){this.traceOn_=a;this.traceWrapper_&&(Blockly.unbindEvent_(this.traceWrapper_),this.traceWrapper_=null);a&&(this.traceWrapper_=Blockly.bindEventWithChecks_(this.svgBlockCanvas_,"blocklySelectChange",this,function(){this.traceOn_=!1}))};\nBlockly.WorkspaceSvg.prototype.highlightBlock=function(a){this.traceOn_&&Blockly.dragMode_!=Blockly.DRAG_NONE&&this.traceOn(!1);if(this.traceOn_){var b=null;if(a&&(b=this.getBlockById(a),!b))return;this.traceOn(!1);b?b.select():Blockly.selected&&Blockly.selected.unselect();var c=this;setTimeout(function(){c.traceOn(!0)},1)}};\nBlockly.WorkspaceSvg.prototype.paste=function(a){if(this.rendered&&!(a.getElementsByTagName("block").length>=this.remainingCapacity())){Blockly.terminateDrag_();Blockly.Events.disable();try{var b=Blockly.Xml.domToBlock(a,this),c=parseInt(a.getAttribute("x"),10),d=parseInt(a.getAttribute("y"),10);if(!isNaN(c)&&!isNaN(d)){this.RTL&&(c=-c);do{a=!1;for(var e=this.getAllBlocks(),f=0,g;g=e[f];f++){var h=g.getRelativeToSurfaceXY();if(1>=Math.abs(c-h.x)&&1>=Math.abs(d-h.y)){a=!0;break}}if(!a)for(var k=b.getConnections_(!1),\nf=0,l;l=k[f];f++)if(l.closest(Blockly.SNAP_RADIUS,new goog.math.Coordinate(c,d)).connection){a=!0;break}a&&(c=this.RTL?c-Blockly.SNAP_RADIUS:c+Blockly.SNAP_RADIUS,d+=2*Blockly.SNAP_RADIUS)}while(a);b.moveBy(c,d)}}finally{Blockly.Events.enable()}Blockly.Events.isEnabled()&&!b.isShadow()&&Blockly.Events.fire(new Blockly.Events.Create(b));b.select()}};\nBlockly.WorkspaceSvg.prototype.createVariable=function(a){Blockly.WorkspaceSvg.superClass_.createVariable.call(this,a);this.toolbox_&&this.toolbox_.flyout_&&!Blockly.Flyout.startFlyout_&&this.toolbox_.refreshSelection()};Blockly.WorkspaceSvg.prototype.recordDeleteAreas=function(){this.deleteAreaTrash_=this.trashcan?this.trashcan.getClientRect():null;this.deleteAreaToolbox_=this.flyout_?this.flyout_.getClientRect():this.toolbox_?this.toolbox_.getClientRect():null};\nBlockly.WorkspaceSvg.prototype.isDeleteArea=function(a){a=new goog.math.Coordinate(a.clientX,a.clientY);if(this.deleteAreaTrash_){if(this.deleteAreaTrash_.contains(a))return this.trashcan.setOpen_(!0),Blockly.Css.setCursor(Blockly.Css.Cursor.DELETE),!0;this.trashcan.setOpen_(!1)}if(this.deleteAreaToolbox_&&this.deleteAreaToolbox_.contains(a))return Blockly.Css.setCursor(Blockly.Css.Cursor.DELETE),!0;Blockly.Css.setCursor(Blockly.Css.Cursor.CLOSED);return!1};\nBlockly.WorkspaceSvg.prototype.onMouseDown_=function(a){this.markFocused();Blockly.isTargetInput_(a)?Blockly.Touch.clearTouchIdentifier():(Blockly.terminateDrag_(),Blockly.hideChaff(),a.target&&a.target.nodeName&&("svg"==a.target.nodeName.toLowerCase()||a.target==this.svgBackground_)&&Blockly.selected&&!this.options.readOnly&&Blockly.selected.unselect(),Blockly.isRightButton(a)?(this.showContextMenu_(a),Blockly.Touch.clearTouchIdentifier()):this.scrollbar&&(this.dragMode_=Blockly.DRAG_BEGIN,this.startDragMouseX=\na.clientX,this.startDragMouseY=a.clientY,this.startDragMetrics=this.getMetrics(),this.startScrollX=this.scrollX,this.startScrollY=this.scrollY,"mouseup"in Blockly.Touch.TOUCH_MAP&&(Blockly.Touch.onTouchUpWrapper_=Blockly.Touch.onTouchUpWrapper_||[],Blockly.Touch.onTouchUpWrapper_=Blockly.Touch.onTouchUpWrapper_.concat(Blockly.bindEventWithChecks_(document,"mouseup",null,Blockly.onMouseUp_))),Blockly.onMouseMoveWrapper_=Blockly.onMouseMoveWrapper_||[],Blockly.onMouseMoveWrapper_=Blockly.onMouseMoveWrapper_.concat(Blockly.bindEventWithChecks_(document,\n"mousemove",null,Blockly.onMouseMove_))),a.stopPropagation(),a.preventDefault())};Blockly.WorkspaceSvg.prototype.startDrag=function(a,b){var c=Blockly.mouseToSvg(a,this.getParentSvg(),this.getInverseScreenCTM());c.x/=this.scale;c.y/=this.scale;this.dragDeltaXY_=goog.math.Coordinate.difference(b,c)};\nBlockly.WorkspaceSvg.prototype.moveDrag=function(a){a=Blockly.mouseToSvg(a,this.getParentSvg(),this.getInverseScreenCTM());a.x/=this.scale;a.y/=this.scale;return goog.math.Coordinate.sum(this.dragDeltaXY_,a)};Blockly.WorkspaceSvg.prototype.isDragging=function(){return Blockly.dragMode_==Blockly.DRAG_FREE||Blockly.Flyout.startFlyout_&&Blockly.Flyout.startFlyout_.dragMode_==Blockly.DRAG_FREE||this.dragMode_==Blockly.DRAG_FREE};\nBlockly.WorkspaceSvg.prototype.onMouseWheel_=function(a){Blockly.terminateDrag_();var b=0<a.deltaY?-1:1,c=Blockly.mouseToSvg(a,this.getParentSvg(),this.getInverseScreenCTM());this.zoom(c.x,c.y,b);a.preventDefault()};\nBlockly.WorkspaceSvg.prototype.getBlocksBoundingBox=function(){var a=this.getTopBlocks(!1);if(!a.length)return{x:0,y:0,width:0,height:0};for(var b=a[0].getBoundingRectangle(),c=1;c<a.length;c++){var d=a[c].getBoundingRectangle();d.topLeft.x<b.topLeft.x&&(b.topLeft.x=d.topLeft.x);d.bottomRight.x>b.bottomRight.x&&(b.bottomRight.x=d.bottomRight.x);d.topLeft.y<b.topLeft.y&&(b.topLeft.y=d.topLeft.y);d.bottomRight.y>b.bottomRight.y&&(b.bottomRight.y=d.bottomRight.y)}return{x:b.topLeft.x,y:b.topLeft.y,width:b.bottomRight.x-\nb.topLeft.x,height:b.bottomRight.y-b.topLeft.y}};Blockly.WorkspaceSvg.prototype.cleanUp=function(){Blockly.Events.setGroup(!0);for(var a=this.getTopBlocks(!0),b=0,c=0,d;d=a[c];c++){var e=d.getRelativeToSurfaceXY();d.moveBy(-e.x,b-e.y);d.snapToGrid();b=d.getRelativeToSurfaceXY().y+d.getHeightWidth().height+Blockly.BlockSvg.MIN_BLOCK_Y}Blockly.Events.setGroup(!1);this.resizeContents()};\nBlockly.WorkspaceSvg.prototype.showContextMenu_=function(a){function b(a){if(a.isDeletable())m=m.concat(a.getDescendants());else{a=a.getChildren();for(var c=0;c<a.length;c++)b(a[c])}}function c(){Blockly.Events.setGroup(f);var a=m.shift();a&&(a.workspace?(a.dispose(!1,!0),setTimeout(c,10)):c());Blockly.Events.setGroup(!1)}if(!this.options.readOnly&&!this.isFlyout){var d=[],e=this.getTopBlocks(!0),f=Blockly.genUid(),g={};g.text=Blockly.Msg.UNDO;g.enabled=0<this.undoStack_.length;g.callback=this.undo.bind(this,\n!1);d.push(g);g={};g.text=Blockly.Msg.REDO;g.enabled=0<this.redoStack_.length;g.callback=this.undo.bind(this,!0);d.push(g);this.scrollbar&&(g={},g.text=Blockly.Msg.CLEAN_UP,g.enabled=1<e.length,g.callback=this.cleanUp.bind(this),d.push(g));if(this.options.collapse){for(var h=g=!1,k=0;k<e.length;k++)for(var l=e[k];l;)l.isCollapsed()?g=!0:h=!0,l=l.getNextBlock();var p=function(a){for(var b=0,c=0;c<e.length;c++)for(var d=e[c];d;)setTimeout(d.setCollapsed.bind(d,a),b),d=d.getNextBlock(),b+=10},h={enabled:h};\nh.text=Blockly.Msg.COLLAPSE_ALL;h.callback=function(){p(!0)};d.push(h);g={enabled:g};g.text=Blockly.Msg.EXPAND_ALL;g.callback=function(){p(!1)};d.push(g)}for(var m=[],k=0;k<e.length;k++)b(e[k]);g={text:1==m.length?Blockly.Msg.DELETE_BLOCK:Blockly.Msg.DELETE_X_BLOCKS.replace("%1",String(m.length)),enabled:0<m.length,callback:function(){(2>m.length||window.confirm(Blockly.Msg.DELETE_ALL_BLOCKS.replace("%1",String(m.length))))&&c()}};d.push(g);Blockly.ContextMenu.show(a,d,this.RTL)}};\nBlockly.WorkspaceSvg.prototype.loadAudio_=function(a,b){if(a.length){try{var c=new window.Audio}catch(h){return}for(var d,e=0;e<a.length;e++){var f=a[e],g=f.match(/\\.(\\w+)$/);if(g&&c.canPlayType("audio/"+g[1])){d=new window.Audio(f);break}}d&&d.play&&(this.SOUNDS_[b]=d)}};Blockly.WorkspaceSvg.prototype.preloadAudio_=function(){for(var a in this.SOUNDS_){var b=this.SOUNDS_[a];b.volume=.01;b.play();b.pause();if(goog.userAgent.IPAD||goog.userAgent.IPHONE)break}};\nBlockly.WorkspaceSvg.prototype.playAudio=function(a,b){var c=this.SOUNDS_[a];if(c){var d=new Date;d-this.lastSound_<Blockly.SOUND_LIMIT||(this.lastSound_=d,c=goog.userAgent.DOCUMENT_MODE&&9===goog.userAgent.DOCUMENT_MODE||goog.userAgent.IPAD||goog.userAgent.ANDROID?c:c.cloneNode(),c.volume=void 0===b?1:b,c.play())}else this.options.parentWorkspace&&this.options.parentWorkspace.playAudio(a,b)};\nBlockly.WorkspaceSvg.prototype.updateToolbox=function(a){if(a=Blockly.Options.parseToolboxTree(a)){if(!this.options.languageTree)throw"Existing toolbox is null.  Can\'t create new toolbox.";if(a.getElementsByTagName("category").length){if(!this.toolbox_)throw"Existing toolbox has no categories.  Can\'t change mode.";this.options.languageTree=a;this.toolbox_.populate_(a);this.toolbox_.addColour_()}else{if(!this.flyout_)throw"Existing toolbox has categories.  Can\'t change mode.";this.options.languageTree=\na;this.flyout_.show(a.childNodes)}}else if(this.options.languageTree)throw"Can\'t nullify an existing toolbox.";};Blockly.WorkspaceSvg.prototype.markFocused=function(){this.options.parentWorkspace?this.options.parentWorkspace.markFocused():Blockly.mainWorkspace=this};\nBlockly.WorkspaceSvg.prototype.zoom=function(a,b,c){var d=this.options.zoomOptions.scaleSpeed,e=this.getMetrics(),f=this.getParentSvg().createSVGPoint();f.x=a;f.y=b;f=f.matrixTransform(this.getCanvas().getCTM().inverse());a=f.x;b=f.y;f=this.getCanvas();d=1==c?d:1/d;c=this.scale*d;c>this.options.zoomOptions.maxScale?d=this.options.zoomOptions.maxScale/this.scale:c<this.options.zoomOptions.minScale&&(d=this.options.zoomOptions.minScale/this.scale);this.scale!=c&&(this.scrollbar&&(a=f.getCTM().translate(a*\n(1-d),b*(1-d)).scale(d),this.scrollX=a.e-e.absoluteLeft,this.scrollY=a.f-e.absoluteTop),this.setScale(c))};Blockly.WorkspaceSvg.prototype.zoomCenter=function(a){var b=this.getMetrics();this.zoom(b.viewWidth/2,b.viewHeight/2,a)};\nBlockly.WorkspaceSvg.prototype.zoomToFit=function(){var a=this.getMetrics(),b=this.getBlocksBoundingBox(),c=b.width,b=b.height;if(c){var d=a.viewWidth,e=a.viewHeight;this.flyout_&&(d-=this.flyout_.width_);this.scrollbar||(c+=a.contentLeft,b+=a.contentTop);this.setScale(Math.min(d/c,e/b));this.scrollCenter()}};\nBlockly.WorkspaceSvg.prototype.scrollCenter=function(){if(this.scrollbar){var a=this.getMetrics(),b=(a.contentWidth-a.viewWidth)/2;this.flyout_&&(b-=this.flyout_.width_/2);this.scrollbar.set(b,(a.contentHeight-a.viewHeight)/2)}};\nBlockly.WorkspaceSvg.prototype.setScale=function(a){this.options.zoomOptions.maxScale&&a>this.options.zoomOptions.maxScale?a=this.options.zoomOptions.maxScale:this.options.zoomOptions.minScale&&a<this.options.zoomOptions.minScale&&(a=this.options.zoomOptions.minScale);this.scale=a;this.updateGridPattern_();this.scrollbar?this.scrollbar.resize():this.translate(this.scrollX,this.scrollY);Blockly.hideChaff(!1);this.flyout_&&this.flyout_.reflow()};\nBlockly.WorkspaceSvg.prototype.updateGridPattern_=function(){if(this.options.gridPattern){var a=this.options.gridOptions.spacing*this.scale||100;this.options.gridPattern.setAttribute("width",a);this.options.gridPattern.setAttribute("height",a);var a=Math.floor(this.options.gridOptions.spacing/2)+.5,b=a-this.options.gridOptions.length/2,c=a+this.options.gridOptions.length/2,d=this.options.gridPattern.firstChild,e=d&&d.nextSibling,a=a*this.scale,b=b*this.scale,c=c*this.scale;d&&(d.setAttribute("stroke-width",\nthis.scale),d.setAttribute("x1",b),d.setAttribute("y1",a),d.setAttribute("x2",c),d.setAttribute("y2",a));e&&(e.setAttribute("stroke-width",this.scale),e.setAttribute("x1",a),e.setAttribute("y1",b),e.setAttribute("x2",a),e.setAttribute("y2",c))}};\nBlockly.WorkspaceSvg.getTopLevelWorkspaceMetrics_=function(){var a=Blockly.svgSize(this.getParentSvg());if(this.toolbox_)if(this.toolboxPosition==Blockly.TOOLBOX_AT_TOP||this.toolboxPosition==Blockly.TOOLBOX_AT_BOTTOM)a.height-=this.toolbox_.getHeight();else if(this.toolboxPosition==Blockly.TOOLBOX_AT_LEFT||this.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT)a.width-=this.toolbox_.getWidth();var b=Blockly.Flyout.prototype.CORNER_RADIUS-1,c=a.width-b,d=a.height-b,e=this.getBlocksBoundingBox(),f=e.width*\nthis.scale,g=e.height*this.scale,h=e.x*this.scale,k=e.y*this.scale;this.scrollbar?(b=Math.min(h-c/2,h+f-c),c=Math.max(h+f+c/2,h+c),f=Math.min(k-d/2,k+g-d),d=Math.max(k+g+d/2,k+d)):(b=e.x,c=b+e.width,f=e.y,d=f+e.height);e=0;this.toolbox_&&this.toolboxPosition==Blockly.TOOLBOX_AT_LEFT&&(e=this.toolbox_.getWidth());g=0;this.toolbox_&&this.toolboxPosition==Blockly.TOOLBOX_AT_TOP&&(g=this.toolbox_.getHeight());return{viewHeight:a.height,viewWidth:a.width,contentHeight:d-f,contentWidth:c-b,viewTop:-this.scrollY,\nviewLeft:-this.scrollX,contentTop:f,contentLeft:b,absoluteTop:g,absoluteLeft:e,toolboxWidth:this.toolbox_?this.toolbox_.getWidth():0,toolboxHeight:this.toolbox_?this.toolbox_.getHeight():0,flyoutWidth:this.flyout_?this.flyout_.getWidth():0,flyoutHeight:this.flyout_?this.flyout_.getHeight():0,toolboxPosition:this.toolboxPosition}};\nBlockly.WorkspaceSvg.setTopLevelWorkspaceMetrics_=function(a){if(!this.scrollbar)throw"Attempt to set top level workspace scroll without scrollbars.";var b=this.getMetrics();goog.isNumber(a.x)&&(this.scrollX=-b.contentWidth*a.x-b.contentLeft);goog.isNumber(a.y)&&(this.scrollY=-b.contentHeight*a.y-b.contentTop);a=this.scrollX+b.absoluteLeft;b=this.scrollY+b.absoluteTop;this.translate(a,b);this.options.gridPattern&&(this.options.gridPattern.setAttribute("x",a),this.options.gridPattern.setAttribute("y",\nb),goog.userAgent.IE&&this.updateGridPattern_())};Blockly.WorkspaceSvg.prototype.setVisible=Blockly.WorkspaceSvg.prototype.setVisible;Blockly.Mutator=function(a){Blockly.Mutator.superClass_.constructor.call(this,null);this.quarkNames_=a};goog.inherits(Blockly.Mutator,Blockly.Icon);Blockly.Mutator.prototype.workspaceWidth_=0;Blockly.Mutator.prototype.workspaceHeight_=0;\nBlockly.Mutator.prototype.drawIcon_=function(a){Blockly.createSvgElement("rect",{"class":"blocklyIconShape",rx:"4",ry:"4",height:"16",width:"16"},a);Blockly.createSvgElement("path",{"class":"blocklyIconSymbol",d:"m4.203,7.296 0,1.368 -0.92,0.677 -0.11,0.41 0.9,1.559 0.41,0.11 1.043,-0.457 1.187,0.683 0.127,1.134 0.3,0.3 1.8,0 0.3,-0.299 0.127,-1.138 1.185,-0.682 1.046,0.458 0.409,-0.11 0.9,-1.559 -0.11,-0.41 -0.92,-0.677 0,-1.366 0.92,-0.677 0.11,-0.41 -0.9,-1.559 -0.409,-0.109 -1.046,0.458 -1.185,-0.682 -0.127,-1.138 -0.3,-0.299 -1.8,0 -0.3,0.3 -0.126,1.135 -1.187,0.682 -1.043,-0.457 -0.41,0.11 -0.899,1.559 0.108,0.409z"},a);\nBlockly.createSvgElement("circle",{"class":"blocklyIconShape",r:"2.7",cx:"8",cy:"8"},a)};Blockly.Mutator.prototype.iconClick_=function(a){this.block_.isEditable()&&Blockly.Icon.prototype.iconClick_.call(this,a)};\nBlockly.Mutator.prototype.createEditor_=function(){this.svgDialog_=Blockly.createSvgElement("svg",{x:Blockly.Bubble.BORDER_WIDTH,y:Blockly.Bubble.BORDER_WIDTH},null);if(this.quarkNames_.length)for(var a=goog.dom.createDom("xml"),b=0,c;c=this.quarkNames_[b];b++)a.appendChild(goog.dom.createDom("block",{type:c}));else a=null;a={languageTree:a,parentWorkspace:this.block_.workspace,pathToMedia:this.block_.workspace.options.pathToMedia,RTL:this.block_.RTL,toolboxPosition:this.block_.RTL?Blockly.TOOLBOX_AT_RIGHT:\nBlockly.TOOLBOX_AT_LEFT,horizontalLayout:!1,getMetrics:this.getFlyoutMetrics_.bind(this),setMetrics:null};this.workspace_=new Blockly.WorkspaceSvg(a);this.workspace_.isMutator=!0;this.svgDialog_.appendChild(this.workspace_.createDom("blocklyMutatorBackground"));return this.svgDialog_};\nBlockly.Mutator.prototype.updateEditable=function(){this.block_.isInFlyout||(this.block_.isEditable()?this.iconGroup_&&Blockly.removeClass_(this.iconGroup_,"blocklyIconGroupReadonly"):(this.setVisible(!1),this.iconGroup_&&Blockly.addClass_(this.iconGroup_,"blocklyIconGroupReadonly")));Blockly.Icon.prototype.updateEditable.call(this)};\nBlockly.Mutator.prototype.resizeBubble_=function(){var a=2*Blockly.Bubble.BORDER_WIDTH,b=this.workspace_.getCanvas().getBBox(),c;c=this.block_.RTL?-b.x:b.width+b.x;b=b.height+3*a;if(this.workspace_.flyout_)var d=this.workspace_.flyout_.getMetrics_(),b=Math.max(b,d.contentHeight+20);c+=3*a;if(Math.abs(this.workspaceWidth_-c)>a||Math.abs(this.workspaceHeight_-b)>a)this.workspaceWidth_=c,this.workspaceHeight_=b,this.bubble_.setBubbleSize(c+a,b+a),this.svgDialog_.setAttribute("width",this.workspaceWidth_),\nthis.svgDialog_.setAttribute("height",this.workspaceHeight_);this.block_.RTL&&(a="translate("+this.workspaceWidth_+",0)",this.workspace_.getCanvas().setAttribute("transform",a));this.workspace_.resize()};\nBlockly.Mutator.prototype.setVisible=function(a){if(a!=this.isVisible())if(Blockly.Events.fire(new Blockly.Events.Ui(this.block_,"mutatorOpen",!a,a)),a){this.bubble_=new Blockly.Bubble(this.block_.workspace,this.createEditor_(),this.block_.svgPath_,this.iconXY_,null,null);if(a=this.workspace_.options.languageTree)this.workspace_.flyout_.init(this.workspace_),this.workspace_.flyout_.show(a.childNodes);this.rootBlock_=this.block_.decompose(this.workspace_);a=this.rootBlock_.getDescendants();for(var b=\n0,c;c=a[b];b++)c.render();this.rootBlock_.setMovable(!1);this.rootBlock_.setDeletable(!1);this.workspace_.flyout_?(a=2*this.workspace_.flyout_.CORNER_RADIUS,b=this.workspace_.flyout_.width_+a):b=a=16;this.block_.RTL&&(b=-b);this.rootBlock_.moveBy(b,a);if(this.block_.saveConnections){var d=this;this.block_.saveConnections(this.rootBlock_);this.sourceListener_=function(){d.block_.saveConnections(d.rootBlock_)};this.block_.workspace.addChangeListener(this.sourceListener_)}this.resizeBubble_();this.workspace_.addChangeListener(this.workspaceChanged_.bind(this));\nthis.updateColour()}else this.svgDialog_=null,this.workspace_.dispose(),this.rootBlock_=this.workspace_=null,this.bubble_.dispose(),this.bubble_=null,this.workspaceHeight_=this.workspaceWidth_=0,this.sourceListener_&&(this.block_.workspace.removeChangeListener(this.sourceListener_),this.sourceListener_=null)};\nBlockly.Mutator.prototype.workspaceChanged_=function(){if(Blockly.dragMode_==Blockly.DRAG_NONE)for(var a=this.workspace_.getTopBlocks(!1),b=0,c;c=a[b];b++){var d=c.getRelativeToSurfaceXY(),e=c.getHeightWidth();20>d.y+e.height&&c.moveBy(0,20-e.height-d.y)}if(this.rootBlock_.workspace==this.workspace_){Blockly.Events.setGroup(!0);c=this.block_;a=(a=c.mutationToDom())&&Blockly.Xml.domToText(a);b=c.rendered;c.rendered=!1;c.compose(this.rootBlock_);c.rendered=b;c.initSvg();b=(b=c.mutationToDom())&&Blockly.Xml.domToText(b);\nif(a!=b){Blockly.Events.fire(new Blockly.Events.Change(c,"mutation",null,a,b));var f=Blockly.Events.getGroup();setTimeout(function(){Blockly.Events.setGroup(f);c.bumpNeighbours_();Blockly.Events.setGroup(!1)},Blockly.BUMP_DELAY)}c.rendered&&c.render();this.resizeBubble_();Blockly.Events.setGroup(!1)}};Blockly.Mutator.prototype.getFlyoutMetrics_=function(){return{viewHeight:this.workspaceHeight_,viewWidth:this.workspaceWidth_,absoluteTop:0,absoluteLeft:0}};\nBlockly.Mutator.prototype.dispose=function(){this.block_.mutator=null;Blockly.Icon.prototype.dispose.call(this)};Blockly.Mutator.reconnect=function(a,b,c){if(!a||!a.getSourceBlock().workspace)return!1;c=b.getInput(c).connection;var d=a.targetBlock();return d&&d!=b||c.targetConnection==a?!1:(c.isConnected()&&c.disconnect(),c.connect(a),!0)};goog.global.Blockly||(goog.global.Blockly={});goog.global.Blockly.Mutator||(goog.global.Blockly.Mutator={});goog.global.Blockly.Mutator.reconnect=Blockly.Mutator.reconnect;Blockly.Warning=function(a){Blockly.Warning.superClass_.constructor.call(this,a);this.createIcon();this.text_={}};goog.inherits(Blockly.Warning,Blockly.Icon);Blockly.Warning.prototype.collapseHidden=!1;\nBlockly.Warning.prototype.drawIcon_=function(a){Blockly.createSvgElement("path",{"class":"blocklyIconShape",d:"M2,15Q-1,15 0.5,12L6.5,1.7Q8,-1 9.5,1.7L15.5,12Q17,15 14,15z"},a);Blockly.createSvgElement("path",{"class":"blocklyIconSymbol",d:"m7,4.8v3.16l0.27,2.27h1.46l0.27,-2.27v-3.16z"},a);Blockly.createSvgElement("rect",{"class":"blocklyIconSymbol",x:"7",y:"11",height:"2",width:"2"},a)};\nBlockly.Warning.textToDom_=function(a){var b=Blockly.createSvgElement("text",{"class":"blocklyText blocklyBubbleText",y:Blockly.Bubble.BORDER_WIDTH},null);a=a.split("\\n");for(var c=0;c<a.length;c++){var d=Blockly.createSvgElement("tspan",{dy:"1em",x:Blockly.Bubble.BORDER_WIDTH},b),e=document.createTextNode(a[c]);d.appendChild(e)}return b};\nBlockly.Warning.prototype.setVisible=function(a){if(a!=this.isVisible())if(Blockly.Events.fire(new Blockly.Events.Ui(this.block_,"warningOpen",!a,a)),a){a=Blockly.Warning.textToDom_(this.getText());this.bubble_=new Blockly.Bubble(this.block_.workspace,a,this.block_.svgPath_,this.iconXY_,null,null);if(this.block_.RTL)for(var b=a.getBBox().width,c=0,d;d=a.childNodes[c];c++)d.setAttribute("text-anchor","end"),d.setAttribute("x",b+Blockly.Bubble.BORDER_WIDTH);this.updateColour();a=this.bubble_.getBubbleSize();\nthis.bubble_.setBubbleSize(a.width,a.height)}else this.bubble_.dispose(),this.body_=this.bubble_=null};Blockly.Warning.prototype.bodyFocus_=function(a){this.bubble_.promote_()};Blockly.Warning.prototype.setText=function(a,b){this.text_[b]!=a&&(a?this.text_[b]=a:delete this.text_[b],this.isVisible()&&(this.setVisible(!1),this.setVisible(!0)))};Blockly.Warning.prototype.getText=function(){var a=[],b;for(b in this.text_)a.push(this.text_[b]);return a.join("\\n")};\nBlockly.Warning.prototype.dispose=function(){this.block_.warning=null;Blockly.Icon.prototype.dispose.call(this)};Blockly.Block=function(a,b,c){this.id=c&&!a.getBlockById(c)?c:Blockly.genUid();a.blockDB_[this.id]=this;this.previousConnection=this.nextConnection=this.outputConnection=null;this.inputList=[];this.inputsInline=void 0;this.disabled=!1;this.tooltip="";this.contextMenu=!0;this.parentBlock_=null;this.childBlocks_=[];this.editable_=this.movable_=this.deletable_=!0;this.collapsed_=this.isShadow_=!1;this.comment=null;this.xy_=new goog.math.Coordinate(0,0);this.workspace=a;this.isInFlyout=a.isFlyout;this.isInMutator=\na.isMutator;this.RTL=a.RTL;b&&(this.type=b,c=Blockly.Blocks[b],goog.asserts.assertObject(c,\'Error: "%s" is an unknown language block.\',b),goog.mixin(this,c));a.addTopBlock(this);goog.isFunction(this.init)&&this.init();this.inputsInlineDefault=this.inputsInline;Blockly.Events.isEnabled()&&Blockly.Events.fire(new Blockly.Events.Create(this));goog.isFunction(this.onchange)&&(this.onchangeWrapper_=this.onchange.bind(this),this.workspace.addChangeListener(this.onchangeWrapper_))};\nBlockly.Block.obtain=function(a,b){console.warn("Deprecated call to Blockly.Block.obtain, use workspace.newBlock instead.");return a.newBlock(b)};Blockly.Block.prototype.data=null;Blockly.Block.prototype.colour_="#000000";\nBlockly.Block.prototype.dispose=function(a){if(this.workspace){this.onchangeWrapper_&&this.workspace.removeChangeListener(this.onchangeWrapper_);this.unplug(a);Blockly.Events.isEnabled()&&Blockly.Events.fire(new Blockly.Events.Delete(this));Blockly.Events.disable();try{this.workspace&&(this.workspace.removeTopBlock(this),delete this.workspace.blockDB_[this.id],this.workspace=null);for(var b=this.childBlocks_.length-1;0<=b;b--)this.childBlocks_[b].dispose(!1);for(var b=0,c;c=this.inputList[b];b++)c.dispose();\nthis.inputList.length=0;for(var d=this.getConnections_(!0),b=0;b<d.length;b++){var e=d[b];e.isConnected()&&e.disconnect();d[b].dispose()}}finally{Blockly.Events.enable()}}};\nBlockly.Block.prototype.unplug=function(a){if(this.outputConnection)this.outputConnection.isConnected()&&this.outputConnection.disconnect();else if(this.previousConnection){var b=null;this.previousConnection.isConnected()&&(b=this.previousConnection.targetConnection,this.previousConnection.disconnect());var c=this.getNextBlock();a&&c&&(a=this.nextConnection.targetConnection,a.disconnect(),b&&b.checkType_(a)&&b.connect(a))}};\nBlockly.Block.prototype.getConnections_=function(){var a=[];this.outputConnection&&a.push(this.outputConnection);this.previousConnection&&a.push(this.previousConnection);this.nextConnection&&a.push(this.nextConnection);for(var b=0,c;c=this.inputList[b];b++)c.connection&&a.push(c.connection);return a};Blockly.Block.prototype.lastConnectionInStack_=function(){for(var a=this.nextConnection;a;){var b=a.targetBlock();if(!b)return a;a=b.nextConnection}return null};\nBlockly.Block.prototype.bumpNeighbours_=function(){if(this.workspace&&Blockly.dragMode_==Blockly.DRAG_NONE){var a=this.getRootBlock();if(!a.isInFlyout)for(var b=this.getConnections_(!1),c=0,d;d=b[c];c++){d.isConnected()&&d.isSuperior()&&d.targetBlock().bumpNeighbours_();for(var e=d.neighbours_(Blockly.SNAP_RADIUS),f=0,g;g=e[f];f++)d.isConnected()&&g.isConnected()||g.getSourceBlock().getRootBlock()!=a&&(d.isSuperior()?g.bumpAwayFrom_(d):d.bumpAwayFrom_(g))}}};Blockly.Block.prototype.getParent=function(){return this.parentBlock_};\nBlockly.Block.prototype.getInputWithBlock=function(a){for(var b=0,c;c=this.inputList[b];b++)if(c.connection&&c.connection.targetBlock()==a)return c;return null};Blockly.Block.prototype.getSurroundParent=function(){var a=this;do{var b=a,a=a.getParent();if(!a)return null}while(a.getNextBlock()==b);return a};Blockly.Block.prototype.getNextBlock=function(){return this.nextConnection&&this.nextConnection.targetBlock()};\nBlockly.Block.prototype.getRootBlock=function(){var a,b=this;do a=b,b=a.parentBlock_;while(b);return a};Blockly.Block.prototype.getChildren=function(){return this.childBlocks_};\nBlockly.Block.prototype.setParent=function(a){if(a!=this.parentBlock_){if(this.parentBlock_){goog.array.remove(this.parentBlock_.childBlocks_,this);if(this.previousConnection&&this.previousConnection.isConnected())throw"Still connected to previous block.";if(this.outputConnection&&this.outputConnection.isConnected())throw"Still connected to parent block.";this.parentBlock_=null}else this.workspace.removeTopBlock(this);(this.parentBlock_=a)?a.childBlocks_.push(this):this.workspace.addTopBlock(this)}};\nBlockly.Block.prototype.getDescendants=function(){for(var a=[this],b,c=0;b=this.childBlocks_[c];c++)a.push.apply(a,b.getDescendants());return a};Blockly.Block.prototype.isDeletable=function(){return this.deletable_&&!this.isShadow_&&!(this.workspace&&this.workspace.options.readOnly)};Blockly.Block.prototype.setDeletable=function(a){this.deletable_=a};Blockly.Block.prototype.isMovable=function(){return this.movable_&&!this.isShadow_&&!(this.workspace&&this.workspace.options.readOnly)};\nBlockly.Block.prototype.setMovable=function(a){this.movable_=a};Blockly.Block.prototype.isShadow=function(){return this.isShadow_};Blockly.Block.prototype.setShadow=function(a){this.isShadow_=a};Blockly.Block.prototype.isEditable=function(){return this.editable_&&!(this.workspace&&this.workspace.options.readOnly)};Blockly.Block.prototype.setEditable=function(a){this.editable_=a;a=0;for(var b;b=this.inputList[a];a++)for(var c=0,d;d=b.fieldRow[c];c++)d.updateEditable()};\nBlockly.Block.prototype.setConnectionsHidden=function(a){if(!a&&this.isCollapsed()){if(this.outputConnection&&this.outputConnection.setHidden(a),this.previousConnection&&this.previousConnection.setHidden(a),this.nextConnection){this.nextConnection.setHidden(a);var b=this.nextConnection.targetBlock();b&&b.setConnectionsHidden(a)}}else for(var c=this.getConnections_(!0),d=0;b=c[d];d++)b.setHidden(a),b.isSuperior()&&(b=b.targetBlock())&&b.setConnectionsHidden(a)};\nBlockly.Block.prototype.setHelpUrl=function(a){this.helpUrl=a};Blockly.Block.prototype.setTooltip=function(a){this.tooltip=a};Blockly.Block.prototype.getColour=function(){return this.colour_};Blockly.Block.prototype.setColour=function(a){var b=parseFloat(a);if(isNaN(b))if(goog.isString(a)&&a.match(/^#[0-9a-fA-F]{6}$/))this.colour_=a;else throw"Invalid colour: "+a;else this.colour_=Blockly.hueToRgb(b)};\nBlockly.Block.prototype.getField=function(a){for(var b=0,c;c=this.inputList[b];b++)for(var d=0,e;e=c.fieldRow[d];d++)if(e.name===a)return e;return null};Blockly.Block.prototype.getVars=function(){for(var a=[],b=0,c;c=this.inputList[b];b++)for(var d=0,e;e=c.fieldRow[d];d++)e instanceof Blockly.FieldVariable&&a.push(e.getValue());return a};\nBlockly.Block.prototype.renameVar=function(a,b){for(var c=0,d;d=this.inputList[c];c++)for(var e=0,f;f=d.fieldRow[e];e++)f instanceof Blockly.FieldVariable&&Blockly.Names.equals(a,f.getValue())&&f.setValue(b)};Blockly.Block.prototype.getFieldValue=function(a){return(a=this.getField(a))?a.getValue():null};Blockly.Block.prototype.getTitleValue=function(a){console.warn("Deprecated call to getTitleValue, use getFieldValue instead.");return this.getFieldValue(a)};\nBlockly.Block.prototype.setFieldValue=function(a,b){var c=this.getField(b);goog.asserts.assertObject(c,\'Field "%s" not found.\',b);c.setValue(a)};Blockly.Block.prototype.setTitleValue=function(a,b){console.warn("Deprecated call to setTitleValue, use setFieldValue instead.");this.setFieldValue(a,b)};\nBlockly.Block.prototype.setPreviousStatement=function(a,b){a?(void 0===b&&(b=null),this.previousConnection||(goog.asserts.assert(!this.outputConnection,"Remove output connection prior to adding previous connection."),this.previousConnection=this.makeConnection_(Blockly.PREVIOUS_STATEMENT)),this.previousConnection.setCheck(b)):this.previousConnection&&(goog.asserts.assert(!this.previousConnection.isConnected(),"Must disconnect previous statement before removing connection."),this.previousConnection.dispose(),\nthis.previousConnection=null)};Blockly.Block.prototype.setNextStatement=function(a,b){a?(void 0===b&&(b=null),this.nextConnection||(this.nextConnection=this.makeConnection_(Blockly.NEXT_STATEMENT)),this.nextConnection.setCheck(b)):this.nextConnection&&(goog.asserts.assert(!this.nextConnection.isConnected(),"Must disconnect next statement before removing connection."),this.nextConnection.dispose(),this.nextConnection=null)};\nBlockly.Block.prototype.setOutput=function(a,b){a?(void 0===b&&(b=null),this.outputConnection||(goog.asserts.assert(!this.previousConnection,"Remove previous connection prior to adding output connection."),this.outputConnection=this.makeConnection_(Blockly.OUTPUT_VALUE)),this.outputConnection.setCheck(b)):this.outputConnection&&(goog.asserts.assert(!this.outputConnection.isConnected(),"Must disconnect output value before removing connection."),this.outputConnection.dispose(),this.outputConnection=\nnull)};Blockly.Block.prototype.setInputsInline=function(a){this.inputsInline!=a&&(Blockly.Events.fire(new Blockly.Events.Change(this,"inline",null,this.inputsInline,a)),this.inputsInline=a)};\nBlockly.Block.prototype.getInputsInline=function(){if(void 0!=this.inputsInline)return this.inputsInline;for(var a=1;a<this.inputList.length;a++)if(this.inputList[a-1].type==Blockly.DUMMY_INPUT&&this.inputList[a].type==Blockly.DUMMY_INPUT)return!1;for(a=1;a<this.inputList.length;a++)if(this.inputList[a-1].type==Blockly.INPUT_VALUE&&this.inputList[a].type==Blockly.DUMMY_INPUT)return!0;return!1};\nBlockly.Block.prototype.setDisabled=function(a){this.disabled!=a&&(Blockly.Events.fire(new Blockly.Events.Change(this,"disabled",null,this.disabled,a)),this.disabled=a)};Blockly.Block.prototype.getInheritedDisabled=function(){for(var a=this;;){a=a.getSurroundParent();if(!a)return!1;if(a.disabled)return!0}};Blockly.Block.prototype.isCollapsed=function(){return this.collapsed_};\nBlockly.Block.prototype.setCollapsed=function(a){this.collapsed_!=a&&(Blockly.Events.fire(new Blockly.Events.Change(this,"collapsed",null,this.collapsed_,a)),this.collapsed_=a)};\nBlockly.Block.prototype.toString=function(a,b){var c=[],d=b||"?";if(this.collapsed_)c.push(this.getInput("_TEMP_COLLAPSED_INPUT").fieldRow[0].text_);else for(var e=0,f;f=this.inputList[e];e++){for(var g=0,h;h=f.fieldRow[g];g++)c.push(h.getText());f.connection&&((f=f.connection.targetBlock())?c.push(f.toString(void 0,b)):c.push(d))}c=goog.string.trim(c.join(" "))||"???";a&&(c=goog.string.truncate(c,a));return c};\nBlockly.Block.prototype.appendValueInput=function(a){return this.appendInput_(Blockly.INPUT_VALUE,a)};Blockly.Block.prototype.appendStatementInput=function(a){return this.appendInput_(Blockly.NEXT_STATEMENT,a)};Blockly.Block.prototype.appendDummyInput=function(a){return this.appendInput_(Blockly.DUMMY_INPUT,a||"")};\nBlockly.Block.prototype.jsonInit=function(a){goog.asserts.assert(void 0==a.output||void 0==a.previousStatement,"Must not have both an output and a previousStatement.");void 0!==a.colour&&this.setColour(a.colour);for(var b=0;void 0!==a["message"+b];)this.interpolate_(a["message"+b],a["args"+b]||[],a["lastDummyAlign"+b]),b++;void 0!==a.inputsInline&&this.setInputsInline(a.inputsInline);void 0!==a.output&&this.setOutput(!0,a.output);void 0!==a.previousStatement&&this.setPreviousStatement(!0,a.previousStatement);\nvoid 0!==a.nextStatement&&this.setNextStatement(!0,a.nextStatement);void 0!==a.tooltip&&this.setTooltip(a.tooltip);void 0!==a.helpUrl&&this.setHelpUrl(a.helpUrl)};\nBlockly.Block.prototype.interpolate_=function(a,b,c){var d=Blockly.utils.tokenizeInterpolation(a),e=[],f=0;a=[];for(var g=0;g<d.length;g++){var h=d[g];"number"==typeof h?(goog.asserts.assert(0<h&&h<=b.length,\'Message index "%s" out of range.\',h),goog.asserts.assert(!e[h],\'Message index "%s" duplicated.\',h),e[h]=!0,f++,a.push(b[h-1])):(h=h.trim())&&a.push(h)}goog.asserts.assert(f==b.length,"Message does not reference all %s arg(s).",b.length);a.length&&("string"==typeof a[a.length-1]||goog.string.startsWith(a[a.length-\n1].type,"field_"))&&(g={type:"input_dummy"},c&&(g.align=c),a.push(g));c={LEFT:Blockly.ALIGN_LEFT,RIGHT:Blockly.ALIGN_RIGHT,CENTRE:Blockly.ALIGN_CENTRE};b=[];for(g=0;g<a.length;g++)if(e=a[g],"string"==typeof e)b.push([e,void 0]);else{d=f=null;do if(h=!1,"string"==typeof e)f=new Blockly.FieldLabel(e);else switch(e.type){case "input_value":d=this.appendValueInput(e.name);break;case "input_statement":d=this.appendStatementInput(e.name);break;case "input_dummy":d=this.appendDummyInput(e.name);break;case "field_label":f=\nnew Blockly.FieldLabel(e.text,e["class"]);break;case "field_input":f=new Blockly.FieldTextInput(e.text);"boolean"==typeof e.spellcheck&&f.setSpellcheck(e.spellcheck);break;case "field_angle":f=new Blockly.FieldAngle(e.angle);break;case "field_checkbox":f=new Blockly.FieldCheckbox(e.checked?"TRUE":"FALSE");break;case "field_colour":f=new Blockly.FieldColour(e.colour);break;case "field_variable":f=new Blockly.FieldVariable(e.variable);break;case "field_dropdown":f=new Blockly.FieldDropdown(e.options);\nbreak;case "field_image":f=new Blockly.FieldImage(e.src,e.width,e.height,e.alt);break;case "field_number":f=new Blockly.FieldNumber(e.value,e.min,e.max,e.precision);break;case "field_date":if(Blockly.FieldDate){f=new Blockly.FieldDate(e.date);break}default:e.alt&&(e=e.alt,h=!0)}while(h);if(f)b.push([f,e.name]);else if(d){e.check&&d.setCheck(e.check);e.align&&d.setAlign(c[e.align]);for(e=0;e<b.length;e++)d.appendField(b[e][0],b[e][1]);b.length=0}}};\nBlockly.Block.prototype.appendInput_=function(a,b){var c=null;if(a==Blockly.INPUT_VALUE||a==Blockly.NEXT_STATEMENT)c=this.makeConnection_(a);c=new Blockly.Input(a,b,this,c);this.inputList.push(c);return c};\nBlockly.Block.prototype.moveInputBefore=function(a,b){if(a!=b){for(var c=-1,d=b?-1:this.inputList.length,e=0,f;f=this.inputList[e];e++)if(f.name==a){if(c=e,-1!=d)break}else if(b&&f.name==b&&(d=e,-1!=c))break;goog.asserts.assert(-1!=c,\'Named input "%s" not found.\',a);goog.asserts.assert(-1!=d,\'Reference input "%s" not found.\',b);this.moveNumberedInputBefore(c,d)}};\nBlockly.Block.prototype.moveNumberedInputBefore=function(a,b){goog.asserts.assert(a!=b,"Can\'t move input to itself.");goog.asserts.assert(a<this.inputList.length,"Input index "+a+" out of bounds.");goog.asserts.assert(b<=this.inputList.length,"Reference input "+b+" out of bounds.");var c=this.inputList[a];this.inputList.splice(a,1);a<b&&b--;this.inputList.splice(b,0,c)};\nBlockly.Block.prototype.removeInput=function(a,b){for(var c=0,d;d=this.inputList[c];c++)if(d.name==a){if(d.connection&&d.connection.isConnected()){d.connection.setShadowDom(null);var e=d.connection.targetBlock();e.isShadow()?e.dispose():e.unplug()}d.dispose();this.inputList.splice(c,1);return}b||goog.asserts.fail(\'Input "%s" not found.\',a)};Blockly.Block.prototype.getInput=function(a){for(var b=0,c;c=this.inputList[b];b++)if(c.name==a)return c;return null};\nBlockly.Block.prototype.getInputTargetBlock=function(a){return(a=this.getInput(a))&&a.connection&&a.connection.targetBlock()};Blockly.Block.prototype.getCommentText=function(){return this.comment||""};Blockly.Block.prototype.setCommentText=function(a){this.comment!=a&&(Blockly.Events.fire(new Blockly.Events.Change(this,"comment",null,this.comment,a||"")),this.comment=a)};Blockly.Block.prototype.setWarningText=function(a){};Blockly.Block.prototype.setMutator=function(a){};\nBlockly.Block.prototype.getRelativeToSurfaceXY=function(){return this.xy_};Blockly.Block.prototype.moveBy=function(a,b){goog.asserts.assert(!this.parentBlock_,"Block has parent.");var c=new Blockly.Events.Move(this);this.xy_.translate(a,b);c.recordNew();Blockly.Events.fire(c)};Blockly.Block.prototype.makeConnection_=function(a){return new Blockly.Connection(this,a)};Blockly.ContextMenu={};Blockly.ContextMenu.currentBlock=null;\nBlockly.ContextMenu.show=function(a,b,c){Blockly.WidgetDiv.show(Blockly.ContextMenu,c,null);if(b.length){var d=new goog.ui.Menu;d.setRightToLeft(c);for(var e=0,f;f=b[e];e++){var g=new goog.ui.MenuItem(f.text);g.setRightToLeft(c);d.addChild(g,!0);g.setEnabled(f.enabled);f.enabled&&goog.events.listen(g,goog.ui.Component.EventType.ACTION,f.callback)}goog.events.listen(d,goog.ui.Component.EventType.ACTION,Blockly.ContextMenu.hide);b=goog.dom.getViewportSize();e=goog.style.getViewportPageOffset(document);\nd.render(Blockly.WidgetDiv.DIV);var h=d.getElement();Blockly.addClass_(h,"blocklyContextMenu");Blockly.bindEventWithChecks_(h,"contextmenu",null,Blockly.noEvent);f=goog.style.getSize(h);var g=a.clientX+e.x,k=a.clientY+e.y;a.clientY+f.height>=b.height&&(k-=f.height);c?f.width>=a.clientX&&(g+=f.width):a.clientX+f.width>=b.width&&(g-=f.width);Blockly.WidgetDiv.position(g,k,b,e,c);d.setAllowAutoFocus(!0);setTimeout(function(){h.focus()},1);Blockly.ContextMenu.currentBlock=null}else Blockly.ContextMenu.hide()};\nBlockly.ContextMenu.hide=function(){Blockly.WidgetDiv.hideIfOwner(Blockly.ContextMenu);Blockly.ContextMenu.currentBlock=null};\nBlockly.ContextMenu.callbackFactory=function(a,b){return function(){Blockly.Events.disable();try{var c=Blockly.Xml.domToBlock(b,a.workspace),d=a.getRelativeToSurfaceXY();d.x=a.RTL?d.x-Blockly.SNAP_RADIUS:d.x+Blockly.SNAP_RADIUS;d.y+=2*Blockly.SNAP_RADIUS;c.moveBy(d.x,d.y)}finally{Blockly.Events.enable()}Blockly.Events.isEnabled()&&!c.isShadow()&&Blockly.Events.fire(new Blockly.Events.Create(c));c.select()}};Blockly.RenderedConnection=function(a,b){Blockly.RenderedConnection.superClass_.constructor.call(this,a,b);this.offsetInBlock_=new goog.math.Coordinate(0,0)};goog.inherits(Blockly.RenderedConnection,Blockly.Connection);Blockly.RenderedConnection.prototype.distanceFrom=function(a){var b=this.x_-a.x_;a=this.y_-a.y_;return Math.sqrt(b*b+a*a)};\nBlockly.RenderedConnection.prototype.bumpAwayFrom_=function(a){if(Blockly.dragMode_==Blockly.DRAG_NONE){var b=this.sourceBlock_.getRootBlock();if(!b.isInFlyout){var c=!1;if(!b.isMovable()){b=a.getSourceBlock().getRootBlock();if(!b.isMovable())return;a=this;c=!0}var d=Blockly.selected==b;d||b.addSelect();var e=a.x_+Blockly.SNAP_RADIUS-this.x_;a=a.y_+Blockly.SNAP_RADIUS-this.y_;c&&(a=-a);b.RTL&&(e=-e);b.moveBy(e,a);d||b.removeSelect()}}};\nBlockly.RenderedConnection.prototype.moveTo=function(a,b){this.inDB_&&this.db_.removeConnection_(this);this.x_=a;this.y_=b;this.hidden_||this.db_.addConnection(this)};Blockly.RenderedConnection.prototype.moveBy=function(a,b){this.moveTo(this.x_+a,this.y_+b)};Blockly.RenderedConnection.prototype.moveToOffset=function(a){this.moveTo(a.x+this.offsetInBlock_.x,a.y+this.offsetInBlock_.y)};\nBlockly.RenderedConnection.prototype.setOffsetInBlock=function(a,b){this.offsetInBlock_.x=a;this.offsetInBlock_.y=b};Blockly.RenderedConnection.prototype.tighten_=function(){var a=this.targetConnection.x_-this.x_,b=this.targetConnection.y_-this.y_;if(0!=a||0!=b){var c=this.targetBlock(),d=c.getSvgRoot();if(!d)throw"block is not rendered.";d=Blockly.getRelativeXY_(d);c.getSvgRoot().setAttribute("transform","translate("+(d.x-a)+","+(d.y-b)+")");c.moveConnections_(-a,-b)}};\nBlockly.RenderedConnection.prototype.closest=function(a,b,c){return this.dbOpposite_.searchForClosest(this,a,b,c)};\nBlockly.RenderedConnection.prototype.highlight=function(){var a;a=this.type==Blockly.INPUT_VALUE||this.type==Blockly.OUTPUT_VALUE?"m 0,0 "+Blockly.BlockSvg.TAB_PATH_DOWN+" v 5":"m -20,0 h 5 "+Blockly.BlockSvg.NOTCH_PATH_LEFT+" h 5";var b=this.sourceBlock_.getRelativeToSurfaceXY();Blockly.Connection.highlightedPath_=Blockly.createSvgElement("path",{"class":"blocklyHighlightedConnectionPath",d:a,transform:"translate("+(this.x_-b.x)+","+(this.y_-b.y)+")"+(this.sourceBlock_.RTL?" scale(-1 1)":"")},this.sourceBlock_.getSvgRoot())};\nBlockly.RenderedConnection.prototype.unhideAll=function(){this.setHidden(!1);var a=[];if(this.type!=Blockly.INPUT_VALUE&&this.type!=Blockly.NEXT_STATEMENT)return a;var b=this.targetBlock();if(b){var c;b.isCollapsed()?(c=[],b.outputConnection&&c.push(b.outputConnection),b.nextConnection&&c.push(b.nextConnection),b.previousConnection&&c.push(b.previousConnection)):c=b.getConnections_(!0);for(var d=0;d<c.length;d++)a.push.apply(a,c[d].unhideAll());a.length||(a[0]=b)}return a};\nBlockly.RenderedConnection.prototype.unhighlight=function(){goog.dom.removeNode(Blockly.Connection.highlightedPath_);delete Blockly.Connection.highlightedPath_};Blockly.RenderedConnection.prototype.setHidden=function(a){(this.hidden_=a)&&this.inDB_?this.db_.removeConnection_(this):a||this.inDB_||this.db_.addConnection(this)};\nBlockly.RenderedConnection.prototype.hideAll=function(){this.setHidden(!0);if(this.targetConnection)for(var a=this.targetBlock().getDescendants(),b=0;b<a.length;b++){for(var c=a[b],d=c.getConnections_(!0),e=0;e<d.length;e++)d[e].setHidden(!0);c=c.getIcons();for(e=0;e<c.length;e++)c[e].setVisible(!1)}};Blockly.RenderedConnection.prototype.isConnectionAllowed=function(a,b){return this.distanceFrom(a)>b?!1:Blockly.RenderedConnection.superClass_.isConnectionAllowed.call(this,a)};\nBlockly.RenderedConnection.prototype.disconnectInternal_=function(a,b){Blockly.RenderedConnection.superClass_.disconnectInternal_.call(this,a,b);a.rendered&&a.render();b.rendered&&(b.updateDisabled(),b.render())};\nBlockly.RenderedConnection.prototype.respawnShadow_=function(){var a=this.getSourceBlock(),b=this.getShadowDom();if(a.workspace&&b&&Blockly.Events.recordUndo){Blockly.RenderedConnection.superClass_.respawnShadow_.call(this);b=this.targetBlock();if(!b)throw"Couldn\'t respawn the shadow block that should exist here.";b.initSvg();b.render(!1);a.rendered&&a.render()}};Blockly.RenderedConnection.prototype.neighbours_=function(a){return this.dbOpposite_.getNeighbours(this,a)};\nBlockly.RenderedConnection.prototype.connect_=function(a){Blockly.RenderedConnection.superClass_.connect_.call(this,a);var b=this.getSourceBlock();a=a.getSourceBlock();b.rendered&&b.updateDisabled();a.rendered&&a.updateDisabled();b.rendered&&a.rendered&&(this.type==Blockly.NEXT_STATEMENT||this.type==Blockly.PREVIOUS_STATEMENT?a.render():b.render())};Blockly.BlockSvg=function(a,b,c){this.svgGroup_=Blockly.createSvgElement("g",{},null);this.svgPathDark_=Blockly.createSvgElement("path",{"class":"blocklyPathDark",transform:"translate(1,1)"},this.svgGroup_);this.svgPath_=Blockly.createSvgElement("path",{"class":"blocklyPath"},this.svgGroup_);this.svgPathLight_=Blockly.createSvgElement("path",{"class":"blocklyPathLight"},this.svgGroup_);this.svgPath_.tooltip=this;this.rendered=!1;Blockly.Tooltip.bindMouseEvents(this.svgPath_);Blockly.BlockSvg.superClass_.constructor.call(this,\na,b,c)};goog.inherits(Blockly.BlockSvg,Blockly.Block);Blockly.BlockSvg.prototype.height=0;Blockly.BlockSvg.prototype.width=0;Blockly.BlockSvg.prototype.dragStartXY_=null;Blockly.BlockSvg.INLINE=-1;\nBlockly.BlockSvg.prototype.initSvg=function(){goog.asserts.assert(this.workspace.rendered,"Workspace is headless.");for(var a=0,b;b=this.inputList[a];a++)b.init();b=this.getIcons();for(a=0;a<b.length;a++)b[a].createIcon();this.updateColour();this.updateMovable();if(!this.workspace.options.readOnly&&!this.eventsInit_){Blockly.bindEventWithChecks_(this.getSvgRoot(),"mousedown",this,this.onMouseDown_);var c=this;Blockly.bindEventWithChecks_(this.getSvgRoot(),"touchstart",null,function(a){Blockly.longStart_(a,\nc)})}this.eventsInit_=!0;this.getSvgRoot().parentNode||this.workspace.getCanvas().appendChild(this.getSvgRoot())};\nBlockly.BlockSvg.prototype.select=function(){if(this.isShadow()&&this.getParent())this.getParent().select();else if(Blockly.selected!=this){var a=null;if(Blockly.selected){a=Blockly.selected.id;Blockly.Events.disable();try{Blockly.selected.unselect()}finally{Blockly.Events.enable()}}a=new Blockly.Events.Ui(null,"selected",a,this.id);a.workspaceId=this.workspace.id;Blockly.Events.fire(a);Blockly.selected=this;this.addSelect()}};\nBlockly.BlockSvg.prototype.unselect=function(){if(Blockly.selected==this){var a=new Blockly.Events.Ui(null,"selected",this.id,null);a.workspaceId=this.workspace.id;Blockly.Events.fire(a);Blockly.selected=null;this.removeSelect()}};Blockly.BlockSvg.prototype.mutator=null;Blockly.BlockSvg.prototype.comment=null;Blockly.BlockSvg.prototype.warning=null;\nBlockly.BlockSvg.prototype.getIcons=function(){var a=[];this.mutator&&a.push(this.mutator);this.comment&&a.push(this.comment);this.warning&&a.push(this.warning);return a};Blockly.BlockSvg.onMouseUpWrapper_=null;Blockly.BlockSvg.onMouseMoveWrapper_=null;\nBlockly.BlockSvg.terminateDrag=function(){Blockly.BlockSvg.disconnectUiStop_();Blockly.BlockSvg.onMouseUpWrapper_&&(Blockly.unbindEvent_(Blockly.BlockSvg.onMouseUpWrapper_),Blockly.BlockSvg.onMouseUpWrapper_=null);Blockly.BlockSvg.onMouseMoveWrapper_&&(Blockly.unbindEvent_(Blockly.BlockSvg.onMouseMoveWrapper_),Blockly.BlockSvg.onMouseMoveWrapper_=null);var a=Blockly.selected;if(Blockly.dragMode_==Blockly.DRAG_FREE&&a){var b=a.getRelativeToSurfaceXY(),b=goog.math.Coordinate.difference(b,a.dragStartXY_),\nc=new Blockly.Events.Move(a);c.oldCoordinate=a.dragStartXY_;c.recordNew();Blockly.Events.fire(c);a.moveConnections_(b.x,b.y);delete a.draggedBubbles_;a.setDragging_(!1);a.render();var d=Blockly.Events.getGroup();setTimeout(function(){Blockly.Events.setGroup(d);a.snapToGrid();Blockly.Events.setGroup(!1)},Blockly.BUMP_DELAY/2);setTimeout(function(){Blockly.Events.setGroup(d);a.bumpNeighbours_();Blockly.Events.setGroup(!1)},Blockly.BUMP_DELAY);a.workspace.resizeContents()}Blockly.dragMode_=Blockly.DRAG_NONE;\nBlockly.Css.setCursor(Blockly.Css.Cursor.OPEN)};\nBlockly.BlockSvg.prototype.setParent=function(a){if(a!=this.parentBlock_){var b=this.getSvgRoot();if(this.parentBlock_&&b){var c=this.getRelativeToSurfaceXY();this.workspace.getCanvas().appendChild(b);b.setAttribute("transform","translate("+c.x+","+c.y+")")}Blockly.Field.startCache();Blockly.BlockSvg.superClass_.setParent.call(this,a);Blockly.Field.stopCache();a&&(c=this.getRelativeToSurfaceXY(),a.getSvgRoot().appendChild(b),a=this.getRelativeToSurfaceXY(),this.moveConnections_(a.x-c.x,a.y-c.y))}};\nBlockly.BlockSvg.prototype.getRelativeToSurfaceXY=function(){var a=0,b=0,c=this.getSvgRoot();if(c){do var d=Blockly.getRelativeXY_(c),a=a+d.x,b=b+d.y,c=c.parentNode;while(c&&c!=this.workspace.getCanvas())}return new goog.math.Coordinate(a,b)};\nBlockly.BlockSvg.prototype.moveBy=function(a,b){goog.asserts.assert(!this.parentBlock_,"Block has parent.");var c=new Blockly.Events.Move(this),d=this.getRelativeToSurfaceXY();this.getSvgRoot().setAttribute("transform","translate("+(d.x+a)+","+(d.y+b)+")");this.moveConnections_(a,b);c.recordNew();this.workspace.resizeContents();Blockly.Events.fire(c)};\nBlockly.BlockSvg.prototype.snapToGrid=function(){if(this.workspace&&Blockly.dragMode_==Blockly.DRAG_NONE&&!this.getParent()&&!this.isInFlyout&&this.workspace.options.gridOptions&&this.workspace.options.gridOptions.snap){var a=this.workspace.options.gridOptions.spacing,b=a/2,c=this.getRelativeToSurfaceXY(),d=Math.round((c.x-b)/a)*a+b-c.x,a=Math.round((c.y-b)/a)*a+b-c.y,d=Math.round(d),a=Math.round(a);0==d&&0==a||this.moveBy(d,a)}};\nBlockly.BlockSvg.prototype.getHeightWidth=function(){var a=this.height,b=this.width,c=this.getNextBlock();c?(c=c.getHeightWidth(),a+=c.height-4,b=Math.max(b,c.width)):this.nextConnection||this.outputConnection||(a+=2);return{height:a,width:b}};\nBlockly.BlockSvg.prototype.getBoundingRectangle=function(){var a=this.getRelativeToSurfaceXY(this),b=this.outputConnection?Blockly.BlockSvg.TAB_WIDTH:0,c=this.getHeightWidth(),d;this.RTL?(d=new goog.math.Coordinate(a.x-(c.width-b),a.y),a=new goog.math.Coordinate(a.x+b,a.y+c.height)):(d=new goog.math.Coordinate(a.x-b,a.y),a=new goog.math.Coordinate(a.x+c.width-b,a.y+c.height));return{topLeft:d,bottomRight:a}};\nBlockly.BlockSvg.prototype.setCollapsed=function(a){if(this.collapsed_!=a){for(var b=[],c=0,d;d=this.inputList[c];c++)b.push.apply(b,d.setVisible(!a));if(a){d=this.getIcons();for(c=0;c<d.length;c++)d[c].setVisible(!1);c=this.toString(Blockly.COLLAPSE_CHARS);this.appendDummyInput("_TEMP_COLLAPSED_INPUT").appendField(c).init()}else this.removeInput("_TEMP_COLLAPSED_INPUT"),this.setWarningText(null);Blockly.BlockSvg.superClass_.setCollapsed.call(this,a);b.length||(b[0]=this);if(this.rendered)for(c=0;a=\nb[c];c++)a.render()}};Blockly.BlockSvg.prototype.tab=function(a,b){for(var c=[],d=0,e;e=this.inputList[d];d++){for(var f=0,g;g=e.fieldRow[f];f++)g instanceof Blockly.FieldTextInput&&c.push(g);e.connection&&(e=e.connection.targetBlock())&&c.push(e)}d=c.indexOf(a);-1==d&&(d=b?-1:c.length);(c=c[b?d+1:d-1])?c instanceof Blockly.Field?c.showEditor_():c.tab(null,b):(c=this.getParent())&&c.tab(this,b)};\nBlockly.BlockSvg.prototype.onMouseDown_=function(a){if(!this.workspace.options.readOnly)if(this.isInFlyout)"touchstart"==a.type&&Blockly.isRightButton(a)&&(Blockly.Flyout.blockRightClick_(a,this),a.stopPropagation(),a.preventDefault());else{this.isInMutator&&this.workspace.resize();this.workspace.updateScreenCalculationsIfScrolled();this.workspace.markFocused();Blockly.terminateDrag_();this.select();Blockly.hideChaff();if(Blockly.isRightButton(a))this.showContextMenu_(a),Blockly.Touch.clearTouchIdentifier();\nelse if(this.isMovable()){Blockly.Events.getGroup()||Blockly.Events.setGroup(!0);Blockly.Css.setCursor(Blockly.Css.Cursor.CLOSED);this.dragStartXY_=this.getRelativeToSurfaceXY();this.workspace.startDrag(a,this.dragStartXY_);Blockly.dragMode_=Blockly.DRAG_STICKY;Blockly.BlockSvg.onMouseUpWrapper_=Blockly.bindEventWithChecks_(document,"mouseup",this,this.onMouseUp_);Blockly.BlockSvg.onMouseMoveWrapper_=Blockly.bindEventWithChecks_(document,"mousemove",this,this.onMouseMove_);this.draggedBubbles_=[];\nfor(var b=this.getDescendants(),c=0,d;d=b[c];c++){d=d.getIcons();for(var e=0;e<d.length;e++){var f=d[e].getIconLocation();f.bubble=d[e];this.draggedBubbles_.push(f)}}}else return;a.stopPropagation();a.preventDefault()}};\nBlockly.BlockSvg.prototype.onMouseUp_=function(a){Blockly.Touch.clearTouchIdentifier();Blockly.dragMode_==Blockly.DRAG_FREE||Blockly.WidgetDiv.isVisible()||Blockly.Events.fire(new Blockly.Events.Ui(this,"click",void 0,void 0));Blockly.terminateDrag_();Blockly.selected&&Blockly.highlightedConnection_?(Blockly.localConnection_.connect(Blockly.highlightedConnection_),this.rendered&&(Blockly.localConnection_.isSuperior()?Blockly.highlightedConnection_:Blockly.localConnection_).getSourceBlock().connectionUiEffect(),\nthis.workspace.trashcan&&this.workspace.trashcan.close()):!this.getParent()&&Blockly.selected.isDeletable()&&this.workspace.isDeleteArea(a)&&((a=this.workspace.trashcan)&&goog.Timer.callOnce(a.close,100,a),Blockly.selected.dispose(!1,!0));Blockly.highlightedConnection_&&(Blockly.highlightedConnection_.unhighlight(),Blockly.highlightedConnection_=null);Blockly.Css.setCursor(Blockly.Css.Cursor.OPEN);Blockly.WidgetDiv.isVisible()||Blockly.Events.setGroup(!1)};\nBlockly.BlockSvg.prototype.showHelp_=function(){var a=goog.isFunction(this.helpUrl)?this.helpUrl():this.helpUrl;a&&window.open(a)};\nBlockly.BlockSvg.prototype.showContextMenu_=function(a){if(!this.workspace.options.readOnly&&this.contextMenu){var b=this,c=[];if(this.isDeletable()&&this.isMovable()&&!b.isInFlyout){var d={text:Blockly.Msg.DUPLICATE_BLOCK,enabled:!0,callback:function(){Blockly.duplicate_(b)}};this.getDescendants().length>this.workspace.remainingCapacity()&&(d.enabled=!1);c.push(d);this.isEditable()&&!this.collapsed_&&this.workspace.options.comments&&(d={enabled:!goog.userAgent.IE},this.comment?(d.text=Blockly.Msg.REMOVE_COMMENT,\nd.callback=function(){b.setCommentText(null)}):(d.text=Blockly.Msg.ADD_COMMENT,d.callback=function(){b.setCommentText("")}),c.push(d));if(!this.collapsed_)for(d=1;d<this.inputList.length;d++)if(this.inputList[d-1].type!=Blockly.NEXT_STATEMENT&&this.inputList[d].type!=Blockly.NEXT_STATEMENT){var d={enabled:!0},e=this.getInputsInline();d.text=e?Blockly.Msg.EXTERNAL_INPUTS:Blockly.Msg.INLINE_INPUTS;d.callback=function(){b.setInputsInline(!e)};c.push(d);break}this.workspace.options.collapse&&(this.collapsed_?\n(d={enabled:!0},d.text=Blockly.Msg.EXPAND_BLOCK,d.callback=function(){b.setCollapsed(!1)}):(d={enabled:!0},d.text=Blockly.Msg.COLLAPSE_BLOCK,d.callback=function(){b.setCollapsed(!0)}),c.push(d));this.workspace.options.disable&&(d={text:this.disabled?Blockly.Msg.ENABLE_BLOCK:Blockly.Msg.DISABLE_BLOCK,enabled:!this.getInheritedDisabled(),callback:function(){b.setDisabled(!b.disabled)}},c.push(d));var d=this.getDescendants().length,f=this.getNextBlock();f&&(d-=f.getDescendants().length);d={text:1==d?\nBlockly.Msg.DELETE_BLOCK:Blockly.Msg.DELETE_X_BLOCKS.replace("%1",String(d)),enabled:!0,callback:function(){Blockly.Events.setGroup(!0);b.dispose(!0,!0);Blockly.Events.setGroup(!1)}};c.push(d)}d={enabled:!(goog.isFunction(this.helpUrl)?!this.helpUrl():!this.helpUrl)};d.text=Blockly.Msg.HELP;d.callback=function(){b.showHelp_()};c.push(d);this.customContextMenu&&!b.isInFlyout&&this.customContextMenu(c);Blockly.ContextMenu.show(a,c,this.RTL);Blockly.ContextMenu.currentBlock=this}};\nBlockly.BlockSvg.prototype.moveConnections_=function(a,b){if(this.rendered){for(var c=this.getConnections_(!1),d=0;d<c.length;d++)c[d].moveBy(a,b);c=this.getIcons();for(d=0;d<c.length;d++)c[d].computeIconLocation();for(d=0;d<this.childBlocks_.length;d++)this.childBlocks_[d].moveConnections_(a,b)}};\nBlockly.BlockSvg.prototype.setDragging_=function(a){if(a){var b=this.getSvgRoot();b.translate_="";b.skew_="";this.addDragging();Blockly.draggingConnections_=Blockly.draggingConnections_.concat(this.getConnections_(!0))}else this.removeDragging(),Blockly.draggingConnections_=[];for(b=0;b<this.childBlocks_.length;b++)this.childBlocks_[b].setDragging_(a)};\nBlockly.BlockSvg.prototype.onMouseMove_=function(a){if("mousemove"==a.type&&1>=a.clientX&&0==a.clientY&&0==a.button)a.stopPropagation();else{var b=this.getRelativeToSurfaceXY(),c=this.workspace.moveDrag(a);if(Blockly.dragMode_==Blockly.DRAG_STICKY&&goog.math.Coordinate.distance(b,c)*this.workspace.scale>Blockly.DRAG_RADIUS){Blockly.dragMode_=Blockly.DRAG_FREE;Blockly.longStop_();if(this.parentBlock_){this.unplug();var d=this.getSvgRoot();d.translate_="translate("+c.x+","+c.y+")";this.disconnectUiEffect()}this.setDragging_(!0)}if(Blockly.dragMode_==\nBlockly.DRAG_FREE){b=goog.math.Coordinate.difference(b,this.dragStartXY_);d=this.getSvgRoot();d.translate_="translate("+c.x+","+c.y+")";d.setAttribute("transform",d.translate_+d.skew_);for(c=0;c<this.draggedBubbles_.length;c++)d=this.draggedBubbles_[c],d.bubble.setIconLocation(goog.math.Coordinate.sum(d,b));d=this.getConnections_(!1);(c=this.lastConnectionInStack_())&&c!=this.nextConnection&&d.push(c);for(var e=null,f=null,g=Blockly.SNAP_RADIUS,c=0;c<d.length;c++){var h=d[c],k=h.closest(g,b);k.connection&&\n(e=k.connection,f=h,g=k.radius)}Blockly.highlightedConnection_&&Blockly.highlightedConnection_!=e&&(Blockly.highlightedConnection_.unhighlight(),Blockly.highlightedConnection_=null,Blockly.localConnection_=null);e&&e!=Blockly.highlightedConnection_&&(e.highlight(),Blockly.highlightedConnection_=e,Blockly.localConnection_=f);this.isDeletable()&&this.workspace.isDeleteArea(a)}a.stopPropagation();a.preventDefault()}};\nBlockly.BlockSvg.prototype.updateMovable=function(){this.isMovable()?Blockly.addClass_(this.svgGroup_,"blocklyDraggable"):Blockly.removeClass_(this.svgGroup_,"blocklyDraggable")};Blockly.BlockSvg.prototype.setMovable=function(a){Blockly.BlockSvg.superClass_.setMovable.call(this,a);this.updateMovable()};Blockly.BlockSvg.prototype.setEditable=function(a){Blockly.BlockSvg.superClass_.setEditable.call(this,a);a=this.getIcons();for(var b=0;b<a.length;b++)a[b].updateEditable()};\nBlockly.BlockSvg.prototype.setShadow=function(a){Blockly.BlockSvg.superClass_.setShadow.call(this,a);this.updateColour()};Blockly.BlockSvg.prototype.getSvgRoot=function(){return this.svgGroup_};\nBlockly.BlockSvg.prototype.dispose=function(a,b){if(this.workspace){Blockly.Tooltip.hide();Blockly.Field.startCache();var c=this.workspace;Blockly.selected==this&&(this.unselect(),Blockly.terminateDrag_());Blockly.ContextMenu.currentBlock==this&&Blockly.ContextMenu.hide();b&&this.rendered&&(this.unplug(a),this.disposeUiEffect());this.rendered=!1;Blockly.Events.disable();try{for(var d=this.getIcons(),e=0;e<d.length;e++)d[e].dispose()}finally{Blockly.Events.enable()}Blockly.BlockSvg.superClass_.dispose.call(this,\na);goog.dom.removeNode(this.svgGroup_);c.resizeContents();this.svgPathDark_=this.svgPathLight_=this.svgPath_=this.svgGroup_=null;Blockly.Field.stopCache()}};\nBlockly.BlockSvg.prototype.disposeUiEffect=function(){this.workspace.playAudio("delete");var a=Blockly.getSvgXY_(this.svgGroup_,this.workspace),b=this.svgGroup_.cloneNode(!0);b.translateX_=a.x;b.translateY_=a.y;b.setAttribute("transform","translate("+b.translateX_+","+b.translateY_+")");this.workspace.getParentSvg().appendChild(b);b.bBox_=b.getBBox();Blockly.BlockSvg.disposeUiStep_(b,this.RTL,new Date,this.workspace.scale)};\nBlockly.BlockSvg.disposeUiStep_=function(a,b,c,d){var e=(new Date-c)/150;1<e?goog.dom.removeNode(a):(a.setAttribute("transform","translate("+(a.translateX_+(b?-1:1)*a.bBox_.width*d/2*e)+","+(a.translateY_+a.bBox_.height*d*e)+") scale("+(1-e)*d+")"),setTimeout(function(){Blockly.BlockSvg.disposeUiStep_(a,b,c,d)},10))};\nBlockly.BlockSvg.prototype.connectionUiEffect=function(){this.workspace.playAudio("click");if(!(1>this.workspace.scale)){var a=Blockly.getSvgXY_(this.svgGroup_,this.workspace);this.outputConnection?(a.x+=(this.RTL?3:-3)*this.workspace.scale,a.y+=13*this.workspace.scale):this.previousConnection&&(a.x+=(this.RTL?-23:23)*this.workspace.scale,a.y+=3*this.workspace.scale);a=Blockly.createSvgElement("circle",{cx:a.x,cy:a.y,r:0,fill:"none",stroke:"#888","stroke-width":10},this.workspace.getParentSvg());\nBlockly.BlockSvg.connectionUiStep_(a,new Date,this.workspace.scale)}};Blockly.BlockSvg.connectionUiStep_=function(a,b,c){var d=(new Date-b)/150;1<d?goog.dom.removeNode(a):(a.setAttribute("r",25*d*c),a.style.opacity=1-d,Blockly.BlockSvg.disconnectUiStop_.pid_=setTimeout(function(){Blockly.BlockSvg.connectionUiStep_(a,b,c)},10))};\nBlockly.BlockSvg.prototype.disconnectUiEffect=function(){this.workspace.playAudio("disconnect");if(!(1>this.workspace.scale)){var a=this.getHeightWidth().height,a=Math.atan(10/a)/Math.PI*180;this.RTL||(a*=-1);Blockly.BlockSvg.disconnectUiStep_(this.svgGroup_,a,new Date)}};\nBlockly.BlockSvg.disconnectUiStep_=function(a,b,c){var d=(new Date-c)/200;1<d?a.skew_="":(a.skew_="skewX("+Math.round(Math.sin(d*Math.PI*3)*(1-d)*b)+")",Blockly.BlockSvg.disconnectUiStop_.group=a,Blockly.BlockSvg.disconnectUiStop_.pid=setTimeout(function(){Blockly.BlockSvg.disconnectUiStep_(a,b,c)},10));a.setAttribute("transform",a.translate_+a.skew_)};\nBlockly.BlockSvg.disconnectUiStop_=function(){if(Blockly.BlockSvg.disconnectUiStop_.group){clearTimeout(Blockly.BlockSvg.disconnectUiStop_.pid);var a=Blockly.BlockSvg.disconnectUiStop_.group;a.skew_="";a.setAttribute("transform",a.translate_);Blockly.BlockSvg.disconnectUiStop_.group=null}};Blockly.BlockSvg.disconnectUiStop_.pid=0;Blockly.BlockSvg.disconnectUiStop_.group=null;\nBlockly.BlockSvg.prototype.updateColour=function(){if(!this.disabled){var a=this.getColour(),b=goog.color.hexToRgb(a);if(this.isShadow())b=goog.color.lighten(b,.6),a=goog.color.rgbArrayToHex(b),this.svgPathLight_.style.display="none",this.svgPathDark_.setAttribute("fill",a);else{this.svgPathLight_.style.display="";var c=goog.color.rgbArrayToHex(goog.color.lighten(b,.3)),b=goog.color.rgbArrayToHex(goog.color.darken(b,.2));this.svgPathLight_.setAttribute("stroke",c);this.svgPathDark_.setAttribute("fill",\nb)}this.svgPath_.setAttribute("fill",a);a=this.getIcons();for(c=0;c<a.length;c++)a[c].updateColour();for(a=0;c=this.inputList[a];a++)for(var b=0,d;d=c.fieldRow[b];b++)d.setText(null)}};\nBlockly.BlockSvg.prototype.updateDisabled=function(){var a=Blockly.hasClass_(this.svgGroup_,"blocklyDisabled");this.disabled||this.getInheritedDisabled()?a||(Blockly.addClass_(this.svgGroup_,"blocklyDisabled"),this.svgPath_.setAttribute("fill","url(#"+this.workspace.options.disabledPatternId+")")):a&&(Blockly.removeClass_(this.svgGroup_,"blocklyDisabled"),this.updateColour());for(var a=this.getChildren(),b=0,c;c=a[b];b++)c.updateDisabled()};\nBlockly.BlockSvg.prototype.getCommentText=function(){return this.comment?this.comment.getText().replace(/\\s+$/,"").replace(/ +\\n/g,"\\n"):""};Blockly.BlockSvg.prototype.setCommentText=function(a){var b=!1;goog.isString(a)?(this.comment||(this.comment=new Blockly.Comment(this),b=!0),this.comment.setText(a)):this.comment&&(this.comment.dispose(),b=!0);b&&this.rendered&&(this.render(),this.bumpNeighbours_())};\nBlockly.BlockSvg.prototype.setWarningText=function(a,b){this.setWarningText.pid_||(this.setWarningText.pid_=Object.create(null));var c=b||"";if(c)this.setWarningText.pid_[c]&&(clearTimeout(this.setWarningText.pid_[c]),delete this.setWarningText.pid_[c]);else for(var d in this.setWarningText.pid_)clearTimeout(this.setWarningText.pid_[d]),delete this.setWarningText.pid_[d];if(Blockly.dragMode_==Blockly.DRAG_FREE){var e=this;this.setWarningText.pid_[c]=setTimeout(function(){e.workspace&&(delete e.setWarningText.pid_[c],\ne.setWarningText(a,c))},100)}else{this.isInFlyout&&(a=null);d=this.getSurroundParent();for(var f=null;d;)d.isCollapsed()&&(f=d),d=d.getSurroundParent();f&&f.setWarningText(a,"collapsed "+this.id+" "+c);d=!1;goog.isString(a)?(this.warning||(this.warning=new Blockly.Warning(this),d=!0),this.warning.setText(a,c)):this.warning&&!c?(this.warning.dispose(),d=!0):this.warning&&(d=this.warning.getText(),this.warning.setText("",c),(f=this.warning.getText())||this.warning.dispose(),d=d==f);d&&this.rendered&&\n(this.render(),this.bumpNeighbours_())}};Blockly.BlockSvg.prototype.setMutator=function(a){this.mutator&&this.mutator!==a&&this.mutator.dispose();a&&(a.block_=this,this.mutator=a,a.createIcon())};Blockly.BlockSvg.prototype.setDisabled=function(a){this.disabled!=a&&(Blockly.BlockSvg.superClass_.setDisabled.call(this,a),this.rendered&&this.updateDisabled())};\nBlockly.BlockSvg.prototype.addSelect=function(){Blockly.addClass_(this.svgGroup_,"blocklySelected");var a=this;do{var b=a.getSvgRoot();b.parentNode.appendChild(b);a=a.getParent()}while(a)};Blockly.BlockSvg.prototype.removeSelect=function(){Blockly.removeClass_(this.svgGroup_,"blocklySelected")};Blockly.BlockSvg.prototype.addDragging=function(){Blockly.addClass_(this.svgGroup_,"blocklyDragging")};Blockly.BlockSvg.prototype.removeDragging=function(){Blockly.removeClass_(this.svgGroup_,"blocklyDragging")};\nBlockly.BlockSvg.prototype.setColour=function(a){Blockly.BlockSvg.superClass_.setColour.call(this,a);this.rendered&&this.updateColour()};Blockly.BlockSvg.prototype.setPreviousStatement=function(a,b){Blockly.BlockSvg.superClass_.setPreviousStatement.call(this,a,b);this.rendered&&(this.render(),this.bumpNeighbours_())};Blockly.BlockSvg.prototype.setNextStatement=function(a,b){Blockly.BlockSvg.superClass_.setNextStatement.call(this,a,b);this.rendered&&(this.render(),this.bumpNeighbours_())};\nBlockly.BlockSvg.prototype.setOutput=function(a,b){Blockly.BlockSvg.superClass_.setOutput.call(this,a,b);this.rendered&&(this.render(),this.bumpNeighbours_())};Blockly.BlockSvg.prototype.setInputsInline=function(a){Blockly.BlockSvg.superClass_.setInputsInline.call(this,a);this.rendered&&(this.render(),this.bumpNeighbours_())};Blockly.BlockSvg.prototype.removeInput=function(a,b){Blockly.BlockSvg.superClass_.removeInput.call(this,a,b);this.rendered&&(this.render(),this.bumpNeighbours_())};\nBlockly.BlockSvg.prototype.moveNumberedInputBefore=function(a,b){Blockly.BlockSvg.superClass_.moveNumberedInputBefore.call(this,a,b);this.rendered&&(this.render(),this.bumpNeighbours_())};Blockly.BlockSvg.prototype.appendInput_=function(a,b){var c=Blockly.BlockSvg.superClass_.appendInput_.call(this,a,b);this.rendered&&(this.render(),this.bumpNeighbours_());return c};\nBlockly.BlockSvg.prototype.getConnections_=function(a){var b=[];if(a||this.rendered)if(this.outputConnection&&b.push(this.outputConnection),this.previousConnection&&b.push(this.previousConnection),this.nextConnection&&b.push(this.nextConnection),a||!this.collapsed_){a=0;for(var c;c=this.inputList[a];a++)c.connection&&b.push(c.connection)}return b};Blockly.BlockSvg.prototype.makeConnection_=function(a){return new Blockly.RenderedConnection(this,a)};Blockly.BlockSvg.render={};Blockly.BlockSvg.SEP_SPACE_X=10;Blockly.BlockSvg.SEP_SPACE_Y=10;Blockly.BlockSvg.INLINE_PADDING_Y=5;Blockly.BlockSvg.MIN_BLOCK_Y=25;Blockly.BlockSvg.TAB_HEIGHT=20;Blockly.BlockSvg.TAB_WIDTH=8;Blockly.BlockSvg.NOTCH_WIDTH=30;Blockly.BlockSvg.CORNER_RADIUS=8;Blockly.BlockSvg.START_HAT=!1;Blockly.BlockSvg.START_HAT_HEIGHT=15;Blockly.BlockSvg.START_HAT_PATH="c 30,-"+Blockly.BlockSvg.START_HAT_HEIGHT+" 70,-"+Blockly.BlockSvg.START_HAT_HEIGHT+" 100,0";\nBlockly.BlockSvg.START_HAT_HIGHLIGHT_LTR="c 17.8,-9.2 45.3,-14.9 75,-8.7 M 100.5,0.5";Blockly.BlockSvg.START_HAT_HIGHLIGHT_RTL="m 25,-8.7 c 29.7,-6.2 57.2,-0.5 75,8.7";Blockly.BlockSvg.DISTANCE_45_INSIDE=(1-Math.SQRT1_2)*(Blockly.BlockSvg.CORNER_RADIUS-.5)+.5;Blockly.BlockSvg.DISTANCE_45_OUTSIDE=(1-Math.SQRT1_2)*(Blockly.BlockSvg.CORNER_RADIUS+.5)-.5;Blockly.BlockSvg.NOTCH_PATH_LEFT="l 6,4 3,0 6,-4";Blockly.BlockSvg.NOTCH_PATH_LEFT_HIGHLIGHT="l 6,4 3,0 6,-4";Blockly.BlockSvg.NOTCH_PATH_RIGHT="l -6,4 -3,0 -6,-4";\nBlockly.BlockSvg.JAGGED_TEETH="l 8,0 0,4 8,4 -16,8 8,4";Blockly.BlockSvg.JAGGED_TEETH_HEIGHT=20;Blockly.BlockSvg.JAGGED_TEETH_WIDTH=15;Blockly.BlockSvg.TAB_PATH_DOWN="v 5 c 0,10 -"+Blockly.BlockSvg.TAB_WIDTH+",-8 -"+Blockly.BlockSvg.TAB_WIDTH+",7.5 s "+Blockly.BlockSvg.TAB_WIDTH+",-2.5 "+Blockly.BlockSvg.TAB_WIDTH+",7.5";\nBlockly.BlockSvg.TAB_PATH_DOWN_HIGHLIGHT_RTL="v 6.5 m -"+.97*Blockly.BlockSvg.TAB_WIDTH+",3 q -"+.05*Blockly.BlockSvg.TAB_WIDTH+",10 "+.3*Blockly.BlockSvg.TAB_WIDTH+",9.5 m "+.67*Blockly.BlockSvg.TAB_WIDTH+",-1.9 v 1.4";Blockly.BlockSvg.TOP_LEFT_CORNER_START="m 0,"+Blockly.BlockSvg.CORNER_RADIUS;Blockly.BlockSvg.TOP_LEFT_CORNER_START_HIGHLIGHT_RTL="m "+Blockly.BlockSvg.DISTANCE_45_INSIDE+","+Blockly.BlockSvg.DISTANCE_45_INSIDE;\nBlockly.BlockSvg.TOP_LEFT_CORNER_START_HIGHLIGHT_LTR="m 0.5,"+(Blockly.BlockSvg.CORNER_RADIUS-.5);Blockly.BlockSvg.TOP_LEFT_CORNER="A "+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS+" 0 0,1 "+Blockly.BlockSvg.CORNER_RADIUS+",0";Blockly.BlockSvg.TOP_LEFT_CORNER_HIGHLIGHT="A "+(Blockly.BlockSvg.CORNER_RADIUS-.5)+","+(Blockly.BlockSvg.CORNER_RADIUS-.5)+" 0 0,1 "+Blockly.BlockSvg.CORNER_RADIUS+",0.5";\nBlockly.BlockSvg.INNER_TOP_LEFT_CORNER=Blockly.BlockSvg.NOTCH_PATH_RIGHT+" h -"+(Blockly.BlockSvg.NOTCH_WIDTH-15-Blockly.BlockSvg.CORNER_RADIUS)+" a "+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS+" 0 0,0 -"+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS;Blockly.BlockSvg.INNER_BOTTOM_LEFT_CORNER="a "+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS+" 0 0,0 "+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS;\nBlockly.BlockSvg.INNER_TOP_LEFT_CORNER_HIGHLIGHT_RTL="a "+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS+" 0 0,0 "+(-Blockly.BlockSvg.DISTANCE_45_OUTSIDE-.5)+","+(Blockly.BlockSvg.CORNER_RADIUS-Blockly.BlockSvg.DISTANCE_45_OUTSIDE);Blockly.BlockSvg.INNER_BOTTOM_LEFT_CORNER_HIGHLIGHT_RTL="a "+(Blockly.BlockSvg.CORNER_RADIUS+.5)+","+(Blockly.BlockSvg.CORNER_RADIUS+.5)+" 0 0,0 "+(Blockly.BlockSvg.CORNER_RADIUS+.5)+","+(Blockly.BlockSvg.CORNER_RADIUS+.5);\nBlockly.BlockSvg.INNER_BOTTOM_LEFT_CORNER_HIGHLIGHT_LTR="a "+(Blockly.BlockSvg.CORNER_RADIUS+.5)+","+(Blockly.BlockSvg.CORNER_RADIUS+.5)+" 0 0,0 "+(Blockly.BlockSvg.CORNER_RADIUS-Blockly.BlockSvg.DISTANCE_45_OUTSIDE)+","+(Blockly.BlockSvg.DISTANCE_45_OUTSIDE+.5);\nBlockly.BlockSvg.prototype.render=function(a){Blockly.Field.startCache();this.rendered=!0;var b=Blockly.BlockSvg.SEP_SPACE_X;this.RTL&&(b=-b);for(var c=this.getIcons(),d=0;d<c.length;d++)b=c[d].renderIcon(b);b+=this.RTL?Blockly.BlockSvg.SEP_SPACE_X:-Blockly.BlockSvg.SEP_SPACE_X;c=this.renderCompute_(b);this.renderDraw_(b,c);this.renderMoveConnections_();!1!==a&&((a=this.getParent())?a.render(!0):this.workspace.resizeContents());Blockly.Field.stopCache()};\nBlockly.BlockSvg.prototype.renderFields_=function(a,b,c){c+=Blockly.BlockSvg.INLINE_PADDING_Y;this.RTL&&(b=-b);for(var d=0,e;e=a[d];d++){var f=e.getSvgRoot();f&&(this.RTL?(b-=e.renderSep+e.renderWidth,f.setAttribute("transform","translate("+b+","+c+")"),e.renderWidth&&(b-=Blockly.BlockSvg.SEP_SPACE_X)):(f.setAttribute("transform","translate("+(b+e.renderSep)+","+c+")"),e.renderWidth&&(b+=e.renderSep+e.renderWidth+Blockly.BlockSvg.SEP_SPACE_X)))}return this.RTL?-b:b};\nBlockly.BlockSvg.prototype.renderCompute_=function(a){var b=this.inputList,c=[];c.rightEdge=a+2*Blockly.BlockSvg.SEP_SPACE_X;if(this.previousConnection||this.nextConnection)c.rightEdge=Math.max(c.rightEdge,Blockly.BlockSvg.NOTCH_WIDTH+Blockly.BlockSvg.SEP_SPACE_X);for(var d=0,e=0,f=!1,g=!1,h=!1,k=void 0,l=this.getInputsInline()&&!this.isCollapsed(),p=0,m;m=b[p];p++)if(m.isVisible()){var n;l&&k&&k!=Blockly.NEXT_STATEMENT&&m.type!=Blockly.NEXT_STATEMENT?n=c[c.length-1]:(k=m.type,n=[],n.type=l&&m.type!=\nBlockly.NEXT_STATEMENT?Blockly.BlockSvg.INLINE:m.type,n.height=0,c.push(n));n.push(m);m.renderHeight=Blockly.BlockSvg.MIN_BLOCK_Y;m.renderWidth=l&&m.type==Blockly.INPUT_VALUE?Blockly.BlockSvg.TAB_WIDTH+1.25*Blockly.BlockSvg.SEP_SPACE_X:0;if(m.connection&&m.connection.isConnected()){var q=m.connection.targetBlock().getHeightWidth();m.renderHeight=Math.max(m.renderHeight,q.height);m.renderWidth=Math.max(m.renderWidth,q.width)}l||p!=b.length-1?!l&&m.type==Blockly.INPUT_VALUE&&b[p+1]&&b[p+1].type==Blockly.NEXT_STATEMENT&&\nm.renderHeight--:m.renderHeight--;n.height=Math.max(n.height,m.renderHeight);m.fieldWidth=0;1==c.length&&(m.fieldWidth+=this.RTL?-a:a);for(var q=!1,t=0,r;r=m.fieldRow[t];t++){0!=t&&(m.fieldWidth+=Blockly.BlockSvg.SEP_SPACE_X);var u=r.getSize();r.renderWidth=u.width;r.renderSep=q&&r.EDITABLE?Blockly.BlockSvg.SEP_SPACE_X:0;m.fieldWidth+=r.renderWidth+r.renderSep;n.height=Math.max(n.height,u.height);q=r.EDITABLE}n.type!=Blockly.BlockSvg.INLINE&&(n.type==Blockly.NEXT_STATEMENT?(g=!0,e=Math.max(e,m.fieldWidth)):\n(n.type==Blockly.INPUT_VALUE?f=!0:n.type==Blockly.DUMMY_INPUT&&(h=!0),d=Math.max(d,m.fieldWidth)))}for(a=0;n=c[a];a++)if(n.thicker=!1,n.type==Blockly.BlockSvg.INLINE)for(b=0;m=n[b];b++)if(m.type==Blockly.INPUT_VALUE){n.height+=2*Blockly.BlockSvg.INLINE_PADDING_Y;n.thicker=!0;break}c.statementEdge=2*Blockly.BlockSvg.SEP_SPACE_X+e;g&&(c.rightEdge=Math.max(c.rightEdge,c.statementEdge+Blockly.BlockSvg.NOTCH_WIDTH));f?c.rightEdge=Math.max(c.rightEdge,d+2*Blockly.BlockSvg.SEP_SPACE_X+Blockly.BlockSvg.TAB_WIDTH):\nh&&(c.rightEdge=Math.max(c.rightEdge,d+2*Blockly.BlockSvg.SEP_SPACE_X));c.hasValue=f;c.hasStatement=g;c.hasDummy=h;return c};\nBlockly.BlockSvg.prototype.renderDraw_=function(a,b){this.startHat_=!1;this.height=0;if(this.outputConnection)this.squareBottomLeftCorner_=this.squareTopLeftCorner_=!0;else{this.squareBottomLeftCorner_=this.squareTopLeftCorner_=!1;if(this.previousConnection){var c=this.previousConnection.targetBlock();c&&c.getNextBlock()==this&&(this.squareTopLeftCorner_=!0)}else Blockly.BlockSvg.START_HAT&&(this.startHat_=this.squareTopLeftCorner_=!0,this.height+=Blockly.BlockSvg.START_HAT_HEIGHT,b.rightEdge=Math.max(b.rightEdge,\n100));this.getNextBlock()&&(this.squareBottomLeftCorner_=!0)}var d=[],e=[],c=[],f=[];this.renderDrawTop_(d,c,b.rightEdge);var g=this.renderDrawRight_(d,c,e,f,b,a);this.renderDrawBottom_(d,c,g);this.renderDrawLeft_(d,c);d=d.join(" ")+"\\n"+e.join(" ");this.svgPath_.setAttribute("d",d);this.svgPathDark_.setAttribute("d",d);d=c.join(" ")+"\\n"+f.join(" ");this.svgPathLight_.setAttribute("d",d);this.RTL&&(this.svgPath_.setAttribute("transform","scale(-1 1)"),this.svgPathLight_.setAttribute("transform",\n"scale(-1 1)"),this.svgPathDark_.setAttribute("transform","translate(1,1) scale(-1 1)"))};\nBlockly.BlockSvg.prototype.renderMoveConnections_=function(){var a=this.getRelativeToSurfaceXY();this.previousConnection&&this.previousConnection.moveToOffset(a);this.outputConnection&&this.outputConnection.moveToOffset(a);for(var b=0;b<this.inputList.length;b++){var c=this.inputList[b].connection;c&&(c.moveToOffset(a),c.isConnected()&&c.tighten_())}this.nextConnection&&(this.nextConnection.moveToOffset(a),this.nextConnection.isConnected()&&this.nextConnection.tighten_())};\nBlockly.BlockSvg.prototype.renderDrawTop_=function(a,b,c){this.squareTopLeftCorner_?(a.push("m 0,0"),b.push("m 0.5,0.5"),this.startHat_&&(a.push(Blockly.BlockSvg.START_HAT_PATH),b.push(this.RTL?Blockly.BlockSvg.START_HAT_HIGHLIGHT_RTL:Blockly.BlockSvg.START_HAT_HIGHLIGHT_LTR))):(a.push(Blockly.BlockSvg.TOP_LEFT_CORNER_START),b.push(this.RTL?Blockly.BlockSvg.TOP_LEFT_CORNER_START_HIGHLIGHT_RTL:Blockly.BlockSvg.TOP_LEFT_CORNER_START_HIGHLIGHT_LTR),a.push(Blockly.BlockSvg.TOP_LEFT_CORNER),b.push(Blockly.BlockSvg.TOP_LEFT_CORNER_HIGHLIGHT));\nthis.previousConnection&&(a.push("H",Blockly.BlockSvg.NOTCH_WIDTH-15),b.push("H",Blockly.BlockSvg.NOTCH_WIDTH-15),a.push(Blockly.BlockSvg.NOTCH_PATH_LEFT),b.push(Blockly.BlockSvg.NOTCH_PATH_LEFT_HIGHLIGHT),this.previousConnection.setOffsetInBlock(this.RTL?-Blockly.BlockSvg.NOTCH_WIDTH:Blockly.BlockSvg.NOTCH_WIDTH,0));a.push("H",c);b.push("H",c-.5);this.width=c};\nBlockly.BlockSvg.prototype.renderDrawRight_=function(a,b,c,d,e,f){for(var g,h=0,k,l,p=0,m;m=e[p];p++){g=Blockly.BlockSvg.SEP_SPACE_X;0==p&&(g+=this.RTL?-f:f);b.push("M",e.rightEdge-.5+","+(h+.5));if(this.isCollapsed()){var n=m[0];k=h;this.renderFields_(n.fieldRow,g,k);a.push(Blockly.BlockSvg.JAGGED_TEETH);b.push("h 8");n=m.height-Blockly.BlockSvg.JAGGED_TEETH_HEIGHT;a.push("v",n);this.RTL&&(b.push("v 3.9 l 7.2,3.4 m -14.5,8.9 l 7.3,3.5"),b.push("v",n-.7));this.width+=Blockly.BlockSvg.JAGGED_TEETH_WIDTH}else if(m.type==\nBlockly.BlockSvg.INLINE){for(var q=0;n=m[q];q++)k=h,m.thicker&&(k+=Blockly.BlockSvg.INLINE_PADDING_Y),g=this.renderFields_(n.fieldRow,g,k),n.type!=Blockly.DUMMY_INPUT&&(g+=n.renderWidth+Blockly.BlockSvg.SEP_SPACE_X),n.type==Blockly.INPUT_VALUE&&(c.push("M",g-Blockly.BlockSvg.SEP_SPACE_X+","+(h+Blockly.BlockSvg.INLINE_PADDING_Y)),c.push("h",Blockly.BlockSvg.TAB_WIDTH-2-n.renderWidth),c.push(Blockly.BlockSvg.TAB_PATH_DOWN),c.push("v",n.renderHeight+1-Blockly.BlockSvg.TAB_HEIGHT),c.push("h",n.renderWidth+\n2-Blockly.BlockSvg.TAB_WIDTH),c.push("z"),this.RTL?(d.push("M",g-Blockly.BlockSvg.SEP_SPACE_X-2.5+Blockly.BlockSvg.TAB_WIDTH-n.renderWidth+","+(h+Blockly.BlockSvg.INLINE_PADDING_Y+.5)),d.push(Blockly.BlockSvg.TAB_PATH_DOWN_HIGHLIGHT_RTL),d.push("v",n.renderHeight-Blockly.BlockSvg.TAB_HEIGHT+2.5),d.push("h",n.renderWidth-Blockly.BlockSvg.TAB_WIDTH+2)):(d.push("M",g-Blockly.BlockSvg.SEP_SPACE_X+.5+","+(h+Blockly.BlockSvg.INLINE_PADDING_Y+.5)),d.push("v",n.renderHeight+1),d.push("h",Blockly.BlockSvg.TAB_WIDTH-\n2-n.renderWidth),d.push("M",g-n.renderWidth-Blockly.BlockSvg.SEP_SPACE_X+.9+","+(h+Blockly.BlockSvg.INLINE_PADDING_Y+Blockly.BlockSvg.TAB_HEIGHT-.7)),d.push("l",.46*Blockly.BlockSvg.TAB_WIDTH+",-2.1")),k=this.RTL?-g-Blockly.BlockSvg.TAB_WIDTH+Blockly.BlockSvg.SEP_SPACE_X+n.renderWidth+1:g+Blockly.BlockSvg.TAB_WIDTH-Blockly.BlockSvg.SEP_SPACE_X-n.renderWidth-1,l=h+Blockly.BlockSvg.INLINE_PADDING_Y+1,n.connection.setOffsetInBlock(k,l));g=Math.max(g,e.rightEdge);this.width=Math.max(this.width,g);a.push("H",\ng);b.push("H",g-.5);a.push("v",m.height);this.RTL&&b.push("v",m.height-1)}else m.type==Blockly.INPUT_VALUE?(n=m[0],k=h,n.align!=Blockly.ALIGN_LEFT&&(q=e.rightEdge-n.fieldWidth-Blockly.BlockSvg.TAB_WIDTH-2*Blockly.BlockSvg.SEP_SPACE_X,n.align==Blockly.ALIGN_RIGHT?g+=q:n.align==Blockly.ALIGN_CENTRE&&(g+=q/2)),this.renderFields_(n.fieldRow,g,k),a.push(Blockly.BlockSvg.TAB_PATH_DOWN),q=m.height-Blockly.BlockSvg.TAB_HEIGHT,a.push("v",q),this.RTL?(b.push(Blockly.BlockSvg.TAB_PATH_DOWN_HIGHLIGHT_RTL),b.push("v",\nq+.5)):(b.push("M",e.rightEdge-5+","+(h+Blockly.BlockSvg.TAB_HEIGHT-.7)),b.push("l",.46*Blockly.BlockSvg.TAB_WIDTH+",-2.1")),k=this.RTL?-e.rightEdge-1:e.rightEdge+1,n.connection.setOffsetInBlock(k,h),n.connection.isConnected()&&(this.width=Math.max(this.width,e.rightEdge+n.connection.targetBlock().getHeightWidth().width-Blockly.BlockSvg.TAB_WIDTH+1))):m.type==Blockly.DUMMY_INPUT?(n=m[0],k=h,n.align!=Blockly.ALIGN_LEFT&&(q=e.rightEdge-n.fieldWidth-2*Blockly.BlockSvg.SEP_SPACE_X,e.hasValue&&(q-=Blockly.BlockSvg.TAB_WIDTH),\nn.align==Blockly.ALIGN_RIGHT?g+=q:n.align==Blockly.ALIGN_CENTRE&&(g+=q/2)),this.renderFields_(n.fieldRow,g,k),a.push("v",m.height),this.RTL&&b.push("v",m.height-1)):m.type==Blockly.NEXT_STATEMENT&&(n=m[0],0==p&&(a.push("v",Blockly.BlockSvg.SEP_SPACE_Y),this.RTL&&b.push("v",Blockly.BlockSvg.SEP_SPACE_Y-1),h+=Blockly.BlockSvg.SEP_SPACE_Y),k=h,n.align!=Blockly.ALIGN_LEFT&&(q=e.statementEdge-n.fieldWidth-2*Blockly.BlockSvg.SEP_SPACE_X,n.align==Blockly.ALIGN_RIGHT?g+=q:n.align==Blockly.ALIGN_CENTRE&&(g+=\nq/2)),this.renderFields_(n.fieldRow,g,k),g=e.statementEdge+Blockly.BlockSvg.NOTCH_WIDTH,a.push("H",g),a.push(Blockly.BlockSvg.INNER_TOP_LEFT_CORNER),a.push("v",m.height-2*Blockly.BlockSvg.CORNER_RADIUS),a.push(Blockly.BlockSvg.INNER_BOTTOM_LEFT_CORNER),a.push("H",e.rightEdge),this.RTL?(b.push("M",g-Blockly.BlockSvg.NOTCH_WIDTH+Blockly.BlockSvg.DISTANCE_45_OUTSIDE+","+(h+Blockly.BlockSvg.DISTANCE_45_OUTSIDE)),b.push(Blockly.BlockSvg.INNER_TOP_LEFT_CORNER_HIGHLIGHT_RTL),b.push("v",m.height-2*Blockly.BlockSvg.CORNER_RADIUS),\nb.push(Blockly.BlockSvg.INNER_BOTTOM_LEFT_CORNER_HIGHLIGHT_RTL)):(b.push("M",g-Blockly.BlockSvg.NOTCH_WIDTH+Blockly.BlockSvg.DISTANCE_45_OUTSIDE+","+(h+m.height-Blockly.BlockSvg.DISTANCE_45_OUTSIDE)),b.push(Blockly.BlockSvg.INNER_BOTTOM_LEFT_CORNER_HIGHLIGHT_LTR)),b.push("H",e.rightEdge-.5),k=this.RTL?-g:g+1,n.connection.setOffsetInBlock(k,h+1),n.connection.isConnected()&&(this.width=Math.max(this.width,e.statementEdge+n.connection.targetBlock().getHeightWidth().width)),p==e.length-1||e[p+1].type==\nBlockly.NEXT_STATEMENT)&&(a.push("v",Blockly.BlockSvg.SEP_SPACE_Y),this.RTL&&b.push("v",Blockly.BlockSvg.SEP_SPACE_Y-1),h+=Blockly.BlockSvg.SEP_SPACE_Y);h+=m.height}e.length||(h=Blockly.BlockSvg.MIN_BLOCK_Y,a.push("V",h),this.RTL&&b.push("V",h-1));return h};\nBlockly.BlockSvg.prototype.renderDrawBottom_=function(a,b,c){this.height+=c+1;this.nextConnection&&(a.push("H",Blockly.BlockSvg.NOTCH_WIDTH+(this.RTL?.5:-.5)+" "+Blockly.BlockSvg.NOTCH_PATH_RIGHT),this.nextConnection.setOffsetInBlock(this.RTL?-Blockly.BlockSvg.NOTCH_WIDTH:Blockly.BlockSvg.NOTCH_WIDTH,c+1),this.height+=4);this.squareBottomLeftCorner_?(a.push("H 0"),this.RTL||b.push("M","0.5,"+(c-.5))):(a.push("H",Blockly.BlockSvg.CORNER_RADIUS),a.push("a",Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS+\n" 0 0,1 -"+Blockly.BlockSvg.CORNER_RADIUS+",-"+Blockly.BlockSvg.CORNER_RADIUS),this.RTL||(b.push("M",Blockly.BlockSvg.DISTANCE_45_INSIDE+","+(c-Blockly.BlockSvg.DISTANCE_45_INSIDE)),b.push("A",Blockly.BlockSvg.CORNER_RADIUS-.5+","+(Blockly.BlockSvg.CORNER_RADIUS-.5)+" 0 0,1 0.5,"+(c-Blockly.BlockSvg.CORNER_RADIUS))))};\nBlockly.BlockSvg.prototype.renderDrawLeft_=function(a,b){this.outputConnection?(this.outputConnection.setOffsetInBlock(0,0),a.push("V",Blockly.BlockSvg.TAB_HEIGHT),a.push("c 0,-10 -"+Blockly.BlockSvg.TAB_WIDTH+",8 -"+Blockly.BlockSvg.TAB_WIDTH+",-7.5 s "+Blockly.BlockSvg.TAB_WIDTH+",2.5 "+Blockly.BlockSvg.TAB_WIDTH+",-7.5"),this.RTL?(b.push("M",-.25*Blockly.BlockSvg.TAB_WIDTH+",8.4"),b.push("l",-.45*Blockly.BlockSvg.TAB_WIDTH+",-2.1")):(b.push("V",Blockly.BlockSvg.TAB_HEIGHT-1.5),b.push("m",-.92*\nBlockly.BlockSvg.TAB_WIDTH+",-0.5 q "+-.19*Blockly.BlockSvg.TAB_WIDTH+",-5.5 0,-11"),b.push("m",.92*Blockly.BlockSvg.TAB_WIDTH+",1 V 0.5 H 1")),this.width+=Blockly.BlockSvg.TAB_WIDTH):this.RTL||(this.squareTopLeftCorner_?b.push("V",.5):b.push("V",Blockly.BlockSvg.CORNER_RADIUS));a.push("z")};Blockly.Events={};Blockly.Events.group_="";Blockly.Events.recordUndo=!0;Blockly.Events.disabled_=0;Blockly.Events.CREATE="create";Blockly.Events.DELETE="delete";Blockly.Events.CHANGE="change";Blockly.Events.MOVE="move";Blockly.Events.UI="ui";Blockly.Events.FIRE_QUEUE_=[];Blockly.Events.fire=function(a){Blockly.Events.isEnabled()&&(Blockly.Events.FIRE_QUEUE_.length||setTimeout(Blockly.Events.fireNow_,0),Blockly.Events.FIRE_QUEUE_.push(a))};\nBlockly.Events.fireNow_=function(){for(var a=Blockly.Events.filter(Blockly.Events.FIRE_QUEUE_,!0),b=Blockly.Events.FIRE_QUEUE_.length=0,c;c=a[b];b++){var d=Blockly.Workspace.getById(c.workspaceId);d&&d.fireChangeListener(c)}};\nBlockly.Events.filter=function(a,b){var c=goog.array.clone(a);b||c.reverse();for(var d=0,e;e=c[d];d++)for(var f=d+1,g;g=c[f];f++)e.type==g.type&&e.blockId==g.blockId&&e.workspaceId==g.workspaceId&&(e.type==Blockly.Events.MOVE?(e.newParentId=g.newParentId,e.newInputName=g.newInputName,e.newCoordinate=g.newCoordinate,c.splice(f,1),f--):e.type==Blockly.Events.CHANGE&&e.element==g.element&&e.name==g.name?(e.newValue=g.newValue,c.splice(f,1),f--):e.type!=Blockly.Events.UI||"click"!=g.element||"commentOpen"!=\ne.element&&"mutatorOpen"!=e.element&&"warningOpen"!=e.element||(e.newValue=g.newValue,c.splice(f,1),f--));for(d=c.length-1;0<=d;d--)c[d].isNull()&&c.splice(d,1);b||c.reverse();for(d=1;e=c[d];d++)e.type==Blockly.Events.CHANGE&&"mutation"==e.element&&c.unshift(c.splice(d,1)[0]);return c};Blockly.Events.clearPendingUndo=function(){for(var a=0,b;b=Blockly.Events.FIRE_QUEUE_[a];a++)b.recordUndo=!1};Blockly.Events.disable=function(){Blockly.Events.disabled_++};Blockly.Events.enable=function(){Blockly.Events.disabled_--};\nBlockly.Events.isEnabled=function(){return 0==Blockly.Events.disabled_};Blockly.Events.getGroup=function(){return Blockly.Events.group_};Blockly.Events.setGroup=function(a){Blockly.Events.group_="boolean"==typeof a?a?Blockly.genUid():"":a};Blockly.Events.getDescendantIds_=function(a){var b=[];a=a.getDescendants();for(var c=0,d;d=a[c];c++)b[c]=d.id;return b};\nBlockly.Events.fromJson=function(a,b){var c;switch(a.type){case Blockly.Events.CREATE:c=new Blockly.Events.Create(null);break;case Blockly.Events.DELETE:c=new Blockly.Events.Delete(null);break;case Blockly.Events.CHANGE:c=new Blockly.Events.Change(null);break;case Blockly.Events.MOVE:c=new Blockly.Events.Move(null);break;case Blockly.Events.UI:c=new Blockly.Events.Ui(null);break;default:throw"Unknown event type.";}c.fromJson(a);c.workspaceId=b.id;return c};\nBlockly.Events.Abstract=function(a){a&&(this.blockId=a.id,this.workspaceId=a.workspace.id);this.group=Blockly.Events.group_;this.recordUndo=Blockly.Events.recordUndo};Blockly.Events.Abstract.prototype.toJson=function(){var a={type:this.type};this.blockId&&(a.blockId=this.blockId);this.group&&(a.group=this.group);return a};Blockly.Events.Abstract.prototype.fromJson=function(a){this.blockId=a.blockId;this.group=a.group};Blockly.Events.Abstract.prototype.isNull=function(){return!1};\nBlockly.Events.Abstract.prototype.run=function(a){};Blockly.Events.Create=function(a){a&&(Blockly.Events.Create.superClass_.constructor.call(this,a),this.xml=Blockly.Xml.blockToDomWithXY(a),this.ids=Blockly.Events.getDescendantIds_(a))};goog.inherits(Blockly.Events.Create,Blockly.Events.Abstract);Blockly.Events.Create.prototype.type=Blockly.Events.CREATE;\nBlockly.Events.Create.prototype.toJson=function(){var a=Blockly.Events.Create.superClass_.toJson.call(this);a.xml=Blockly.Xml.domToText(this.xml);a.ids=this.ids;return a};Blockly.Events.Create.prototype.fromJson=function(a){Blockly.Events.Create.superClass_.fromJson.call(this,a);this.xml=Blockly.Xml.textToDom("<xml>"+a.xml+"</xml>").firstChild;this.ids=a.ids};\nBlockly.Events.Create.prototype.run=function(a){var b=Blockly.Workspace.getById(this.workspaceId);if(a)a=goog.dom.createDom("xml"),a.appendChild(this.xml),Blockly.Xml.domToWorkspace(a,b);else{a=0;for(var c;c=this.ids[a];a++){var d=b.getBlockById(c);d?d.dispose(!1,!1):c==this.blockId&&console.warn("Can\'t uncreate non-existant block: "+c)}}};\nBlockly.Events.Delete=function(a){if(a){if(a.getParent())throw"Connected blocks cannot be deleted.";Blockly.Events.Delete.superClass_.constructor.call(this,a);this.oldXml=Blockly.Xml.blockToDomWithXY(a);this.ids=Blockly.Events.getDescendantIds_(a)}};goog.inherits(Blockly.Events.Delete,Blockly.Events.Abstract);Blockly.Events.Delete.prototype.type=Blockly.Events.DELETE;Blockly.Events.Delete.prototype.toJson=function(){var a=Blockly.Events.Delete.superClass_.toJson.call(this);a.ids=this.ids;return a};\nBlockly.Events.Delete.prototype.fromJson=function(a){Blockly.Events.Delete.superClass_.fromJson.call(this,a);this.ids=a.ids};Blockly.Events.Delete.prototype.run=function(a){var b=Blockly.Workspace.getById(this.workspaceId);if(a){a=0;for(var c;c=this.ids[a];a++){var d=b.getBlockById(c);d?d.dispose(!1,!1):c==this.blockId&&console.warn("Can\'t delete non-existant block: "+c)}}else a=goog.dom.createDom("xml"),a.appendChild(this.oldXml),Blockly.Xml.domToWorkspace(a,b)};\nBlockly.Events.Change=function(a,b,c,d,e){a&&(Blockly.Events.Change.superClass_.constructor.call(this,a),this.element=b,this.name=c,this.oldValue=d,this.newValue=e)};goog.inherits(Blockly.Events.Change,Blockly.Events.Abstract);Blockly.Events.Change.prototype.type=Blockly.Events.CHANGE;Blockly.Events.Change.prototype.toJson=function(){var a=Blockly.Events.Change.superClass_.toJson.call(this);a.element=this.element;this.name&&(a.name=this.name);a.newValue=this.newValue;return a};\nBlockly.Events.Change.prototype.fromJson=function(a){Blockly.Events.Change.superClass_.fromJson.call(this,a);this.element=a.element;this.name=a.name;this.newValue=a.newValue};Blockly.Events.Change.prototype.isNull=function(){return this.oldValue==this.newValue};\nBlockly.Events.Change.prototype.run=function(a){var b=Blockly.Workspace.getById(this.workspaceId).getBlockById(this.blockId);if(b)switch(b.mutator&&b.mutator.setVisible(!1),a=a?this.newValue:this.oldValue,this.element){case "field":(b=b.getField(this.name))?(b.callValidator(a),b.setValue(a)):console.warn("Can\'t set non-existant field: "+this.name);break;case "comment":b.setCommentText(a||null);break;case "collapsed":b.setCollapsed(a);break;case "disabled":b.setDisabled(a);break;case "inline":b.setInputsInline(a);\nbreak;case "mutation":var c="";b.mutationToDom&&(c=(c=b.mutationToDom())&&Blockly.Xml.domToText(c));if(b.domToMutation){a=a||"<mutation></mutation>";var d=Blockly.Xml.textToDom("<xml>"+a+"</xml>");b.domToMutation(d.firstChild)}Blockly.Events.fire(new Blockly.Events.Change(b,"mutation",null,c,a));break;default:console.warn("Unknown change type: "+this.element)}else console.warn("Can\'t change non-existant block: "+this.blockId)};\nBlockly.Events.Move=function(a){a&&(Blockly.Events.Move.superClass_.constructor.call(this,a),a=this.currentLocation_(),this.oldParentId=a.parentId,this.oldInputName=a.inputName,this.oldCoordinate=a.coordinate)};goog.inherits(Blockly.Events.Move,Blockly.Events.Abstract);Blockly.Events.Move.prototype.type=Blockly.Events.MOVE;\nBlockly.Events.Move.prototype.toJson=function(){var a=Blockly.Events.Move.superClass_.toJson.call(this);this.newParentId&&(a.newParentId=this.newParentId);this.newInputName&&(a.newInputName=this.newInputName);this.newCoordinate&&(a.newCoordinate=Math.round(this.newCoordinate.x)+","+Math.round(this.newCoordinate.y));return a};\nBlockly.Events.Move.prototype.fromJson=function(a){Blockly.Events.Move.superClass_.fromJson.call(this,a);this.newParentId=a.newParentId;this.newInputName=a.newInputName;a.newCoordinate&&(a=a.newCoordinate.split(","),this.newCoordinate=new goog.math.Coordinate(parseFloat(a[0]),parseFloat(a[1])))};Blockly.Events.Move.prototype.recordNew=function(){var a=this.currentLocation_();this.newParentId=a.parentId;this.newInputName=a.inputName;this.newCoordinate=a.coordinate};\nBlockly.Events.Move.prototype.currentLocation_=function(){var a=Blockly.Workspace.getById(this.workspaceId).getBlockById(this.blockId),b={},c=a.getParent();if(c){if(b.parentId=c.id,a=c.getInputWithBlock(a))b.inputName=a.name}else b.coordinate=a.getRelativeToSurfaceXY();return b};Blockly.Events.Move.prototype.isNull=function(){return this.oldParentId==this.newParentId&&this.oldInputName==this.newInputName&&goog.math.Coordinate.equals(this.oldCoordinate,this.newCoordinate)};\nBlockly.Events.Move.prototype.run=function(a){var b=Blockly.Workspace.getById(this.workspaceId),c=b.getBlockById(this.blockId);if(c){var d=a?this.newParentId:this.oldParentId,e=a?this.newInputName:this.oldInputName;a=a?this.newCoordinate:this.oldCoordinate;var f=null;if(d&&(f=b.getBlockById(d),!f)){console.warn("Can\'t connect to non-existant block: "+d);return}c.getParent()&&c.unplug();if(a)e=c.getRelativeToSurfaceXY(),c.moveBy(a.x-e.x,a.y-e.y);else{var c=c.outputConnection||c.previousConnection,\ng;if(e){if(b=f.getInput(e))g=b.connection}else c.type==Blockly.PREVIOUS_STATEMENT&&(g=f.nextConnection);g?c.connect(g):console.warn("Can\'t connect to non-existant input: "+e)}}else console.warn("Can\'t move non-existant block: "+this.blockId)};Blockly.Events.Ui=function(a,b,c,d){Blockly.Events.Ui.superClass_.constructor.call(this,a);this.element=b;this.oldValue=c;this.newValue=d;this.recordUndo=!1};goog.inherits(Blockly.Events.Ui,Blockly.Events.Abstract);Blockly.Events.Ui.prototype.type=Blockly.Events.UI;\nBlockly.Events.Ui.prototype.toJson=function(){var a=Blockly.Events.Ui.superClass_.toJson.call(this);a.element=this.element;void 0!==this.newValue&&(a.newValue=this.newValue);return a};Blockly.Events.Ui.prototype.fromJson=function(a){Blockly.Events.Ui.superClass_.fromJson.call(this,a);this.element=a.element;this.newValue=a.newValue};\nBlockly.Events.disableOrphans=function(a){if(a.type==Blockly.Events.MOVE||a.type==Blockly.Events.CREATE){Blockly.Events.disable();if(a=Blockly.Workspace.getById(a.workspaceId).getBlockById(a.blockId))if(a.getParent()&&!a.getParent().disabled){a=a.getDescendants();for(var b=0,c;c=a[b];b++)c.setDisabled(!1)}else if((a.outputConnection||a.previousConnection)&&Blockly.dragMode_==Blockly.DRAG_NONE){do a.setDisabled(!0),a=a.getNextBlock();while(a)}Blockly.Events.enable()}};Blockly.Msg={};goog.getMsgOrig=goog.getMsg;goog.getMsg=function(a,b){var c=goog.getMsg.blocklyMsgMap[a];c&&(a=Blockly.Msg[c]);return goog.getMsgOrig(a,b)};goog.getMsg.blocklyMsgMap={Today:"TODAY"};Blockly.FieldTextInput=function(a,b){Blockly.FieldTextInput.superClass_.constructor.call(this,a,b)};goog.inherits(Blockly.FieldTextInput,Blockly.Field);Blockly.FieldTextInput.FONTSIZE=11;Blockly.FieldTextInput.prototype.CURSOR="text";Blockly.FieldTextInput.prototype.spellcheck_=!0;Blockly.FieldTextInput.prototype.dispose=function(){Blockly.WidgetDiv.hideIfOwner(this);Blockly.FieldTextInput.superClass_.dispose.call(this)};\nBlockly.FieldTextInput.prototype.setValue=function(a){if(null!==a){if(this.sourceBlock_){var b=this.callValidator(a);null!==b&&(a=b)}Blockly.Field.prototype.setValue.call(this,a)}};Blockly.FieldTextInput.prototype.setSpellcheck=function(a){this.spellcheck_=a};\nBlockly.FieldTextInput.prototype.showEditor_=function(a){this.workspace_=this.sourceBlock_.workspace;a=a||!1;if(!a&&(goog.userAgent.MOBILE||goog.userAgent.ANDROID||goog.userAgent.IPAD))a=window.prompt(Blockly.Msg.CHANGE_VALUE_TITLE,this.text_),this.sourceBlock_&&(a=this.callValidator(a)),this.setValue(a);else{Blockly.WidgetDiv.show(this,this.sourceBlock_.RTL,this.widgetDispose_());var b=Blockly.WidgetDiv.DIV,c=goog.dom.createDom("INPUT","blocklyHtmlInput");c.setAttribute("spellcheck",this.spellcheck_);\nvar d=Blockly.FieldTextInput.FONTSIZE*this.workspace_.scale+"pt";b.style.fontSize=d;c.style.fontSize=d;Blockly.FieldTextInput.htmlInput_=c;b.appendChild(c);c.value=c.defaultValue=this.text_;c.oldValue_=null;this.validate_();this.resizeEditor_();a||(c.focus(),c.select());c.onKeyDownWrapper_=Blockly.bindEventWithChecks_(c,"keydown",this,this.onHtmlInputKeyDown_);c.onKeyUpWrapper_=Blockly.bindEventWithChecks_(c,"keyup",this,this.onHtmlInputChange_);c.onKeyPressWrapper_=Blockly.bindEventWithChecks_(c,\n"keypress",this,this.onHtmlInputChange_);c.onWorkspaceChangeWrapper_=this.resizeEditor_.bind(this);this.workspace_.addChangeListener(c.onWorkspaceChangeWrapper_)}};Blockly.FieldTextInput.prototype.onHtmlInputKeyDown_=function(a){var b=Blockly.FieldTextInput.htmlInput_;13==a.keyCode?Blockly.WidgetDiv.hide():27==a.keyCode?(b.value=b.defaultValue,Blockly.WidgetDiv.hide()):9==a.keyCode&&(Blockly.WidgetDiv.hide(),this.sourceBlock_.tab(this,!a.shiftKey),a.preventDefault())};\nBlockly.FieldTextInput.prototype.onHtmlInputChange_=function(a){a=Blockly.FieldTextInput.htmlInput_;var b=a.value;b!==a.oldValue_?(a.oldValue_=b,this.setValue(b),this.validate_()):goog.userAgent.WEBKIT&&this.sourceBlock_.render();this.resizeEditor_();Blockly.svgResize(this.sourceBlock_.workspace)};\nBlockly.FieldTextInput.prototype.validate_=function(){var a=!0;goog.asserts.assertObject(Blockly.FieldTextInput.htmlInput_);var b=Blockly.FieldTextInput.htmlInput_;this.sourceBlock_&&(a=this.callValidator(b.value));null===a?Blockly.addClass_(b,"blocklyInvalidInput"):Blockly.removeClass_(b,"blocklyInvalidInput")};\nBlockly.FieldTextInput.prototype.resizeEditor_=function(){var a=Blockly.WidgetDiv.DIV,b=this.fieldGroup_.getBBox();a.style.width=b.width*this.workspace_.scale+"px";a.style.height=b.height*this.workspace_.scale+"px";b=this.getAbsoluteXY_();if(this.sourceBlock_.RTL){var c=this.getScaledBBox_();b.x+=c.width;b.x-=a.offsetWidth}b.y+=1;goog.userAgent.GECKO&&Blockly.WidgetDiv.DIV.style.top&&(--b.x,--b.y);goog.userAgent.WEBKIT&&(b.y-=3);a.style.left=b.x+"px";a.style.top=b.y+"px"};\nBlockly.FieldTextInput.prototype.widgetDispose_=function(){var a=this;return function(){var b=Blockly.FieldTextInput.htmlInput_,c=b.value;if(a.sourceBlock_)if(c=a.callValidator(c),null===c)c=b.defaultValue;else if(a.onFinishEditing_)a.onFinishEditing_(c);a.setValue(c);a.sourceBlock_.rendered&&a.sourceBlock_.render();Blockly.unbindEvent_(b.onKeyDownWrapper_);Blockly.unbindEvent_(b.onKeyUpWrapper_);Blockly.unbindEvent_(b.onKeyPressWrapper_);a.workspace_.removeChangeListener(b.onWorkspaceChangeWrapper_);\nBlockly.FieldTextInput.htmlInput_=null;b=Blockly.WidgetDiv.DIV.style;b.width="auto";b.height="auto";b.fontSize=""}};Blockly.FieldTextInput.numberValidator=function(a){console.warn("Blockly.FieldTextInput.numberValidator is deprecated. Use Blockly.FieldNumber instead.");if(null===a)return null;a=String(a);a=a.replace(/O/ig,"0");a=a.replace(/,/g,"");a=parseFloat(a||0);return isNaN(a)?null:String(a)};\nBlockly.FieldTextInput.nonnegativeIntegerValidator=function(a){(a=Blockly.FieldTextInput.numberValidator(a))&&(a=String(Math.max(0,Math.floor(a))));return a};Blockly.FieldAngle=function(a,b){this.symbol_=Blockly.createSvgElement("tspan",{},null);this.symbol_.appendChild(document.createTextNode("\\u00b0"));Blockly.FieldAngle.superClass_.constructor.call(this,a,b)};goog.inherits(Blockly.FieldAngle,Blockly.FieldTextInput);Blockly.FieldAngle.ROUND=15;Blockly.FieldAngle.HALF=50;Blockly.FieldAngle.CLOCKWISE=!1;Blockly.FieldAngle.OFFSET=0;Blockly.FieldAngle.WRAP=360;Blockly.FieldAngle.RADIUS=Blockly.FieldAngle.HALF-1;\nBlockly.FieldAngle.prototype.dispose_=function(){var a=this;return function(){Blockly.FieldAngle.superClass_.dispose_.call(a)();a.gauge_=null;a.clickWrapper_&&Blockly.unbindEvent_(a.clickWrapper_);a.moveWrapper1_&&Blockly.unbindEvent_(a.moveWrapper1_);a.moveWrapper2_&&Blockly.unbindEvent_(a.moveWrapper2_)}};\nBlockly.FieldAngle.prototype.showEditor_=function(){Blockly.FieldAngle.superClass_.showEditor_.call(this,goog.userAgent.MOBILE||goog.userAgent.ANDROID||goog.userAgent.IPAD);var a=Blockly.WidgetDiv.DIV;if(a.firstChild){var a=Blockly.createSvgElement("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:html":"http://www.w3.org/1999/xhtml","xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1",height:2*Blockly.FieldAngle.HALF+"px",width:2*Blockly.FieldAngle.HALF+"px"},a),b=Blockly.createSvgElement("circle",\n{cx:Blockly.FieldAngle.HALF,cy:Blockly.FieldAngle.HALF,r:Blockly.FieldAngle.RADIUS,"class":"blocklyAngleCircle"},a);this.gauge_=Blockly.createSvgElement("path",{"class":"blocklyAngleGauge"},a);this.line_=Blockly.createSvgElement("line",{x1:Blockly.FieldAngle.HALF,y1:Blockly.FieldAngle.HALF,"class":"blocklyAngleLine"},a);for(var c=0;360>c;c+=15)Blockly.createSvgElement("line",{x1:Blockly.FieldAngle.HALF+Blockly.FieldAngle.RADIUS,y1:Blockly.FieldAngle.HALF,x2:Blockly.FieldAngle.HALF+Blockly.FieldAngle.RADIUS-\n(0==c%45?10:5),y2:Blockly.FieldAngle.HALF,"class":"blocklyAngleMarks",transform:"rotate("+c+","+Blockly.FieldAngle.HALF+","+Blockly.FieldAngle.HALF+")"},a);a.style.marginLeft=15-Blockly.FieldAngle.RADIUS+"px";this.clickWrapper_=Blockly.bindEvent_(a,"click",this,Blockly.WidgetDiv.hide);this.moveWrapper1_=Blockly.bindEvent_(b,"mousemove",this,this.onMouseMove);this.moveWrapper2_=Blockly.bindEvent_(this.gauge_,"mousemove",this,this.onMouseMove);this.updateGraph_()}};\nBlockly.FieldAngle.prototype.onMouseMove=function(a){var b=this.gauge_.ownerSVGElement.getBoundingClientRect(),c=a.clientX-b.left-Blockly.FieldAngle.HALF;a=a.clientY-b.top-Blockly.FieldAngle.HALF;b=Math.atan(-a/c);isNaN(b)||(b=goog.math.toDegrees(b),0>c?b+=180:0<a&&(b+=360),b=Blockly.FieldAngle.CLOCKWISE?Blockly.FieldAngle.OFFSET+360-b:b-Blockly.FieldAngle.OFFSET,Blockly.FieldAngle.ROUND&&(b=Math.round(b/Blockly.FieldAngle.ROUND)*Blockly.FieldAngle.ROUND),b=this.callValidator(b),Blockly.FieldTextInput.htmlInput_.value=\nb,this.setValue(b),this.validate_(),this.resizeEditor_())};Blockly.FieldAngle.prototype.setText=function(a){Blockly.FieldAngle.superClass_.setText.call(this,a);this.textElement_&&(this.updateGraph_(),this.sourceBlock_.RTL?this.textElement_.insertBefore(this.symbol_,this.textElement_.firstChild):this.textElement_.appendChild(this.symbol_),this.size_.width=0)};\nBlockly.FieldAngle.prototype.updateGraph_=function(){if(this.gauge_){var a=Number(this.getText())+Blockly.FieldAngle.OFFSET,b=goog.math.toRadians(a),a=["M ",Blockly.FieldAngle.HALF,",",Blockly.FieldAngle.HALF],c=Blockly.FieldAngle.HALF,d=Blockly.FieldAngle.HALF;if(!isNaN(b)){var e=goog.math.toRadians(Blockly.FieldAngle.OFFSET),f=Math.cos(e)*Blockly.FieldAngle.RADIUS,g=Math.sin(e)*-Blockly.FieldAngle.RADIUS;Blockly.FieldAngle.CLOCKWISE&&(b=2*e-b);c+=Math.cos(b)*Blockly.FieldAngle.RADIUS;d-=Math.sin(b)*\nBlockly.FieldAngle.RADIUS;b=Math.abs(Math.floor((b-e)/Math.PI)%2);Blockly.FieldAngle.CLOCKWISE&&(b=1-b);a.push(" l ",f,",",g," A ",Blockly.FieldAngle.RADIUS,",",Blockly.FieldAngle.RADIUS," 0 ",b," ",Number(Blockly.FieldAngle.CLOCKWISE)," ",c,",",d," z")}this.gauge_.setAttribute("d",a.join(""));this.line_.setAttribute("x2",c);this.line_.setAttribute("y2",d)}};\nBlockly.FieldAngle.prototype.classValidator=function(a){if(null===a)return null;a=parseFloat(a||0);if(isNaN(a))return null;a%=360;0>a&&(a+=360);a>Blockly.FieldAngle.WRAP&&(a-=360);return String(a)};Blockly.FieldCheckbox=function(a,b){Blockly.FieldCheckbox.superClass_.constructor.call(this,"",b);this.setValue(a)};goog.inherits(Blockly.FieldCheckbox,Blockly.Field);Blockly.FieldCheckbox.CHECK_CHAR="\\u2713";Blockly.FieldCheckbox.prototype.CURSOR="default";\nBlockly.FieldCheckbox.prototype.init=function(){if(!this.fieldGroup_){Blockly.FieldCheckbox.superClass_.init.call(this);this.checkElement_=Blockly.createSvgElement("text",{"class":"blocklyText blocklyCheckbox",x:-3,y:14},this.fieldGroup_);var a=document.createTextNode(Blockly.FieldCheckbox.CHECK_CHAR);this.checkElement_.appendChild(a);this.checkElement_.style.display=this.state_?"block":"none"}};Blockly.FieldCheckbox.prototype.getValue=function(){return String(this.state_).toUpperCase()};\nBlockly.FieldCheckbox.prototype.setValue=function(a){a="TRUE"==a.toUpperCase();this.state_!==a&&(this.sourceBlock_&&Blockly.Events.isEnabled()&&Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_,"field",this.name,this.state_,a)),this.state_=a,this.checkElement_&&(this.checkElement_.style.display=a?"block":"none"))};Blockly.FieldCheckbox.prototype.showEditor_=function(){var a=!this.state_;this.sourceBlock_&&(a=this.callValidator(a));null!==a&&this.setValue(String(a).toUpperCase())};Blockly.FieldColour=function(a,b){Blockly.FieldColour.superClass_.constructor.call(this,a,b);this.setText(Blockly.Field.NBSP+Blockly.Field.NBSP+Blockly.Field.NBSP)};goog.inherits(Blockly.FieldColour,Blockly.Field);Blockly.FieldColour.prototype.colours_=null;Blockly.FieldColour.prototype.columns_=0;Blockly.FieldColour.prototype.init=function(){Blockly.FieldColour.superClass_.init.call(this);this.borderRect_.style.fillOpacity=1;this.setValue(this.getValue())};Blockly.FieldColour.prototype.CURSOR="default";\nBlockly.FieldColour.prototype.dispose=function(){Blockly.WidgetDiv.hideIfOwner(this);Blockly.FieldColour.superClass_.dispose.call(this)};Blockly.FieldColour.prototype.getValue=function(){return this.colour_};Blockly.FieldColour.prototype.setValue=function(a){this.sourceBlock_&&Blockly.Events.isEnabled()&&this.colour_!=a&&Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_,"field",this.name,this.colour_,a));this.colour_=a;this.borderRect_&&(this.borderRect_.style.fill=a)};\nBlockly.FieldColour.prototype.getText=function(){var a=this.colour_,b=a.match(/^#(.)\\1(.)\\2(.)\\3$/);b&&(a="#"+b[1]+b[2]+b[3]);return a};Blockly.FieldColour.COLOURS=goog.ui.ColorPicker.SIMPLE_GRID_COLORS;Blockly.FieldColour.COLUMNS=7;Blockly.FieldColour.prototype.setColours=function(a){this.colours_=a;return this};Blockly.FieldColour.prototype.setColumns=function(a){this.columns_=a;return this};\nBlockly.FieldColour.prototype.showEditor_=function(){Blockly.WidgetDiv.show(this,this.sourceBlock_.RTL,Blockly.FieldColour.widgetDispose_);var a=new goog.ui.ColorPicker;a.setSize(this.columns_||Blockly.FieldColour.COLUMNS);a.setColors(this.colours_||Blockly.FieldColour.COLOURS);var b=goog.dom.getViewportSize(),c=goog.style.getViewportPageOffset(document),d=this.getAbsoluteXY_(),e=this.getScaledBBox_();a.render(Blockly.WidgetDiv.DIV);a.setSelectedColor(this.getValue());var f=goog.style.getSize(a.getElement());\nd.y=d.y+f.height+e.height>=b.height+c.y?d.y-(f.height-1):d.y+(e.height-1);this.sourceBlock_.RTL?(d.x+=e.width,d.x-=f.width,d.x<c.x&&(d.x=c.x)):d.x>b.width+c.x-f.width&&(d.x=b.width+c.x-f.width);Blockly.WidgetDiv.position(d.x,d.y,b,c,this.sourceBlock_.RTL);var g=this;Blockly.FieldColour.changeEventKey_=goog.events.listen(a,goog.ui.ColorPicker.EventType.CHANGE,function(a){a=a.target.getSelectedColor()||"#000000";Blockly.WidgetDiv.hide();g.sourceBlock_&&(a=g.callValidator(a));null!==a&&g.setValue(a)})};\nBlockly.FieldColour.widgetDispose_=function(){Blockly.FieldColour.changeEventKey_&&goog.events.unlistenByKey(Blockly.FieldColour.changeEventKey_)};Blockly.FieldDropdown=function(a,b){this.menuGenerator_=a;this.trimOptions_();var c=this.getOptions_()[0];Blockly.FieldDropdown.superClass_.constructor.call(this,c[1],b)};goog.inherits(Blockly.FieldDropdown,Blockly.Field);Blockly.FieldDropdown.CHECKMARK_OVERHANG=25;Blockly.FieldDropdown.ARROW_CHAR=goog.userAgent.ANDROID?"\\u25bc":"\\u25be";Blockly.FieldDropdown.prototype.CURSOR="default";\nBlockly.FieldDropdown.prototype.init=function(){if(!this.fieldGroup_){this.arrow_=Blockly.createSvgElement("tspan",{},null);this.arrow_.appendChild(document.createTextNode(this.sourceBlock_.RTL?Blockly.FieldDropdown.ARROW_CHAR+" ":" "+Blockly.FieldDropdown.ARROW_CHAR));Blockly.FieldDropdown.superClass_.init.call(this);var a=this.text_;this.text_=null;this.setText(a)}};\nBlockly.FieldDropdown.prototype.showEditor_=function(){Blockly.WidgetDiv.show(this,this.sourceBlock_.RTL,null);var a=this,b=new goog.ui.Menu;b.setRightToLeft(this.sourceBlock_.RTL);for(var c=this.getOptions_(),d=0;d<c.length;d++){var e=c[d][1],f=new goog.ui.MenuItem(c[d][0]);f.setRightToLeft(this.sourceBlock_.RTL);f.setValue(e);f.setCheckable(!0);b.addChild(f,!0);f.setChecked(e==this.value_)}goog.events.listen(b,goog.ui.Component.EventType.ACTION,function(b){if(b=b.target)b=b.getValue(),a.sourceBlock_&&\n(b=a.callValidator(b)),null!==b&&a.setValue(b);Blockly.WidgetDiv.hideIfOwner(a)});b.getHandler().listen(b.getElement(),goog.events.EventType.TOUCHSTART,function(a){this.getOwnerControl(a.target).handleMouseDown(a)});b.getHandler().listen(b.getElement(),goog.events.EventType.TOUCHEND,function(a){this.getOwnerControl(a.target).performActionInternal(a)});c=goog.dom.getViewportSize();d=goog.style.getViewportPageOffset(document);e=this.getAbsoluteXY_();f=this.getScaledBBox_();b.render(Blockly.WidgetDiv.DIV);\nvar g=b.getElement();Blockly.addClass_(g,"blocklyDropdownMenu");var h=goog.style.getSize(g);h.height=g.scrollHeight;e.y=e.y+h.height+f.height>=c.height+d.y?e.y-(h.height+2):e.y+f.height;this.sourceBlock_.RTL?(e.x+=f.width,e.x+=Blockly.FieldDropdown.CHECKMARK_OVERHANG,e.x<d.x+h.width&&(e.x=d.x+h.width)):(e.x-=Blockly.FieldDropdown.CHECKMARK_OVERHANG,e.x>c.width+d.x-h.width&&(e.x=c.width+d.x-h.width));Blockly.WidgetDiv.position(e.x,e.y,c,d,this.sourceBlock_.RTL);b.setAllowAutoFocus(!0);g.focus()};\nBlockly.FieldDropdown.prototype.trimOptions_=function(){this.suffixField=this.prefixField=null;var a=this.menuGenerator_;if(goog.isArray(a)&&!(2>a.length)){var b=a.map(function(a){return a[0]}),c=Blockly.shortestStringLength(b),d=Blockly.commonWordPrefix(b,c),e=Blockly.commonWordSuffix(b,c);if((d||e)&&!(c<=d+e)){d&&(this.prefixField=b[0].substring(0,d-1));e&&(this.suffixField=b[0].substr(1-e));b=[];for(c=0;c<a.length;c++){var f=a[c][0],g=a[c][1],f=f.substring(d,f.length-e);b[c]=[f,g]}this.menuGenerator_=\nb}}};Blockly.FieldDropdown.prototype.getOptions_=function(){return goog.isFunction(this.menuGenerator_)?this.menuGenerator_.call(this):this.menuGenerator_};Blockly.FieldDropdown.prototype.getValue=function(){return this.value_};\nBlockly.FieldDropdown.prototype.setValue=function(a){if(null!==a&&a!==this.value_){this.sourceBlock_&&Blockly.Events.isEnabled()&&Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_,"field",this.name,this.value_,a));this.value_=a;for(var b=this.getOptions_(),c=0;c<b.length;c++)if(b[c][1]==a){this.setText(b[c][0]);return}this.setText(a)}};\nBlockly.FieldDropdown.prototype.setText=function(a){this.sourceBlock_&&this.arrow_&&(this.arrow_.style.fill=this.sourceBlock_.getColour());null!==a&&a!==this.text_&&(this.text_=a,this.updateTextNode_(),this.textElement_&&(this.sourceBlock_.RTL?this.textElement_.insertBefore(this.arrow_,this.textElement_.firstChild):this.textElement_.appendChild(this.arrow_)),this.sourceBlock_&&this.sourceBlock_.rendered&&(this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours_()))};\nBlockly.FieldDropdown.prototype.dispose=function(){Blockly.WidgetDiv.hideIfOwner(this);Blockly.FieldDropdown.superClass_.dispose.call(this)};Blockly.FieldImage=function(a,b,c,d){this.sourceBlock_=null;this.height_=Number(c);this.width_=Number(b);this.size_=new goog.math.Size(this.width_,this.height_+2*Blockly.BlockSvg.INLINE_PADDING_Y);this.text_=d||"";this.setValue(a)};goog.inherits(Blockly.FieldImage,Blockly.Field);Blockly.FieldImage.prototype.rectElement_=null;Blockly.FieldImage.prototype.EDITABLE=!1;\nBlockly.FieldImage.prototype.init=function(){if(!this.fieldGroup_){this.fieldGroup_=Blockly.createSvgElement("g",{},null);this.visible_||(this.fieldGroup_.style.display="none");this.imageElement_=Blockly.createSvgElement("image",{height:this.height_+"px",width:this.width_+"px"},this.fieldGroup_);this.setValue(this.src_);goog.userAgent.GECKO&&(this.rectElement_=Blockly.createSvgElement("rect",{height:this.height_+"px",width:this.width_+"px","fill-opacity":0},this.fieldGroup_));this.sourceBlock_.getSvgRoot().appendChild(this.fieldGroup_);\nvar a=this.rectElement_||this.imageElement_;a.tooltip=this.sourceBlock_;Blockly.Tooltip.bindMouseEvents(a)}};Blockly.FieldImage.prototype.dispose=function(){goog.dom.removeNode(this.fieldGroup_);this.rectElement_=this.imageElement_=this.fieldGroup_=null};Blockly.FieldImage.prototype.setTooltip=function(a){(this.rectElement_||this.imageElement_).tooltip=a};Blockly.FieldImage.prototype.getValue=function(){return this.src_};\nBlockly.FieldImage.prototype.setValue=function(a){null!==a&&(this.src_=a,this.imageElement_&&this.imageElement_.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",goog.isString(a)?a:""))};Blockly.FieldImage.prototype.setText=function(a){null!==a&&(this.text_=a)};Blockly.FieldImage.prototype.render_=function(){};Blockly.FieldNumber=function(a,b,c,d,e){a=String(a);Blockly.FieldNumber.superClass_.constructor.call(this,a,e);this.setConstraints(b,c,d)};goog.inherits(Blockly.FieldNumber,Blockly.FieldTextInput);Blockly.FieldNumber.prototype.setConstraints=function(a,b,c){c=parseFloat(c);this.precision_=isNaN(c)?0:c;a=parseFloat(a);this.min_=isNaN(a)?-Infinity:a;b=parseFloat(b);this.max_=isNaN(b)?Infinity:b;this.setValue(this.callValidator(this.getValue()))};\nBlockly.FieldNumber.prototype.classValidator=function(a){if(null===a)return null;a=String(a);a=a.replace(/O/ig,"0");a=a.replace(/,/g,"");a=parseFloat(a||0);if(isNaN(a))return null;this.precision_&&isFinite(a)&&(a=Math.round(a/this.precision_)*this.precision_);a=goog.math.clamp(a,this.min_,this.max_);return String(a)};Blockly.Variables={};Blockly.Variables.NAME_TYPE="VARIABLE";Blockly.Variables.allUsedVariables=function(a){var b;if(a instanceof Blockly.Block)b=a.getDescendants();else if(a.getAllBlocks)b=a.getAllBlocks();else throw"Not Block or Workspace: "+a;a=Object.create(null);for(var c=0;c<b.length;c++){var d=b[c].getVars();if(d)for(var e=0;e<d.length;e++){var f=d[e];f&&(a[f.toLowerCase()]=f)}}b=[];for(var g in a)b.push(a[g]);return b};\nBlockly.Variables.allVariables=function(a){a instanceof Blockly.Block&&console.warn("Deprecated call to Blockly.Variables.allVariables with a block instead of a workspace.  You may want Blockly.Variables.allUsedVariables");return a.variableList};\nBlockly.Variables.flyoutCategory=function(a){a=a.variableList;a.sort(goog.string.caseInsensitiveCompare);var b=[],c=goog.dom.createDom("button");c.setAttribute("text",Blockly.Msg.NEW_VARIABLE);b.push(c);if(0<a.length){if(Blockly.Blocks.variables_set){c=goog.dom.createDom("block");c.setAttribute("type","variables_set");Blockly.Blocks.math_change?c.setAttribute("gap",8):c.setAttribute("gap",24);var d=goog.dom.createDom("field",null,a[0]);d.setAttribute("name","VAR");c.appendChild(d);b.push(c)}if(Blockly.Blocks.math_change){c=\ngoog.dom.createDom("block");c.setAttribute("type","math_change");Blockly.Blocks.variables_get&&c.setAttribute("gap",20);var e=goog.dom.createDom("value");e.setAttribute("name","DELTA");c.appendChild(e);d=goog.dom.createDom("field",null,a[0]);d.setAttribute("name","VAR");c.appendChild(d);d=goog.dom.createDom("shadow");d.setAttribute("type","math_number");e.appendChild(d);e=goog.dom.createDom("field",null,"1");e.setAttribute("name","NUM");d.appendChild(e);b.push(c)}for(e=0;e<a.length;e++)Blockly.Blocks.variables_get&&\n(c=goog.dom.createDom("block"),c.setAttribute("type","variables_get"),Blockly.Blocks.variables_set&&c.setAttribute("gap",8),d=goog.dom.createDom("field",null,a[e]),d.setAttribute("name","VAR"),c.appendChild(d),b.push(c))}return b};\nBlockly.Variables.generateUniqueName=function(a){a=a.variableList;var b="";if(a.length)for(var c=1,d=0,e="ijkmnopqrstuvwxyzabcdefgh".charAt(d);!b;){for(var f=!1,g=0;g<a.length;g++)if(a[g].toLowerCase()==e){f=!0;break}f?(d++,25==d&&(d=0,c++),e="ijkmnopqrstuvwxyzabcdefgh".charAt(d),1<c&&(e+=c)):b=e}else b="i";return b};\nBlockly.Variables.createVariable=function(a){for(;;){var b=Blockly.Variables.promptName(Blockly.Msg.NEW_VARIABLE_TITLE,"");if(b)if(-1!=a.variableIndexOf(b))window.alert(Blockly.Msg.VARIABLE_ALREADY_EXISTS.replace("%1",b.toLowerCase()));else{a.createVariable(b);break}else{b=null;break}}return b};Blockly.Variables.promptName=function(a,b){var c=window.prompt(a,b);c&&(c=c.replace(/[\\s\\xa0]+/g," ").replace(/^ | $/g,""),c==Blockly.Msg.RENAME_VARIABLE||c==Blockly.Msg.NEW_VARIABLE)&&(c=null);return c};Blockly.FieldVariable=function(a,b){Blockly.FieldVariable.superClass_.constructor.call(this,Blockly.FieldVariable.dropdownCreate,b);this.setValue(a||"")};goog.inherits(Blockly.FieldVariable,Blockly.FieldDropdown);\nBlockly.FieldVariable.prototype.init=function(){this.fieldGroup_||(Blockly.FieldVariable.superClass_.init.call(this),this.getValue()||this.setValue(Blockly.Variables.generateUniqueName(this.sourceBlock_.isInFlyout?this.sourceBlock_.workspace.targetWorkspace:this.sourceBlock_.workspace)),this.sourceBlock_.isInFlyout||this.sourceBlock_.workspace.createVariable(this.getValue()))};Blockly.FieldVariable.prototype.getValue=function(){return this.getText()};\nBlockly.FieldVariable.prototype.setValue=function(a){this.sourceBlock_&&Blockly.Events.isEnabled()&&Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_,"field",this.name,this.value_,a));this.value_=a;this.setText(a)};\nBlockly.FieldVariable.dropdownCreate=function(){var a=this.sourceBlock_&&this.sourceBlock_.workspace?this.sourceBlock_.workspace.variableList.slice(0):[],b=this.getText();b&&-1==a.indexOf(b)&&a.push(b);a.sort(goog.string.caseInsensitiveCompare);a.push(Blockly.Msg.RENAME_VARIABLE);a.push(Blockly.Msg.DELETE_VARIABLE.replace("%1",b));for(var b=[],c=0;c<a.length;c++)b[c]=[a[c],a[c]];return b};\nBlockly.FieldVariable.prototype.classValidator=function(a){var b=this.sourceBlock_.workspace;if(a==Blockly.Msg.RENAME_VARIABLE){var c=this.getText();Blockly.hideChaff();(a=Blockly.Variables.promptName(Blockly.Msg.RENAME_VARIABLE_TITLE.replace("%1",c),c))&&b.renameVariable(c,a);return null}if(a==Blockly.Msg.DELETE_VARIABLE.replace("%1",this.getText()))return b.deleteVariable(this.getText()),null};Blockly.Generator=function(a){this.name_=a;this.FUNCTION_NAME_PLACEHOLDER_REGEXP_=new RegExp(this.FUNCTION_NAME_PLACEHOLDER_,"g")};Blockly.Generator.NAME_TYPE="generated_function";Blockly.Generator.prototype.INFINITE_LOOP_TRAP=null;Blockly.Generator.prototype.STATEMENT_PREFIX=null;Blockly.Generator.prototype.INDENT="  ";Blockly.Generator.prototype.COMMENT_WRAP=60;Blockly.Generator.prototype.ORDER_OVERRIDES=[];\nBlockly.Generator.prototype.workspaceToCode=function(a){a||(console.warn("No workspace specified in workspaceToCode call.  Guessing."),a=Blockly.getMainWorkspace());var b=[];this.init(a);a=a.getTopBlocks(!0);for(var c=0,d;d=a[c];c++){var e=this.blockToCode(d);goog.isArray(e)&&(e=e[0]);e&&(d.outputConnection&&this.scrubNakedValue&&(e=this.scrubNakedValue(e)),b.push(e))}b=b.join("\\n");b=this.finish(b);b=b.replace(/^\\s+\\n/,"");b=b.replace(/\\n\\s+$/,"\\n");return b=b.replace(/[ \\t]+\\n/g,"\\n")};\nBlockly.Generator.prototype.prefixLines=function(a,b){return b+a.replace(/(?!\\n$)\\n/g,"\\n"+b)};Blockly.Generator.prototype.allNestedComments=function(a){var b=[];a=a.getDescendants();for(var c=0;c<a.length;c++){var d=a[c].getCommentText();d&&b.push(d)}b.length&&b.push("");return b.join("\\n")};\nBlockly.Generator.prototype.blockToCode=function(a){if(!a)return"";if(a.disabled)return this.blockToCode(a.getNextBlock());var b=this[a.type];goog.asserts.assertFunction(b,\'Language "%s" does not know how to generate code for block type "%s".\',this.name_,a.type);b=b.call(a,a);if(goog.isArray(b))return goog.asserts.assert(a.outputConnection,\'Expecting string from statement block "%s".\',a.type),[this.scrub_(a,b[0]),b[1]];if(goog.isString(b)){var c=a.id.replace(/\\$/g,"$$$$");this.STATEMENT_PREFIX&&(b=\nthis.STATEMENT_PREFIX.replace(/%1/g,"\'"+c+"\'")+b);return this.scrub_(a,b)}if(null===b)return"";goog.asserts.fail("Invalid code generated: %s",b)};\nBlockly.Generator.prototype.valueToCode=function(a,b,c){isNaN(c)&&goog.asserts.fail(\'Expecting valid order from block "%s".\',a.type);var d=a.getInputTargetBlock(b);if(!d)return"";b=this.blockToCode(d);if(""===b)return"";goog.asserts.assertArray(b,\'Expecting tuple from value block "%s".\',d.type);a=b[0];b=b[1];isNaN(b)&&goog.asserts.fail(\'Expecting valid order from value block "%s".\',d.type);if(!a)return"";var d=!1,e=Math.floor(c),f=Math.floor(b);if(e<=f&&(e!=f||0!=e&&99!=e))for(d=!0,e=0;e<this.ORDER_OVERRIDES.length;e++)if(this.ORDER_OVERRIDES[e][0]==\nc&&this.ORDER_OVERRIDES[e][1]==b){d=!1;break}d&&(a="("+a+")");return a};Blockly.Generator.prototype.statementToCode=function(a,b){var c=a.getInputTargetBlock(b),d=this.blockToCode(c);goog.asserts.assertString(d,\'Expecting code from statement block "%s".\',c&&c.type);d&&(d=this.prefixLines(d,this.INDENT));return d};\nBlockly.Generator.prototype.addLoopTrap=function(a,b){b=b.replace(/\\$/g,"$$$$");this.INFINITE_LOOP_TRAP&&(a=this.INFINITE_LOOP_TRAP.replace(/%1/g,"\'"+b+"\'")+a);this.STATEMENT_PREFIX&&(a+=this.prefixLines(this.STATEMENT_PREFIX.replace(/%1/g,"\'"+b+"\'"),this.INDENT));return a};Blockly.Generator.prototype.RESERVED_WORDS_="";Blockly.Generator.prototype.addReservedWords=function(a){this.RESERVED_WORDS_+=a+","};Blockly.Generator.prototype.FUNCTION_NAME_PLACEHOLDER_="{leCUI8hutHZI4480Dc}";\nBlockly.Generator.prototype.provideFunction_=function(a,b){if(!this.definitions_[a]){var c=this.variableDB_.getDistinctName(a,Blockly.Procedures.NAME_TYPE);this.functionNames_[a]=c;for(var c=b.join("\\n").replace(this.FUNCTION_NAME_PLACEHOLDER_REGEXP_,c),d;d!=c;)d=c,c=c.replace(/^((  )*)  /gm,"$1"+this.INDENT);this.definitions_[a]=c}return this.functionNames_[a]};Blockly.Names=function(a,b){this.variablePrefix_=b||"";this.reservedDict_=Object.create(null);if(a)for(var c=a.split(","),d=0;d<c.length;d++)this.reservedDict_[c[d]]=!0;this.reset()};Blockly.Names.prototype.reset=function(){this.db_=Object.create(null);this.dbReverse_=Object.create(null)};\nBlockly.Names.prototype.getName=function(a,b){var c=a.toLowerCase()+"_"+b,d=b==Blockly.Variables.NAME_TYPE?this.variablePrefix_:"";if(c in this.db_)return d+this.db_[c];var e=this.getDistinctName(a,b);this.db_[c]=e.substr(d.length);return e};Blockly.Names.prototype.getDistinctName=function(a,b){for(var c=this.safeName_(a),d="";this.dbReverse_[c+d]||c+d in this.reservedDict_;)d=d?d+1:2;c+=d;this.dbReverse_[c]=!0;return(b==Blockly.Variables.NAME_TYPE?this.variablePrefix_:"")+c};\nBlockly.Names.prototype.safeName_=function(a){a?(a=encodeURI(a.replace(/ /g,"_")).replace(/[^\\w]/g,"_"),-1!="0123456789".indexOf(a[0])&&(a="my_"+a)):a="unnamed";return a};Blockly.Names.equals=function(a,b){return a.toLowerCase()==b.toLowerCase()};Blockly.Procedures={};Blockly.Procedures.NAME_TYPE="PROCEDURE";Blockly.Procedures.allProcedures=function(a){a=a.getAllBlocks();for(var b=[],c=[],d=0;d<a.length;d++)if(a[d].getProcedureDef){var e=a[d].getProcedureDef();e&&(e[2]?b.push(e):c.push(e))}c.sort(Blockly.Procedures.procTupleComparator_);b.sort(Blockly.Procedures.procTupleComparator_);return[c,b]};Blockly.Procedures.procTupleComparator_=function(a,b){return a[0].toLowerCase().localeCompare(b[0].toLowerCase())};\nBlockly.Procedures.findLegalName=function(a,b){if(b.isInFlyout)return a;for(;!Blockly.Procedures.isLegalName_(a,b.workspace,b);){var c=a.match(/^(.*?)(\\d+)$/);a=c?c[1]+(parseInt(c[2],10)+1):a+"2"}return a};Blockly.Procedures.isLegalName_=function(a,b,c){b=b.getAllBlocks();for(var d=0;d<b.length;d++)if(b[d]!=c&&b[d].getProcedureDef){var e=b[d].getProcedureDef();if(Blockly.Names.equals(e[0],a))return!1}return!0};\nBlockly.Procedures.rename=function(a){a=a.replace(/^[\\s\\xa0]+|[\\s\\xa0]+$/g,"");var b=Blockly.Procedures.findLegalName(a,this.sourceBlock_),c=this.text_;if(c!=a&&c!=b){a=this.sourceBlock_.workspace.getAllBlocks();for(var d=0;d<a.length;d++)a[d].renameProcedure&&a[d].renameProcedure(c,b)}return b};\nBlockly.Procedures.flyoutCategory=function(a){function b(a,b){for(var d=0;d<a.length;d++){var e=a[d][0],f=a[d][1],l=goog.dom.createDom("block");l.setAttribute("type",b);l.setAttribute("gap",16);var p=goog.dom.createDom("mutation");p.setAttribute("name",e);l.appendChild(p);for(e=0;e<f.length;e++){var m=goog.dom.createDom("arg");m.setAttribute("name",f[e]);p.appendChild(m)}c.push(l)}}var c=[];if(Blockly.Blocks.procedures_defnoreturn){var d=goog.dom.createDom("block");d.setAttribute("type","procedures_defnoreturn");\nd.setAttribute("gap",16);c.push(d)}Blockly.Blocks.procedures_defreturn&&(d=goog.dom.createDom("block"),d.setAttribute("type","procedures_defreturn"),d.setAttribute("gap",16),c.push(d));Blockly.Blocks.procedures_ifreturn&&(d=goog.dom.createDom("block"),d.setAttribute("type","procedures_ifreturn"),d.setAttribute("gap",16),c.push(d));c.length&&c[c.length-1].setAttribute("gap",24);a=Blockly.Procedures.allProcedures(a);b(a[0],"procedures_callnoreturn");b(a[1],"procedures_callreturn");return c};\nBlockly.Procedures.getCallers=function(a,b){for(var c=[],d=b.getAllBlocks(),e=0;e<d.length;e++)if(d[e].getProcedureCall){var f=d[e].getProcedureCall();f&&Blockly.Names.equals(f,a)&&c.push(d[e])}return c};\nBlockly.Procedures.mutateCallers=function(a){var b=Blockly.Events.recordUndo,c=a.getProcedureDef()[0],d=a.mutationToDom(!0);a=Blockly.Procedures.getCallers(c,a.workspace);for(var c=0,e;e=a[c];c++){var f=e.mutationToDom(),f=f&&Blockly.Xml.domToText(f);e.domToMutation(d);var g=e.mutationToDom(),g=g&&Blockly.Xml.domToText(g);f!=g&&(Blockly.Events.recordUndo=!1,Blockly.Events.fire(new Blockly.Events.Change(e,"mutation",null,f,g)),Blockly.Events.recordUndo=b)}};\nBlockly.Procedures.getDefinition=function(a,b){for(var c=b.getTopBlocks(!1),d=0;d<c.length;d++)if(c[d].getProcedureDef){var e=c[d].getProcedureDef();if(e&&Blockly.Names.equals(e[0],a))return c[d]}return null};Blockly.FlyoutButton=function(a,b,c){this.workspace_=a;this.targetWorkspace_=b;this.text_=c;this.position_=new goog.math.Coordinate(0,0)};Blockly.FlyoutButton.MARGIN=5;Blockly.FlyoutButton.prototype.width=0;Blockly.FlyoutButton.prototype.height=0;\nBlockly.FlyoutButton.prototype.createDom=function(){this.svgGroup_=Blockly.createSvgElement("g",{"class":"blocklyFlyoutButton"},this.workspace_.getCanvas());var a=Blockly.createSvgElement("rect",{"class":"blocklyFlyoutButtonShadow",rx:4,ry:4,x:1,y:1},this.svgGroup_),b=Blockly.createSvgElement("rect",{"class":"blocklyFlyoutButtonBackground",rx:4,ry:4},this.svgGroup_),c=Blockly.createSvgElement("text",{"class":"blocklyText",x:0,y:0,"text-anchor":"middle"},this.svgGroup_);c.textContent=this.text_;this.width=\nc.getComputedTextLength()+2*Blockly.FlyoutButton.MARGIN;this.height=20;a.setAttribute("width",this.width);a.setAttribute("height",this.height);b.setAttribute("width",this.width);b.setAttribute("height",this.height);c.setAttribute("x",this.width/2);c.setAttribute("y",this.height-Blockly.FlyoutButton.MARGIN);this.updateTransform_();return this.svgGroup_};Blockly.FlyoutButton.prototype.show=function(){this.updateTransform_();this.svgGroup_.setAttribute("display","block")};\nBlockly.FlyoutButton.prototype.updateTransform_=function(){this.svgGroup_.setAttribute("transform","translate("+this.position_.x+","+this.position_.y+")")};Blockly.FlyoutButton.prototype.moveTo=function(a,b){this.position_.x=a;this.position_.y=b;this.updateTransform_()};Blockly.FlyoutButton.prototype.dispose=function(){this.svgGroup_&&(goog.dom.removeNode(this.svgGroup_),this.svgGroup_=null);this.targetWorkspace_=this.workspace_=null};\nBlockly.FlyoutButton.prototype.onMouseUp=function(a){a.preventDefault();a.stopPropagation();Blockly.Flyout.terminateDrag_();Blockly.Variables.createVariable(this.targetWorkspace_)};Blockly.Flyout=function(a){a.getMetrics=this.getMetrics_.bind(this);a.setMetrics=this.setMetrics_.bind(this);this.workspace_=new Blockly.WorkspaceSvg(a);this.workspace_.isFlyout=!0;this.RTL=!!a.RTL;this.horizontalLayout_=a.horizontalLayout;this.toolboxPosition_=a.toolboxPosition;this.eventWrappers_=[];this.backgroundButtons_=[];this.buttons_=[];this.listeners_=[];this.permanentlyDisabled_=[];this.startDragMouseX_=this.startDragMouseY_=0};Blockly.Flyout.startFlyout_=null;\nBlockly.Flyout.startDownEvent_=null;Blockly.Flyout.startBlock_=null;Blockly.Flyout.onMouseUpWrapper_=null;Blockly.Flyout.onMouseMoveWrapper_=null;Blockly.Flyout.onMouseMoveBlockWrapper_=null;Blockly.Flyout.prototype.autoClose=!0;Blockly.Flyout.prototype.CORNER_RADIUS=8;Blockly.Flyout.prototype.DRAG_RADIUS=10;Blockly.Flyout.prototype.MARGIN=Blockly.Flyout.prototype.CORNER_RADIUS;Blockly.Flyout.prototype.GAP_X=3*Blockly.Flyout.prototype.MARGIN;Blockly.Flyout.prototype.GAP_Y=3*Blockly.Flyout.prototype.MARGIN;\nBlockly.Flyout.prototype.SCROLLBAR_PADDING=2;Blockly.Flyout.prototype.width_=0;Blockly.Flyout.prototype.height_=0;Blockly.Flyout.prototype.dragMode_=Blockly.DRAG_NONE;Blockly.Flyout.prototype.dragAngleRange_=70;Blockly.Flyout.prototype.createDom=function(){this.svgGroup_=Blockly.createSvgElement("g",{"class":"blocklyFlyout"},null);this.svgBackground_=Blockly.createSvgElement("path",{"class":"blocklyFlyoutBackground"},this.svgGroup_);this.svgGroup_.appendChild(this.workspace_.createDom());return this.svgGroup_};\nBlockly.Flyout.prototype.init=function(a){this.targetWorkspace_=a;this.workspace_.targetWorkspace=a;this.scrollbar_=new Blockly.Scrollbar(this.workspace_,this.horizontalLayout_,!1);this.hide();Array.prototype.push.apply(this.eventWrappers_,Blockly.bindEventWithChecks_(this.svgGroup_,"wheel",this,this.wheel_));this.autoClose||(this.filterWrapper_=this.filterForCapacity_.bind(this),this.targetWorkspace_.addChangeListener(this.filterWrapper_));Array.prototype.push.apply(this.eventWrappers_,Blockly.bindEventWithChecks_(this.svgGroup_,\n"mousedown",this,this.onMouseDown_))};\nBlockly.Flyout.prototype.dispose=function(){this.hide();Blockly.unbindEvent_(this.eventWrappers_);this.filterWrapper_&&(this.targetWorkspace_.removeChangeListener(this.filterWrapper_),this.filterWrapper_=null);this.scrollbar_&&(this.scrollbar_.dispose(),this.scrollbar_=null);this.workspace_&&(this.workspace_.targetWorkspace=null,this.workspace_.dispose(),this.workspace_=null);this.svgGroup_&&(goog.dom.removeNode(this.svgGroup_),this.svgGroup_=null);this.targetWorkspace_=this.svgBackground_=null};\nBlockly.Flyout.prototype.getWidth=function(){return this.width_};Blockly.Flyout.prototype.getHeight=function(){return this.height_};\nBlockly.Flyout.prototype.getMetrics_=function(){if(!this.isVisible())return null;try{var a=this.workspace_.getCanvas().getBBox()}catch(f){a={height:0,y:0,width:0,x:0}}var b=this.SCROLLBAR_PADDING,c=this.SCROLLBAR_PADDING;if(this.horizontalLayout_){this.toolboxPosition_==Blockly.TOOLBOX_AT_BOTTOM&&(b=0);var d=this.height_;this.toolboxPosition_==Blockly.TOOLBOX_AT_TOP&&(d+=this.MARGIN-this.SCROLLBAR_PADDING);var e=this.width_-2*this.SCROLLBAR_PADDING}else c=0,d=this.height_-2*this.SCROLLBAR_PADDING,\ne=this.width_,this.RTL||(e-=this.SCROLLBAR_PADDING);return{viewHeight:d,viewWidth:e,contentHeight:(a.height+2*this.MARGIN)*this.workspace_.scale,contentWidth:(a.width+2*this.MARGIN)*this.workspace_.scale,viewTop:-this.workspace_.scrollY,viewLeft:-this.workspace_.scrollX,contentTop:a.y,contentLeft:a.x,absoluteTop:b,absoluteLeft:c}};\nBlockly.Flyout.prototype.setMetrics_=function(a){var b=this.getMetrics_();b&&(!this.horizontalLayout_&&goog.isNumber(a.y)?this.workspace_.scrollY=-b.contentHeight*a.y:this.horizontalLayout_&&goog.isNumber(a.x)&&(this.workspace_.scrollX=-b.contentWidth*a.x),this.workspace_.translate(this.workspace_.scrollX+b.absoluteLeft,this.workspace_.scrollY+b.absoluteTop))};\nBlockly.Flyout.prototype.position=function(){if(this.isVisible()){var a=this.targetWorkspace_.getMetrics();if(a){var b=this.horizontalLayout_?a.viewWidth:this.width_,b=b-this.CORNER_RADIUS;this.toolboxPosition_==Blockly.TOOLBOX_AT_RIGHT&&(b*=-1);this.setBackgroundPath_(b,this.horizontalLayout_?this.height_:a.viewHeight);b=a.absoluteLeft;this.toolboxPosition_==Blockly.TOOLBOX_AT_RIGHT&&(b+=a.viewWidth,b-=this.width_);var c=a.absoluteTop;this.toolboxPosition_==Blockly.TOOLBOX_AT_BOTTOM&&(c+=a.viewHeight,\nc-=this.height_);this.svgGroup_.setAttribute("transform","translate("+b+","+c+")");this.horizontalLayout_?this.width_=a.viewWidth:this.height_=a.viewHeight;this.scrollbar_&&this.scrollbar_.resize()}}};Blockly.Flyout.prototype.setBackgroundPath_=function(a,b){this.horizontalLayout_?this.setBackgroundPathHorizontal_(a,b):this.setBackgroundPathVertical_(a,b)};\nBlockly.Flyout.prototype.setBackgroundPathVertical_=function(a,b){var c=this.toolboxPosition_==Blockly.TOOLBOX_AT_RIGHT,d=["M "+(c?this.width_:0)+",0"];d.push("h",a);d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,c?0:1,c?-this.CORNER_RADIUS:this.CORNER_RADIUS,this.CORNER_RADIUS);d.push("v",Math.max(0,b-2*this.CORNER_RADIUS));d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,c?0:1,c?this.CORNER_RADIUS:-this.CORNER_RADIUS,this.CORNER_RADIUS);d.push("h",-a);d.push("z");this.svgBackground_.setAttribute("d",\nd.join(" "))};\nBlockly.Flyout.prototype.setBackgroundPathHorizontal_=function(a,b){var c=this.toolboxPosition_==Blockly.TOOLBOX_AT_TOP,d=["M 0,"+(c?0:this.CORNER_RADIUS)];c?(d.push("h",a+this.CORNER_RADIUS),d.push("v",b),d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,-this.CORNER_RADIUS,this.CORNER_RADIUS),d.push("h",-1*(a-this.CORNER_RADIUS)),d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,-this.CORNER_RADIUS,-this.CORNER_RADIUS)):(d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,this.CORNER_RADIUS,\n-this.CORNER_RADIUS),d.push("h",a-this.CORNER_RADIUS),d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,this.CORNER_RADIUS,this.CORNER_RADIUS),d.push("v",b-this.CORNER_RADIUS),d.push("h",-a-this.CORNER_RADIUS));d.push("z");this.svgBackground_.setAttribute("d",d.join(" "))};Blockly.Flyout.prototype.scrollToStart=function(){this.scrollbar_.set(this.horizontalLayout_&&this.RTL?Infinity:0)};\nBlockly.Flyout.prototype.wheel_=function(a){var b=this.horizontalLayout_?a.deltaX:a.deltaY;if(b){goog.userAgent.GECKO&&(b*=10);var c=this.getMetrics_(),b=this.horizontalLayout_?c.viewLeft+b:c.viewTop+b,b=Math.min(b,this.horizontalLayout_?c.contentWidth-c.viewWidth:c.contentHeight-c.viewHeight),b=Math.max(b,0);this.scrollbar_.set(b)}a.preventDefault();a.stopPropagation()};Blockly.Flyout.prototype.isVisible=function(){return this.svgGroup_&&"block"==this.svgGroup_.style.display};\nBlockly.Flyout.prototype.hide=function(){if(this.isVisible()){this.svgGroup_.style.display="none";for(var a=0,b;b=this.listeners_[a];a++)Blockly.unbindEvent_(b);this.listeners_.length=0;this.reflowWrapper_&&(this.workspace_.removeChangeListener(this.reflowWrapper_),this.reflowWrapper_=null)}};\nBlockly.Flyout.prototype.show=function(a){this.hide();this.clearOldBlocks_();a==Blockly.Variables.NAME_TYPE?a=Blockly.Variables.flyoutCategory(this.workspace_.targetWorkspace):a==Blockly.Procedures.NAME_TYPE&&(a=Blockly.Procedures.flyoutCategory(this.workspace_.targetWorkspace));this.svgGroup_.style.display="block";for(var b=[],c=[],d=this.permanentlyDisabled_.length=0,e;e=a[d];d++)if(e.tagName){var f=e.tagName.toUpperCase(),g=this.horizontalLayout_?this.GAP_X:this.GAP_Y;"BLOCK"==f?(f=Blockly.Xml.domToBlock(e,\nthis.workspace_),f.disabled&&this.permanentlyDisabled_.push(f),b.push({type:"block",block:f}),e=parseInt(e.getAttribute("gap"),10),c.push(isNaN(e)?g:e)):"SEP"==e.tagName.toUpperCase()?(e=parseInt(e.getAttribute("gap"),10),!isNaN(e)&&0<c.length?c[c.length-1]=e:c.push(g)):"BUTTON"==f&&(e=e.getAttribute("text"),e=new Blockly.FlyoutButton(this.workspace_,this.targetWorkspace_,e),b.push({type:"button",button:e}),c.push(g))}this.layout_(b,c);this.listeners_.push(Blockly.bindEventWithChecks_(this.svgBackground_,\n"mouseover",this,function(){for(var a=this.workspace_.getTopBlocks(!1),b=0,c;c=a[b];b++)c.removeSelect()}));this.horizontalLayout_?this.height_=0:this.width_=0;this.reflow();this.filterForCapacity_();this.position();this.reflowWrapper_=this.reflow.bind(this);this.workspace_.addChangeListener(this.reflowWrapper_)};\nBlockly.Flyout.prototype.layout_=function(a,b){this.workspace_.scale=this.targetWorkspace_.scale;var c=this.MARGIN,d=this.RTL?c:c+Blockly.BlockSvg.TAB_WIDTH;this.horizontalLayout_&&this.RTL&&(a=a.reverse());for(var e=0,f;f=a[e];e++)if("block"==f.type){f=f.block;for(var g=f.getDescendants(),h=0,k;k=g[h];h++)k.isInFlyout=!0;f.render();g=f.getSvgRoot();h=f.getHeightWidth();k=f.outputConnection?Blockly.BlockSvg.TAB_WIDTH:0;this.horizontalLayout_&&(d+=k);f.moveBy(this.horizontalLayout_&&this.RTL?d+h.width-\nk:d,c);this.horizontalLayout_?d+=h.width+b[e]-k:c+=h.height+b[e];h=Blockly.createSvgElement("rect",{"fill-opacity":0},null);h.tooltip=f;Blockly.Tooltip.bindMouseEvents(h);this.workspace_.getCanvas().insertBefore(h,f.getSvgRoot());f.flyoutRect_=h;this.backgroundButtons_[e]=h;this.addBlockListeners_(g,f,h)}else"button"==f.type&&(f=f.button,g=f.createDom(),f.moveTo(d,c),f.show(),Blockly.bindEventWithChecks_(g,"mouseup",f,f.onMouseUp),this.buttons_.push(f),this.horizontalLayout_?d+=f.width+b[e]:c+=f.height+\nb[e])};Blockly.Flyout.prototype.clearOldBlocks_=function(){for(var a=this.workspace_.getTopBlocks(!1),b=0,c;c=a[b];b++)c.workspace==this.workspace_&&c.dispose(!1,!1);for(b=0;a=this.backgroundButtons_[b];b++)goog.dom.removeNode(a);for(b=this.backgroundButtons_.length=0;a=this.buttons_[b];b++)a.dispose();this.buttons_.length=0};\nBlockly.Flyout.prototype.addBlockListeners_=function(a,b,c){this.listeners_.push(Blockly.bindEventWithChecks_(a,"mousedown",null,this.blockMouseDown_(b)));this.listeners_.push(Blockly.bindEventWithChecks_(c,"mousedown",null,this.blockMouseDown_(b)));this.listeners_.push(Blockly.bindEvent_(a,"mouseover",b,b.addSelect));this.listeners_.push(Blockly.bindEvent_(a,"mouseout",b,b.removeSelect));this.listeners_.push(Blockly.bindEvent_(c,"mouseover",b,b.addSelect));this.listeners_.push(Blockly.bindEvent_(c,\n"mouseout",b,b.removeSelect))};Blockly.Flyout.blockRightClick_=function(a,b){Blockly.terminateDrag_();Blockly.hideChaff(!0);b.showContextMenu_(a);Blockly.Touch.clearTouchIdentifier()};\nBlockly.Flyout.prototype.blockMouseDown_=function(a){var b=this;return function(c){Blockly.isRightButton(c)?Blockly.Flyout.blockRightClick_(c,a):(Blockly.terminateDrag_(),Blockly.hideChaff(!0),Blockly.Css.setCursor(Blockly.Css.Cursor.CLOSED),b.startDragMouseY_=c.clientY,b.startDragMouseX_=c.clientX,Blockly.Flyout.startDownEvent_=c,Blockly.Flyout.startBlock_=a,Blockly.Flyout.startFlyout_=b,Blockly.Flyout.onMouseUpWrapper_=Blockly.bindEventWithChecks_(document,"mouseup",b,b.onMouseUp_),Blockly.Flyout.onMouseMoveBlockWrapper_=\nBlockly.bindEventWithChecks_(document,"mousemove",b,b.onMouseMoveBlock_));c.stopPropagation();c.preventDefault()}};\nBlockly.Flyout.prototype.onMouseDown_=function(a){Blockly.isRightButton(a)?Blockly.Touch.clearTouchIdentifier():(Blockly.hideChaff(!0),this.dragMode_=Blockly.DRAG_FREE,this.startDragMouseY_=a.clientY,this.startDragMouseX_=a.clientX,Blockly.Flyout.startFlyout_=this,Blockly.Flyout.onMouseMoveWrapper_=Blockly.bindEventWithChecks_(document,"mousemove",this,this.onMouseMove_),Blockly.Flyout.onMouseUpWrapper_=Blockly.bindEventWithChecks_(document,"mouseup",this,Blockly.Flyout.terminateDrag_),a.preventDefault(),\na.stopPropagation())};Blockly.Flyout.prototype.onMouseUp_=function(a){this.workspace_.isDragging()||(Blockly.Touch.clearTouchIdentifier(),this.autoClose?this.createBlockFunc_(Blockly.Flyout.startBlock_)(Blockly.Flyout.startDownEvent_):Blockly.WidgetDiv.isVisible()||Blockly.Events.fire(new Blockly.Events.Ui(Blockly.Flyout.startBlock_,"click",void 0,void 0)));Blockly.terminateDrag_()};\nBlockly.Flyout.prototype.onMouseMove_=function(a){var b=this.getMetrics_();if(this.horizontalLayout_){if(!(0>b.contentWidth-b.viewWidth)){var c=a.clientX-this.startDragMouseX_;this.startDragMouseX_=a.clientX;a=b.viewLeft-c;a=goog.math.clamp(a,0,b.contentWidth-b.viewWidth);this.scrollbar_.set(a)}}else 0>b.contentHeight-b.viewHeight||(c=a.clientY-this.startDragMouseY_,this.startDragMouseY_=a.clientY,a=b.viewTop-c,a=goog.math.clamp(a,0,b.contentHeight-b.viewHeight),this.scrollbar_.set(a))};\nBlockly.Flyout.prototype.onMouseMoveBlock_=function(a){"mousemove"==a.type&&1>=a.clientX&&0==a.clientY&&0==a.button||(this.determineDragIntention_(a.clientX-Blockly.Flyout.startDownEvent_.clientX,a.clientY-Blockly.Flyout.startDownEvent_.clientY)?(Blockly.longStop_(),this.createBlockFunc_(Blockly.Flyout.startBlock_)(Blockly.Flyout.startDownEvent_)):this.dragMode_==Blockly.DRAG_FREE&&(Blockly.longStop_(),this.onMouseMove_(a)));a.stopPropagation()};\nBlockly.Flyout.prototype.determineDragIntention_=function(a,b){if(this.dragMode_==Blockly.DRAG_FREE)return!1;if(Math.sqrt(a*a+b*b)<this.DRAG_RADIUS)return this.dragMode_=Blockly.DRAG_STICKY,!1;if(this.isDragTowardWorkspace_(a,b)||!this.scrollbar_.isVisible())return!0;this.dragMode_=Blockly.DRAG_FREE;return!1};\nBlockly.Flyout.prototype.isDragTowardWorkspace_=function(a,b){var c=Math.atan2(b,a)/Math.PI*180,d=!1,e=this.dragAngleRange_;if(this.horizontalLayout_)this.toolboxPosition_==Blockly.TOOLBOX_AT_TOP?c<90+e&&c>90-e&&(d=!0):c>-90-e&&c<-90+e&&(d=!0);else if(this.toolboxPosition_==Blockly.TOOLBOX_AT_LEFT)c<e&&c>-e&&(d=!0);else if(c<-180+e||c>180-e)d=!0;return d};\nBlockly.Flyout.prototype.createBlockFunc_=function(a){var b=this;return function(c){if(!Blockly.isRightButton(c)&&!a.disabled){Blockly.Events.disable();try{var d=b.placeNewBlock_(a)}finally{Blockly.Events.enable()}Blockly.Events.isEnabled()&&(Blockly.Events.setGroup(!0),Blockly.Events.fire(new Blockly.Events.Create(d)));b.autoClose?b.hide():b.filterForCapacity_();d.onMouseDown_(c);Blockly.dragMode_=Blockly.DRAG_FREE;d.setDragging_(!0)}}};\nBlockly.Flyout.prototype.placeNewBlock_=function(a){var b=this.targetWorkspace_,c=a.getSvgRoot();if(!c)throw"originBlock is not rendered.";var c=Blockly.getSvgXY_(c,b),d=this.workspace_.scrollX,e=this.workspace_.scale;c.x+=d/e-d;this.toolboxPosition_==Blockly.TOOLBOX_AT_RIGHT&&(d=b.getMetrics().viewWidth-this.width_,e=b.scale,c.x+=d/e-d);d=this.workspace_.scrollY;e=this.workspace_.scale;c.y+=d/e-d;this.toolboxPosition_==Blockly.TOOLBOX_AT_BOTTOM&&(d=b.getMetrics().viewHeight-this.height_,e=b.scale,\nc.y+=d/e-d);a=Blockly.Xml.blockToDom(a);a=Blockly.Xml.domToBlock(a,b);e=a.getSvgRoot();if(!e)throw"block is not rendered.";e=Blockly.getSvgXY_(e,b);e.x+=b.scrollX/b.scale-b.scrollX;e.y+=b.scrollY/b.scale-b.scrollY;b.toolbox_&&!b.scrollbar&&(e.x+=b.toolbox_.getWidth()/b.scale,e.y+=b.toolbox_.getHeight()/b.scale);a.moveBy(c.x-e.x,c.y-e.y);return a};\nBlockly.Flyout.prototype.filterForCapacity_=function(){for(var a=this.targetWorkspace_.remainingCapacity(),b=this.workspace_.getTopBlocks(!1),c=0,d;d=b[c];c++)if(-1==this.permanentlyDisabled_.indexOf(d)){var e=d.getDescendants();d.setDisabled(e.length>a)}};\nBlockly.Flyout.prototype.getClientRect=function(){if(!this.svgGroup_)return null;var a=this.svgGroup_.getBoundingClientRect(),b=a.left,c=a.top,d=a.width,a=a.height;return this.toolboxPosition_==Blockly.TOOLBOX_AT_TOP?new goog.math.Rect(-1E9,c-1E9,2E9,1E9+a):this.toolboxPosition_==Blockly.TOOLBOX_AT_BOTTOM?new goog.math.Rect(-1E9,c,2E9,1E9+a):this.toolboxPosition_==Blockly.TOOLBOX_AT_LEFT?new goog.math.Rect(b-1E9,-1E9,1E9+d,2E9):new goog.math.Rect(b,-1E9,1E9+d,2E9)};\nBlockly.Flyout.terminateDrag_=function(){Blockly.Flyout.startFlyout_&&(Blockly.Flyout.startFlyout_.dragMode_==Blockly.DRAG_FREE&&Blockly.Touch.clearTouchIdentifier(),Blockly.Flyout.startFlyout_.dragMode_=Blockly.DRAG_NONE,Blockly.Flyout.startFlyout_=null);Blockly.Flyout.onMouseUpWrapper_&&(Blockly.unbindEvent_(Blockly.Flyout.onMouseUpWrapper_),Blockly.Flyout.onMouseUpWrapper_=null);Blockly.Flyout.onMouseMoveBlockWrapper_&&(Blockly.unbindEvent_(Blockly.Flyout.onMouseMoveBlockWrapper_),Blockly.Flyout.onMouseMoveBlockWrapper_=\nnull);Blockly.Flyout.onMouseMoveWrapper_&&(Blockly.unbindEvent_(Blockly.Flyout.onMouseMoveWrapper_),Blockly.Flyout.onMouseMoveWrapper_=null);Blockly.Flyout.startDownEvent_=null;Blockly.Flyout.startBlock_=null};\nBlockly.Flyout.prototype.reflowHorizontal=function(a){this.workspace_.scale=this.targetWorkspace_.scale;for(var b=0,c=0,d;d=a[c];c++)b=Math.max(b,d.getHeightWidth().height);b+=1.5*this.MARGIN;b*=this.workspace_.scale;b+=Blockly.Scrollbar.scrollbarThickness;if(this.height_!=b){for(c=0;d=a[c];c++){var e=d.getHeightWidth();if(d.flyoutRect_){d.flyoutRect_.setAttribute("width",e.width);d.flyoutRect_.setAttribute("height",e.height);var f=d.outputConnection?Blockly.BlockSvg.TAB_WIDTH:0,g=d.getRelativeToSurfaceXY();\nd.flyoutRect_.setAttribute("y",g.y);d.flyoutRect_.setAttribute("x",this.RTL?g.x-e.width+f:g.x-f);(e=d.startHat_?Blockly.BlockSvg.START_HAT_HEIGHT:0)&&d.moveBy(0,e);d.flyoutRect_.setAttribute("y",g.y)}}this.height_=b;this.targetWorkspace_.resize()}};\nBlockly.Flyout.prototype.reflowVertical=function(a){this.workspace_.scale=this.targetWorkspace_.scale;for(var b=0,c=0,d;d=a[c];c++){var e=d.getHeightWidth().width;d.outputConnection&&(e-=Blockly.BlockSvg.TAB_WIDTH);b=Math.max(b,e)}for(c=0;d=this.buttons_[c];c++)b=Math.max(b,d.width);b+=1.5*this.MARGIN+Blockly.BlockSvg.TAB_WIDTH;b*=this.workspace_.scale;b+=Blockly.Scrollbar.scrollbarThickness;if(this.width_!=b){for(c=0;d=a[c];c++){e=d.getHeightWidth();if(this.RTL){var f=d.getRelativeToSurfaceXY().x,\ng=b/this.workspace_.scale-this.MARGIN,g=g-Blockly.BlockSvg.TAB_WIDTH;d.moveBy(g-f,0)}d.flyoutRect_&&(d.flyoutRect_.setAttribute("width",e.width),d.flyoutRect_.setAttribute("height",e.height),g=d.outputConnection?Blockly.BlockSvg.TAB_WIDTH:0,f=d.getRelativeToSurfaceXY(),d.flyoutRect_.setAttribute("x",this.RTL?f.x-e.width+g:f.x-g),(e=d.startHat_?Blockly.BlockSvg.START_HAT_HEIGHT:0)&&d.moveBy(0,e),d.flyoutRect_.setAttribute("y",f.y))}this.width_=b;this.targetWorkspace_.resize()}};\nBlockly.Flyout.prototype.reflow=function(){this.reflowWrapper_&&this.workspace_.removeChangeListener(this.reflowWrapper_);var a=this.workspace_.getTopBlocks(!1);this.horizontalLayout_?this.reflowHorizontal(a):this.reflowVertical(a);this.reflowWrapper_&&this.workspace_.addChangeListener(this.reflowWrapper_)};Blockly.Toolbox=function(a){this.workspace_=a;this.RTL=a.options.RTL;this.horizontalLayout_=a.options.horizontalLayout;this.toolboxPosition=a.options.toolboxPosition;this.config_={indentWidth:19,cssRoot:"blocklyTreeRoot",cssHideRoot:"blocklyHidden",cssItem:"",cssTreeRow:"blocklyTreeRow",cssItemLabel:"blocklyTreeLabel",cssTreeIcon:"blocklyTreeIcon",cssExpandedFolderIcon:"blocklyTreeIconOpen",cssFileIcon:"blocklyTreeIconNone",cssSelectedRow:"blocklyTreeSelected"};this.treeSeparatorConfig_={cssTreeRow:"blocklyTreeSeparator"};\nthis.horizontalLayout_&&(this.config_.cssTreeRow+=a.RTL?" blocklyHorizontalTreeRtl":" blocklyHorizontalTree",this.treeSeparatorConfig_.cssTreeRow="blocklyTreeSeparatorHorizontal "+(a.RTL?"blocklyHorizontalTreeRtl":"blocklyHorizontalTree"),this.config_.cssTreeIcon="")};Blockly.Toolbox.prototype.width=0;Blockly.Toolbox.prototype.height=0;Blockly.Toolbox.prototype.selectedOption_=null;Blockly.Toolbox.prototype.lastCategory_=null;\nBlockly.Toolbox.prototype.init=function(){var a=this.workspace_,b=this.workspace_.getParentSvg();this.HtmlDiv=goog.dom.createDom("DIV","blocklyToolboxDiv");this.HtmlDiv.setAttribute("dir",a.RTL?"RTL":"LTR");b.parentNode.insertBefore(this.HtmlDiv,b);Blockly.bindEventWithChecks_(this.HtmlDiv,"mousedown",this,function(a){Blockly.isRightButton(a)||a.target==this.HtmlDiv?Blockly.hideChaff(!1):Blockly.hideChaff(!0);Blockly.Touch.clearTouchIdentifier()});this.flyout_=new Blockly.Flyout({disabledPatternId:a.options.disabledPatternId,\nparentWorkspace:a,RTL:a.RTL,oneBasedIndex:a.options.oneBasedIndex,horizontalLayout:a.horizontalLayout,toolboxPosition:a.options.toolboxPosition});goog.dom.insertSiblingAfter(this.flyout_.createDom(),a.svgGroup_);this.flyout_.init(a);this.config_.cleardotPath=a.options.pathToMedia+"1x1.gif";this.config_.cssCollapsedFolderIcon="blocklyTreeIconClosed"+(a.RTL?"Rtl":"Ltr");this.tree_=b=new Blockly.Toolbox.TreeControl(this,this.config_);b.setShowRootNode(!1);b.setShowLines(!1);b.setShowExpandIcons(!1);\nb.setSelectedItem(null);a=this.populate_(a.options.languageTree);b.render(this.HtmlDiv);a&&b.setSelectedItem(a);this.addColour_();this.position()};Blockly.Toolbox.prototype.dispose=function(){this.flyout_.dispose();this.tree_.dispose();goog.dom.removeNode(this.HtmlDiv);this.lastCategory_=this.workspace_=null};Blockly.Toolbox.prototype.getWidth=function(){return this.width};Blockly.Toolbox.prototype.getHeight=function(){return this.height};\nBlockly.Toolbox.prototype.position=function(){var a=this.HtmlDiv;if(a){var b=this.workspace_.getParentSvg();goog.style.getPageOffset(b);b=Blockly.svgSize(b);this.horizontalLayout_?(a.style.left="0",a.style.height="auto",a.style.width=b.width+"px",this.height=a.offsetHeight,this.toolboxPosition==Blockly.TOOLBOX_AT_TOP?a.style.top="0":a.style.bottom="0"):(this.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT?a.style.right="0":a.style.left="0",a.style.height=b.height+"px",this.width=a.offsetWidth);this.flyout_.position()}};\nBlockly.Toolbox.prototype.populate_=function(a){this.tree_.removeChildren();this.tree_.blocks=[];this.hasColours_=!1;a=this.syncTrees_(a,this.tree_,this.workspace_.options.pathToMedia);if(this.tree_.blocks.length)throw"Toolbox cannot have both blocks and categories in the root level.";this.workspace_.resizeContents();return a};\nBlockly.Toolbox.prototype.syncTrees_=function(a,b,c){for(var d=null,e=null,f=0,g;g=a.childNodes[f];f++)if(g.tagName)switch(g.tagName.toUpperCase()){case "CATEGORY":e=this.tree_.createNode(g.getAttribute("name"));e.blocks=[];b.add(e);var h=g.getAttribute("custom");h?e.blocks=h:(h=this.syncTrees_(g,e,c))&&(d=h);h=g.getAttribute("colour");goog.isString(h)?(h.match(/^#[0-9a-fA-F]{6}$/)?e.hexColour=h:e.hexColour=Blockly.hueToRgb(h),this.hasColours_=!0):e.hexColour="";"true"==g.getAttribute("expanded")?\n(e.blocks.length&&(d=e),e.setExpanded(!0)):e.setExpanded(!1);e=g;break;case "SEP":e&&("CATEGORY"==e.tagName.toUpperCase()?b.add(new Blockly.Toolbox.TreeSeparator(this.treeSeparatorConfig_)):(g=parseFloat(g.getAttribute("gap")),!isNaN(g)&&e&&e.setAttribute("gap",g)));break;case "BLOCK":case "SHADOW":b.blocks.push(g),e=g}return d};\nBlockly.Toolbox.prototype.addColour_=function(a){a=(a||this.tree_).getChildren();for(var b=0,c;c=a[b];b++){var d=c.getRowElement();if(d){var e=this.hasColours_?"8px solid "+(c.hexColour||"#ddd"):"none";this.workspace_.RTL?d.style.borderRight=e:d.style.borderLeft=e}this.addColour_(c)}};Blockly.Toolbox.prototype.clearSelection=function(){this.tree_.setSelectedItem(null)};\nBlockly.Toolbox.prototype.getClientRect=function(){if(!this.HtmlDiv)return null;var a=this.HtmlDiv.getBoundingClientRect(),b=a.left,c=a.top,d=a.width,a=a.height;return this.toolboxPosition==Blockly.TOOLBOX_AT_LEFT?new goog.math.Rect(-1E7,-1E7,1E7+b+d,2E7):this.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT?new goog.math.Rect(b,-1E7,1E7+d,2E7):this.toolboxPosition==Blockly.TOOLBOX_AT_TOP?new goog.math.Rect(-1E7,-1E7,2E7,1E7+c+a):new goog.math.Rect(0,c,2E7,1E7+d)};\nBlockly.Toolbox.prototype.refreshSelection=function(){var a=this.tree_.getSelectedItem();a&&a.blocks&&this.flyout_.show(a.blocks)};Blockly.Toolbox.TreeControl=function(a,b){this.toolbox_=a;goog.ui.tree.TreeControl.call(this,goog.html.SafeHtml.EMPTY,b)};goog.inherits(Blockly.Toolbox.TreeControl,goog.ui.tree.TreeControl);\nBlockly.Toolbox.TreeControl.prototype.enterDocument=function(){Blockly.Toolbox.TreeControl.superClass_.enterDocument.call(this);var a=this.getElement();goog.events.BrowserFeature.TOUCH_ENABLED&&Blockly.bindEventWithChecks_(a,goog.events.EventType.TOUCHSTART,this,this.handleTouchEvent_)};Blockly.Toolbox.TreeControl.prototype.handleTouchEvent_=function(a){a.preventDefault();var b=this.getNodeFromEvent_(a);b&&a.type===goog.events.EventType.TOUCHSTART&&setTimeout(function(){b.onMouseDown(a)},1)};\nBlockly.Toolbox.TreeControl.prototype.createNode=function(a){return new Blockly.Toolbox.TreeNode(this.toolbox_,a?goog.html.SafeHtml.htmlEscape(a):goog.html.SafeHtml.EMPTY,this.getConfig(),this.getDomHelper())};\nBlockly.Toolbox.TreeControl.prototype.setSelectedItem=function(a){var b=this.toolbox_;if(a!=this.selectedItem_&&a!=b.tree_){b.lastCategory_&&(b.lastCategory_.getRowElement().style.backgroundColor="");if(a){var c=a.hexColour||"#57e";a.getRowElement().style.backgroundColor=c;b.addColour_(a)}c=this.getSelectedItem();goog.ui.tree.TreeControl.prototype.setSelectedItem.call(this,a);a&&a.blocks&&a.blocks.length?(b.flyout_.show(a.blocks),b.lastCategory_!=a&&b.flyout_.scrollToStart()):b.flyout_.hide();c!=\na&&c!=this&&(c=new Blockly.Events.Ui(null,"category",c&&c.getHtml(),a&&a.getHtml()),c.workspaceId=b.workspace_.id,Blockly.Events.fire(c));a&&(b.lastCategory_=a)}};Blockly.Toolbox.TreeNode=function(a,b,c,d){goog.ui.tree.TreeNode.call(this,b,c,d);a&&(this.horizontalLayout_=a.horizontalLayout_,b=function(){Blockly.svgResize(a.workspace_)},goog.events.listen(a.tree_,goog.ui.tree.BaseNode.EventType.EXPAND,b),goog.events.listen(a.tree_,goog.ui.tree.BaseNode.EventType.COLLAPSE,b))};\ngoog.inherits(Blockly.Toolbox.TreeNode,goog.ui.tree.TreeNode);Blockly.Toolbox.TreeNode.prototype.getExpandIconSafeHtml=function(){return goog.html.SafeHtml.create("span")};Blockly.Toolbox.TreeNode.prototype.onMouseDown=function(a){this.hasChildren()&&this.isUserCollapsible_?(this.toggle(),this.select()):this.isSelected()?this.getTree().setSelectedItem(null):this.select();this.updateRow()};Blockly.Toolbox.TreeNode.prototype.onDoubleClick_=function(a){};\nBlockly.Toolbox.TreeNode.prototype.onKeyDown=function(a){if(this.horizontalLayout_){var b={};b[goog.events.KeyCodes.RIGHT]=goog.events.KeyCodes.DOWN;b[goog.events.KeyCodes.LEFT]=goog.events.KeyCodes.UP;b[goog.events.KeyCodes.UP]=goog.events.KeyCodes.LEFT;b[goog.events.KeyCodes.DOWN]=goog.events.KeyCodes.RIGHT;a.keyCode=b[a.keyCode]||a.keyCode}return Blockly.Toolbox.TreeNode.superClass_.onKeyDown.call(this,a)};Blockly.Toolbox.TreeSeparator=function(a){Blockly.Toolbox.TreeNode.call(this,null,"",a)};\ngoog.inherits(Blockly.Toolbox.TreeSeparator,Blockly.Toolbox.TreeNode);Blockly.Css={};Blockly.Css.Cursor={OPEN:"handopen",CLOSED:"handclosed",DELETE:"handdelete"};Blockly.Css.currentCursor_="";Blockly.Css.styleSheet_=null;Blockly.Css.mediaPath_="";\nBlockly.Css.inject=function(a,b){if(!Blockly.Css.styleSheet_){var c=".blocklyDraggable {}\\n";a&&(c+=Blockly.Css.CONTENT.join("\\n"),Blockly.FieldDate&&(c+=Blockly.FieldDate.CSS.join("\\n")));Blockly.Css.mediaPath_=b.replace(/[\\\\\\/]$/,"");var c=c.replace(/<<<PATH>>>/g,Blockly.Css.mediaPath_),d=document.createElement("style");document.head.appendChild(d);c=document.createTextNode(c);d.appendChild(c);Blockly.Css.styleSheet_=d.sheet;Blockly.Css.setCursor(Blockly.Css.Cursor.OPEN)}};\nBlockly.Css.setCursor=function(a){if(Blockly.Css.currentCursor_!=a){Blockly.Css.currentCursor_=a;var b="url("+Blockly.Css.mediaPath_+"/"+a+".cur), auto",c=".blocklyDraggable {\\n  cursor: "+b+";\\n}\\n";Blockly.Css.styleSheet_.deleteRule(0);Blockly.Css.styleSheet_.insertRule(c,0);for(var c=document.getElementsByClassName("blocklyToolboxDiv"),d=0,e;e=c[d];d++)e.style.cursor=a==Blockly.Css.Cursor.DELETE?b:"";document.body.parentNode.style.cursor=a==Blockly.Css.Cursor.OPEN?"":b}};\nBlockly.Css.CONTENT=[".blocklySvg {","background-color: #fff;","outline: none;","overflow: hidden;","display: block;","}",".blocklyWidgetDiv {","display: none;","position: absolute;","z-index: 99999;","}",".injectionDiv {","height: 100%;","position: relative;","}",".blocklyNonSelectable {","user-select: none;","-moz-user-select: none;","-webkit-user-select: none;","-ms-user-select: none;","}",".blocklyTooltipDiv {","background-color: #ffffc7;","border: 1px solid #ddc;","box-shadow: 4px 4px 20px 1px rgba(0,0,0,.15);",\n"color: #000;","display: none;","font-family: sans-serif;","font-size: 9pt;","opacity: 0.9;","padding: 2px;","position: absolute;","z-index: 100000;","}",".blocklyResizeSE {","cursor: se-resize;","fill: #aaa;","}",".blocklyResizeSW {","cursor: sw-resize;","fill: #aaa;","}",".blocklyResizeLine {","stroke: #888;","stroke-width: 1;","}",".blocklyHighlightedConnectionPath {","fill: none;","stroke: #fc3;","stroke-width: 4px;","}",".blocklyPathLight {","fill: none;","stroke-linecap: round;","stroke-width: 1;",\n"}",".blocklySelected>.blocklyPath {","stroke: #fc3;","stroke-width: 3px;","}",".blocklySelected>.blocklyPathLight {","display: none;","}",".blocklyDragging>.blocklyPath,",".blocklyDragging>.blocklyPathLight {","fill-opacity: .8;","stroke-opacity: .8;","}",".blocklyDragging>.blocklyPathDark {","display: none;","}",".blocklyDisabled>.blocklyPath {","fill-opacity: .5;","stroke-opacity: .5;","}",".blocklyDisabled>.blocklyPathLight,",".blocklyDisabled>.blocklyPathDark {","display: none;","}",".blocklyText {",\n"cursor: default;","fill: #fff;","font-family: sans-serif;","font-size: 11pt;","}",".blocklyNonEditableText>text {","pointer-events: none;","}",".blocklyNonEditableText>rect,",".blocklyEditableText>rect {","fill: #fff;","fill-opacity: .6;","}",".blocklyNonEditableText>text,",".blocklyEditableText>text {","fill: #000;","}",".blocklyEditableText:hover>rect {","stroke: #fff;","stroke-width: 2;","}",".blocklyBubbleText {","fill: #000;","}",".blocklyFlyoutButton {","fill: #888;","cursor: default;","}",\n".blocklyFlyoutButtonShadow {","fill: #666;","}",".blocklyFlyoutButton:hover {","fill: #aaa;","}",".blocklySvg text {","user-select: none;","-moz-user-select: none;","-webkit-user-select: none;","cursor: inherit;","}",".blocklyHidden {","display: none;","}",".blocklyFieldDropdown:not(.blocklyHidden) {","display: block;","}",".blocklyIconGroup {","cursor: default;","}",".blocklyIconGroup:not(:hover),",".blocklyIconGroupReadonly {","opacity: .6;","}",".blocklyIconShape {","fill: #00f;","stroke: #fff;",\n"stroke-width: 1px;","}",".blocklyIconSymbol {","fill: #fff;","}",".blocklyMinimalBody {","margin: 0;","padding: 0;","}",".blocklyCommentTextarea {","background-color: #ffc;","border: 0;","margin: 0;","padding: 2px;","resize: none;","}",".blocklyHtmlInput {","border: none;","border-radius: 4px;","font-family: sans-serif;","height: 100%;","margin: 0;","outline: none;","padding: 0 1px;","width: 100%","}",".blocklyMainBackground {","stroke-width: 1;","stroke: #c6c6c6;","}",".blocklyMutatorBackground {",\n"fill: #fff;","stroke: #ddd;","stroke-width: 1;","}",".blocklyFlyoutBackground {","fill: #ddd;","fill-opacity: .8;","}",".blocklyScrollbarBackground {","opacity: 0;","}",".blocklyScrollbarHandle {","fill: #ccc;","}",".blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,",".blocklyScrollbarHandle:hover {","fill: #bbb;","}",".blocklyZoom>image {","opacity: .4;","}",".blocklyZoom>image:hover {","opacity: .6;","}",".blocklyZoom>image:active {","opacity: .8;","}",".blocklyFlyout .blocklyScrollbarHandle {",\n"fill: #bbb;","}",".blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,",".blocklyFlyout .blocklyScrollbarHandle:hover {","fill: #aaa;","}",".blocklyInvalidInput {","background: #faa;","}",".blocklyAngleCircle {","stroke: #444;","stroke-width: 1;","fill: #ddd;","fill-opacity: .8;","}",".blocklyAngleMarks {","stroke: #444;","stroke-width: 1;","}",".blocklyAngleGauge {","fill: #f88;","fill-opacity: .8;","}",".blocklyAngleLine {","stroke: #f00;","stroke-width: 2;","stroke-linecap: round;",\n"}",".blocklyContextMenu {","border-radius: 4px;","}",".blocklyDropdownMenu {","padding: 0 !important;","}",".blocklyWidgetDiv .goog-option-selected .goog-menuitem-checkbox,",".blocklyWidgetDiv .goog-option-selected .goog-menuitem-icon {","background: url(<<<PATH>>>/sprites.png) no-repeat -48px -16px !important;","}",".blocklyToolboxDiv {","background-color: #ddd;","overflow-x: visible;","overflow-y: auto;","position: absolute;","}",".blocklyTreeRoot {","padding: 4px 0;","}",".blocklyTreeRoot:focus {",\n"outline: none;","}",".blocklyTreeRow {","height: 22px;","line-height: 22px;","margin-bottom: 3px;","padding-right: 8px;","white-space: nowrap;","}",".blocklyHorizontalTree {","float: left;","margin: 1px 5px 8px 0;","}",".blocklyHorizontalTreeRtl {","float: right;","margin: 1px 0 8px 5px;","}",\'.blocklyToolboxDiv[dir="RTL"] .blocklyTreeRow {\',"margin-left: 8px;","}",".blocklyTreeRow:not(.blocklyTreeSelected):hover {","background-color: #e4e4e4;","}",".blocklyTreeSeparator {","border-bottom: solid #e5e5e5 1px;",\n"height: 0;","margin: 5px 0;","}",".blocklyTreeSeparatorHorizontal {","border-right: solid #e5e5e5 1px;","width: 0;","padding: 5px 0;","margin: 0 5px;","}",".blocklyTreeIcon {","background-image: url(<<<PATH>>>/sprites.png);","height: 16px;","vertical-align: middle;","width: 16px;","}",".blocklyTreeIconClosedLtr {","background-position: -32px -1px;","}",".blocklyTreeIconClosedRtl {","background-position: 0px -1px;","}",".blocklyTreeIconOpen {","background-position: -16px -1px;","}",".blocklyTreeSelected>.blocklyTreeIconClosedLtr {",\n"background-position: -32px -17px;","}",".blocklyTreeSelected>.blocklyTreeIconClosedRtl {","background-position: 0px -17px;","}",".blocklyTreeSelected>.blocklyTreeIconOpen {","background-position: -16px -17px;","}",".blocklyTreeIconNone,",".blocklyTreeSelected>.blocklyTreeIconNone {","background-position: -48px -1px;","}",".blocklyTreeLabel {","cursor: default;","font-family: sans-serif;","font-size: 16px;","padding: 0 3px;","vertical-align: middle;","}",".blocklyTreeSelected .blocklyTreeLabel {",\n"color: #fff;","}",".blocklyWidgetDiv .goog-palette {","outline: none;","cursor: default;","}",".blocklyWidgetDiv .goog-palette-table {","border: 1px solid #666;","border-collapse: collapse;","}",".blocklyWidgetDiv .goog-palette-cell {","height: 13px;","width: 15px;","margin: 0;","border: 0;","text-align: center;","vertical-align: middle;","border-right: 1px solid #666;","font-size: 1px;","}",".blocklyWidgetDiv .goog-palette-colorswatch {","position: relative;","height: 13px;","width: 15px;","border: 1px solid #666;",\n"}",".blocklyWidgetDiv .goog-palette-cell-hover .goog-palette-colorswatch {","border: 1px solid #FFF;","}",".blocklyWidgetDiv .goog-palette-cell-selected .goog-palette-colorswatch {","border: 1px solid #000;","color: #fff;","}",".blocklyWidgetDiv .goog-menu {","background: #fff;","border-color: #ccc #666 #666 #ccc;","border-style: solid;","border-width: 1px;","cursor: default;","font: normal 13px Arial, sans-serif;","margin: 0;","outline: none;","padding: 4px 0;","position: absolute;","overflow-y: auto;",\n"overflow-x: hidden;","max-height: 100%;","z-index: 20000;","}",".blocklyWidgetDiv .goog-menuitem {","color: #000;","font: normal 13px Arial, sans-serif;","list-style: none;","margin: 0;","padding: 4px 7em 4px 28px;","white-space: nowrap;","}",".blocklyWidgetDiv .goog-menuitem.goog-menuitem-rtl {","padding-left: 7em;","padding-right: 28px;","}",".blocklyWidgetDiv .goog-menu-nocheckbox .goog-menuitem,",".blocklyWidgetDiv .goog-menu-noicon .goog-menuitem {","padding-left: 12px;","}",".blocklyWidgetDiv .goog-menu-noaccel .goog-menuitem {",\n"padding-right: 20px;","}",".blocklyWidgetDiv .goog-menuitem-content {","color: #000;","font: normal 13px Arial, sans-serif;","}",".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-accel,",".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-content {","color: #ccc !important;","}",".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-icon {","opacity: 0.3;","-moz-opacity: 0.3;","filter: alpha(opacity=30);","}",".blocklyWidgetDiv .goog-menuitem-highlight,",".blocklyWidgetDiv .goog-menuitem-hover {",\n"background-color: #d6e9f8;","border-color: #d6e9f8;","border-style: dotted;","border-width: 1px 0;","padding-bottom: 3px;","padding-top: 3px;","}",".blocklyWidgetDiv .goog-menuitem-checkbox,",".blocklyWidgetDiv .goog-menuitem-icon {","background-repeat: no-repeat;","height: 16px;","left: 6px;","position: absolute;","right: auto;","vertical-align: middle;","width: 16px;","}",".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-checkbox,",".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-icon {",\n"left: auto;","right: 6px;","}",".blocklyWidgetDiv .goog-option-selected .goog-menuitem-checkbox,",".blocklyWidgetDiv .goog-option-selected .goog-menuitem-icon {","background: url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat -512px 0;","}",".blocklyWidgetDiv .goog-menuitem-accel {","color: #999;","direction: ltr;","left: auto;","padding: 0 6px;","position: absolute;","right: 0;","text-align: right;","}",".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-accel {","left: 0;","right: auto;",\n"text-align: left;","}",".blocklyWidgetDiv .goog-menuitem-mnemonic-hint {","text-decoration: underline;","}",".blocklyWidgetDiv .goog-menuitem-mnemonic-separator {","color: #999;","font-size: 12px;","padding-left: 4px;","}",".blocklyWidgetDiv .goog-menuseparator {","border-top: 1px solid #ccc;","margin: 4px 0;","padding: 0;","}",""];Blockly.WidgetDiv={};Blockly.WidgetDiv.DIV=null;Blockly.WidgetDiv.owner_=null;Blockly.WidgetDiv.dispose_=null;Blockly.WidgetDiv.createDom=function(){Blockly.WidgetDiv.DIV||(Blockly.WidgetDiv.DIV=goog.dom.createDom("DIV","blocklyWidgetDiv"),document.body.appendChild(Blockly.WidgetDiv.DIV))};\nBlockly.WidgetDiv.show=function(a,b,c){Blockly.WidgetDiv.hide();Blockly.WidgetDiv.owner_=a;Blockly.WidgetDiv.dispose_=c;a=goog.style.getViewportPageOffset(document);Blockly.WidgetDiv.DIV.style.top=a.y+"px";Blockly.WidgetDiv.DIV.style.direction=b?"rtl":"ltr";Blockly.WidgetDiv.DIV.style.display="block"};\nBlockly.WidgetDiv.hide=function(){Blockly.WidgetDiv.owner_&&(Blockly.WidgetDiv.owner_=null,Blockly.WidgetDiv.DIV.style.display="none",Blockly.WidgetDiv.DIV.style.left="",Blockly.WidgetDiv.DIV.style.top="",Blockly.WidgetDiv.dispose_&&Blockly.WidgetDiv.dispose_(),Blockly.WidgetDiv.dispose_=null,goog.dom.removeChildren(Blockly.WidgetDiv.DIV))};Blockly.WidgetDiv.isVisible=function(){return!!Blockly.WidgetDiv.owner_};Blockly.WidgetDiv.hideIfOwner=function(a){Blockly.WidgetDiv.owner_==a&&Blockly.WidgetDiv.hide()};\nBlockly.WidgetDiv.position=function(a,b,c,d,e){b<d.y&&(b=d.y);e?a>c.width+d.x&&(a=c.width+d.x):a<d.x&&(a=d.x);Blockly.WidgetDiv.DIV.style.left=a+"px";Blockly.WidgetDiv.DIV.style.top=b+"px";Blockly.WidgetDiv.DIV.style.height=c.height+"px"};Blockly.inject=function(a,b){goog.isString(a)&&(a=document.getElementById(a)||document.querySelector(a));if(!goog.dom.contains(document,a))throw"Error: container is not in current document.";var c=new Blockly.Options(b||{}),d=goog.dom.createDom("div","injectionDiv");a.appendChild(d);d=Blockly.createDom_(d,c);c=Blockly.createMainWorkspace_(d,c);Blockly.init_(c);c.markFocused();Blockly.bindEventWithChecks_(d,"focus",c,c.markFocused);Blockly.svgResize(c);return c};\nBlockly.createDom_=function(a,b){a.setAttribute("dir","LTR");goog.ui.Component.setDefaultRightToLeft(b.RTL);Blockly.Css.inject(b.hasCss,b.pathToMedia);var c=Blockly.createSvgElement("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:html":"http://www.w3.org/1999/xhtml","xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1","class":"blocklySvg"},a),d=Blockly.createSvgElement("defs",{},c),e=String(Math.random()).substring(2),f=Blockly.createSvgElement("filter",{id:"blocklyEmbossFilter"+e},d);Blockly.createSvgElement("feGaussianBlur",\n{"in":"SourceAlpha",stdDeviation:1,result:"blur"},f);var g=Blockly.createSvgElement("feSpecularLighting",{"in":"blur",surfaceScale:1,specularConstant:.5,specularExponent:10,"lighting-color":"white",result:"specOut"},f);Blockly.createSvgElement("fePointLight",{x:-5E3,y:-1E4,z:2E4},g);Blockly.createSvgElement("feComposite",{"in":"specOut",in2:"SourceAlpha",operator:"in",result:"specOut"},f);Blockly.createSvgElement("feComposite",{"in":"SourceGraphic",in2:"specOut",operator:"arithmetic",k1:0,k2:1,k3:1,\nk4:0},f);b.embossFilterId=f.id;f=Blockly.createSvgElement("pattern",{id:"blocklyDisabledPattern"+e,patternUnits:"userSpaceOnUse",width:10,height:10},d);Blockly.createSvgElement("rect",{width:10,height:10,fill:"#aaa"},f);Blockly.createSvgElement("path",{d:"M 0 0 L 10 10 M 10 0 L 0 10",stroke:"#cc0"},f);b.disabledPatternId=f.id;d=Blockly.createSvgElement("pattern",{id:"blocklyGridPattern"+e,patternUnits:"userSpaceOnUse"},d);0<b.gridOptions.length&&0<b.gridOptions.spacing&&(Blockly.createSvgElement("line",\n{stroke:b.gridOptions.colour},d),1<b.gridOptions.length&&Blockly.createSvgElement("line",{stroke:b.gridOptions.colour},d));b.gridPattern=d;return c};\nBlockly.createMainWorkspace_=function(a,b){b.parentWorkspace=null;var c=new Blockly.WorkspaceSvg(b);c.scale=b.zoomOptions.startScale;a.appendChild(c.createDom("blocklyMainBackground"));c.translate(0,0);c.markFocused();b.readOnly||b.hasScrollbars||c.addChangeListener(function(){if(Blockly.dragMode_==Blockly.DRAG_NONE){var a=c.getMetrics(),e=a.viewLeft+a.absoluteLeft,f=a.viewTop+a.absoluteTop;if(a.contentTop<f||a.contentTop+a.contentHeight>a.viewHeight+f||a.contentLeft<(b.RTL?a.viewLeft:e)||a.contentLeft+\na.contentWidth>(b.RTL?a.viewWidth:a.viewWidth+e))for(var g=c.getTopBlocks(!1),h=0,k;k=g[h];h++){var l=k.getRelativeToSurfaceXY(),p=k.getHeightWidth(),m=f+25-p.height-l.y;0<m&&k.moveBy(0,m);m=f+a.viewHeight-25-l.y;0>m&&k.moveBy(0,m);m=25+e-l.x-(b.RTL?0:p.width);0<m&&k.moveBy(m,0);l=e+a.viewWidth-25-l.x+(b.RTL?p.width:0);0>l&&k.moveBy(l,0)}}});Blockly.svgResize(c);Blockly.WidgetDiv.createDom();Blockly.Tooltip.createDom();return c};\nBlockly.init_=function(a){var b=a.options,c=a.getParentSvg();Blockly.bindEventWithChecks_(c,"contextmenu",null,function(a){Blockly.isTargetInput_(a)||a.preventDefault()});c=Blockly.bindEventWithChecks_(window,"resize",null,function(){Blockly.hideChaff(!0);Blockly.svgResize(a)});a.setResizeHandlerWrapper(c);Blockly.inject.bindDocumentEvents_();b.languageTree&&(a.toolbox_?a.toolbox_.init(a):a.flyout_&&(a.flyout_.init(a),a.flyout_.show(b.languageTree.childNodes),a.flyout_.scrollToStart(),a.scrollX=a.flyout_.width_,\nb.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT&&(a.scrollX*=-1),a.translate(a.scrollX,0)));b.hasScrollbars&&(a.scrollbar=new Blockly.ScrollbarPair(a),a.scrollbar.resize());b.hasSounds&&Blockly.inject.loadSounds_(b.pathToMedia,a)};\nBlockly.inject.bindDocumentEvents_=function(){Blockly.documentEventsBound_||(Blockly.bindEventWithChecks_(document,"keydown",null,Blockly.onKeyDown_),Blockly.bindEventWithChecks_(document,"touchend",null,Blockly.longStop_),Blockly.bindEventWithChecks_(document,"touchcancel",null,Blockly.longStop_),document.addEventListener("mouseup",Blockly.onMouseUp_,!1),goog.userAgent.IPAD&&Blockly.bindEventWithChecks_(window,"orientationchange",document,function(){Blockly.svgResize(Blockly.getMainWorkspace())}));\nBlockly.documentEventsBound_=!0};\nBlockly.inject.loadSounds_=function(a,b){b.loadAudio_([a+"click.mp3",a+"click.wav",a+"click.ogg"],"click");b.loadAudio_([a+"disconnect.wav",a+"disconnect.mp3",a+"disconnect.ogg"],"disconnect");b.loadAudio_([a+"delete.mp3",a+"delete.ogg",a+"delete.wav"],"delete");var c=[],d=function(){for(;c.length;)Blockly.unbindEvent_(c.pop());b.preloadAudio_()};c.push(Blockly.bindEventWithChecks_(document,"mousemove",null,d,!0));c.push(Blockly.bindEventWithChecks_(document,"touchstart",null,d,!0))};\nBlockly.updateToolbox=function(a){console.warn("Deprecated call to Blockly.updateToolbox, use workspace.updateToolbox instead.");Blockly.getMainWorkspace().updateToolbox(a)};Blockly.utils={};Blockly.addClass_=function(a,b){var c=a.getAttribute("class")||"";-1==(" "+c+" ").indexOf(" "+b+" ")&&(c&&(c+=" "),a.setAttribute("class",c+b))};Blockly.removeClass_=function(a,b){var c=a.getAttribute("class");if(-1!=(" "+c+" ").indexOf(" "+b+" ")){for(var c=c.split(/\\s+/),d=0;d<c.length;d++)c[d]&&c[d]!=b||(c.splice(d,1),d--);c.length?a.setAttribute("class",c.join(" ")):a.removeAttribute("class")}};\nBlockly.hasClass_=function(a,b){return-1!=(" "+a.getAttribute("class")+" ").indexOf(" "+b+" ")};\nBlockly.bindEventWithChecks_=function(a,b,c,d,e){var f=!1,g=function(a){var b=!e;a=Blockly.Touch.splitEventByTouches(a);for(var g=0,h;h=a[g];g++)if(!b||Blockly.Touch.shouldHandleEvent(h))Blockly.Touch.setClientFromTouch(h),c?d.call(c,h):d(h),f=!0};a.addEventListener(b,g,!1);var h=[[a,b,g]];if(b in Blockly.Touch.TOUCH_MAP)for(var k=function(a){g(a);f&&a.preventDefault()},l=0,p;p=Blockly.Touch.TOUCH_MAP[b][l];l++)a.addEventListener(p,k,!1),h.push([a,p,k]);return h};\nBlockly.bindEvent_=function(a,b,c,d){var e=function(a){c?d.call(c,a):d(a)};a.addEventListener(b,e,!1);var f=[[a,b,e]];if(b in Blockly.Touch.TOUCH_MAP)for(var g=function(a){if(1==a.changedTouches.length){var b=a.changedTouches[0];a.clientX=b.clientX;a.clientY=b.clientY}e(a);a.preventDefault()},h=0,k;k=Blockly.Touch.TOUCH_MAP[b][h];h++)a.addEventListener(k,g,!1),f.push([a,k,g]);return f};Blockly.unbindEvent_=function(a){for(;a.length;){var b=a.pop(),c=b[2];b[0].removeEventListener(b[1],c,!1)}return c};\nBlockly.noEvent=function(a){a.preventDefault();a.stopPropagation()};Blockly.isTargetInput_=function(a){return"textarea"==a.target.type||"text"==a.target.type||"number"==a.target.type||"email"==a.target.type||"password"==a.target.type||"search"==a.target.type||"tel"==a.target.type||"url"==a.target.type||a.target.isContentEditable};\nBlockly.getRelativeXY_=function(a){var b=new goog.math.Coordinate(0,0),c=a.getAttribute("x");c&&(b.x=parseInt(c,10));if(c=a.getAttribute("y"))b.y=parseInt(c,10);if(a=(a=a.getAttribute("transform"))&&a.match(Blockly.getRelativeXY_.XY_REGEXP_))b.x+=parseFloat(a[1]),a[3]&&(b.y+=parseFloat(a[3]));return b};Blockly.getRelativeXY_.XY_REGEXP_=/translate\\(\\s*([-+\\d.e]+)([ ,]\\s*([-+\\d.e]+)\\s*\\))?/;\nBlockly.getSvgXY_=function(a,b){var c=0,d=0,e=1;if(goog.dom.contains(b.getCanvas(),a)||goog.dom.contains(b.getBubbleCanvas(),a))e=b.scale;do{var f=Blockly.getRelativeXY_(a);if(a==b.getCanvas()||a==b.getBubbleCanvas())e=1;c+=f.x*e;d+=f.y*e;a=a.parentNode}while(a&&a!=b.getParentSvg());return new goog.math.Coordinate(c,d)};\nBlockly.createSvgElement=function(a,b,c,d){a=document.createElementNS(Blockly.SVG_NS,a);for(var e in b)a.setAttribute(e,b[e]);document.body.runtimeStyle&&(a.runtimeStyle=a.currentStyle=a.style);c&&c.appendChild(a);return a};Blockly.isRightButton=function(a){return a.ctrlKey&&goog.userAgent.MAC?!0:2==a.button};Blockly.mouseToSvg=function(a,b,c){var d=b.createSVGPoint();d.x=a.clientX;d.y=a.clientY;c||(c=b.getScreenCTM().inverse());return d.matrixTransform(c)};\nBlockly.shortestStringLength=function(a){if(!a.length)return 0;for(var b=a[0].length,c=1;c<a.length;c++)b=Math.min(b,a[c].length);return b};Blockly.commonWordPrefix=function(a,b){if(!a.length)return 0;if(1==a.length)return a[0].length;for(var c=0,d=b||Blockly.shortestStringLength(a),e=0;e<d;e++){for(var f=a[0][e],g=1;g<a.length;g++)if(f!=a[g][e])return c;" "==f&&(c=e+1)}for(g=1;g<a.length;g++)if((f=a[g][e])&&" "!=f)return c;return d};\nBlockly.commonWordSuffix=function(a,b){if(!a.length)return 0;if(1==a.length)return a[0].length;for(var c=0,d=b||Blockly.shortestStringLength(a),e=0;e<d;e++){for(var f=a[0].substr(-e-1,1),g=1;g<a.length;g++)if(f!=a[g].substr(-e-1,1))return c;" "==f&&(c=e+1)}for(g=1;g<a.length;g++)if((f=a[g].charAt(a[g].length-e-1))&&" "!=f)return c;return d};Blockly.isNumber=function(a){return!!a.match(/^\\s*-?\\d+(\\.\\d+)?\\s*$/)};\nBlockly.utils.tokenizeInterpolation=function(a){var b=[];a=a.split("");a.push("");for(var c=0,d=[],e=null,f=0;f<a.length;f++){var g=a[f];0==c?"%"==g?c=1:d.push(g):1==c?"%"==g?(d.push(g),c=0):"0"<=g&&"9">=g?(c=2,e=g,(g=d.join(""))&&b.push(g),d.length=0):(d.push("%",g),c=0):2==c&&("0"<=g&&"9">=g?e+=g:(b.push(parseInt(e,10)),f--,c=0))}(g=d.join(""))&&b.push(g);return b};\nBlockly.genUid=function(){for(var a=Blockly.genUid.soup_.length,b=[],c=0;20>c;c++)b[c]=Blockly.genUid.soup_.charAt(Math.random()*a);return b.join("")};Blockly.genUid.soup_="!#$%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";Blockly.utils.wrap=function(a,b){for(var c=a.split("\\n"),d=0;d<c.length;d++)c[d]=Blockly.utils.wrap_line_(c[d],b);return c.join("\\n")};\nBlockly.utils.wrap_line_=function(a,b){if(a.length<=b)return a;for(var c=a.trim().split(/\\s+/),d=0;d<c.length;d++)c[d].length>b&&(b=c[d].length);var e,d=-Infinity,f,g=1;do{e=d;f=a;for(var h=[],k=c.length/g,l=1,d=0;d<c.length-1;d++)l<(d+1.5)/k?(l++,h[d]=!0):h[d]=!1;h=Blockly.utils.wrapMutate_(c,h,b);d=Blockly.utils.wrapScore_(c,h,b);a=Blockly.utils.wrapToText_(c,h);g++}while(d>e);return f};\nBlockly.utils.wrapScore_=function(a,b,c){for(var d=[0],e=[],f=0;f<a.length;f++)d[d.length-1]+=a[f].length,!0===b[f]?(d.push(0),e.push(a[f].charAt(a[f].length-1))):!1===b[f]&&d[d.length-1]++;a=Math.max.apply(Math,d);for(f=b=0;f<d.length;f++)b-=2*Math.pow(Math.abs(c-d[f]),1.5),b-=Math.pow(a-d[f],1.5),-1!=".?!".indexOf(e[f])?b+=c/3:-1!=",;)]}".indexOf(e[f])&&(b+=c/4);1<d.length&&d[d.length-1]<=d[d.length-2]&&(b+=.5);return b};\nBlockly.utils.wrapMutate_=function(a,b,c){for(var d=Blockly.utils.wrapScore_(a,b,c),e,f=0;f<b.length-1;f++)if(b[f]!=b[f+1]){var g=[].concat(b);g[f]=!g[f];g[f+1]=!g[f+1];var h=Blockly.utils.wrapScore_(a,g,c);h>d&&(d=h,e=g)}return e?Blockly.utils.wrapMutate_(a,e,c):b};Blockly.utils.wrapToText_=function(a,b){for(var c=[],d=0;d<a.length;d++)c.push(a[d]),void 0!==b[d]&&c.push(b[d]?"\\n":" ");return c.join("")};Blockly.FieldDate=function(a,b){a||(a=(new goog.date.Date).toIsoString(!0));Blockly.FieldDate.superClass_.constructor.call(this,a,b);this.setValue(a)};goog.inherits(Blockly.FieldDate,Blockly.Field);Blockly.FieldDate.prototype.CURSOR="text";Blockly.FieldDate.prototype.dispose=function(){Blockly.WidgetDiv.hideIfOwner(this);Blockly.FieldDate.superClass_.dispose.call(this)};Blockly.FieldDate.prototype.getValue=function(){return this.date_};\nBlockly.FieldDate.prototype.setValue=function(a){if(this.sourceBlock_){var b=this.callValidator(a);null!==b&&(a=b)}this.date_=a;Blockly.Field.prototype.setText.call(this,a)};\nBlockly.FieldDate.prototype.showEditor_=function(){Blockly.WidgetDiv.show(this,this.sourceBlock_.RTL,Blockly.FieldDate.widgetDispose_);Blockly.FieldDate.loadLanguage_();var a=new goog.ui.DatePicker;a.setAllowNone(!1);a.setShowWeekNum(!1);var b=goog.dom.getViewportSize(),c=goog.style.getViewportPageOffset(document),d=this.getAbsoluteXY_(),e=this.getScaledBBox_();a.render(Blockly.WidgetDiv.DIV);a.setDate(goog.date.fromIsoString(this.getValue()));var f=goog.style.getSize(a.getElement());d.y=d.y+f.height+\ne.height>=b.height+c.y?d.y-(f.height-1):d.y+(e.height-1);this.sourceBlock_.RTL?(d.x+=e.width,d.x-=f.width,d.x<c.x&&(d.x=c.x)):d.x>b.width+c.x-f.width&&(d.x=b.width+c.x-f.width);Blockly.WidgetDiv.position(d.x,d.y,b,c,this.sourceBlock_.RTL);var g=this;Blockly.FieldDate.changeEventKey_=goog.events.listen(a,goog.ui.DatePicker.Events.CHANGE,function(a){a=a.date?a.date.toIsoString(!0):"";Blockly.WidgetDiv.hide();g.sourceBlock_&&(a=g.callValidator(a));g.setValue(a)})};\nBlockly.FieldDate.widgetDispose_=function(){Blockly.FieldDate.changeEventKey_&&goog.events.unlistenByKey(Blockly.FieldDate.changeEventKey_)};Blockly.FieldDate.loadLanguage_=function(){var a=/^DateTimeSymbols_(.+)$/,b;for(b in goog.i18n){var c=b.match(a);c&&(c=c[1].toLowerCase().replace("_","."),goog.getObjectByName(c,Blockly.Msg)&&(goog.i18n.DateTimeSymbols=goog.i18n[b]))}};\nBlockly.FieldDate.CSS=[".blocklyWidgetDiv .goog-date-picker,",".blocklyWidgetDiv .goog-date-picker th,",".blocklyWidgetDiv .goog-date-picker td {","  font: 13px Arial, sans-serif;","}",".blocklyWidgetDiv .goog-date-picker {","  -moz-user-focus: normal;","  -moz-user-select: none;","  position: relative;","  border: 1px solid #000;","  float: left;","  padding: 2px;","  color: #000;","  background: #c3d9ff;","  cursor: default;","}",".blocklyWidgetDiv .goog-date-picker th {","  text-align: center;",\n"}",".blocklyWidgetDiv .goog-date-picker td {","  text-align: center;","  vertical-align: middle;","  padding: 1px 3px;","}",".blocklyWidgetDiv .goog-date-picker-menu {","  position: absolute;","  background: threedface;","  border: 1px solid gray;","  -moz-user-focus: normal;","  z-index: 1;","  outline: none;","}",".blocklyWidgetDiv .goog-date-picker-menu ul {","  list-style: none;","  margin: 0px;","  padding: 0px;","}",".blocklyWidgetDiv .goog-date-picker-menu ul li {","  cursor: default;","}",\n".blocklyWidgetDiv .goog-date-picker-menu-selected {","  background: #ccf;","}",".blocklyWidgetDiv .goog-date-picker th {","  font-size: .9em;","}",".blocklyWidgetDiv .goog-date-picker td div {","  float: left;","}",".blocklyWidgetDiv .goog-date-picker button {","  padding: 0px;","  margin: 1px 0;","  border: 0;","  color: #20c;","  font-weight: bold;","  background: transparent;","}",".blocklyWidgetDiv .goog-date-picker-date {","  background: #fff;","}",".blocklyWidgetDiv .goog-date-picker-week,",\n".blocklyWidgetDiv .goog-date-picker-wday {","  padding: 1px 3px;","  border: 0;","  border-color: #a2bbdd;","  border-style: solid;","}",".blocklyWidgetDiv .goog-date-picker-week {","  border-right-width: 1px;","}",".blocklyWidgetDiv .goog-date-picker-wday {","  border-bottom-width: 1px;","}",".blocklyWidgetDiv .goog-date-picker-head td {","  text-align: center;","}",".blocklyWidgetDiv td.goog-date-picker-today-cont {","  text-align: center;","}",".blocklyWidgetDiv td.goog-date-picker-none-cont {",\n"  text-align: center;","}",".blocklyWidgetDiv .goog-date-picker-month {","  min-width: 11ex;","  white-space: nowrap;","}",".blocklyWidgetDiv .goog-date-picker-year {","  min-width: 6ex;","  white-space: nowrap;","}",".blocklyWidgetDiv .goog-date-picker-monthyear {","  white-space: nowrap;","}",".blocklyWidgetDiv .goog-date-picker table {","  border-collapse: collapse;","}",".blocklyWidgetDiv .goog-date-picker-other-month {","  color: #888;","}",".blocklyWidgetDiv .goog-date-picker-wkend-start,",\n".blocklyWidgetDiv .goog-date-picker-wkend-end {","  background: #eee;","}",".blocklyWidgetDiv td.goog-date-picker-selected {","  background: #c3d9ff;","}",".blocklyWidgetDiv .goog-date-picker-today {","  background: #9ab;","  font-weight: bold !important;","  border-color: #246 #9bd #9bd #246;","  color: #fff;","}"];var CLOSURE_DEFINES={"goog.DEBUG":!1};Blockly.mainWorkspace=null;Blockly.selected=null;Blockly.highlightedConnection_=null;Blockly.localConnection_=null;Blockly.draggingConnections_=[];Blockly.clipboardXml_=null;Blockly.clipboardSource_=null;Blockly.dragMode_=Blockly.DRAG_NONE;Blockly.hueToRgb=function(a){return goog.color.hsvToHex(a,Blockly.HSV_SATURATION,255*Blockly.HSV_VALUE)};Blockly.svgSize=function(a){return{width:a.cachedWidth_,height:a.cachedHeight_}};Blockly.resizeSvgContents=function(a){a.resizeContents()};\nBlockly.svgResize=function(a){for(;a.options.parentWorkspace;)a=a.options.parentWorkspace;var b=a.getParentSvg(),c=b.parentNode;if(c){var d=c.offsetWidth,c=c.offsetHeight;b.cachedWidth_!=d&&(b.setAttribute("width",d+"px"),b.cachedWidth_=d);b.cachedHeight_!=c&&(b.setAttribute("height",c+"px"),b.cachedHeight_=c);a.resize()}};\nBlockly.onKeyDown_=function(a){if(!Blockly.mainWorkspace.options.readOnly&&!Blockly.isTargetInput_(a)){var b=!1;if(27==a.keyCode)Blockly.hideChaff();else if(8==a.keyCode||46==a.keyCode)a.preventDefault(),Blockly.selected&&Blockly.selected.isDeletable()&&(b=!0);else if(a.altKey||a.ctrlKey||a.metaKey)Blockly.selected&&Blockly.selected.isDeletable()&&Blockly.selected.isMovable()&&(67==a.keyCode?(Blockly.hideChaff(),Blockly.copy_(Blockly.selected)):88==a.keyCode&&(Blockly.copy_(Blockly.selected),b=!0)),\n86==a.keyCode?Blockly.clipboardXml_&&(Blockly.Events.setGroup(!0),Blockly.clipboardSource_.paste(Blockly.clipboardXml_),Blockly.Events.setGroup(!1)):90==a.keyCode&&(Blockly.hideChaff(),Blockly.mainWorkspace.undo(a.shiftKey));b&&(Blockly.Events.setGroup(!0),Blockly.hideChaff(),Blockly.selected.dispose(Blockly.dragMode_!=Blockly.DRAG_FREE,!0),Blockly.highlightedConnection_&&(Blockly.highlightedConnection_.unhighlight(),Blockly.highlightedConnection_=null),Blockly.Events.setGroup(!1))}};\nBlockly.terminateDrag_=function(){Blockly.BlockSvg.terminateDrag();Blockly.Flyout.terminateDrag_()};Blockly.copy_=function(a){var b=Blockly.Xml.blockToDom(a);Blockly.dragMode_!=Blockly.DRAG_FREE&&Blockly.Xml.deleteNext(b);var c=a.getRelativeToSurfaceXY();b.setAttribute("x",a.RTL?-c.x:c.x);b.setAttribute("y",c.y);Blockly.clipboardXml_=b;Blockly.clipboardSource_=a.workspace};\nBlockly.duplicate_=function(a){var b=Blockly.clipboardXml_,c=Blockly.clipboardSource_;Blockly.copy_(a);a.workspace.paste(Blockly.clipboardXml_);Blockly.clipboardXml_=b;Blockly.clipboardSource_=c};Blockly.onContextMenu_=function(a){Blockly.isTargetInput_(a)||a.preventDefault()};Blockly.hideChaff=function(a){Blockly.Tooltip.hide();Blockly.WidgetDiv.hide();a||(a=Blockly.getMainWorkspace(),a.toolbox_&&a.toolbox_.flyout_&&a.toolbox_.flyout_.autoClose&&a.toolbox_.clearSelection())};\nBlockly.addChangeListener=function(a){console.warn("Deprecated call to Blockly.addChangeListener, use workspace.addChangeListener instead.");return Blockly.getMainWorkspace().addChangeListener(a)};Blockly.getMainWorkspace=function(){return Blockly.mainWorkspace};goog.global.console||(goog.global.console={log:function(){},warn:function(){}});goog.global.Blockly||(goog.global.Blockly={});goog.global.Blockly.getMainWorkspace=Blockly.getMainWorkspace;goog.global.Blockly.addChangeListener=Blockly.addChangeListener;\n';
},function(e,t){e.exports='/*** IMPORTS FROM imports-loader ***/\nvar module = undefined;\n\n// Do not edit this file; automatically generated by build.py.\n\'use strict\';\n\n\n// Copyright 2012 Google Inc.  Apache License 2.0\nBlockly.Blocks.logic={};Blockly.Blocks.logic.HUE=210;\nBlockly.Blocks.controls_if={init:function(){this.setHelpUrl(Blockly.Msg.CONTROLS_IF_HELPURL);this.setColour(Blockly.Blocks.logic.HUE);this.appendValueInput("IF0").setCheck("Boolean").appendField(Blockly.Msg.CONTROLS_IF_MSG_IF);this.appendStatementInput("DO0").appendField(Blockly.Msg.CONTROLS_IF_MSG_THEN);this.setPreviousStatement(!0);this.setNextStatement(!0);this.setMutator(new Blockly.Mutator(["controls_if_elseif","controls_if_else"]));var a=this;this.setTooltip(function(){if(a.elseifCount_||a.elseCount_){if(!a.elseifCount_&&\na.elseCount_)return Blockly.Msg.CONTROLS_IF_TOOLTIP_2;if(a.elseifCount_&&!a.elseCount_)return Blockly.Msg.CONTROLS_IF_TOOLTIP_3;if(a.elseifCount_&&a.elseCount_)return Blockly.Msg.CONTROLS_IF_TOOLTIP_4}else return Blockly.Msg.CONTROLS_IF_TOOLTIP_1;return""});this.elseCount_=this.elseifCount_=0},mutationToDom:function(){if(!this.elseifCount_&&!this.elseCount_)return null;var a=document.createElement("mutation");this.elseifCount_&&a.setAttribute("elseif",this.elseifCount_);this.elseCount_&&a.setAttribute("else",\n1);return a},domToMutation:function(a){this.elseifCount_=parseInt(a.getAttribute("elseif"),10)||0;this.elseCount_=parseInt(a.getAttribute("else"),10)||0;this.updateShape_()},decompose:function(a){var b=a.newBlock("controls_if_if");b.initSvg();for(var c=b.nextConnection,e=1;e<=this.elseifCount_;e++){var d=a.newBlock("controls_if_elseif");d.initSvg();c.connect(d.previousConnection);c=d.nextConnection}this.elseCount_&&(a=a.newBlock("controls_if_else"),a.initSvg(),c.connect(a.previousConnection));return b},\ncompose:function(a){var b=a.nextConnection.targetBlock();this.elseCount_=this.elseifCount_=0;a=[null];for(var c=[null],e=null;b;){switch(b.type){case "controls_if_elseif":this.elseifCount_++;a.push(b.valueConnection_);c.push(b.statementConnection_);break;case "controls_if_else":this.elseCount_++;e=b.statementConnection_;break;default:throw"Unknown block type.";}b=b.nextConnection&&b.nextConnection.targetBlock()}this.updateShape_();for(b=1;b<=this.elseifCount_;b++)Blockly.Mutator.reconnect(a[b],this,\n"IF"+b),Blockly.Mutator.reconnect(c[b],this,"DO"+b);Blockly.Mutator.reconnect(e,this,"ELSE")},saveConnections:function(a){a=a.nextConnection.targetBlock();for(var b=1;a;){switch(a.type){case "controls_if_elseif":var c=this.getInput("IF"+b),e=this.getInput("DO"+b);a.valueConnection_=c&&c.connection.targetConnection;a.statementConnection_=e&&e.connection.targetConnection;b++;break;case "controls_if_else":e=this.getInput("ELSE");a.statementConnection_=e&&e.connection.targetConnection;break;default:throw"Unknown block type.";\n}a=a.nextConnection&&a.nextConnection.targetBlock()}},updateShape_:function(){this.getInput("ELSE")&&this.removeInput("ELSE");for(var a=1;this.getInput("IF"+a);)this.removeInput("IF"+a),this.removeInput("DO"+a),a++;for(a=1;a<=this.elseifCount_;a++)this.appendValueInput("IF"+a).setCheck("Boolean").appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSEIF),this.appendStatementInput("DO"+a).appendField(Blockly.Msg.CONTROLS_IF_MSG_THEN);this.elseCount_&&this.appendStatementInput("ELSE").appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSE)}};\nBlockly.Blocks.controls_if_if={init:function(){this.setColour(Blockly.Blocks.logic.HUE);this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_IF_IF_TITLE_IF);this.setNextStatement(!0);this.setTooltip(Blockly.Msg.CONTROLS_IF_IF_TOOLTIP);this.contextMenu=!1}};\nBlockly.Blocks.controls_if_elseif={init:function(){this.setColour(Blockly.Blocks.logic.HUE);this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF);this.setPreviousStatement(!0);this.setNextStatement(!0);this.setTooltip(Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP);this.contextMenu=!1}};\nBlockly.Blocks.controls_if_else={init:function(){this.setColour(Blockly.Blocks.logic.HUE);this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE);this.setPreviousStatement(!0);this.setTooltip(Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP);this.contextMenu=!1}};\nBlockly.Blocks.controls_ifelse={init:function(){this.jsonInit({message0:"%{BKY_CONTROLS_IF_MSG_IF} %1",args0:[{type:"input_value",name:"IF0",check:"Boolean"}],message1:"%{BKY_CONTROLS_IF_MSG_THEN} %1",args1:[{type:"input_statement",name:"DO0"}],message2:"%{BKY_CONTROLS_IF_MSG_ELSE} %1",args2:[{type:"input_statement",name:"ELSE"}],previousStatement:null,nextStatement:null,colour:Blockly.Blocks.logic.HUE,tooltip:Blockly.Msg.CONTROLS_IF_TOOLTIP_2,helpUrl:Blockly.Msg.CONTROLS_IF_HELPURL})}};\nBlockly.Blocks.logic_compare={init:function(){var a=[["=","EQ"],["\\u2260","NEQ"],["\\u200f<\\u200f","LT"],["\\u200f\\u2264\\u200f","LTE"],["\\u200f>\\u200f","GT"],["\\u200f\\u2265\\u200f","GTE"]],b=[["=","EQ"],["\\u2260","NEQ"],["<","LT"],["\\u2264","LTE"],[">","GT"],["\\u2265","GTE"]],a=this.RTL?a:b;this.setHelpUrl(Blockly.Msg.LOGIC_COMPARE_HELPURL);this.setColour(Blockly.Blocks.logic.HUE);this.setOutput(!0,"Boolean");this.appendValueInput("A");this.appendValueInput("B").appendField(new Blockly.FieldDropdown(a),\n"OP");this.setInputsInline(!0);var c=this;this.setTooltip(function(){var a=c.getFieldValue("OP");return{EQ:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ,NEQ:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ,LT:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT,LTE:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE,GT:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT,GTE:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE}[a]});this.prevBlocks_=[null,null]},onchange:function(a){var b=this.getInputTargetBlock("A"),c=this.getInputTargetBlock("B");if(b&&c&&!b.outputConnection.checkType_(c.outputConnection)){Blockly.Events.setGroup(a.group);\nfor(a=0;a<this.prevBlocks_.length;a++){var e=this.prevBlocks_[a];if(e===b||e===c)e.unplug(),e.bumpNeighbours_()}Blockly.Events.setGroup(!1)}this.prevBlocks_[0]=b;this.prevBlocks_[1]=c}};\nBlockly.Blocks.logic_operation={init:function(){var a=[[Blockly.Msg.LOGIC_OPERATION_AND,"AND"],[Blockly.Msg.LOGIC_OPERATION_OR,"OR"]];this.setHelpUrl(Blockly.Msg.LOGIC_OPERATION_HELPURL);this.setColour(Blockly.Blocks.logic.HUE);this.setOutput(!0,"Boolean");this.appendValueInput("A").setCheck("Boolean");this.appendValueInput("B").setCheck("Boolean").appendField(new Blockly.FieldDropdown(a),"OP");this.setInputsInline(!0);var b=this;this.setTooltip(function(){var a=b.getFieldValue("OP");return{AND:Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND,\nOR:Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR}[a]})}};Blockly.Blocks.logic_negate={init:function(){this.jsonInit({message0:Blockly.Msg.LOGIC_NEGATE_TITLE,args0:[{type:"input_value",name:"BOOL",check:"Boolean"}],output:"Boolean",colour:Blockly.Blocks.logic.HUE,tooltip:Blockly.Msg.LOGIC_NEGATE_TOOLTIP,helpUrl:Blockly.Msg.LOGIC_NEGATE_HELPURL})}};\nBlockly.Blocks.logic_boolean={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"BOOL",options:[[Blockly.Msg.LOGIC_BOOLEAN_TRUE,"TRUE"],[Blockly.Msg.LOGIC_BOOLEAN_FALSE,"FALSE"]]}],output:"Boolean",colour:Blockly.Blocks.logic.HUE,tooltip:Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP,helpUrl:Blockly.Msg.LOGIC_BOOLEAN_HELPURL})}};\nBlockly.Blocks.logic_null={init:function(){this.jsonInit({message0:Blockly.Msg.LOGIC_NULL,output:null,colour:Blockly.Blocks.logic.HUE,tooltip:Blockly.Msg.LOGIC_NULL_TOOLTIP,helpUrl:Blockly.Msg.LOGIC_NULL_HELPURL})}};\nBlockly.Blocks.logic_ternary={init:function(){this.setHelpUrl(Blockly.Msg.LOGIC_TERNARY_HELPURL);this.setColour(Blockly.Blocks.logic.HUE);this.appendValueInput("IF").setCheck("Boolean").appendField(Blockly.Msg.LOGIC_TERNARY_CONDITION);this.appendValueInput("THEN").appendField(Blockly.Msg.LOGIC_TERNARY_IF_TRUE);this.appendValueInput("ELSE").appendField(Blockly.Msg.LOGIC_TERNARY_IF_FALSE);this.setOutput(!0);this.setTooltip(Blockly.Msg.LOGIC_TERNARY_TOOLTIP);this.prevParentConnection_=null},onchange:function(a){var b=\nthis.getInputTargetBlock("THEN"),c=this.getInputTargetBlock("ELSE"),e=this.outputConnection.targetConnection;if((b||c)&&e)for(var d=0;2>d;d++){var f=1==d?b:c;f&&!f.outputConnection.checkType_(e)&&(Blockly.Events.setGroup(a.group),e===this.prevParentConnection_?(this.unplug(),e.getSourceBlock().bumpNeighbours_()):(f.unplug(),f.bumpNeighbours_()),Blockly.Events.setGroup(!1))}this.prevParentConnection_=e}};Blockly.Blocks.colour={};Blockly.Blocks.colour.HUE=20;Blockly.Blocks.colour_picker={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_colour",name:"COLOUR",colour:"#ff0000"}],output:"Colour",colour:Blockly.Blocks.colour.HUE,helpUrl:Blockly.Msg.COLOUR_PICKER_HELPURL});var a=this;this.setTooltip(function(){var b=a.getParent();return b&&b.getInputsInline()&&b.tooltip||Blockly.Msg.COLOUR_PICKER_TOOLTIP})}};\nBlockly.Blocks.colour_random={init:function(){this.jsonInit({message0:Blockly.Msg.COLOUR_RANDOM_TITLE,output:"Colour",colour:Blockly.Blocks.colour.HUE,tooltip:Blockly.Msg.COLOUR_RANDOM_TOOLTIP,helpUrl:Blockly.Msg.COLOUR_RANDOM_HELPURL})}};\nBlockly.Blocks.colour_rgb={init:function(){this.setHelpUrl(Blockly.Msg.COLOUR_RGB_HELPURL);this.setColour(Blockly.Blocks.colour.HUE);this.appendValueInput("RED").setCheck("Number").setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.COLOUR_RGB_TITLE).appendField(Blockly.Msg.COLOUR_RGB_RED);this.appendValueInput("GREEN").setCheck("Number").setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.COLOUR_RGB_GREEN);this.appendValueInput("BLUE").setCheck("Number").setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.COLOUR_RGB_BLUE);\nthis.setOutput(!0,"Colour");this.setTooltip(Blockly.Msg.COLOUR_RGB_TOOLTIP)}};\nBlockly.Blocks.colour_blend={init:function(){this.setHelpUrl(Blockly.Msg.COLOUR_BLEND_HELPURL);this.setColour(Blockly.Blocks.colour.HUE);this.appendValueInput("COLOUR1").setCheck("Colour").setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.COLOUR_BLEND_TITLE).appendField(Blockly.Msg.COLOUR_BLEND_COLOUR1);this.appendValueInput("COLOUR2").setCheck("Colour").setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.COLOUR_BLEND_COLOUR2);this.appendValueInput("RATIO").setCheck("Number").setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.COLOUR_BLEND_RATIO);\nthis.setOutput(!0,"Colour");this.setTooltip(Blockly.Msg.COLOUR_BLEND_TOOLTIP)}};Blockly.Blocks.variables={};Blockly.Blocks.variables.HUE=330;\nBlockly.Blocks.variables_get={init:function(){this.setHelpUrl(Blockly.Msg.VARIABLES_GET_HELPURL);this.setColour(Blockly.Blocks.variables.HUE);this.appendDummyInput().appendField(new Blockly.FieldVariable(Blockly.Msg.VARIABLES_DEFAULT_NAME),"VAR");this.setOutput(!0);this.setTooltip(Blockly.Msg.VARIABLES_GET_TOOLTIP);this.contextMenuMsg_=Blockly.Msg.VARIABLES_GET_CREATE_SET},contextMenuType_:"variables_set",customContextMenu:function(a){var b={enabled:!0},c=this.getFieldValue("VAR");b.text=this.contextMenuMsg_.replace("%1",\nc);c=goog.dom.createDom("field",null,c);c.setAttribute("name","VAR");c=goog.dom.createDom("block",null,c);c.setAttribute("type",this.contextMenuType_);b.callback=Blockly.ContextMenu.callbackFactory(this,c);a.push(b)}};\nBlockly.Blocks.variables_set={init:function(){this.jsonInit({message0:Blockly.Msg.VARIABLES_SET,args0:[{type:"field_variable",name:"VAR",variable:Blockly.Msg.VARIABLES_DEFAULT_NAME},{type:"input_value",name:"VALUE"}],previousStatement:null,nextStatement:null,colour:Blockly.Blocks.variables.HUE,tooltip:Blockly.Msg.VARIABLES_SET_TOOLTIP,helpUrl:Blockly.Msg.VARIABLES_SET_HELPURL});this.contextMenuMsg_=Blockly.Msg.VARIABLES_SET_CREATE_GET},contextMenuType_:"variables_get",customContextMenu:Blockly.Blocks.variables_get.customContextMenu};Blockly.Blocks.math={};Blockly.Blocks.math.HUE=230;Blockly.Blocks.math_number={init:function(){this.setHelpUrl(Blockly.Msg.MATH_NUMBER_HELPURL);this.setColour(Blockly.Blocks.math.HUE);this.appendDummyInput().appendField(new Blockly.FieldNumber("0"),"NUM");this.setOutput(!0,"Number");var a=this;this.setTooltip(function(){var b=a.getParent();return b&&b.getInputsInline()&&b.tooltip||Blockly.Msg.MATH_NUMBER_TOOLTIP})}};\nBlockly.Blocks.math_arithmetic={init:function(){this.jsonInit({message0:"%1 %2 %3",args0:[{type:"input_value",name:"A",check:"Number"},{type:"field_dropdown",name:"OP",options:[[Blockly.Msg.MATH_ADDITION_SYMBOL,"ADD"],[Blockly.Msg.MATH_SUBTRACTION_SYMBOL,"MINUS"],[Blockly.Msg.MATH_MULTIPLICATION_SYMBOL,"MULTIPLY"],[Blockly.Msg.MATH_DIVISION_SYMBOL,"DIVIDE"],[Blockly.Msg.MATH_POWER_SYMBOL,"POWER"]]},{type:"input_value",name:"B",check:"Number"}],inputsInline:!0,output:"Number",colour:Blockly.Blocks.math.HUE,\nhelpUrl:Blockly.Msg.MATH_ARITHMETIC_HELPURL});var a=this;this.setTooltip(function(){var b=a.getFieldValue("OP");return{ADD:Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD,MINUS:Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS,MULTIPLY:Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY,DIVIDE:Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,POWER:Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER}[b]})}};\nBlockly.Blocks.math_single={init:function(){this.jsonInit({message0:"%1 %2",args0:[{type:"field_dropdown",name:"OP",options:[[Blockly.Msg.MATH_SINGLE_OP_ROOT,"ROOT"],[Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE,"ABS"],["-","NEG"],["ln","LN"],["log10","LOG10"],["e^","EXP"],["10^","POW10"]]},{type:"input_value",name:"NUM",check:"Number"}],output:"Number",colour:Blockly.Blocks.math.HUE,helpUrl:Blockly.Msg.MATH_SINGLE_HELPURL});var a=this;this.setTooltip(function(){var b=a.getFieldValue("OP");return{ROOT:Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT,\nABS:Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS,NEG:Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG,LN:Blockly.Msg.MATH_SINGLE_TOOLTIP_LN,LOG10:Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10,EXP:Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP,POW10:Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10}[b]})}};\nBlockly.Blocks.math_trig={init:function(){this.jsonInit({message0:"%1 %2",args0:[{type:"field_dropdown",name:"OP",options:[[Blockly.Msg.MATH_TRIG_SIN,"SIN"],[Blockly.Msg.MATH_TRIG_COS,"COS"],[Blockly.Msg.MATH_TRIG_TAN,"TAN"],[Blockly.Msg.MATH_TRIG_ASIN,"ASIN"],[Blockly.Msg.MATH_TRIG_ACOS,"ACOS"],[Blockly.Msg.MATH_TRIG_ATAN,"ATAN"]]},{type:"input_value",name:"NUM",check:"Number"}],output:"Number",colour:Blockly.Blocks.math.HUE,helpUrl:Blockly.Msg.MATH_TRIG_HELPURL});var a=this;this.setTooltip(function(){var b=\na.getFieldValue("OP");return{SIN:Blockly.Msg.MATH_TRIG_TOOLTIP_SIN,COS:Blockly.Msg.MATH_TRIG_TOOLTIP_COS,TAN:Blockly.Msg.MATH_TRIG_TOOLTIP_TAN,ASIN:Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN,ACOS:Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS,ATAN:Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN}[b]})}};\nBlockly.Blocks.math_constant={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"CONSTANT",options:[["\\u03c0","PI"],["e","E"],["\\u03c6","GOLDEN_RATIO"],["sqrt(2)","SQRT2"],["sqrt(\\u00bd)","SQRT1_2"],["\\u221e","INFINITY"]]}],output:"Number",colour:Blockly.Blocks.math.HUE,tooltip:Blockly.Msg.MATH_CONSTANT_TOOLTIP,helpUrl:Blockly.Msg.MATH_CONSTANT_HELPURL})}};\nBlockly.Blocks.math_number_property={init:function(){var a=[[Blockly.Msg.MATH_IS_EVEN,"EVEN"],[Blockly.Msg.MATH_IS_ODD,"ODD"],[Blockly.Msg.MATH_IS_PRIME,"PRIME"],[Blockly.Msg.MATH_IS_WHOLE,"WHOLE"],[Blockly.Msg.MATH_IS_POSITIVE,"POSITIVE"],[Blockly.Msg.MATH_IS_NEGATIVE,"NEGATIVE"],[Blockly.Msg.MATH_IS_DIVISIBLE_BY,"DIVISIBLE_BY"]];this.setColour(Blockly.Blocks.math.HUE);this.appendValueInput("NUMBER_TO_CHECK").setCheck("Number");a=new Blockly.FieldDropdown(a,function(a){this.sourceBlock_.updateShape_("DIVISIBLE_BY"==\na)});this.appendDummyInput().appendField(a,"PROPERTY");this.setInputsInline(!0);this.setOutput(!0,"Boolean");this.setTooltip(Blockly.Msg.MATH_IS_TOOLTIP)},mutationToDom:function(){var a=document.createElement("mutation"),b="DIVISIBLE_BY"==this.getFieldValue("PROPERTY");a.setAttribute("divisor_input",b);return a},domToMutation:function(a){a="true"==a.getAttribute("divisor_input");this.updateShape_(a)},updateShape_:function(a){var b=this.getInput("DIVISOR");a?b||this.appendValueInput("DIVISOR").setCheck("Number"):\nb&&this.removeInput("DIVISOR")}};Blockly.Blocks.math_change={init:function(){this.jsonInit({message0:Blockly.Msg.MATH_CHANGE_TITLE,args0:[{type:"field_variable",name:"VAR",variable:Blockly.Msg.MATH_CHANGE_TITLE_ITEM},{type:"input_value",name:"DELTA",check:"Number"}],previousStatement:null,nextStatement:null,colour:Blockly.Blocks.variables.HUE,helpUrl:Blockly.Msg.MATH_CHANGE_HELPURL});var a=this;this.setTooltip(function(){return Blockly.Msg.MATH_CHANGE_TOOLTIP.replace("%1",a.getFieldValue("VAR"))})}};\nBlockly.Blocks.math_round={init:function(){this.jsonInit({message0:"%1 %2",args0:[{type:"field_dropdown",name:"OP",options:[[Blockly.Msg.MATH_ROUND_OPERATOR_ROUND,"ROUND"],[Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP,"ROUNDUP"],[Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN,"ROUNDDOWN"]]},{type:"input_value",name:"NUM",check:"Number"}],output:"Number",colour:Blockly.Blocks.math.HUE,tooltip:Blockly.Msg.MATH_ROUND_TOOLTIP,helpUrl:Blockly.Msg.MATH_ROUND_HELPURL})}};\nBlockly.Blocks.math_on_list={init:function(){var a=[[Blockly.Msg.MATH_ONLIST_OPERATOR_SUM,"SUM"],[Blockly.Msg.MATH_ONLIST_OPERATOR_MIN,"MIN"],[Blockly.Msg.MATH_ONLIST_OPERATOR_MAX,"MAX"],[Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE,"AVERAGE"],[Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN,"MEDIAN"],[Blockly.Msg.MATH_ONLIST_OPERATOR_MODE,"MODE"],[Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV,"STD_DEV"],[Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM,"RANDOM"]],b=this;this.setHelpUrl(Blockly.Msg.MATH_ONLIST_HELPURL);this.setColour(Blockly.Blocks.math.HUE);\nthis.setOutput(!0,"Number");a=new Blockly.FieldDropdown(a,function(a){b.updateType_(a)});this.appendValueInput("LIST").setCheck("Array").appendField(a,"OP");this.setTooltip(function(){var a=b.getFieldValue("OP");return{SUM:Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM,MIN:Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN,MAX:Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX,AVERAGE:Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE,MEDIAN:Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN,MODE:Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE,STD_DEV:Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV,\nRANDOM:Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM}[a]})},updateType_:function(a){"MODE"==a?this.outputConnection.setCheck("Array"):this.outputConnection.setCheck("Number")},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("op",this.getFieldValue("OP"));return a},domToMutation:function(a){this.updateType_(a.getAttribute("op"))}};\nBlockly.Blocks.math_modulo={init:function(){this.jsonInit({message0:Blockly.Msg.MATH_MODULO_TITLE,args0:[{type:"input_value",name:"DIVIDEND",check:"Number"},{type:"input_value",name:"DIVISOR",check:"Number"}],inputsInline:!0,output:"Number",colour:Blockly.Blocks.math.HUE,tooltip:Blockly.Msg.MATH_MODULO_TOOLTIP,helpUrl:Blockly.Msg.MATH_MODULO_HELPURL})}};\nBlockly.Blocks.math_constrain={init:function(){this.jsonInit({message0:Blockly.Msg.MATH_CONSTRAIN_TITLE,args0:[{type:"input_value",name:"VALUE",check:"Number"},{type:"input_value",name:"LOW",check:"Number"},{type:"input_value",name:"HIGH",check:"Number"}],inputsInline:!0,output:"Number",colour:Blockly.Blocks.math.HUE,tooltip:Blockly.Msg.MATH_CONSTRAIN_TOOLTIP,helpUrl:Blockly.Msg.MATH_CONSTRAIN_HELPURL})}};\nBlockly.Blocks.math_random_int={init:function(){this.jsonInit({message0:Blockly.Msg.MATH_RANDOM_INT_TITLE,args0:[{type:"input_value",name:"FROM",check:"Number"},{type:"input_value",name:"TO",check:"Number"}],inputsInline:!0,output:"Number",colour:Blockly.Blocks.math.HUE,tooltip:Blockly.Msg.MATH_RANDOM_INT_TOOLTIP,helpUrl:Blockly.Msg.MATH_RANDOM_INT_HELPURL})}};\nBlockly.Blocks.math_random_float={init:function(){this.jsonInit({message0:Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM,output:"Number",colour:Blockly.Blocks.math.HUE,tooltip:Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP,helpUrl:Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL})}};Blockly.Blocks.loops={};Blockly.Blocks.loops.HUE=120;Blockly.Blocks.controls_repeat_ext={init:function(){this.jsonInit({message0:Blockly.Msg.CONTROLS_REPEAT_TITLE,args0:[{type:"input_value",name:"TIMES",check:"Number"}],previousStatement:null,nextStatement:null,colour:Blockly.Blocks.loops.HUE,tooltip:Blockly.Msg.CONTROLS_REPEAT_TOOLTIP,helpUrl:Blockly.Msg.CONTROLS_REPEAT_HELPURL});this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO)}};\nBlockly.Blocks.controls_repeat={init:function(){this.jsonInit({message0:Blockly.Msg.CONTROLS_REPEAT_TITLE,args0:[{type:"field_number",name:"TIMES",value:10,min:0,precision:1}],previousStatement:null,nextStatement:null,colour:Blockly.Blocks.loops.HUE,tooltip:Blockly.Msg.CONTROLS_REPEAT_TOOLTIP,helpUrl:Blockly.Msg.CONTROLS_REPEAT_HELPURL});this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO)}};\nBlockly.Blocks.controls_whileUntil={init:function(){var a=[[Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE,"WHILE"],[Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL,"UNTIL"]];this.setHelpUrl(Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL);this.setColour(Blockly.Blocks.loops.HUE);this.appendValueInput("BOOL").setCheck("Boolean").appendField(new Blockly.FieldDropdown(a),"MODE");this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO);this.setPreviousStatement(!0);this.setNextStatement(!0);\nvar b=this;this.setTooltip(function(){var a=b.getFieldValue("MODE");return{WHILE:Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE,UNTIL:Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL}[a]})}};\nBlockly.Blocks.controls_for={init:function(){this.jsonInit({message0:Blockly.Msg.CONTROLS_FOR_TITLE,args0:[{type:"field_variable",name:"VAR",variable:null},{type:"input_value",name:"FROM",check:"Number",align:"RIGHT"},{type:"input_value",name:"TO",check:"Number",align:"RIGHT"},{type:"input_value",name:"BY",check:"Number",align:"RIGHT"}],inputsInline:!0,previousStatement:null,nextStatement:null,colour:Blockly.Blocks.loops.HUE,helpUrl:Blockly.Msg.CONTROLS_FOR_HELPURL});this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_FOR_INPUT_DO);\nvar a=this;this.setTooltip(function(){return Blockly.Msg.CONTROLS_FOR_TOOLTIP.replace("%1",a.getFieldValue("VAR"))})},customContextMenu:function(a){if(!this.isCollapsed()){var b={enabled:!0},c=this.getFieldValue("VAR");b.text=Blockly.Msg.VARIABLES_SET_CREATE_GET.replace("%1",c);c=goog.dom.createDom("field",null,c);c.setAttribute("name","VAR");c=goog.dom.createDom("block",null,c);c.setAttribute("type","variables_get");b.callback=Blockly.ContextMenu.callbackFactory(this,c);a.push(b)}}};\nBlockly.Blocks.controls_forEach={init:function(){this.jsonInit({message0:Blockly.Msg.CONTROLS_FOREACH_TITLE,args0:[{type:"field_variable",name:"VAR",variable:null},{type:"input_value",name:"LIST",check:"Array"}],previousStatement:null,nextStatement:null,colour:Blockly.Blocks.loops.HUE,helpUrl:Blockly.Msg.CONTROLS_FOREACH_HELPURL});this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_FOREACH_INPUT_DO);var a=this;this.setTooltip(function(){return Blockly.Msg.CONTROLS_FOREACH_TOOLTIP.replace("%1",\na.getFieldValue("VAR"))})},customContextMenu:Blockly.Blocks.controls_for.customContextMenu};\nBlockly.Blocks.controls_flow_statements={init:function(){var a=[[Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK,"BREAK"],[Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE,"CONTINUE"]];this.setHelpUrl(Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL);this.setColour(Blockly.Blocks.loops.HUE);this.appendDummyInput().appendField(new Blockly.FieldDropdown(a),"FLOW");this.setPreviousStatement(!0);var b=this;this.setTooltip(function(){var a=b.getFieldValue("FLOW");return{BREAK:Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK,\nCONTINUE:Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE}[a]})},onchange:function(a){if(this.workspace.isDragging&&!this.workspace.isDragging()){a=!1;var b=this;do{if(-1!=this.LOOP_TYPES.indexOf(b.type)){a=!0;break}b=b.getSurroundParent()}while(b);a?(this.setWarningText(null),this.isInFlyout||this.setDisabled(!1)):(this.setWarningText(Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING),this.isInFlyout||this.getInheritedDisabled()||this.setDisabled(!0))}},LOOP_TYPES:["controls_repeat","controls_repeat_ext",\n"controls_forEach","controls_for","controls_whileUntil"]};Blockly.Blocks.texts={};Blockly.Blocks.texts.HUE=160;\nBlockly.Blocks.text={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_TEXT_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.appendDummyInput().appendField(this.newQuote_(!0)).appendField(new Blockly.FieldTextInput(""),"TEXT").appendField(this.newQuote_(!1));this.setOutput(!0,"String");var a=this;this.setTooltip(function(){var b=a.getParent();return b&&b.getInputsInline()&&b.tooltip||Blockly.Msg.TEXT_TEXT_TOOLTIP})},newQuote_:function(a){return new Blockly.FieldImage(a==this.RTL?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==":\n"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC",12,12,\'"\')}};\nBlockly.Blocks.text_join={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_JOIN_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.itemCount_=2;this.updateShape_();this.setOutput(!0,"String");this.setMutator(new Blockly.Mutator(["text_create_join_item"]));this.setTooltip(Blockly.Msg.TEXT_JOIN_TOOLTIP)},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("items",this.itemCount_);return a},domToMutation:function(a){this.itemCount_=parseInt(a.getAttribute("items"),10);\nthis.updateShape_()},decompose:function(a){var b=a.newBlock("text_create_join_container");b.initSvg();for(var c=b.getInput("STACK").connection,e=0;e<this.itemCount_;e++){var d=a.newBlock("text_create_join_item");d.initSvg();c.connect(d.previousConnection);c=d.nextConnection}return b},compose:function(a){var b=a.getInputTargetBlock("STACK");for(a=[];b;)a.push(b.valueConnection_),b=b.nextConnection&&b.nextConnection.targetBlock();for(b=0;b<this.itemCount_;b++){var c=this.getInput("ADD"+b).connection.targetConnection;\nc&&-1==a.indexOf(c)&&c.disconnect()}this.itemCount_=a.length;this.updateShape_();for(b=0;b<this.itemCount_;b++)Blockly.Mutator.reconnect(a[b],this,"ADD"+b)},saveConnections:function(a){a=a.getInputTargetBlock("STACK");for(var b=0;a;){var c=this.getInput("ADD"+b);a.valueConnection_=c&&c.connection.targetConnection;b++;a=a.nextConnection&&a.nextConnection.targetBlock()}},updateShape_:function(){this.itemCount_&&this.getInput("EMPTY")?this.removeInput("EMPTY"):this.itemCount_||this.getInput("EMPTY")||\nthis.appendDummyInput("EMPTY").appendField(this.newQuote_(!0)).appendField(this.newQuote_(!1));for(var a=0;a<this.itemCount_;a++)if(!this.getInput("ADD"+a)){var b=this.appendValueInput("ADD"+a);0==a&&b.appendField(Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH)}for(;this.getInput("ADD"+a);)this.removeInput("ADD"+a),a++},newQuote_:Blockly.Blocks.text.newQuote_};\nBlockly.Blocks.text_create_join_container={init:function(){this.setColour(Blockly.Blocks.texts.HUE);this.appendDummyInput().appendField(Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN);this.appendStatementInput("STACK");this.setTooltip(Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP);this.contextMenu=!1}};\nBlockly.Blocks.text_create_join_item={init:function(){this.setColour(Blockly.Blocks.texts.HUE);this.appendDummyInput().appendField(Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM);this.setPreviousStatement(!0);this.setNextStatement(!0);this.setTooltip(Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP);this.contextMenu=!1}};\nBlockly.Blocks.text_append={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_APPEND_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.appendValueInput("TEXT").appendField(Blockly.Msg.TEXT_APPEND_TO).appendField(new Blockly.FieldVariable(Blockly.Msg.TEXT_APPEND_VARIABLE),"VAR").appendField(Blockly.Msg.TEXT_APPEND_APPENDTEXT);this.setPreviousStatement(!0);this.setNextStatement(!0);var a=this;this.setTooltip(function(){return Blockly.Msg.TEXT_APPEND_TOOLTIP.replace("%1",a.getFieldValue("VAR"))})}};\nBlockly.Blocks.text_length={init:function(){this.jsonInit({message0:Blockly.Msg.TEXT_LENGTH_TITLE,args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Number",colour:Blockly.Blocks.texts.HUE,tooltip:Blockly.Msg.TEXT_LENGTH_TOOLTIP,helpUrl:Blockly.Msg.TEXT_LENGTH_HELPURL})}};\nBlockly.Blocks.text_isEmpty={init:function(){this.jsonInit({message0:Blockly.Msg.TEXT_ISEMPTY_TITLE,args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Boolean",colour:Blockly.Blocks.texts.HUE,tooltip:Blockly.Msg.TEXT_ISEMPTY_TOOLTIP,helpUrl:Blockly.Msg.TEXT_ISEMPTY_HELPURL})}};\nBlockly.Blocks.text_indexOf={init:function(){var a=[[Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST,"FIRST"],[Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST,"LAST"]];this.setHelpUrl(Blockly.Msg.TEXT_INDEXOF_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.setOutput(!0,"Number");this.appendValueInput("VALUE").setCheck("String").appendField(Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT);this.appendValueInput("FIND").setCheck("String").appendField(new Blockly.FieldDropdown(a),"END");Blockly.Msg.TEXT_INDEXOF_TAIL&&this.appendDummyInput().appendField(Blockly.Msg.TEXT_INDEXOF_TAIL);\nthis.setInputsInline(!0);var b=this;this.setTooltip(function(){return Blockly.Msg.TEXT_INDEXOF_TOOLTIP.replace("%1",b.workspace.options.oneBasedIndex?"0":"-1")})}};\nBlockly.Blocks.text_charAt={init:function(){this.WHERE_OPTIONS=[[Blockly.Msg.TEXT_CHARAT_FROM_START,"FROM_START"],[Blockly.Msg.TEXT_CHARAT_FROM_END,"FROM_END"],[Blockly.Msg.TEXT_CHARAT_FIRST,"FIRST"],[Blockly.Msg.TEXT_CHARAT_LAST,"LAST"],[Blockly.Msg.TEXT_CHARAT_RANDOM,"RANDOM"]];this.setHelpUrl(Blockly.Msg.TEXT_CHARAT_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.setOutput(!0,"String");this.appendValueInput("VALUE").setCheck("String").appendField(Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT);this.appendDummyInput("AT");\nthis.setInputsInline(!0);this.updateAt_(!0);var a=this;this.setTooltip(function(){var b=a.getFieldValue("WHERE"),c=Blockly.Msg.TEXT_CHARAT_TOOLTIP;if("FROM_START"==b||"FROM_END"==b)c+="  "+("FROM_START"==b?Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP:Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP).replace("%1",a.workspace.options.oneBasedIndex?"#1":"#0");return c})},mutationToDom:function(){var a=document.createElement("mutation"),b=this.getInput("AT").type==Blockly.INPUT_VALUE;a.setAttribute("at",b);return a},\ndomToMutation:function(a){a="false"!=a.getAttribute("at");this.updateAt_(a)},updateAt_:function(a){this.removeInput("AT");this.removeInput("ORDINAL",!0);a?(this.appendValueInput("AT").setCheck("Number"),Blockly.Msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL").appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):this.appendDummyInput("AT");Blockly.Msg.TEXT_CHARAT_TAIL&&(this.removeInput("TAIL",!0),this.appendDummyInput("TAIL").appendField(Blockly.Msg.TEXT_CHARAT_TAIL));var b=new Blockly.FieldDropdown(this.WHERE_OPTIONS,\nfunction(b){var c="FROM_START"==b||"FROM_END"==b;if(c!=a){var d=this.sourceBlock_;d.updateAt_(c);d.setFieldValue(b,"WHERE");return null}});this.getInput("AT").appendField(b,"WHERE")}};\nBlockly.Blocks.text_getSubstring={init:function(){this.WHERE_OPTIONS_1=[[Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START,"FROM_START"],[Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END,"FROM_END"],[Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST,"FIRST"]];this.WHERE_OPTIONS_2=[[Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START,"FROM_START"],[Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END,"FROM_END"],[Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST,"LAST"]];this.setHelpUrl(Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);\nthis.appendValueInput("STRING").setCheck("String").appendField(Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT);this.appendDummyInput("AT1");this.appendDummyInput("AT2");Blockly.Msg.TEXT_GET_SUBSTRING_TAIL&&this.appendDummyInput("TAIL").appendField(Blockly.Msg.TEXT_GET_SUBSTRING_TAIL);this.setInputsInline(!0);this.setOutput(!0,"String");this.updateAt_(1,!0);this.updateAt_(2,!0);this.setTooltip(Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP)},mutationToDom:function(){var a=document.createElement("mutation"),\nb=this.getInput("AT1").type==Blockly.INPUT_VALUE;a.setAttribute("at1",b);b=this.getInput("AT2").type==Blockly.INPUT_VALUE;a.setAttribute("at2",b);return a},domToMutation:function(a){var b="true"==a.getAttribute("at1");a="true"==a.getAttribute("at2");this.updateAt_(1,b);this.updateAt_(2,a)},updateAt_:function(a,b){this.removeInput("AT"+a);this.removeInput("ORDINAL"+a,!0);b?(this.appendValueInput("AT"+a).setCheck("Number"),Blockly.Msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL"+a).appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):\nthis.appendDummyInput("AT"+a);2==a&&Blockly.Msg.TEXT_GET_SUBSTRING_TAIL&&(this.removeInput("TAIL",!0),this.appendDummyInput("TAIL").appendField(Blockly.Msg.TEXT_GET_SUBSTRING_TAIL));var c=new Blockly.FieldDropdown(this["WHERE_OPTIONS_"+a],function(c){var d="FROM_START"==c||"FROM_END"==c;if(d!=b){var e=this.sourceBlock_;e.updateAt_(a,d);e.setFieldValue(c,"WHERE"+a);return null}});this.getInput("AT"+a).appendField(c,"WHERE"+a);1==a&&this.moveInputBefore("AT1","AT2")}};\nBlockly.Blocks.text_changeCase={init:function(){var a=[[Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE,"UPPERCASE"],[Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE,"LOWERCASE"],[Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE,"TITLECASE"]];this.setHelpUrl(Blockly.Msg.TEXT_CHANGECASE_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.appendValueInput("TEXT").setCheck("String").appendField(new Blockly.FieldDropdown(a),"CASE");this.setOutput(!0,"String");this.setTooltip(Blockly.Msg.TEXT_CHANGECASE_TOOLTIP)}};\nBlockly.Blocks.text_trim={init:function(){var a=[[Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH,"BOTH"],[Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT,"LEFT"],[Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT,"RIGHT"]];this.setHelpUrl(Blockly.Msg.TEXT_TRIM_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.appendValueInput("TEXT").setCheck("String").appendField(new Blockly.FieldDropdown(a),"MODE");this.setOutput(!0,"String");this.setTooltip(Blockly.Msg.TEXT_TRIM_TOOLTIP)}};\nBlockly.Blocks.text_print={init:function(){this.jsonInit({message0:Blockly.Msg.TEXT_PRINT_TITLE,args0:[{type:"input_value",name:"TEXT"}],previousStatement:null,nextStatement:null,colour:Blockly.Blocks.texts.HUE,tooltip:Blockly.Msg.TEXT_PRINT_TOOLTIP,helpUrl:Blockly.Msg.TEXT_PRINT_HELPURL})}};\nBlockly.Blocks.text_prompt_ext={init:function(){var a=[[Blockly.Msg.TEXT_PROMPT_TYPE_TEXT,"TEXT"],[Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER,"NUMBER"]];this.setHelpUrl(Blockly.Msg.TEXT_PROMPT_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);var b=this,a=new Blockly.FieldDropdown(a,function(a){b.updateType_(a)});this.appendValueInput("TEXT").appendField(a,"TYPE");this.setOutput(!0,"String");this.setTooltip(function(){return"TEXT"==b.getFieldValue("TYPE")?Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT:Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER})},\nupdateType_:function(a){this.outputConnection.setCheck("NUMBER"==a?"Number":"String")},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("type",this.getFieldValue("TYPE"));return a},domToMutation:function(a){this.updateType_(a.getAttribute("type"))}};\nBlockly.Blocks.text_prompt={init:function(){var a=[[Blockly.Msg.TEXT_PROMPT_TYPE_TEXT,"TEXT"],[Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER,"NUMBER"]],b=this;this.setHelpUrl(Blockly.Msg.TEXT_PROMPT_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);a=new Blockly.FieldDropdown(a,function(a){b.updateType_(a)});this.appendDummyInput().appendField(a,"TYPE").appendField(this.newQuote_(!0)).appendField(new Blockly.FieldTextInput(""),"TEXT").appendField(this.newQuote_(!1));this.setOutput(!0,"String");this.setTooltip(function(){return"TEXT"==\nb.getFieldValue("TYPE")?Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT:Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER})},newQuote_:Blockly.Blocks.text.newQuote_,updateType_:Blockly.Blocks.text_prompt_ext.updateType_,mutationToDom:Blockly.Blocks.text_prompt_ext.mutationToDom,domToMutation:Blockly.Blocks.text_prompt_ext.domToMutation};Blockly.Blocks.procedures={};Blockly.Blocks.procedures.HUE=290;\nBlockly.Blocks.procedures_defnoreturn={init:function(){var a=new Blockly.FieldTextInput(Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE,Blockly.Procedures.rename);a.setSpellcheck(!1);this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE).appendField(a,"NAME").appendField("","PARAMS");this.setMutator(new Blockly.Mutator(["procedures_mutatorarg"]));(this.workspace.options.comments||this.workspace.options.parentWorkspace&&this.workspace.options.parentWorkspace.options.comments)&&\nBlockly.Msg.PROCEDURES_DEFNORETURN_COMMENT&&this.setCommentText(Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT);this.setColour(Blockly.Blocks.procedures.HUE);this.setTooltip(Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP);this.setHelpUrl(Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL);this.arguments_=[];this.setStatements_(!0);this.statementConnection_=null},setStatements_:function(a){this.hasStatements_!==a&&(a?(this.appendStatementInput("STACK").appendField(Blockly.Msg.PROCEDURES_DEFNORETURN_DO),this.getInput("RETURN")&&\nthis.moveInputBefore("STACK","RETURN")):this.removeInput("STACK",!0),this.hasStatements_=a)},updateParams_:function(){for(var a=!1,b={},c=0;c<this.arguments_.length;c++){if(b["arg_"+this.arguments_[c].toLowerCase()]){a=!0;break}b["arg_"+this.arguments_[c].toLowerCase()]=!0}a?this.setWarningText(Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING):this.setWarningText(null);a="";this.arguments_.length&&(a=Blockly.Msg.PROCEDURES_BEFORE_PARAMS+" "+this.arguments_.join(", "));Blockly.Events.disable();try{this.setFieldValue(a,\n"PARAMS")}finally{Blockly.Events.enable()}},mutationToDom:function(a){var b=document.createElement("mutation");a&&b.setAttribute("name",this.getFieldValue("NAME"));for(var c=0;c<this.arguments_.length;c++){var e=document.createElement("arg");e.setAttribute("name",this.arguments_[c]);a&&this.paramIds_&&e.setAttribute("paramId",this.paramIds_[c]);b.appendChild(e)}this.hasStatements_||b.setAttribute("statements","false");return b},domToMutation:function(a){this.arguments_=[];for(var b=0,c;c=a.childNodes[b];b++)"arg"==\nc.nodeName.toLowerCase()&&this.arguments_.push(c.getAttribute("name"));this.updateParams_();Blockly.Procedures.mutateCallers(this);this.setStatements_("false"!==a.getAttribute("statements"))},decompose:function(a){var b=a.newBlock("procedures_mutatorcontainer");b.initSvg();this.getInput("RETURN")?b.setFieldValue(this.hasStatements_?"TRUE":"FALSE","STATEMENTS"):b.getInput("STATEMENT_INPUT").setVisible(!1);for(var c=b.getInput("STACK").connection,e=0;e<this.arguments_.length;e++){var d=a.newBlock("procedures_mutatorarg");\nd.initSvg();d.setFieldValue(this.arguments_[e],"NAME");d.oldLocation=e;c.connect(d.previousConnection);c=d.nextConnection}Blockly.Procedures.mutateCallers(this);return b},compose:function(a){this.arguments_=[];this.paramIds_=[];for(var b=a.getInputTargetBlock("STACK");b;)this.arguments_.push(b.getFieldValue("NAME")),this.paramIds_.push(b.id),b=b.nextConnection&&b.nextConnection.targetBlock();this.updateParams_();Blockly.Procedures.mutateCallers(this);a=a.getFieldValue("STATEMENTS");if(null!==a&&(a=\n"TRUE"==a,this.hasStatements_!=a))if(a)this.setStatements_(!0),Blockly.Mutator.reconnect(this.statementConnection_,this,"STACK"),this.statementConnection_=null;else{a=this.getInput("STACK").connection;if(this.statementConnection_=a.targetConnection)a=a.targetBlock(),a.unplug(),a.bumpNeighbours_();this.setStatements_(!1)}},getProcedureDef:function(){return[this.getFieldValue("NAME"),this.arguments_,!1]},getVars:function(){return this.arguments_},renameVar:function(a,b){for(var c=!1,e=0;e<this.arguments_.length;e++)Blockly.Names.equals(a,\nthis.arguments_[e])&&(this.arguments_[e]=b,c=!0);if(c&&(this.updateParams_(),this.mutator.isVisible()))for(var c=this.mutator.workspace_.getAllBlocks(),e=0,d;d=c[e];e++)"procedures_mutatorarg"==d.type&&Blockly.Names.equals(a,d.getFieldValue("NAME"))&&d.setFieldValue(b,"NAME")},customContextMenu:function(a){var b={enabled:!0},c=this.getFieldValue("NAME");b.text=Blockly.Msg.PROCEDURES_CREATE_DO.replace("%1",c);var e=goog.dom.createDom("mutation");e.setAttribute("name",c);for(var d=0;d<this.arguments_.length;d++)c=\ngoog.dom.createDom("arg"),c.setAttribute("name",this.arguments_[d]),e.appendChild(c);e=goog.dom.createDom("block",null,e);e.setAttribute("type",this.callType_);b.callback=Blockly.ContextMenu.callbackFactory(this,e);a.push(b);if(!this.isCollapsed())for(d=0;d<this.arguments_.length;d++)b={enabled:!0},c=this.arguments_[d],b.text=Blockly.Msg.VARIABLES_SET_CREATE_GET.replace("%1",c),e=goog.dom.createDom("field",null,c),e.setAttribute("name","VAR"),e=goog.dom.createDom("block",null,e),e.setAttribute("type",\n"variables_get"),b.callback=Blockly.ContextMenu.callbackFactory(this,e),a.push(b)},callType_:"procedures_callnoreturn"};\nBlockly.Blocks.procedures_defreturn={init:function(){var a=new Blockly.FieldTextInput(Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE,Blockly.Procedures.rename);a.setSpellcheck(!1);this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_DEFRETURN_TITLE).appendField(a,"NAME").appendField("","PARAMS");this.appendValueInput("RETURN").setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN);this.setMutator(new Blockly.Mutator(["procedures_mutatorarg"]));(this.workspace.options.comments||\nthis.workspace.options.parentWorkspace&&this.workspace.options.parentWorkspace.options.comments)&&Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT&&this.setCommentText(Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT);this.setColour(Blockly.Blocks.procedures.HUE);this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP);this.setHelpUrl(Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL);this.arguments_=[];this.setStatements_(!0);this.statementConnection_=null},setStatements_:Blockly.Blocks.procedures_defnoreturn.setStatements_,\nupdateParams_:Blockly.Blocks.procedures_defnoreturn.updateParams_,mutationToDom:Blockly.Blocks.procedures_defnoreturn.mutationToDom,domToMutation:Blockly.Blocks.procedures_defnoreturn.domToMutation,decompose:Blockly.Blocks.procedures_defnoreturn.decompose,compose:Blockly.Blocks.procedures_defnoreturn.compose,getProcedureDef:function(){return[this.getFieldValue("NAME"),this.arguments_,!0]},getVars:Blockly.Blocks.procedures_defnoreturn.getVars,renameVar:Blockly.Blocks.procedures_defnoreturn.renameVar,\ncustomContextMenu:Blockly.Blocks.procedures_defnoreturn.customContextMenu,callType_:"procedures_callreturn"};\nBlockly.Blocks.procedures_mutatorcontainer={init:function(){this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE);this.appendStatementInput("STACK");this.appendDummyInput("STATEMENT_INPUT").appendField(Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS).appendField(new Blockly.FieldCheckbox("TRUE"),"STATEMENTS");this.setColour(Blockly.Blocks.procedures.HUE);this.setTooltip(Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP);this.contextMenu=!1}};\nBlockly.Blocks.procedures_mutatorarg={init:function(){var a=new Blockly.FieldTextInput("x",this.validator_);this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_MUTATORARG_TITLE).appendField(a,"NAME");this.setPreviousStatement(!0);this.setNextStatement(!0);this.setColour(Blockly.Blocks.procedures.HUE);this.setTooltip(Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP);this.contextMenu=!1;a.onFinishEditing_=this.createNewVar_;a.onFinishEditing_("x")},validator_:function(a){return(a=a.replace(/[\\s\\xa0]+/g,\n" ").replace(/^ | $/g,""))||null},createNewVar_:function(a){var b=this.sourceBlock_;b&&b.workspace&&b.workspace.options&&b.workspace.options.parentWorkspace&&b.workspace.options.parentWorkspace.createVariable(a)}};\nBlockly.Blocks.procedures_callnoreturn={init:function(){this.appendDummyInput("TOPROW").appendField(this.id,"NAME");this.setPreviousStatement(!0);this.setNextStatement(!0);this.setColour(Blockly.Blocks.procedures.HUE);this.setHelpUrl(Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL);this.arguments_=[];this.quarkConnections_={};this.quarkIds_=null},getProcedureCall:function(){return this.getFieldValue("NAME")},renameProcedure:function(a,b){Blockly.Names.equals(a,this.getProcedureCall())&&(this.setFieldValue(b,\n"NAME"),this.setTooltip((this.outputConnection?Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP:Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP).replace("%1",b)))},setProcedureParameters_:function(a,b){var c=Blockly.Procedures.getDefinition(this.getProcedureCall(),this.workspace),e=c&&c.mutator&&c.mutator.isVisible();e||(this.quarkConnections_={},this.quarkIds_=null);if(b)if(goog.array.equals(this.arguments_,a))this.quarkIds_=b;else{if(b.length!=a.length)throw"Error: paramNames and paramIds must be the same length.";\nthis.setCollapsed(!1);this.quarkIds_||(this.quarkConnections_={},a.join("\\n")==this.arguments_.join("\\n")?this.quarkIds_=b:this.quarkIds_=[]);c=this.rendered;this.rendered=!1;for(var d=0;d<this.arguments_.length;d++){var f=this.getInput("ARG"+d);f&&(f=f.connection.targetConnection,this.quarkConnections_[this.quarkIds_[d]]=f,e&&f&&-1==b.indexOf(this.quarkIds_[d])&&(f.disconnect(),f.getSourceBlock().bumpNeighbours_()))}this.arguments_=[].concat(a);this.updateShape_();if(this.quarkIds_=b)for(d=0;d<this.arguments_.length;d++)e=\nthis.quarkIds_[d],e in this.quarkConnections_&&(f=this.quarkConnections_[e],Blockly.Mutator.reconnect(f,this,"ARG"+d)||delete this.quarkConnections_[e]);(this.rendered=c)&&this.render()}},updateShape_:function(){for(var a=0;a<this.arguments_.length;a++){var b=this.getField("ARGNAME"+a);if(b){Blockly.Events.disable();try{b.setValue(this.arguments_[a])}finally{Blockly.Events.enable()}}else b=new Blockly.FieldLabel(this.arguments_[a]),this.appendValueInput("ARG"+a).setAlign(Blockly.ALIGN_RIGHT).appendField(b,\n"ARGNAME"+a).init()}for(;this.getInput("ARG"+a);)this.removeInput("ARG"+a),a++;if(a=this.getInput("TOPROW"))this.arguments_.length?this.getField("WITH")||(a.appendField(Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS,"WITH"),a.init()):this.getField("WITH")&&a.removeField("WITH")},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("name",this.getProcedureCall());for(var b=0;b<this.arguments_.length;b++){var c=document.createElement("arg");c.setAttribute("name",this.arguments_[b]);\na.appendChild(c)}return a},domToMutation:function(a){var b=a.getAttribute("name");this.renameProcedure(this.getProcedureCall(),b);for(var b=[],c=[],e=0,d;d=a.childNodes[e];e++)"arg"==d.nodeName.toLowerCase()&&(b.push(d.getAttribute("name")),c.push(d.getAttribute("paramId")));this.setProcedureParameters_(b,c)},renameVar:function(a,b){for(var c=0;c<this.arguments_.length;c++)Blockly.Names.equals(a,this.arguments_[c])&&(this.arguments_[c]=b,this.getField("ARGNAME"+c).setValue(b))},onchange:function(a){if(this.workspace&&\n!this.workspace.isFlyout)if(a.type==Blockly.Events.CREATE&&-1!=a.ids.indexOf(this.id)){var b=this.getProcedureCall(),b=Blockly.Procedures.getDefinition(b,this.workspace);!b||b.type==this.defType_&&JSON.stringify(b.arguments_)==JSON.stringify(this.arguments_)||(b=null);if(!b){Blockly.Events.setGroup(a.group);a=goog.dom.createDom("xml");b=goog.dom.createDom("block");b.setAttribute("type",this.defType_);var c=this.getRelativeToSurfaceXY(),e=c.y+2*Blockly.SNAP_RADIUS;b.setAttribute("x",c.x+Blockly.SNAP_RADIUS*\n(this.RTL?-1:1));b.setAttribute("y",e);c=this.mutationToDom();b.appendChild(c);c=goog.dom.createDom("field");c.setAttribute("name","NAME");c.appendChild(document.createTextNode(this.getProcedureCall()));b.appendChild(c);a.appendChild(b);Blockly.Xml.domToWorkspace(a,this.workspace);Blockly.Events.setGroup(!1)}}else a.type==Blockly.Events.DELETE&&(b=this.getProcedureCall(),b=Blockly.Procedures.getDefinition(b,this.workspace),b||(Blockly.Events.setGroup(a.group),this.dispose(!0,!1),Blockly.Events.setGroup(!1)))},\ncustomContextMenu:function(a){var b={enabled:!0};b.text=Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF;var c=this.getProcedureCall(),e=this.workspace;b.callback=function(){var a=Blockly.Procedures.getDefinition(c,e);a&&a.select()};a.push(b)},defType_:"procedures_defnoreturn"};\nBlockly.Blocks.procedures_callreturn={init:function(){this.appendDummyInput("TOPROW").appendField("","NAME");this.setOutput(!0);this.setColour(Blockly.Blocks.procedures.HUE);this.setHelpUrl(Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL);this.arguments_=[];this.quarkConnections_={};this.quarkIds_=null},getProcedureCall:Blockly.Blocks.procedures_callnoreturn.getProcedureCall,renameProcedure:Blockly.Blocks.procedures_callnoreturn.renameProcedure,setProcedureParameters_:Blockly.Blocks.procedures_callnoreturn.setProcedureParameters_,\nupdateShape_:Blockly.Blocks.procedures_callnoreturn.updateShape_,mutationToDom:Blockly.Blocks.procedures_callnoreturn.mutationToDom,domToMutation:Blockly.Blocks.procedures_callnoreturn.domToMutation,renameVar:Blockly.Blocks.procedures_callnoreturn.renameVar,onchange:Blockly.Blocks.procedures_callnoreturn.onchange,customContextMenu:Blockly.Blocks.procedures_callnoreturn.customContextMenu,defType_:"procedures_defreturn"};\nBlockly.Blocks.procedures_ifreturn={init:function(){this.appendValueInput("CONDITION").setCheck("Boolean").appendField(Blockly.Msg.CONTROLS_IF_MSG_IF);this.appendValueInput("VALUE").appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN);this.setInputsInline(!0);this.setPreviousStatement(!0);this.setNextStatement(!0);this.setColour(Blockly.Blocks.procedures.HUE);this.setTooltip(Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP);this.setHelpUrl(Blockly.Msg.PROCEDURES_IFRETURN_HELPURL);this.hasReturnValue_=!0},\nmutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("value",Number(this.hasReturnValue_));return a},domToMutation:function(a){this.hasReturnValue_=1==a.getAttribute("value");this.hasReturnValue_||(this.removeInput("VALUE"),this.appendDummyInput("VALUE").appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN))},onchange:function(a){if(this.workspace.isDragging&&!this.workspace.isDragging()){a=!1;var b=this;do{if(-1!=this.FUNCTION_TYPES.indexOf(b.type)){a=!0;break}b=b.getSurroundParent()}while(b);\na?("procedures_defnoreturn"==b.type&&this.hasReturnValue_?(this.removeInput("VALUE"),this.appendDummyInput("VALUE").appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN),this.hasReturnValue_=!1):"procedures_defreturn"!=b.type||this.hasReturnValue_||(this.removeInput("VALUE"),this.appendValueInput("VALUE").appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN),this.hasReturnValue_=!0),this.setWarningText(null),this.isInFlyout||this.setDisabled(!1)):(this.setWarningText(Blockly.Msg.PROCEDURES_IFRETURN_WARNING),\nthis.isInFlyout||this.getInheritedDisabled()||this.setDisabled(!0))}},FUNCTION_TYPES:["procedures_defnoreturn","procedures_defreturn"]};Blockly.Blocks.lists={};Blockly.Blocks.lists.HUE=260;Blockly.Blocks.lists_create_empty={init:function(){this.jsonInit({message0:Blockly.Msg.LISTS_CREATE_EMPTY_TITLE,output:"Array",colour:Blockly.Blocks.lists.HUE,tooltip:Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP,helpUrl:Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL})}};\nBlockly.Blocks.lists_create_with={init:function(){this.setHelpUrl(Blockly.Msg.LISTS_CREATE_WITH_HELPURL);this.setColour(Blockly.Blocks.lists.HUE);this.itemCount_=3;this.updateShape_();this.setOutput(!0,"Array");this.setMutator(new Blockly.Mutator(["lists_create_with_item"]));this.setTooltip(Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP)},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("items",this.itemCount_);return a},domToMutation:function(a){this.itemCount_=parseInt(a.getAttribute("items"),\n10);this.updateShape_()},decompose:function(a){var b=a.newBlock("lists_create_with_container");b.initSvg();for(var c=b.getInput("STACK").connection,e=0;e<this.itemCount_;e++){var d=a.newBlock("lists_create_with_item");d.initSvg();c.connect(d.previousConnection);c=d.nextConnection}return b},compose:function(a){var b=a.getInputTargetBlock("STACK");for(a=[];b;)a.push(b.valueConnection_),b=b.nextConnection&&b.nextConnection.targetBlock();for(b=0;b<this.itemCount_;b++){var c=this.getInput("ADD"+b).connection.targetConnection;\nc&&-1==a.indexOf(c)&&c.disconnect()}this.itemCount_=a.length;this.updateShape_();for(b=0;b<this.itemCount_;b++)Blockly.Mutator.reconnect(a[b],this,"ADD"+b)},saveConnections:function(a){a=a.getInputTargetBlock("STACK");for(var b=0;a;){var c=this.getInput("ADD"+b);a.valueConnection_=c&&c.connection.targetConnection;b++;a=a.nextConnection&&a.nextConnection.targetBlock()}},updateShape_:function(){this.itemCount_&&this.getInput("EMPTY")?this.removeInput("EMPTY"):this.itemCount_||this.getInput("EMPTY")||\nthis.appendDummyInput("EMPTY").appendField(Blockly.Msg.LISTS_CREATE_EMPTY_TITLE);for(var a=0;a<this.itemCount_;a++)if(!this.getInput("ADD"+a)){var b=this.appendValueInput("ADD"+a);0==a&&b.appendField(Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH)}for(;this.getInput("ADD"+a);)this.removeInput("ADD"+a),a++}};\nBlockly.Blocks.lists_create_with_container={init:function(){this.setColour(Blockly.Blocks.lists.HUE);this.appendDummyInput().appendField(Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD);this.appendStatementInput("STACK");this.setTooltip(Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP);this.contextMenu=!1}};\nBlockly.Blocks.lists_create_with_item={init:function(){this.setColour(Blockly.Blocks.lists.HUE);this.appendDummyInput().appendField(Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE);this.setPreviousStatement(!0);this.setNextStatement(!0);this.setTooltip(Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP);this.contextMenu=!1}};\nBlockly.Blocks.lists_repeat={init:function(){this.jsonInit({message0:Blockly.Msg.LISTS_REPEAT_TITLE,args0:[{type:"input_value",name:"ITEM"},{type:"input_value",name:"NUM",check:"Number"}],output:"Array",colour:Blockly.Blocks.lists.HUE,tooltip:Blockly.Msg.LISTS_REPEAT_TOOLTIP,helpUrl:Blockly.Msg.LISTS_REPEAT_HELPURL})}};\nBlockly.Blocks.lists_length={init:function(){this.jsonInit({message0:Blockly.Msg.LISTS_LENGTH_TITLE,args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Number",colour:Blockly.Blocks.lists.HUE,tooltip:Blockly.Msg.LISTS_LENGTH_TOOLTIP,helpUrl:Blockly.Msg.LISTS_LENGTH_HELPURL})}};\nBlockly.Blocks.lists_isEmpty={init:function(){this.jsonInit({message0:Blockly.Msg.LISTS_ISEMPTY_TITLE,args0:[{type:"input_value",name:"VALUE",check:["String","Array"]}],output:"Boolean",colour:Blockly.Blocks.lists.HUE,tooltip:Blockly.Msg.LISTS_ISEMPTY_TOOLTIP,helpUrl:Blockly.Msg.LISTS_ISEMPTY_HELPURL})}};\nBlockly.Blocks.lists_indexOf={init:function(){var a=[[Blockly.Msg.LISTS_INDEX_OF_FIRST,"FIRST"],[Blockly.Msg.LISTS_INDEX_OF_LAST,"LAST"]];this.setHelpUrl(Blockly.Msg.LISTS_INDEX_OF_HELPURL);this.setColour(Blockly.Blocks.lists.HUE);this.setOutput(!0,"Number");this.appendValueInput("VALUE").setCheck("Array").appendField(Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST);this.appendValueInput("FIND").appendField(new Blockly.FieldDropdown(a),"END");this.setInputsInline(!0);this.setTooltip(function(){return Blockly.Msg.LISTS_INDEX_OF_TOOLTIP.replace("%1",\nthis.workspace.options.oneBasedIndex?"0":"-1")})}};\nBlockly.Blocks.lists_getIndex={init:function(){var a=[[Blockly.Msg.LISTS_GET_INDEX_GET,"GET"],[Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE,"GET_REMOVE"],[Blockly.Msg.LISTS_GET_INDEX_REMOVE,"REMOVE"]];this.WHERE_OPTIONS=[[Blockly.Msg.LISTS_GET_INDEX_FROM_START,"FROM_START"],[Blockly.Msg.LISTS_GET_INDEX_FROM_END,"FROM_END"],[Blockly.Msg.LISTS_GET_INDEX_FIRST,"FIRST"],[Blockly.Msg.LISTS_GET_INDEX_LAST,"LAST"],[Blockly.Msg.LISTS_GET_INDEX_RANDOM,"RANDOM"]];this.setHelpUrl(Blockly.Msg.LISTS_GET_INDEX_HELPURL);\nthis.setColour(Blockly.Blocks.lists.HUE);a=new Blockly.FieldDropdown(a,function(a){this.sourceBlock_.updateStatement_("REMOVE"==a)});this.appendValueInput("VALUE").setCheck("Array").appendField(Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST);this.appendDummyInput().appendField(a,"MODE").appendField("","SPACE");this.appendDummyInput("AT");Blockly.Msg.LISTS_GET_INDEX_TAIL&&this.appendDummyInput("TAIL").appendField(Blockly.Msg.LISTS_GET_INDEX_TAIL);this.setInputsInline(!0);this.setOutput(!0);this.updateAt_(!0);\nvar b=this;this.setTooltip(function(){var a=b.getFieldValue("MODE"),e=b.getFieldValue("WHERE"),d="";switch(a+" "+e){case "GET FROM_START":case "GET FROM_END":d=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM;break;case "GET FIRST":d=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST;break;case "GET LAST":d=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST;break;case "GET RANDOM":d=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM;break;case "GET_REMOVE FROM_START":case "GET_REMOVE FROM_END":d=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM;\nbreak;case "GET_REMOVE FIRST":d=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST;break;case "GET_REMOVE LAST":d=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST;break;case "GET_REMOVE RANDOM":d=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM;break;case "REMOVE FROM_START":case "REMOVE FROM_END":d=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM;break;case "REMOVE FIRST":d=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST;break;case "REMOVE LAST":d=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST;\nbreak;case "REMOVE RANDOM":d=Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM}if("FROM_START"==e||"FROM_END"==e)d+="  "+("FROM_START"==e?Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP:Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP).replace("%1",b.workspace.options.oneBasedIndex?"#1":"#0");return d})},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("statement",!this.outputConnection);var b=this.getInput("AT").type==Blockly.INPUT_VALUE;a.setAttribute("at",b);return a},domToMutation:function(a){var b=\n"true"==a.getAttribute("statement");this.updateStatement_(b);a="false"!=a.getAttribute("at");this.updateAt_(a)},updateStatement_:function(a){a!=!this.outputConnection&&(this.unplug(!0,!0),a?(this.setOutput(!1),this.setPreviousStatement(!0),this.setNextStatement(!0)):(this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0)))},updateAt_:function(a){this.removeInput("AT");this.removeInput("ORDINAL",!0);a?(this.appendValueInput("AT").setCheck("Number"),Blockly.Msg.ORDINAL_NUMBER_SUFFIX&&\nthis.appendDummyInput("ORDINAL").appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):this.appendDummyInput("AT");var b=new Blockly.FieldDropdown(this.WHERE_OPTIONS,function(b){var c="FROM_START"==b||"FROM_END"==b;if(c!=a){var d=this.sourceBlock_;d.updateAt_(c);d.setFieldValue(b,"WHERE");return null}});this.getInput("AT").appendField(b,"WHERE");Blockly.Msg.LISTS_GET_INDEX_TAIL&&this.moveInputBefore("TAIL",null)}};\nBlockly.Blocks.lists_setIndex={init:function(){var a=[[Blockly.Msg.LISTS_SET_INDEX_SET,"SET"],[Blockly.Msg.LISTS_SET_INDEX_INSERT,"INSERT"]];this.WHERE_OPTIONS=[[Blockly.Msg.LISTS_GET_INDEX_FROM_START,"FROM_START"],[Blockly.Msg.LISTS_GET_INDEX_FROM_END,"FROM_END"],[Blockly.Msg.LISTS_GET_INDEX_FIRST,"FIRST"],[Blockly.Msg.LISTS_GET_INDEX_LAST,"LAST"],[Blockly.Msg.LISTS_GET_INDEX_RANDOM,"RANDOM"]];this.setHelpUrl(Blockly.Msg.LISTS_SET_INDEX_HELPURL);this.setColour(Blockly.Blocks.lists.HUE);this.appendValueInput("LIST").setCheck("Array").appendField(Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST);\nthis.appendDummyInput().appendField(new Blockly.FieldDropdown(a),"MODE").appendField("","SPACE");this.appendDummyInput("AT");this.appendValueInput("TO").appendField(Blockly.Msg.LISTS_SET_INDEX_INPUT_TO);this.setInputsInline(!0);this.setPreviousStatement(!0);this.setNextStatement(!0);this.setTooltip(Blockly.Msg.LISTS_SET_INDEX_TOOLTIP);this.updateAt_(!0);var b=this;this.setTooltip(function(){var a=b.getFieldValue("MODE"),e=b.getFieldValue("WHERE"),d="";switch(a+" "+e){case "SET FROM_START":case "SET FROM_END":d=\nBlockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM;break;case "SET FIRST":d=Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST;break;case "SET LAST":d=Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST;break;case "SET RANDOM":d=Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM;break;case "INSERT FROM_START":case "INSERT FROM_END":d=Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM;break;case "INSERT FIRST":d=Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST;break;case "INSERT LAST":d=Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST;\nbreak;case "INSERT RANDOM":d=Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM}if("FROM_START"==e||"FROM_END"==e)d+="  "+Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP.replace("%1",b.workspace.options.oneBasedIndex?"#1":"#0");return d})},mutationToDom:function(){var a=document.createElement("mutation"),b=this.getInput("AT").type==Blockly.INPUT_VALUE;a.setAttribute("at",b);return a},domToMutation:function(a){a="false"!=a.getAttribute("at");this.updateAt_(a)},updateAt_:function(a){this.removeInput("AT");\nthis.removeInput("ORDINAL",!0);a?(this.appendValueInput("AT").setCheck("Number"),Blockly.Msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL").appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):this.appendDummyInput("AT");var b=new Blockly.FieldDropdown(this.WHERE_OPTIONS,function(b){var c="FROM_START"==b||"FROM_END"==b;if(c!=a){var d=this.sourceBlock_;d.updateAt_(c);d.setFieldValue(b,"WHERE");return null}});this.moveInputBefore("AT","TO");this.getInput("ORDINAL")&&this.moveInputBefore("ORDINAL",\n"TO");this.getInput("AT").appendField(b,"WHERE")}};\nBlockly.Blocks.lists_getSublist={init:function(){this.WHERE_OPTIONS_1=[[Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START,"FROM_START"],[Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END,"FROM_END"],[Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST,"FIRST"]];this.WHERE_OPTIONS_2=[[Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START,"FROM_START"],[Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END,"FROM_END"],[Blockly.Msg.LISTS_GET_SUBLIST_END_LAST,"LAST"]];this.setHelpUrl(Blockly.Msg.LISTS_GET_SUBLIST_HELPURL);this.setColour(Blockly.Blocks.lists.HUE);\nthis.appendValueInput("LIST").setCheck("Array").appendField(Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST);this.appendDummyInput("AT1");this.appendDummyInput("AT2");Blockly.Msg.LISTS_GET_SUBLIST_TAIL&&this.appendDummyInput("TAIL").appendField(Blockly.Msg.LISTS_GET_SUBLIST_TAIL);this.setInputsInline(!0);this.setOutput(!0,"Array");this.updateAt_(1,!0);this.updateAt_(2,!0);this.setTooltip(Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP)},mutationToDom:function(){var a=document.createElement("mutation"),b=this.getInput("AT1").type==\nBlockly.INPUT_VALUE;a.setAttribute("at1",b);b=this.getInput("AT2").type==Blockly.INPUT_VALUE;a.setAttribute("at2",b);return a},domToMutation:function(a){var b="true"==a.getAttribute("at1");a="true"==a.getAttribute("at2");this.updateAt_(1,b);this.updateAt_(2,a)},updateAt_:function(a,b){this.removeInput("AT"+a);this.removeInput("ORDINAL"+a,!0);b?(this.appendValueInput("AT"+a).setCheck("Number"),Blockly.Msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL"+a).appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):\nthis.appendDummyInput("AT"+a);var c=new Blockly.FieldDropdown(this["WHERE_OPTIONS_"+a],function(c){var d="FROM_START"==c||"FROM_END"==c;if(d!=b){var e=this.sourceBlock_;e.updateAt_(a,d);e.setFieldValue(c,"WHERE"+a);return null}});this.getInput("AT"+a).appendField(c,"WHERE"+a);1==a&&(this.moveInputBefore("AT1","AT2"),this.getInput("ORDINAL1")&&this.moveInputBefore("ORDINAL1","AT2"));Blockly.Msg.LISTS_GET_SUBLIST_TAIL&&this.moveInputBefore("TAIL",null)}};\nBlockly.Blocks.lists_sort={init:function(){this.jsonInit({message0:Blockly.Msg.LISTS_SORT_TITLE,args0:[{type:"field_dropdown",name:"TYPE",options:[[Blockly.Msg.LISTS_SORT_TYPE_NUMERIC,"NUMERIC"],[Blockly.Msg.LISTS_SORT_TYPE_TEXT,"TEXT"],[Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE,"IGNORE_CASE"]]},{type:"field_dropdown",name:"DIRECTION",options:[[Blockly.Msg.LISTS_SORT_ORDER_ASCENDING,"1"],[Blockly.Msg.LISTS_SORT_ORDER_DESCENDING,"-1"]]},{type:"input_value",name:"LIST",check:"Array"}],output:"Array",colour:Blockly.Blocks.lists.HUE,\ntooltip:Blockly.Msg.LISTS_SORT_TOOLTIP,helpUrl:Blockly.Msg.LISTS_SORT_HELPURL})}};\nBlockly.Blocks.lists_split={init:function(){var a=this,b=new Blockly.FieldDropdown([[Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT,"SPLIT"],[Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST,"JOIN"]],function(b){a.updateType_(b)});this.setHelpUrl(Blockly.Msg.LISTS_SPLIT_HELPURL);this.setColour(Blockly.Blocks.lists.HUE);this.appendValueInput("INPUT").setCheck("String").appendField(b,"MODE");this.appendValueInput("DELIM").setCheck("String").appendField(Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER);this.setInputsInline(!0);\nthis.setOutput(!0,"Array");this.setTooltip(function(){var b=a.getFieldValue("MODE");if("SPLIT"==b)return Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT;if("JOIN"==b)return Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN;throw"Unknown mode: "+b;})},updateType_:function(a){"SPLIT"==a?(this.outputConnection.setCheck("Array"),this.getInput("INPUT").setCheck("String")):(this.outputConnection.setCheck("String"),this.getInput("INPUT").setCheck("Array"))},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("mode",\nthis.getFieldValue("MODE"));return a},domToMutation:function(a){this.updateType_(a.getAttribute("mode"))}};\n';
},function(e,t){e.exports='/*** IMPORTS FROM imports-loader ***/\nvar module = undefined;\n\n// This file was automatically generated.  Do not modify.\n\n\'use strict\';\n\ngoog.provide(\'Blockly.Msg.en\');\n\ngoog.require(\'Blockly.Msg\');\n\nBlockly.Msg.ADD_COMMENT = "Add Comment";\nBlockly.Msg.CHANGE_VALUE_TITLE = "Change value:";\nBlockly.Msg.CLEAN_UP = "Clean up Blocks";\nBlockly.Msg.COLLAPSE_ALL = "Collapse Blocks";\nBlockly.Msg.COLLAPSE_BLOCK = "Collapse Block";\nBlockly.Msg.COLOUR_BLEND_COLOUR1 = "colour 1";\nBlockly.Msg.COLOUR_BLEND_COLOUR2 = "colour 2";\nBlockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/";\nBlockly.Msg.COLOUR_BLEND_RATIO = "ratio";\nBlockly.Msg.COLOUR_BLEND_TITLE = "blend";\nBlockly.Msg.COLOUR_BLEND_TOOLTIP = "Blends two colours together with a given ratio (0.0 - 1.0).";\nBlockly.Msg.COLOUR_PICKER_HELPURL = "https://en.wikipedia.org/wiki/Color";\nBlockly.Msg.COLOUR_PICKER_TOOLTIP = "Choose a colour from the palette.";\nBlockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com";\nBlockly.Msg.COLOUR_RANDOM_TITLE = "random colour";\nBlockly.Msg.COLOUR_RANDOM_TOOLTIP = "Choose a colour at random.";\nBlockly.Msg.COLOUR_RGB_BLUE = "blue";\nBlockly.Msg.COLOUR_RGB_GREEN = "green";\nBlockly.Msg.COLOUR_RGB_HELPURL = "http://www.december.com/html/spec/colorper.html";\nBlockly.Msg.COLOUR_RGB_RED = "red";\nBlockly.Msg.COLOUR_RGB_TITLE = "colour with";\nBlockly.Msg.COLOUR_RGB_TOOLTIP = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.";\nBlockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";\nBlockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = "break out of loop";\nBlockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = "continue with next iteration of loop";\nBlockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = "Break out of the containing loop.";\nBlockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "Skip the rest of this loop, and continue with the next iteration.";\nBlockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "Warning: This block may only be used within a loop.";\nBlockly.Msg.CONTROLS_FOREACH_HELPURL = "https://github.com/google/blockly/wiki/Loops#for-each";\nBlockly.Msg.CONTROLS_FOREACH_TITLE = "for each item %1 in list %2";\nBlockly.Msg.CONTROLS_FOREACH_TOOLTIP = "For each item in a list, set the variable \'%1\' to the item, and then do some statements.";\nBlockly.Msg.CONTROLS_FOR_HELPURL = "https://github.com/google/blockly/wiki/Loops#count-with";\nBlockly.Msg.CONTROLS_FOR_TITLE = "count with %1 from %2 to %3 by %4";\nBlockly.Msg.CONTROLS_FOR_TOOLTIP = "Have the variable \'%1\' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.";\nBlockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "Add a condition to the if block.";\nBlockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "Add a final, catch-all condition to the if block.";\nBlockly.Msg.CONTROLS_IF_HELPURL = "https://github.com/google/blockly/wiki/IfElse";\nBlockly.Msg.CONTROLS_IF_IF_TOOLTIP = "Add, remove, or reorder sections to reconfigure this if block.";\nBlockly.Msg.CONTROLS_IF_MSG_ELSE = "else";\nBlockly.Msg.CONTROLS_IF_MSG_ELSEIF = "else if";\nBlockly.Msg.CONTROLS_IF_MSG_IF = "if";\nBlockly.Msg.CONTROLS_IF_TOOLTIP_1 = "If a value is true, then do some statements.";\nBlockly.Msg.CONTROLS_IF_TOOLTIP_2 = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements.";\nBlockly.Msg.CONTROLS_IF_TOOLTIP_3 = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.";\nBlockly.Msg.CONTROLS_IF_TOOLTIP_4 = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.";\nBlockly.Msg.CONTROLS_REPEAT_HELPURL = "https://en.wikipedia.org/wiki/For_loop";\nBlockly.Msg.CONTROLS_REPEAT_INPUT_DO = "do";\nBlockly.Msg.CONTROLS_REPEAT_TITLE = "repeat %1 times";\nBlockly.Msg.CONTROLS_REPEAT_TOOLTIP = "Do some statements several times.";\nBlockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = "https://github.com/google/blockly/wiki/Loops#repeat";\nBlockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "repeat until";\nBlockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "repeat while";\nBlockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "While a value is false, then do some statements.";\nBlockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "While a value is true, then do some statements.";\nBlockly.Msg.DELETE_ALL_BLOCKS = "Delete all %1 blocks?";\nBlockly.Msg.DELETE_BLOCK = "Delete Block";\nBlockly.Msg.DELETE_VARIABLE = "Delete the \'%1\' variable";\nBlockly.Msg.DELETE_VARIABLE_CONFIRMATION = "Delete %1 uses of the \'%2\' variable?";\nBlockly.Msg.DELETE_X_BLOCKS = "Delete %1 Blocks";\nBlockly.Msg.DISABLE_BLOCK = "Disable Block";\nBlockly.Msg.DUPLICATE_BLOCK = "Duplicate";\nBlockly.Msg.ENABLE_BLOCK = "Enable Block";\nBlockly.Msg.EXPAND_ALL = "Expand Blocks";\nBlockly.Msg.EXPAND_BLOCK = "Expand Block";\nBlockly.Msg.EXTERNAL_INPUTS = "External Inputs";\nBlockly.Msg.HELP = "Help";\nBlockly.Msg.INLINE_INPUTS = "Inline Inputs";\nBlockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-empty-list";\nBlockly.Msg.LISTS_CREATE_EMPTY_TITLE = "create empty list";\nBlockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "Returns a list, of length 0, containing no data records";\nBlockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "list";\nBlockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "Add, remove, or reorder sections to reconfigure this list block.";\nBlockly.Msg.LISTS_CREATE_WITH_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";\nBlockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "create list with";\nBlockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "Add an item to the list.";\nBlockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "Create a list with any number of items.";\nBlockly.Msg.LISTS_GET_INDEX_FIRST = "first";\nBlockly.Msg.LISTS_GET_INDEX_FROM_END = "# from end";\nBlockly.Msg.LISTS_GET_INDEX_FROM_START = "#";\nBlockly.Msg.LISTS_GET_INDEX_GET = "get";\nBlockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "get and remove";\nBlockly.Msg.LISTS_GET_INDEX_LAST = "last";\nBlockly.Msg.LISTS_GET_INDEX_RANDOM = "random";\nBlockly.Msg.LISTS_GET_INDEX_REMOVE = "remove";\nBlockly.Msg.LISTS_GET_INDEX_TAIL = "";\nBlockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "Returns the first item in a list.";\nBlockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "Returns the item at the specified position in a list.";\nBlockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "Returns the last item in a list.";\nBlockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "Returns a random item in a list.";\nBlockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "Removes and returns the first item in a list.";\nBlockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = "Removes and returns the item at the specified position in a list.";\nBlockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "Removes and returns the last item in a list.";\nBlockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "Removes and returns a random item in a list.";\nBlockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "Removes the first item in a list.";\nBlockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = "Removes the item at the specified position in a list.";\nBlockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "Removes the last item in a list.";\nBlockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "Removes a random item in a list.";\nBlockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "to # from end";\nBlockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = "to #";\nBlockly.Msg.LISTS_GET_SUBLIST_END_LAST = "to last";\nBlockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist";\nBlockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "get sub-list from first";\nBlockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "get sub-list from # from end";\nBlockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "get sub-list from #";\nBlockly.Msg.LISTS_GET_SUBLIST_TAIL = "";\nBlockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "Creates a copy of the specified portion of a list.";\nBlockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1 is the last item.";\nBlockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1 is the first item.";\nBlockly.Msg.LISTS_INDEX_OF_FIRST = "find first occurrence of item";\nBlockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list";\nBlockly.Msg.LISTS_INDEX_OF_LAST = "find last occurrence of item";\nBlockly.Msg.LISTS_INDEX_OF_TOOLTIP = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found.";\nBlockly.Msg.LISTS_INLIST = "in list";\nBlockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty";\nBlockly.Msg.LISTS_ISEMPTY_TITLE = "%1 is empty";\nBlockly.Msg.LISTS_ISEMPTY_TOOLTIP = "Returns true if the list is empty.";\nBlockly.Msg.LISTS_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Lists#length-of";\nBlockly.Msg.LISTS_LENGTH_TITLE = "length of %1";\nBlockly.Msg.LISTS_LENGTH_TOOLTIP = "Returns the length of a list.";\nBlockly.Msg.LISTS_REPEAT_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with";\nBlockly.Msg.LISTS_REPEAT_TITLE = "create list with item %1 repeated %2 times";\nBlockly.Msg.LISTS_REPEAT_TOOLTIP = "Creates a list consisting of the given value repeated the specified number of times.";\nBlockly.Msg.LISTS_SET_INDEX_HELPURL = "https://github.com/google/blockly/wiki/Lists#in-list--set";\nBlockly.Msg.LISTS_SET_INDEX_INPUT_TO = "as";\nBlockly.Msg.LISTS_SET_INDEX_INSERT = "insert at";\nBlockly.Msg.LISTS_SET_INDEX_SET = "set";\nBlockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "Inserts the item at the start of a list.";\nBlockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "Inserts the item at the specified position in a list.";\nBlockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "Append the item to the end of a list.";\nBlockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "Inserts the item randomly in a list.";\nBlockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "Sets the first item in a list.";\nBlockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM = "Sets the item at the specified position in a list.";\nBlockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "Sets the last item in a list.";\nBlockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "Sets a random item in a list.";\nBlockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";\nBlockly.Msg.LISTS_SORT_ORDER_ASCENDING = "ascending";\nBlockly.Msg.LISTS_SORT_ORDER_DESCENDING = "descending";\nBlockly.Msg.LISTS_SORT_TITLE = "sort %1 %2 %3";\nBlockly.Msg.LISTS_SORT_TOOLTIP = "Sort a copy of a list.";\nBlockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "alphabetic, ignore case";\nBlockly.Msg.LISTS_SORT_TYPE_NUMERIC = "numeric";\nBlockly.Msg.LISTS_SORT_TYPE_TEXT = "alphabetic";\nBlockly.Msg.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists";\nBlockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = "make list from text";\nBlockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = "make text from list";\nBlockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "Join a list of texts into one text, separated by a delimiter.";\nBlockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "Split text into a list of texts, breaking at each delimiter.";\nBlockly.Msg.LISTS_SPLIT_WITH_DELIMITER = "with delimiter";\nBlockly.Msg.LOGIC_BOOLEAN_FALSE = "false";\nBlockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values";\nBlockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "Returns either true or false.";\nBlockly.Msg.LOGIC_BOOLEAN_TRUE = "true";\nBlockly.Msg.LOGIC_COMPARE_HELPURL = "https://en.wikipedia.org/wiki/Inequality_(mathematics)";\nBlockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "Return true if both inputs equal each other.";\nBlockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "Return true if the first input is greater than the second input.";\nBlockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "Return true if the first input is greater than or equal to the second input.";\nBlockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = "Return true if the first input is smaller than the second input.";\nBlockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = "Return true if the first input is smaller than or equal to the second input.";\nBlockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = "Return true if both inputs are not equal to each other.";\nBlockly.Msg.LOGIC_NEGATE_HELPURL = "https://github.com/google/blockly/wiki/Logic#not";\nBlockly.Msg.LOGIC_NEGATE_TITLE = "not %1";\nBlockly.Msg.LOGIC_NEGATE_TOOLTIP = "Returns true if the input is false. Returns false if the input is true.";\nBlockly.Msg.LOGIC_NULL = "null";\nBlockly.Msg.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type";\nBlockly.Msg.LOGIC_NULL_TOOLTIP = "Returns null.";\nBlockly.Msg.LOGIC_OPERATION_AND = "and";\nBlockly.Msg.LOGIC_OPERATION_HELPURL = "https://github.com/google/blockly/wiki/Logic#logical-operations";\nBlockly.Msg.LOGIC_OPERATION_OR = "or";\nBlockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "Return true if both inputs are true.";\nBlockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "Return true if at least one of the inputs is true.";\nBlockly.Msg.LOGIC_TERNARY_CONDITION = "test";\nBlockly.Msg.LOGIC_TERNARY_HELPURL = "https://en.wikipedia.org/wiki/%3F:";\nBlockly.Msg.LOGIC_TERNARY_IF_FALSE = "if false";\nBlockly.Msg.LOGIC_TERNARY_IF_TRUE = "if true";\nBlockly.Msg.LOGIC_TERNARY_TOOLTIP = "Check the condition in \'test\'. If the condition is true, returns the \'if true\' value; otherwise returns the \'if false\' value.";\nBlockly.Msg.MATH_ADDITION_SYMBOL = "+";\nBlockly.Msg.MATH_ARITHMETIC_HELPURL = "https://en.wikipedia.org/wiki/Arithmetic";\nBlockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "Return the sum of the two numbers.";\nBlockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "Return the quotient of the two numbers.";\nBlockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "Return the difference of the two numbers.";\nBlockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "Return the product of the two numbers.";\nBlockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "Return the first number raised to the power of the second number.";\nBlockly.Msg.MATH_CHANGE_HELPURL = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter";\nBlockly.Msg.MATH_CHANGE_TITLE = "change %1 by %2";\nBlockly.Msg.MATH_CHANGE_TOOLTIP = "Add a number to variable \'%1\'.";\nBlockly.Msg.MATH_CONSTANT_HELPURL = "https://en.wikipedia.org/wiki/Mathematical_constant";\nBlockly.Msg.MATH_CONSTANT_TOOLTIP = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).";\nBlockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29";\nBlockly.Msg.MATH_CONSTRAIN_TITLE = "constrain %1 low %2 high %3";\nBlockly.Msg.MATH_CONSTRAIN_TOOLTIP = "Constrain a number to be between the specified limits (inclusive).";\nBlockly.Msg.MATH_DIVISION_SYMBOL = "÷";\nBlockly.Msg.MATH_IS_DIVISIBLE_BY = "is divisible by";\nBlockly.Msg.MATH_IS_EVEN = "is even";\nBlockly.Msg.MATH_IS_NEGATIVE = "is negative";\nBlockly.Msg.MATH_IS_ODD = "is odd";\nBlockly.Msg.MATH_IS_POSITIVE = "is positive";\nBlockly.Msg.MATH_IS_PRIME = "is prime";\nBlockly.Msg.MATH_IS_TOOLTIP = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.";\nBlockly.Msg.MATH_IS_WHOLE = "is whole";\nBlockly.Msg.MATH_MODULO_HELPURL = "https://en.wikipedia.org/wiki/Modulo_operation";\nBlockly.Msg.MATH_MODULO_TITLE = "remainder of %1 ÷ %2";\nBlockly.Msg.MATH_MODULO_TOOLTIP = "Return the remainder from dividing the two numbers.";\nBlockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×";\nBlockly.Msg.MATH_NUMBER_HELPURL = "https://en.wikipedia.org/wiki/Number";\nBlockly.Msg.MATH_NUMBER_TOOLTIP = "A number.";\nBlockly.Msg.MATH_ONLIST_HELPURL = "";\nBlockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "average of list";\nBlockly.Msg.MATH_ONLIST_OPERATOR_MAX = "max of list";\nBlockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "median of list";\nBlockly.Msg.MATH_ONLIST_OPERATOR_MIN = "min of list";\nBlockly.Msg.MATH_ONLIST_OPERATOR_MODE = "modes of list";\nBlockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = "random item of list";\nBlockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = "standard deviation of list";\nBlockly.Msg.MATH_ONLIST_OPERATOR_SUM = "sum of list";\nBlockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = "Return the average (arithmetic mean) of the numeric values in the list.";\nBlockly.Msg.MATH_ONLIST_TOOLTIP_MAX = "Return the largest number in the list.";\nBlockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "Return the median number in the list.";\nBlockly.Msg.MATH_ONLIST_TOOLTIP_MIN = "Return the smallest number in the list.";\nBlockly.Msg.MATH_ONLIST_TOOLTIP_MODE = "Return a list of the most common item(s) in the list.";\nBlockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "Return a random element from the list.";\nBlockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "Return the standard deviation of the list.";\nBlockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "Return the sum of all the numbers in the list.";\nBlockly.Msg.MATH_POWER_SYMBOL = "^";\nBlockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation";\nBlockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "random fraction";\nBlockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).";\nBlockly.Msg.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation";\nBlockly.Msg.MATH_RANDOM_INT_TITLE = "random integer from %1 to %2";\nBlockly.Msg.MATH_RANDOM_INT_TOOLTIP = "Return a random integer between the two specified limits, inclusive.";\nBlockly.Msg.MATH_ROUND_HELPURL = "https://en.wikipedia.org/wiki/Rounding";\nBlockly.Msg.MATH_ROUND_OPERATOR_ROUND = "round";\nBlockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "round down";\nBlockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "round up";\nBlockly.Msg.MATH_ROUND_TOOLTIP = "Round a number up or down.";\nBlockly.Msg.MATH_SINGLE_HELPURL = "https://en.wikipedia.org/wiki/Square_root";\nBlockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "absolute";\nBlockly.Msg.MATH_SINGLE_OP_ROOT = "square root";\nBlockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "Return the absolute value of a number.";\nBlockly.Msg.MATH_SINGLE_TOOLTIP_EXP = "Return e to the power of a number.";\nBlockly.Msg.MATH_SINGLE_TOOLTIP_LN = "Return the natural logarithm of a number.";\nBlockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = "Return the base 10 logarithm of a number.";\nBlockly.Msg.MATH_SINGLE_TOOLTIP_NEG = "Return the negation of a number.";\nBlockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = "Return 10 to the power of a number.";\nBlockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = "Return the square root of a number.";\nBlockly.Msg.MATH_SUBTRACTION_SYMBOL = "-";\nBlockly.Msg.MATH_TRIG_ACOS = "acos";\nBlockly.Msg.MATH_TRIG_ASIN = "asin";\nBlockly.Msg.MATH_TRIG_ATAN = "atan";\nBlockly.Msg.MATH_TRIG_COS = "cos";\nBlockly.Msg.MATH_TRIG_HELPURL = "https://en.wikipedia.org/wiki/Trigonometric_functions";\nBlockly.Msg.MATH_TRIG_SIN = "sin";\nBlockly.Msg.MATH_TRIG_TAN = "tan";\nBlockly.Msg.MATH_TRIG_TOOLTIP_ACOS = "Return the arccosine of a number.";\nBlockly.Msg.MATH_TRIG_TOOLTIP_ASIN = "Return the arcsine of a number.";\nBlockly.Msg.MATH_TRIG_TOOLTIP_ATAN = "Return the arctangent of a number.";\nBlockly.Msg.MATH_TRIG_TOOLTIP_COS = "Return the cosine of a degree (not radian).";\nBlockly.Msg.MATH_TRIG_TOOLTIP_SIN = "Return the sine of a degree (not radian).";\nBlockly.Msg.MATH_TRIG_TOOLTIP_TAN = "Return the tangent of a degree (not radian).";\nBlockly.Msg.NEW_VARIABLE = "Create variable...";\nBlockly.Msg.NEW_VARIABLE_TITLE = "New variable name:";\nBlockly.Msg.ORDINAL_NUMBER_SUFFIX = "";\nBlockly.Msg.PROCEDURES_ALLOW_STATEMENTS = "allow statements";\nBlockly.Msg.PROCEDURES_BEFORE_PARAMS = "with:";\nBlockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";\nBlockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "Run the user-defined function \'%1\'.";\nBlockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";\nBlockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Run the user-defined function \'%1\' and use its output.";\nBlockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "with:";\nBlockly.Msg.PROCEDURES_CREATE_DO = "Create \'%1\'";\nBlockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "Describe this function...";\nBlockly.Msg.PROCEDURES_DEFNORETURN_DO = "";\nBlockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";\nBlockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "do something";\nBlockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "to";\nBlockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "Creates a function with no output.";\nBlockly.Msg.PROCEDURES_DEFRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29";\nBlockly.Msg.PROCEDURES_DEFRETURN_RETURN = "return";\nBlockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "Creates a function with an output.";\nBlockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = "Warning: This function has duplicate parameters.";\nBlockly.Msg.PROCEDURES_HIGHLIGHT_DEF = "Highlight function definition";\nBlockly.Msg.PROCEDURES_IFRETURN_HELPURL = "http://c2.com/cgi/wiki?GuardClause";\nBlockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = "If a value is true, then return a second value.";\nBlockly.Msg.PROCEDURES_IFRETURN_WARNING = "Warning: This block may be used only within a function definition.";\nBlockly.Msg.PROCEDURES_MUTATORARG_TITLE = "input name:";\nBlockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = "Add an input to the function.";\nBlockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "inputs";\nBlockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "Add, remove, or reorder inputs to this function.";\nBlockly.Msg.REDO = "Redo";\nBlockly.Msg.REMOVE_COMMENT = "Remove Comment";\nBlockly.Msg.RENAME_VARIABLE = "Rename variable...";\nBlockly.Msg.RENAME_VARIABLE_TITLE = "Rename all \'%1\' variables to:";\nBlockly.Msg.TEXT_APPEND_APPENDTEXT = "append text";\nBlockly.Msg.TEXT_APPEND_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";\nBlockly.Msg.TEXT_APPEND_TO = "to";\nBlockly.Msg.TEXT_APPEND_TOOLTIP = "Append some text to variable \'%1\'.";\nBlockly.Msg.TEXT_CHANGECASE_HELPURL = "https://github.com/google/blockly/wiki/Text#adjusting-text-case";\nBlockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "to lower case";\nBlockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "to Title Case";\nBlockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "to UPPER CASE";\nBlockly.Msg.TEXT_CHANGECASE_TOOLTIP = "Return a copy of the text in a different case.";\nBlockly.Msg.TEXT_CHARAT_FIRST = "get first letter";\nBlockly.Msg.TEXT_CHARAT_FROM_END = "get letter # from end";\nBlockly.Msg.TEXT_CHARAT_FROM_START = "get letter #";\nBlockly.Msg.TEXT_CHARAT_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-text";\nBlockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "in text";\nBlockly.Msg.TEXT_CHARAT_LAST = "get last letter";\nBlockly.Msg.TEXT_CHARAT_RANDOM = "get random letter";\nBlockly.Msg.TEXT_CHARAT_TAIL = "";\nBlockly.Msg.TEXT_CHARAT_TOOLTIP = "Returns the letter at the specified position.";\nBlockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "Add an item to the text.";\nBlockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "join";\nBlockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "Add, remove, or reorder sections to reconfigure this text block.";\nBlockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "to letter # from end";\nBlockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "to letter #";\nBlockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "to last letter";\nBlockly.Msg.TEXT_GET_SUBSTRING_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";\nBlockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "in text";\nBlockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "get substring from first letter";\nBlockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "get substring from letter # from end";\nBlockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "get substring from letter #";\nBlockly.Msg.TEXT_GET_SUBSTRING_TAIL = "";\nBlockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "Returns a specified portion of the text.";\nBlockly.Msg.TEXT_INDEXOF_HELPURL = "https://github.com/google/blockly/wiki/Text#finding-text";\nBlockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "in text";\nBlockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "find first occurrence of text";\nBlockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "find last occurrence of text";\nBlockly.Msg.TEXT_INDEXOF_TAIL = "";\nBlockly.Msg.TEXT_INDEXOF_TOOLTIP = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.";\nBlockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text";\nBlockly.Msg.TEXT_ISEMPTY_TITLE = "%1 is empty";\nBlockly.Msg.TEXT_ISEMPTY_TOOLTIP = "Returns true if the provided text is empty.";\nBlockly.Msg.TEXT_JOIN_HELPURL = "https://github.com/google/blockly/wiki/Text#text-creation";\nBlockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "create text with";\nBlockly.Msg.TEXT_JOIN_TOOLTIP = "Create a piece of text by joining together any number of items.";\nBlockly.Msg.TEXT_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification";\nBlockly.Msg.TEXT_LENGTH_TITLE = "length of %1";\nBlockly.Msg.TEXT_LENGTH_TOOLTIP = "Returns the number of letters (including spaces) in the provided text.";\nBlockly.Msg.TEXT_PRINT_HELPURL = "https://github.com/google/blockly/wiki/Text#printing-text";\nBlockly.Msg.TEXT_PRINT_TITLE = "print %1";\nBlockly.Msg.TEXT_PRINT_TOOLTIP = "Print the specified text, number or other value.";\nBlockly.Msg.TEXT_PROMPT_HELPURL = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";\nBlockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "Prompt for user for a number.";\nBlockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "Prompt for user for some text.";\nBlockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "prompt for number with message";\nBlockly.Msg.TEXT_PROMPT_TYPE_TEXT = "prompt for text with message";\nBlockly.Msg.TEXT_TEXT_HELPURL = "https://en.wikipedia.org/wiki/String_(computer_science)";\nBlockly.Msg.TEXT_TEXT_TOOLTIP = "A letter, word, or line of text.";\nBlockly.Msg.TEXT_TRIM_HELPURL = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";\nBlockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "trim spaces from both sides of";\nBlockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "trim spaces from left side of";\nBlockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "trim spaces from right side of";\nBlockly.Msg.TEXT_TRIM_TOOLTIP = "Return a copy of the text with spaces removed from one or both ends.";\nBlockly.Msg.TODAY = "Today";\nBlockly.Msg.UNDO = "Undo";\nBlockly.Msg.VARIABLES_DEFAULT_NAME = "item";\nBlockly.Msg.VARIABLES_GET_CREATE_SET = "Create \'set %1\'";\nBlockly.Msg.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get";\nBlockly.Msg.VARIABLES_GET_TOOLTIP = "Returns the value of this variable.";\nBlockly.Msg.VARIABLES_SET = "set %1 to %2";\nBlockly.Msg.VARIABLES_SET_CREATE_GET = "Create \'get %1\'";\nBlockly.Msg.VARIABLES_SET_HELPURL = "https://github.com/google/blockly/wiki/Variables#set";\nBlockly.Msg.VARIABLES_SET_TOOLTIP = "Sets this variable to be equal to the input.";\nBlockly.Msg.VARIABLE_ALREADY_EXISTS = "A variable named \'%1\' already exists.";\nBlockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE;\nBlockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF;\nBlockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;\nBlockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;\nBlockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;\nBlockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;\nBlockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;\nBlockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;\nBlockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;\nBlockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO;\nBlockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF;\nBlockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL;\nBlockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;\nBlockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;\nBlockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;\nBlockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;\nBlockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;\nBlockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;\nBlockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;\nBlockly.Msg.PROCEDURES_DEFRETURN_COMMENT = Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT;\n'},function(e,t){e.exports='/*!\n * jQuery JavaScript Library v3.1.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2016-09-22T22:30Z\n */\n( function( global, factory ) {\n\n\t"use strict";\n\n\tif ( typeof module === "object" && typeof module.exports === "object" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require("jquery")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( "jQuery requires a window with a document" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n"use strict";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\n\n\n\tfunction DOMEval( code, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar script = doc.createElement( "script" );\n\n\t\tscript.text = code;\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = "3.1.1",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor \'enhanced\'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array\'s method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === "boolean" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== "object" && !jQuery.isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we\'re merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don\'t bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: "jQuery" + ( version + Math.random() ).replace( /\\D/g, "" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === "function";\n\t},\n\n\tisArray: Array.isArray,\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// As of jQuery 3.0, isNumeric is limited to\n\t\t// strings and numbers (primitives or objects)\n\t\t// that can be coerced to finite numbers (gh-2662)\n\t\tvar type = jQuery.type( obj );\n\t\treturn ( type === "number" || type === "string" ) &&\n\n\t\t\t// parseFloat NaNs numeric-cast false positives ("")\n\t\t\t// ...but misinterprets leading-number strings, particularly hex literals ("0x...")\n\t\t\t// subtraction forces infinities to NaN\n\t\t\t!isNaN( obj - parseFloat( obj ) );\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== "[object Object]" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, "constructor" ) && proto.constructor;\n\t\treturn typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\n\t\t/* eslint-disable no-unused-vars */\n\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + "";\n\t\t}\n\n\t\t// Support: Android <=2.3 only (functionish RegExp)\n\t\treturn typeof obj === "object" || typeof obj === "function" ?\n\t\t\tclass2type[ toString.call( obj ) ] || "object" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tDOMEval( code );\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE <=9 - 11, Edge 12 - 13\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t"" :\n\t\t\t( text + "" ).replace( rtrim, "" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === "string" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === "string" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === "function" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),\nfunction( i, name ) {\n\tclass2type[ "[object " + name + "]" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn\'t used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && "length" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === "function" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === "array" || length === 0 ||\n\t\ttypeof length === "number" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = "sizzle" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it\'s faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = "[\\\\x20\\\\t\\\\r\\\\n\\\\f]",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = "(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = "\\\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +\n\t\t// Operator (capture 2)\n\t\t"*([*^$|!~]?=)" + whitespace +\n\t\t// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"\n\t\t"*(?:\'((?:\\\\\\\\.|[^\\\\\\\\\'])*)\'|\\"((?:\\\\\\\\.|[^\\\\\\\\\\"])*)\\"|(" + identifier + "))|)" + whitespace +\n\t\t"*\\\\]",\n\n\tpseudos = ":(" + identifier + ")(?:\\\\((" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t"(\'((?:\\\\\\\\.|[^\\\\\\\\\'])*)\'|\\"((?:\\\\\\\\.|[^\\\\\\\\\\"])*)\\")|" +\n\t\t// 2. simple (capture 6)\n\t\t"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|" + attributes + ")*)|" +\n\t\t// 3. anything else (capture 2)\n\t\t".*" +\n\t\t")\\\\)|)",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + "+", "g" ),\n\trtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)" + whitespace + "+$", "g" ),\n\n\trcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),\n\trcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),\n\n\trattributeQuotes = new RegExp( "=" + whitespace + "*([^\\\\]\'\\"]*?)" + whitespace + "*\\\\]", "g" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( "^" + identifier + "$" ),\n\n\tmatchExpr = {\n\t\t"ID": new RegExp( "^#(" + identifier + ")" ),\n\t\t"CLASS": new RegExp( "^\\\\.(" + identifier + ")" ),\n\t\t"TAG": new RegExp( "^(" + identifier + "|[*])" ),\n\t\t"ATTR": new RegExp( "^" + attributes ),\n\t\t"PSEUDO": new RegExp( "^" + pseudos ),\n\t\t"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(" + whitespace +\n\t\t\t"*(even|odd|(([+-]|)(\\\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +\n\t\t\t"*(\\\\d+)|))" + whitespace + "*\\\\)|)", "i" ),\n\t\t"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(" +\n\t\t\twhitespace + "*((?:-\\\\d)?\\\\d*)" + whitespace + "*\\\\)|)(?=[^-]|$)", "i" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( "\\\\\\\\([\\\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = "0x" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +"0x"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === "\\0" ) {\n\t\t\t\treturn "\\uFFFD";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + "\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn "\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a "Permission Denied"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tdisabledAncestor = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && ("form" in elem || "label" in elem);\n\t\t},\n\t\t{ dir: "parentNode", next: "legend" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can\'t trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== "string" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a "get*By*" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don\'t exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!compilerCache[ selector + " " ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== "object" ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( "id" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( "id", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = "#" + nid + " " + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( "," );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( "id" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, "$1" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + " " ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + " " ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement("fieldset");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split("|"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === "input" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === "input" || name === "button") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( "form" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a "form" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( "label" in elem ) {\n\t\t\t\t\tif ( "label" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tdisabledAncestor( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can\'t be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn\'t\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( "label" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== "undefined" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn\'t yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== "HTML" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( "unload", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( "onunload", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = "i";\n\t\treturn !el.getAttribute("className");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName("*") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment("") );\n\t\treturn !el.getElementsByTagName("*").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don\'t pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter["ID"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute("id") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find["ID"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== "undefined" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter["ID"] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== "undefined" &&\n\t\t\t\t\telem.getAttributeNode("id");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find["ID"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== "undefined" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode("id");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode("id");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find["TAG"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== "undefined" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don\'t have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === "*" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE\'s treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = "<a id=\'" + expando + "\'></a>" +\n\t\t\t\t"<select id=\'" + expando + "-\\r\\\\\' msallowcapture=\'\'>" +\n\t\t\t\t"<option selected=\'\'></option></select>";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but "safe" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll("[msallowcapture^=\'\']").length ) {\n\t\t\t\trbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\'\'|\\"\\")" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and "value" are not treated correctly\n\t\t\tif ( !el.querySelectorAll("[selected]").length ) {\n\t\t\t\trbuggyQSA.push( "\\\\[" + whitespace + "*(?:value|" + booleans + ")" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {\n\t\t\t\trbuggyQSA.push("~=");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(":checked").length ) {\n\t\t\t\trbuggyQSA.push(":checked");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {\n\t\t\t\trbuggyQSA.push(".#.+[+~]");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = "<a href=\'\' disabled=\'disabled\'></a>" +\n\t\t\t\t"<select disabled=\'disabled\'><option/></select>";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement("input");\n\t\t\tinput.setAttribute( "type", "hidden" );\n\t\t\tel.appendChild( input ).setAttribute( "name", "D" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll("[name=d]").length ) {\n\t\t\t\trbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(":enabled").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( ":enabled", ":disabled" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE\'s :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(":disabled").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( ":enabled", ":disabled" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll("*,:x");\n\t\t\trbuggyQSA.push(",.*:");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it\'s possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, "*" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, "[s!=\'\']:x" );\n\t\t\trbuggyMatches.push( "!=", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, "=\'$1\']" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ expr + " " ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9\'s matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don\'t get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + "").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( "Syntax error, unrecognized expression: " + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = "",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === "string" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t">": { dir: "parentNode", first: true },\n\t\t" ": { dir: "parentNode" },\n\t\t"+": { dir: "previousSibling", first: true },\n\t\t"~": { dir: "previousSibling" }\n\t},\n\n\tpreFilter: {\n\t\t"ATTR": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === "~=" ) {\n\t\t\t\tmatch[3] = " " + match[3] + " ";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t"CHILD": function( match ) {\n\t\t\t/* matches from matchExpr["CHILD"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === "nth" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t"PSEUDO": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr["CHILD"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || "";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t"TAG": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === "*" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t"CLASS": function( className ) {\n\t\t\tvar pattern = classCache[ className + " " ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );\n\t\t\t\t});\n\t\t},\n\n\t\t"ATTR": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === "!=";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += "";\n\n\t\t\t\treturn operator === "=" ? result === check :\n\t\t\t\t\toperator === "!=" ? result !== check :\n\t\t\t\t\toperator === "^=" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === "*=" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === "$=" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t"CHILD": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== "nth",\n\t\t\t\tforward = type.slice( -4 ) !== "last",\n\t\t\t\tofType = what === "of-type";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? "nextSibling" : "previousSibling",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven\'t yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === "only" && !start && "nextSibling";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t"PSEUDO": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( "unsupported pseudo: " + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, "", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t"not": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, "$1" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don\'t keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t"has": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t"contains": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// "Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element\'s language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by "-".\n\t\t// The matching of C against the element\'s language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name."\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t"lang": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || "") ) {\n\t\t\t\tSizzle.error( "unsupported lang: " + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t"target": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t"root": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t"focus": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t"enabled": createDisabledPseudo( false ),\n\t\t"disabled": createDisabledPseudo( true ),\n\n\t\t"checked": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);\n\t\t},\n\n\t\t"selected": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t"empty": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t"parent": function( elem ) {\n\t\t\treturn !Expr.pseudos["empty"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t"header": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t"input": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t"button": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === "input" && elem.type === "button" || name === "button";\n\t\t},\n\n\t\t"text": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === "input" &&\n\t\t\t\telem.type === "text" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"\n\t\t\t\t( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t"first": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t"last": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t"even": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t"odd": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos["nth"] = Expr.pseudos["eq"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + " " ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don\'t consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, " " )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we\'re just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = "";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === "parentNode",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can\'t set arbitrary data on XML nodes, so they don\'t benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we\'re done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[" "],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })\n\t\t\t\t\t).replace( rtrim, "$1" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = "0",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find["TAG"]( "*", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn\'t visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a "00" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + " " ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle\'s compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === "function" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split("").sort( sortOrder ).join("") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren\'t passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement("fieldset") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property "interpolation"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = "<a href=\'#\'></a>";\n\treturn el.firstChild.getAttribute("href") === "#" ;\n}) ) {\n\taddHandle( "type|href|height|width", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute("value")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = "<input/>";\n\tel.firstChild.setAttribute( "value", "" );\n\treturn el.firstChild.getAttribute( "value" ) === "";\n}) ) {\n\taddHandle( "value", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === "input" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute("disabled") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ ":" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== "string" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Simple selector that can be filtered directly, removing non-Elements\n\tif ( risSimple.test( qualifier ) ) {\n\t\treturn jQuery.filter( qualifier, elements, not );\n\t}\n\n\t// Complex selector, compare the two sets, removing non-Elements\n\tqualifier = jQuery.filter( qualifier, elements );\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;\n\t} );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = ":not(" + expr + ")";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== "string" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $("p:first").is("p:last") won\'t return true for a doc with two "p".\n\t\t\ttypeof selector === "string" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(""), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === "string" ) {\n\t\t\tif ( selector[ 0 ] === "<" &&\n\t\t\t\tselector[ selector.length - 1 ] === ">" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== "string" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there\'s no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don\'t pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === "string" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, "parentNode" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, "parentNode", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, "nextSibling" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, "previousSibling" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, "nextSibling" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, "previousSibling" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, "nextSibling", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, "previousSibling", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== "Until" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === "string" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * "fired" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest "memorized"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === "string" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn\'t re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we\'re done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we\'re done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = "";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = "";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = "";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && jQuery.isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Support: Android 4.0 only\n\t\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\t\tresolve.call( undefined, value );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn\'t unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.call( undefined, value );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ "notify", "progress", jQuery.Callbacks( "memory" ),\n\t\t\t\t\tjQuery.Callbacks( "memory" ), 2 ],\n\t\t\t\t[ "resolve", "done", jQuery.Callbacks( "once memory" ),\n\t\t\t\t\tjQuery.Callbacks( "once memory" ), 0, "resolved" ],\n\t\t\t\t[ "reject", "fail", jQuery.Callbacks( "once memory" ),\n\t\t\t\t\tjQuery.Callbacks( "once memory" ), 1, "rejected" ]\n\t\t\t],\n\t\t\tstate = "pending",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t"catch": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + "With" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( "Thenable self-resolution" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === "object" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === "function" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( jQuery.isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it\'s otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tjQuery.isFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tjQuery.isFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tjQuery.isFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = "resolved" (i.e., fulfilled)\n\t\t\t\t\t\t// state = "rejected"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + "With" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === "pending" ||\n\t\t\t\tjQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we\'re already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( "DOMContentLoaded", completed );\n\twindow.removeEventListener( "load", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals "interactive" too soon\nif ( document.readyState === "complete" ||\n\t( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( "DOMContentLoaded", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( "load", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it\'s a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === "object" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === "string" ) {\n\t\t\tcache[ jQuery.camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ jQuery.camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the "read" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === "string" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the "set" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( jQuery.camelCase );\n\t\t\t} else {\n\t\t\t\tkey = jQuery.camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there\'s no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module\'s maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support "private" and "user" data.\n//\t4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === "true" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === "false" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === "null" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn\'t change the string\n\tif ( data === +data + "" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === "string" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn\'t changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( "data-" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, "hasDataAttrs", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === "object" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to "discover" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn\'t exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || "fx" ) + "queue";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || "fx";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === "inprogress" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === "fx" ) {\n\t\t\t\tqueue.unshift( "inprogress" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + "queueHooks";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( "once memory" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + "queue", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== "string" ) {\n\t\t\tdata = type;\n\t\t\ttype = "fx";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === "fx" && queue[ 0 ] !== "inprogress" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || "fx", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== "string" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || "fx";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + "queueHooks" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );\n\n\nvar cssExpand = [ "Top", "Right", "Bottom", "Left" ];\n\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === "none" ||\n\t\t\telem.style.display === "" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\tjQuery.css( elem, "display" ) === "none";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, "" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don\'t accidentally see scale as unchanged below\n\t\t\tscale = scale || ".5";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we\'ve just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, "display" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === "none" ) {\n\t\tdisplay = "block";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === "none" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, "display" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = "";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== "none" ) {\n\t\t\t\tvalues[ index ] = "none";\n\n\t\t\t\t// Remember what we\'re overwriting\n\t\t\t\tdataPriv.set( elem, "display", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === "boolean" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, "<select multiple=\'multiple\'>", "</select>" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, "<table>", "</table>" ],\n\tcol: [ 2, "<table><colgroup>", "</colgroup></table>" ],\n\ttr: [ 2, "<table><tbody>", "</tbody></table>" ],\n\ttd: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],\n\n\t_default: [ 0, "", "" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== "undefined" ) {\n\t\tret = context.getElementsByTagName( tag || "*" );\n\n\t} else if ( typeof context.querySelectorAll !== "undefined" ) {\n\t\tret = context.querySelectorAll( tag || "*" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && jQuery.nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t"globalEval",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], "globalEval" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, contains, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( jQuery.type( elem ) === "object" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( "div" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = "";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = "";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), "script" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( contains ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || "" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( "div" ) ),\n\t\tinput = document.createElement( "input" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( "type", "radio" );\n\tinput.setAttribute( "checked", "checked" );\n\tinput.setAttribute( "name", "t" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn\'t clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = "<textarea>x</textarea>";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\nvar documentElement = document.documentElement;\n\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 only\n// See #13393 for more info\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === "object" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== "string" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === "string" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards\' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don\'t attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element\'s event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || "" ).match( rnothtmlwhite ) || [ "" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( "." )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we\'re the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element\'s handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || "" ).match( rnothtmlwhite ) || [ "" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( "(^|\\\\.)" + namespaces.join( "\\\\.(?:.*\\\\.|)" ) + "(\\\\.|$)" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === "**" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it\'s no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, "handle events" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === "click" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don\'t check non-elements (#13208)\n\t\t\t\t// Don\'t process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don\'t conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + " ";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: jQuery.isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: "focusin"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: "focusout"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don\'t fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, "a" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn\'t alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This "if" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the \'new\' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn\'t have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t"char": true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: "mouseover",\n\tmouseleave: "mouseout",\n\tpointerenter: "pointerover",\n\tpointerleave: "pointerout"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + "." + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === "object" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === "function" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked="checked" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\nfunction manipulationTarget( elem, content ) {\n\tif ( jQuery.nodeName( elem, "table" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {\n\n\t\treturn elem.getElementsByTagName( "tbody" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute( "type" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === "input" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === "input" || nodeName === "textarea" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tisFunction = jQuery.isFunction( value );\n\n\t// We can\'t cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\n\t\t\t( l > 1 && typeof value === "string" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( isFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, "script" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, "script" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || "" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, "globalEval" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won\'t run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, "" ), doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, "script" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, "<$1></$2>" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, "script" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, "script" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove\'s overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = "";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === "string" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: "append",\n\tprependTo: "prepend",\n\tinsertBefore: "before",\n\tinsertAfter: "after",\n\treplaceAll: "replaceWith"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rmargin = ( /^margin/ );\n\nvar rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they\'re executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdiv.style.cssText =\n\t\t\t"box-sizing:border-box;" +\n\t\t\t"position:relative;display:block;" +\n\t\t\t"margin:auto;border:1px;padding:1px;" +\n\t\t\t"top:1%;width:50%";\n\t\tdiv.innerHTML = "";\n\t\tdocumentElement.appendChild( container );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== "1%";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = divStyle.marginLeft === "2px";\n\t\tboxSizingReliableVal = divStyle.width === "4px";\n\n\t\t// Support: Android 4.0 - 4.3 only\n\t\t// Some styles come back with percentage values, even though they shouldn\'t\n\t\tdiv.style.marginRight = "50%";\n\t\tpixelMarginRightVal = divStyle.marginRight === "4px";\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn\'t be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( "div" ),\n\t\tdiv = document.createElement( "div" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = "content-box";\n\tdiv.cloneNode( true ).style.backgroundClip = "";\n\tsupport.clearCloneStyle = div.style.backgroundClip === "content-box";\n\n\tcontainer.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +\n\t\t"padding:0;margin-top:1px;position:absolute";\n\tcontainer.appendChild( div );\n\n\tjQuery.extend( support, {\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelMarginRight: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelMarginRightVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// Support: IE <=9 only\n\t// getPropertyValue is only needed for .css(\'filter\') (#12537)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the "awesome hack by Dean Edwards"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + "" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we\'ll check on the first run if it\'s really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it\'s not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except "table", "table-cell", or "table-caption"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: "absolute", visibility: "hidden", display: "block" },\n\tcssNormalTransform = {\n\t\tletterSpacing: "0",\n\t\tfontWeight: "400"\n\t},\n\n\tcssPrefixes = [ "Webkit", "Moz", "ms" ],\n\temptyStyle = document.createElement( "div" ).style;\n\n// Return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( name ) {\n\n\t// Shortcut for names that are not vendor prefixed\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined "subtract", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i,\n\t\tval = 0;\n\n\t// If we already have the right measurement, avoid augmentation\n\tif ( extra === ( isBorderBox ? "border" : "content" ) ) {\n\t\ti = 4;\n\n\t// Otherwise initialize for horizontal or vertical properties\n\t} else {\n\t\ti = name === "width" ? 1 : 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin, so add it if we want it\n\t\tif ( extra === "margin" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === "content" ) {\n\t\t\t\tval -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// At this point, extra isn\'t border nor margin, so remove border\n\t\t\tif ( extra !== "margin" ) {\n\t\t\t\tval -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// At this point, extra isn\'t content, so add padding\n\t\t\tval += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );\n\n\t\t\t// At this point, extra isn\'t content nor padding, so add border\n\t\t\tif ( extra !== "padding" ) {\n\t\t\t\tval += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar val,\n\t\tvalueIsBorderBox = true,\n\t\tstyles = getStyles( elem ),\n\t\tisBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";\n\n\t// Support: IE <=11 only\n\t// Running getBoundingClientRect on a disconnected node\n\t// in IE throws an error.\n\tif ( elem.getClientRects().length ) {\n\t\tval = elem.getBoundingClientRect()[ name ];\n\t}\n\n\t// Some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name, styles );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test( val ) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// Check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox &&\n\t\t\t( support.boxSizingReliable() || val === elem.style[ name ] );\n\n\t\t// Normalize "", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// Use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? "border" : "content" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + "px";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, "opacity" );\n\t\t\t\t\treturn ret === "" ? "1" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don\'t automatically add "px" to these possibly-unitless properties\n\tcssNumber: {\n\t\t"animationIterationCount": true,\n\t\t"columnCount": true,\n\t\t"fillOpacity": true,\n\t\t"flexGrow": true,\n\t\t"flexShrink": true,\n\t\t"fontWeight": true,\n\t\t"lineHeight": true,\n\t\t"opacity": true,\n\t\t"order": true,\n\t\t"orphans": true,\n\t\t"widows": true,\n\t\t"zIndex": true,\n\t\t"zoom": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t"float": "cssFloat"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don\'t set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we\'re working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] ||\n\t\t\t( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we\'re setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert "+=" or "-=" to relative numbers (#7345)\n\t\t\tif ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = "number";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren\'t set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\tif ( type === "number" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone\'s values\n\t\t\tif ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {\n\t\t\t\tstyle[ name ] = "inherit";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( "set" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tstyle[ name ] = value;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && "get" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we\'re working with the right name\n\t\tname = jQuery.cssProps[ origName ] ||\n\t\t\t( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && "get" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert "normal" to computed value\n\t\tif ( val === "normal" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === "" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ "height", "width" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, "display" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = extra && getStyles( elem ),\n\t\t\t\tsubtract = extra && augmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tjQuery.css( elem, "boxSizing", false, styles ) === "border-box",\n\t\t\t\t\tstyles\n\t\t\t\t);\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || "px" ) !== "px" ) {\n\n\t\t\t\telem.style[ name ] = value;\n\t\t\t\tvalue = jQuery.css( elem, name );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, "marginLeft" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + "px";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: "",\n\tpadding: "",\n\tborder: "Width"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === "string" ? value.split( " " ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( jQuery.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as "10px" are parsed to Float;\n\t\t\t// complex values such as "rotate(1rad)" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, "" );\n\n\t\t\t// Empty strings, null, undefined and "auto" are converted to 0.\n\t\t\treturn !result || result === "auto" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: "swing"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction raf() {\n\tif ( timerId ) {\n\t\twindow.requestAnimationFrame( raf );\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = jQuery.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ "margin" + which ] = attrs[ "padding" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We\'re done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = "width" in props || "height" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, "fxshow" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, "fx" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, "fx" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === "toggle";\n\t\t\tif ( value === ( hidden ? "hide" : "show" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a "show" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict "overflow" and "display" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 13\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, "display" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, "display" );\n\t\tif ( display === "none" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, "display" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, "float" ) === "none" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === "none" ? "" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = "inline-block";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = "hidden";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( "hidden" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` "reverses"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a "hide" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, "fxshow" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && "expand" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won\'t overwrite existing keys.\n\t\t\t// Reusing \'index\' because we have the correct "name"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don\'t match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won\'t allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( jQuery.isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tjQuery.proxy( result.stop, result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t"*": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ "*" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off or if document is hidden\n\tif ( jQuery.fx.off || document.hidden ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== "number" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> "fx"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = "fx";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won\'t be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, "finish" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== "string" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || "fx", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + "queueHooks",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn\'t forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || "fx";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + "queue" ],\n\t\t\t\thooks = data[ type + "queueHooks" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === "boolean" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( "show" ),\n\tslideUp: genFx( "hide" ),\n\tslideToggle: genFx( "toggle" ),\n\tfadeIn: { opacity: "show" },\n\tfadeOut: { opacity: "hide" },\n\tfadeToggle: { opacity: "toggle" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tif ( timer() ) {\n\t\tjQuery.fx.start();\n\t} else {\n\t\tjQuery.timers.pop();\n\t}\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( !timerId ) {\n\t\ttimerId = window.requestAnimationFrame ?\n\t\t\twindow.requestAnimationFrame( raf ) :\n\t\t\twindow.setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.stop = function() {\n\tif ( window.cancelAnimationFrame ) {\n\t\twindow.cancelAnimationFrame( timerId );\n\t} else {\n\t\twindow.clearInterval( timerId );\n\t}\n\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || "fx";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( "input" ),\n\t\tselect = document.createElement( "select" ),\n\t\topt = select.appendChild( document.createElement( "option" ) );\n\n\tinput.type = "checkbox";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be "on"\n\tsupport.checkOn = input.value !== "";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( "input" );\n\tinput.value = "t";\n\tinput.type = "radio";\n\tsupport.radioValue = input.value === "t";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don\'t get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === "undefined" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && "set" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + "" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === "radio" &&\n\t\t\t\t\tjQuery.nodeName( elem, "input" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( "type", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don\'t get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && "set" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn\'t always return the\n\t\t\t\t// correct value when it hasn\'t been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, "tabindex" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t"for": "htmlFor",\n\t\t"class": "className"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule "no-unused-expressions" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: "off" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: "off" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t"tabIndex",\n\t"readOnly",\n\t"maxLength",\n\t"cellSpacing",\n\t"cellPadding",\n\t"rowSpan",\n\t"colSpan",\n\t"useMap",\n\t"frameBorder",\n\t"contentEditable"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( " " );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( "class" ) || "";\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof value === "string" && value ) {\n\t\t\tclasses = value.match( rnothtmlwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( " " + clazz + " " ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + " ";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( "class", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( "class", "" );\n\t\t}\n\n\t\tif ( typeof value === "string" && value ) {\n\t\t\tclasses = value.match( rnothtmlwhite ) || [];\n\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( " " + clazz + " " ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( " " + clazz + " ", " " );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( "class", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value;\n\n\t\tif ( typeof stateVal === "boolean" && type === "string" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( type === "string" ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = value.match( rnothtmlwhite ) || [];\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === "boolean" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, "__className__", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we\'re passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( "class",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t"" :\n\t\t\t\t\t\tdataPriv.get( this, "__className__" ) || ""\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = " " + selector + " ";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t"get" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, "value" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === "string" ) {\n\t\t\t\t\treturn ret.replace( rreturn, "" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? "" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as ""; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = "";\n\n\t\t\t} else if ( typeof val === "number" ) {\n\t\t\t\tval += "";\n\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? "" : value + "";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, "value" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === "select-one",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn\'t update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don\'t return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don\'t need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ "radio", "checkbox" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( "value" ) === null ? "on" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, "type" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don\'t do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we\'re not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( "." ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( "." );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( ":" ) < 0 && "on" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === "object" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( "." );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( "(^|\\\\.)" + namespaces.join( "\\\\.(?:.*\\\\.|)" ) + "(\\\\.|$)" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, "handle" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don\'t do default actions on window, that\'s where global variables be (#6170)\n\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don\'t re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\njQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +\n\t"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +\n\t"change select submit keydown keypress keyup contextmenu" ).split( " " ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\nsupport.focusin = "onfocusin" in window;\n\n\n// Support: Firefox <=44\n// Firefox doesn\'t have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = jQuery.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== "string" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {\n\t\tjQuery.error( "Invalid XML: " + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && jQuery.type( obj ) === "object" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = jQuery.isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + "=" +\n\t\t\t\tencodeURIComponent( value == null ? "" : value );\n\t\t};\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the "old" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( "&" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for "elements" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, "elements" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( ":disabled" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( ":disabled" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( jQuery.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, "\\r\\n" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, "\\r\\n" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol "*" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to "*" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol "*" can be used\n\t * 3) selection will start with transport dataType and THEN go to "*" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = "*/".concat( "*" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( "a" );\n\toriginAnchor.href = location.href;\n\n// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to "*"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== "string" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = "*";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === "+" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || "*";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === "string" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );\n}\n\n// A special extend for ajax options\n// that takes "flat" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === "*" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );\n\t\t}\n\t}\n\n\t// Check if we\'re dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There\'s only work to do if current dataType is non-auto\n\t\t\tif ( current === "*" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== "*" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + " " + current ] || converters[ "* " + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( " " );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + " " + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ "* " + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: "parsererror",\n\t\t\t\t\t\t\t\terror: conv ? e : "No conversion from " + prev + " to " + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: "success", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: "GET",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: "application/x-www-form-urlencoded; charset=UTF-8",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t"*": allTypes,\n\t\t\ttext: "text/plain",\n\t\t\thtml: "text/html",\n\t\t\txml: "application/xml, text/xml",\n\t\t\tjson: "application/json, text/javascript"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: "responseXML",\n\t\t\ttext: "responseText",\n\t\t\tjson: "responseJSON"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall "*") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t"* text": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t"text html": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t"text json": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t"text xml": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn\'t be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn\'t be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === "object" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( "once memory" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = "canceled",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + "" )\n\t\t\t.replace( rprotocol, location.protocol + "//" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];\n\n\t\t// A cross-domain request is in order when the origin doesn\'t match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( "a" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 13\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor\'s host property isn\'t correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + "//" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== "string" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don\'t fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( "ajaxStart" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we\'re toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, "" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it\'s not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, "$1" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change \'%20\' to \'+\' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, "+" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( "Content-Type", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t"Accept",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :\n\t\t\t\ts.accepts[ "*" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = "abort";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, "No Transport" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( "timeout" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || "";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( "Last-Modified" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( "etag" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === "HEAD" ) {\n\t\t\t\t\tstatusText = "nocontent";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = "notmodified";\n\n\t\t\t\t// If we have data, let\'s convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = "error";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + "";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( "ajaxStop" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, "json" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, "script" );\n\t}\n} );\n\njQuery.each( [ "get", "post" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: "GET",\n\t\tdataType: "script",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\t"throws": true\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( "body" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won\'t change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {\n\t\t\t\t\theaders[ "X-Requested-With" ] = "XMLHttpRequest";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === "abort" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === "error" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== "number" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, "error" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || "text" ) !== "text"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== "string" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = callback( "error" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( "abort" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn\'t been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: "text/javascript, application/javascript, " +\n\t\t\t"application/ecmascript, application/x-ecmascript"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t"text script": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache\'s special case and crossDomain\njQuery.ajaxPrefilter( "script", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = "GET";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( "script", function( s ) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( "<script>" ).prop( {\n\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\tsrc: s.url\n\t\t\t\t} ).on(\n\t\t\t\t\t"load error",\n\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === "error" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: "callback",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t"url" :\n\t\t\ttypeof s.data === "string" &&\n\t\t\t\t( s.contentType || "" )\n\t\t\t\t\t.indexOf( "application/x-www-form-urlencoded" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && "data"\n\t\t);\n\n\t// Handle iff the expected data type is "jsonp" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ "script json" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + " was not called" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = "json";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn\'t exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn\'t screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn "script";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( "" ).body;\n\tbody.innerHTML = "<form></form><form></form>";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument "data" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== "string" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === "boolean" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( "" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document\'s URL (gh-2965)\n\t\t\tbase = context.createElement( "base" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( " " );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it\'s a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it\'s the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === "object" ) {\n\t\ttype = "POST";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If "type" variable is undefined, then "GET" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || "GET",\n\t\t\tdataType: "html",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE \'Permission Denied\' errors\n\t\t\t\tjQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets "data", "status", "jqXHR"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets "jqXHR", "status", "error"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t"ajaxStart",\n\t"ajaxStop",\n\t"ajaxComplete",\n\t"ajaxError",\n\t"ajaxSuccess",\n\t"ajaxSend"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\n/**\n * Gets a window from an element\n */\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;\n}\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, "position" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === "static" ) {\n\t\t\telem.style.position = "relative";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, "top" );\n\t\tcurCSSLeft = jQuery.css( elem, "left" );\n\t\tcalculatePosition = ( position === "absolute" || position === "fixed" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( "using" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar docElem, win, rect, doc,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\trect = elem.getBoundingClientRect();\n\n\t\t// Make sure element is not hidden (display: none)\n\t\tif ( rect.width || rect.height ) {\n\t\t\tdoc = elem.ownerDocument;\n\t\t\twin = getWindow( doc );\n\t\t\tdocElem = doc.documentElement;\n\n\t\t\treturn {\n\t\t\t\ttop: rect.top + win.pageYOffset - docElem.clientTop,\n\t\t\t\tleft: rect.left + win.pageXOffset - docElem.clientLeft\n\t\t\t};\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden elements (gh-2310)\n\t\treturn rect;\n\t},\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// Fixed elements are offset from window (parentOffset = {top:0, left: 0},\n\t\t// because it is its only offset parent\n\t\tif ( jQuery.css( elem, "position" ) === "fixed" ) {\n\n\t\t\t// Assume getBoundingClientRect is there when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset = {\n\t\t\t\ttop: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),\n\t\t\t\tleft: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )\n\t\t\t};\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {\n\tvar top = "pageYOffset" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ "top", "left" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + "px" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: "height", Width: "width" }, function( name, type ) {\n\tjQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( "outer" ) === 0 ?\n\t\t\t\t\t\telem[ "inner" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ "client" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ "scroll" + name ], doc[ "scroll" + name ],\n\t\t\t\t\t\telem.body[ "offset" + name ], doc[ "offset" + name ],\n\t\t\t\t\t\tdoc[ "client" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, "**" ) :\n\t\t\tthis.off( types, selector || "**", fn );\n\t}\n} );\n\njQuery.parseJSON = JSON.parse;\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === "function" && define.amd ) {\n\tdefine( "jquery", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\n\nreturn jQuery;\n} );\n';
},function(e,t){e.exports=" /*\n * # Semantic UI - 2.2.11\n * https://github.com/Semantic-Org/Semantic-UI\n * http://www.semantic-ui.com/\n *\n * Copyright 2014 Contributors\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n/*!\n * # Semantic UI 2.2.11 - Site\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n$.site = $.fn.site = function(parameters) {\n  var\n    time           = new Date().getTime(),\n    performance    = [],\n\n    query          = arguments[0],\n    methodInvoked  = (typeof query == 'string'),\n    queryArguments = [].slice.call(arguments, 1),\n\n    settings        = ( $.isPlainObject(parameters) )\n      ? $.extend(true, {}, $.site.settings, parameters)\n      : $.extend({}, $.site.settings),\n\n    namespace       = settings.namespace,\n    error           = settings.error,\n\n    eventNamespace  = '.' + namespace,\n    moduleNamespace = 'module-' + namespace,\n\n    $document       = $(document),\n    $module         = $document,\n    element         = this,\n    instance        = $module.data(moduleNamespace),\n\n    module,\n    returnedValue\n  ;\n  module = {\n\n    initialize: function() {\n      module.instantiate();\n    },\n\n    instantiate: function() {\n      module.verbose('Storing instance of site', module);\n      instance = module;\n      $module\n        .data(moduleNamespace, module)\n      ;\n    },\n\n    normalize: function() {\n      module.fix.console();\n      module.fix.requestAnimationFrame();\n    },\n\n    fix: {\n      console: function() {\n        module.debug('Normalizing window.console');\n        if (console === undefined || console.log === undefined) {\n          module.verbose('Console not available, normalizing events');\n          module.disable.console();\n        }\n        if (typeof console.group == 'undefined' || typeof console.groupEnd == 'undefined' || typeof console.groupCollapsed == 'undefined') {\n          module.verbose('Console group not available, normalizing events');\n          window.console.group = function() {};\n          window.console.groupEnd = function() {};\n          window.console.groupCollapsed = function() {};\n        }\n        if (typeof console.markTimeline == 'undefined') {\n          module.verbose('Mark timeline not available, normalizing events');\n          window.console.markTimeline = function() {};\n        }\n      },\n      consoleClear: function() {\n        module.debug('Disabling programmatic console clearing');\n        window.console.clear = function() {};\n      },\n      requestAnimationFrame: function() {\n        module.debug('Normalizing requestAnimationFrame');\n        if(window.requestAnimationFrame === undefined) {\n          module.debug('RequestAnimationFrame not available, normalizing event');\n          window.requestAnimationFrame = window.requestAnimationFrame\n            || window.mozRequestAnimationFrame\n            || window.webkitRequestAnimationFrame\n            || window.msRequestAnimationFrame\n            || function(callback) { setTimeout(callback, 0); }\n          ;\n        }\n      }\n    },\n\n    moduleExists: function(name) {\n      return ($.fn[name] !== undefined && $.fn[name].settings !== undefined);\n    },\n\n    enabled: {\n      modules: function(modules) {\n        var\n          enabledModules = []\n        ;\n        modules = modules || settings.modules;\n        $.each(modules, function(index, name) {\n          if(module.moduleExists(name)) {\n            enabledModules.push(name);\n          }\n        });\n        return enabledModules;\n      }\n    },\n\n    disabled: {\n      modules: function(modules) {\n        var\n          disabledModules = []\n        ;\n        modules = modules || settings.modules;\n        $.each(modules, function(index, name) {\n          if(!module.moduleExists(name)) {\n            disabledModules.push(name);\n          }\n        });\n        return disabledModules;\n      }\n    },\n\n    change: {\n      setting: function(setting, value, modules, modifyExisting) {\n        modules = (typeof modules === 'string')\n          ? (modules === 'all')\n            ? settings.modules\n            : [modules]\n          : modules || settings.modules\n        ;\n        modifyExisting = (modifyExisting !== undefined)\n          ? modifyExisting\n          : true\n        ;\n        $.each(modules, function(index, name) {\n          var\n            namespace = (module.moduleExists(name))\n              ? $.fn[name].settings.namespace || false\n              : true,\n            $existingModules\n          ;\n          if(module.moduleExists(name)) {\n            module.verbose('Changing default setting', setting, value, name);\n            $.fn[name].settings[setting] = value;\n            if(modifyExisting && namespace) {\n              $existingModules = $(':data(module-' + namespace + ')');\n              if($existingModules.length > 0) {\n                module.verbose('Modifying existing settings', $existingModules);\n                $existingModules[name]('setting', setting, value);\n              }\n            }\n          }\n        });\n      },\n      settings: function(newSettings, modules, modifyExisting) {\n        modules = (typeof modules === 'string')\n          ? [modules]\n          : modules || settings.modules\n        ;\n        modifyExisting = (modifyExisting !== undefined)\n          ? modifyExisting\n          : true\n        ;\n        $.each(modules, function(index, name) {\n          var\n            $existingModules\n          ;\n          if(module.moduleExists(name)) {\n            module.verbose('Changing default setting', newSettings, name);\n            $.extend(true, $.fn[name].settings, newSettings);\n            if(modifyExisting && namespace) {\n              $existingModules = $(':data(module-' + namespace + ')');\n              if($existingModules.length > 0) {\n                module.verbose('Modifying existing settings', $existingModules);\n                $existingModules[name]('setting', newSettings);\n              }\n            }\n          }\n        });\n      }\n    },\n\n    enable: {\n      console: function() {\n        module.console(true);\n      },\n      debug: function(modules, modifyExisting) {\n        modules = modules || settings.modules;\n        module.debug('Enabling debug for modules', modules);\n        module.change.setting('debug', true, modules, modifyExisting);\n      },\n      verbose: function(modules, modifyExisting) {\n        modules = modules || settings.modules;\n        module.debug('Enabling verbose debug for modules', modules);\n        module.change.setting('verbose', true, modules, modifyExisting);\n      }\n    },\n    disable: {\n      console: function() {\n        module.console(false);\n      },\n      debug: function(modules, modifyExisting) {\n        modules = modules || settings.modules;\n        module.debug('Disabling debug for modules', modules);\n        module.change.setting('debug', false, modules, modifyExisting);\n      },\n      verbose: function(modules, modifyExisting) {\n        modules = modules || settings.modules;\n        module.debug('Disabling verbose debug for modules', modules);\n        module.change.setting('verbose', false, modules, modifyExisting);\n      }\n    },\n\n    console: function(enable) {\n      if(enable) {\n        if(instance.cache.console === undefined) {\n          module.error(error.console);\n          return;\n        }\n        module.debug('Restoring console function');\n        window.console = instance.cache.console;\n      }\n      else {\n        module.debug('Disabling console function');\n        instance.cache.console = window.console;\n        window.console = {\n          clear          : function(){},\n          error          : function(){},\n          group          : function(){},\n          groupCollapsed : function(){},\n          groupEnd       : function(){},\n          info           : function(){},\n          log            : function(){},\n          markTimeline   : function(){},\n          warn           : function(){}\n        };\n      }\n    },\n\n    destroy: function() {\n      module.verbose('Destroying previous site for', $module);\n      $module\n        .removeData(moduleNamespace)\n      ;\n    },\n\n    cache: {},\n\n    setting: function(name, value) {\n      if( $.isPlainObject(name) ) {\n        $.extend(true, settings, name);\n      }\n      else if(value !== undefined) {\n        settings[name] = value;\n      }\n      else {\n        return settings[name];\n      }\n    },\n    internal: function(name, value) {\n      if( $.isPlainObject(name) ) {\n        $.extend(true, module, name);\n      }\n      else if(value !== undefined) {\n        module[name] = value;\n      }\n      else {\n        return module[name];\n      }\n    },\n    debug: function() {\n      if(settings.debug) {\n        if(settings.performance) {\n          module.performance.log(arguments);\n        }\n        else {\n          module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n          module.debug.apply(console, arguments);\n        }\n      }\n    },\n    verbose: function() {\n      if(settings.verbose && settings.debug) {\n        if(settings.performance) {\n          module.performance.log(arguments);\n        }\n        else {\n          module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n          module.verbose.apply(console, arguments);\n        }\n      }\n    },\n    error: function() {\n      module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n      module.error.apply(console, arguments);\n    },\n    performance: {\n      log: function(message) {\n        var\n          currentTime,\n          executionTime,\n          previousTime\n        ;\n        if(settings.performance) {\n          currentTime   = new Date().getTime();\n          previousTime  = time || currentTime;\n          executionTime = currentTime - previousTime;\n          time          = currentTime;\n          performance.push({\n            'Element'        : element,\n            'Name'           : message[0],\n            'Arguments'      : [].slice.call(message, 1) || '',\n            'Execution Time' : executionTime\n          });\n        }\n        clearTimeout(module.performance.timer);\n        module.performance.timer = setTimeout(module.performance.display, 500);\n      },\n      display: function() {\n        var\n          title = settings.name + ':',\n          totalTime = 0\n        ;\n        time = false;\n        clearTimeout(module.performance.timer);\n        $.each(performance, function(index, data) {\n          totalTime += data['Execution Time'];\n        });\n        title += ' ' + totalTime + 'ms';\n        if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n          console.groupCollapsed(title);\n          if(console.table) {\n            console.table(performance);\n          }\n          else {\n            $.each(performance, function(index, data) {\n              console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n            });\n          }\n          console.groupEnd();\n        }\n        performance = [];\n      }\n    },\n    invoke: function(query, passedArguments, context) {\n      var\n        object = instance,\n        maxDepth,\n        found,\n        response\n      ;\n      passedArguments = passedArguments || queryArguments;\n      context         = element         || context;\n      if(typeof query == 'string' && object !== undefined) {\n        query    = query.split(/[\\. ]/);\n        maxDepth = query.length - 1;\n        $.each(query, function(depth, value) {\n          var camelCaseValue = (depth != maxDepth)\n            ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n            : query\n          ;\n          if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n            object = object[camelCaseValue];\n          }\n          else if( object[camelCaseValue] !== undefined ) {\n            found = object[camelCaseValue];\n            return false;\n          }\n          else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n            object = object[value];\n          }\n          else if( object[value] !== undefined ) {\n            found = object[value];\n            return false;\n          }\n          else {\n            module.error(error.method, query);\n            return false;\n          }\n        });\n      }\n      if ( $.isFunction( found ) ) {\n        response = found.apply(context, passedArguments);\n      }\n      else if(found !== undefined) {\n        response = found;\n      }\n      if($.isArray(returnedValue)) {\n        returnedValue.push(response);\n      }\n      else if(returnedValue !== undefined) {\n        returnedValue = [returnedValue, response];\n      }\n      else if(response !== undefined) {\n        returnedValue = response;\n      }\n      return found;\n    }\n  };\n\n  if(methodInvoked) {\n    if(instance === undefined) {\n      module.initialize();\n    }\n    module.invoke(query);\n  }\n  else {\n    if(instance !== undefined) {\n      module.destroy();\n    }\n    module.initialize();\n  }\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.site.settings = {\n\n  name        : 'Site',\n  namespace   : 'site',\n\n  error : {\n    console : 'Console cannot be restored, most likely it was overwritten outside of module',\n    method : 'The method you called is not defined.'\n  },\n\n  debug       : false,\n  verbose     : false,\n  performance : true,\n\n  modules: [\n    'accordion',\n    'api',\n    'checkbox',\n    'dimmer',\n    'dropdown',\n    'embed',\n    'form',\n    'modal',\n    'nag',\n    'popup',\n    'rating',\n    'shape',\n    'sidebar',\n    'state',\n    'sticky',\n    'tab',\n    'transition',\n    'visit',\n    'visibility'\n  ],\n\n  siteNamespace   : 'site',\n  namespaceStub   : {\n    cache     : {},\n    config    : {},\n    sections  : {},\n    section   : {},\n    utilities : {}\n  }\n\n};\n\n// allows for selection of elements with data attributes\n$.extend($.expr[ \":\" ], {\n  data: ($.expr.createPseudo)\n    ? $.expr.createPseudo(function(dataName) {\n        return function(elem) {\n          return !!$.data(elem, dataName);\n        };\n      })\n    : function(elem, i, match) {\n      // support: jQuery < 1.8\n      return !!$.data(elem, match[ 3 ]);\n    }\n});\n\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Form Validation\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.form = function(parameters) {\n  var\n    $allModules      = $(this),\n    moduleSelector   = $allModules.selector || '',\n\n    time             = new Date().getTime(),\n    performance      = [],\n\n    query            = arguments[0],\n    legacyParameters = arguments[1],\n    methodInvoked    = (typeof query == 'string'),\n    queryArguments   = [].slice.call(arguments, 1),\n    returnedValue\n  ;\n  $allModules\n    .each(function() {\n      var\n        $module     = $(this),\n        element     = this,\n\n        formErrors  = [],\n        keyHeldDown = false,\n\n        // set at run-time\n        $field,\n        $group,\n        $message,\n        $prompt,\n        $submit,\n        $clear,\n        $reset,\n\n        settings,\n        validation,\n\n        metadata,\n        selector,\n        className,\n        regExp,\n        error,\n\n        namespace,\n        moduleNamespace,\n        eventNamespace,\n\n        instance,\n        module\n      ;\n\n      module      = {\n\n        initialize: function() {\n\n          // settings grabbed at run time\n          module.get.settings();\n          if(methodInvoked) {\n            if(instance === undefined) {\n              module.instantiate();\n            }\n            module.invoke(query);\n          }\n          else {\n            if(instance !== undefined) {\n              instance.invoke('destroy');\n            }\n            module.verbose('Initializing form validation', $module, settings);\n            module.bindEvents();\n            module.set.defaults();\n            module.instantiate();\n          }\n        },\n\n        instantiate: function() {\n          module.verbose('Storing instance of module', module);\n          instance = module;\n          $module\n            .data(moduleNamespace, module)\n          ;\n        },\n\n        destroy: function() {\n          module.verbose('Destroying previous module', instance);\n          module.removeEvents();\n          $module\n            .removeData(moduleNamespace)\n          ;\n        },\n\n        refresh: function() {\n          module.verbose('Refreshing selector cache');\n          $field      = $module.find(selector.field);\n          $group      = $module.find(selector.group);\n          $message    = $module.find(selector.message);\n          $prompt     = $module.find(selector.prompt);\n\n          $submit     = $module.find(selector.submit);\n          $clear      = $module.find(selector.clear);\n          $reset      = $module.find(selector.reset);\n        },\n\n        submit: function() {\n          module.verbose('Submitting form', $module);\n          $module\n            .submit()\n          ;\n        },\n\n        attachEvents: function(selector, action) {\n          action = action || 'submit';\n          $(selector)\n            .on('click' + eventNamespace, function(event) {\n              module[action]();\n              event.preventDefault();\n            })\n          ;\n        },\n\n        bindEvents: function() {\n          module.verbose('Attaching form events');\n          $module\n            .on('submit' + eventNamespace, module.validate.form)\n            .on('blur'   + eventNamespace, selector.field, module.event.field.blur)\n            .on('click'  + eventNamespace, selector.submit, module.submit)\n            .on('click'  + eventNamespace, selector.reset, module.reset)\n            .on('click'  + eventNamespace, selector.clear, module.clear)\n          ;\n          if(settings.keyboardShortcuts) {\n            $module\n              .on('keydown' + eventNamespace, selector.field, module.event.field.keydown)\n            ;\n          }\n          $field\n            .each(function() {\n              var\n                $input     = $(this),\n                type       = $input.prop('type'),\n                inputEvent = module.get.changeEvent(type, $input)\n              ;\n              $(this)\n                .on(inputEvent + eventNamespace, module.event.field.change)\n              ;\n            })\n          ;\n        },\n\n        clear: function() {\n          $field\n            .each(function () {\n              var\n                $field       = $(this),\n                $element     = $field.parent(),\n                $fieldGroup  = $field.closest($group),\n                $prompt      = $fieldGroup.find(selector.prompt),\n                defaultValue = $field.data(metadata.defaultValue) || '',\n                isCheckbox   = $element.is(selector.uiCheckbox),\n                isDropdown   = $element.is(selector.uiDropdown),\n                isErrored    = $fieldGroup.hasClass(className.error)\n              ;\n              if(isErrored) {\n                module.verbose('Resetting error on field', $fieldGroup);\n                $fieldGroup.removeClass(className.error);\n                $prompt.remove();\n              }\n              if(isDropdown) {\n                module.verbose('Resetting dropdown value', $element, defaultValue);\n                $element.dropdown('clear');\n              }\n              else if(isCheckbox) {\n                $field.prop('checked', false);\n              }\n              else {\n                module.verbose('Resetting field value', $field, defaultValue);\n                $field.val('');\n              }\n            })\n          ;\n        },\n\n        reset: function() {\n          $field\n            .each(function () {\n              var\n                $field       = $(this),\n                $element     = $field.parent(),\n                $fieldGroup  = $field.closest($group),\n                $prompt      = $fieldGroup.find(selector.prompt),\n                defaultValue = $field.data(metadata.defaultValue),\n                isCheckbox   = $element.is(selector.uiCheckbox),\n                isDropdown   = $element.is(selector.uiDropdown),\n                isErrored    = $fieldGroup.hasClass(className.error)\n              ;\n              if(defaultValue === undefined) {\n                return;\n              }\n              if(isErrored) {\n                module.verbose('Resetting error on field', $fieldGroup);\n                $fieldGroup.removeClass(className.error);\n                $prompt.remove();\n              }\n              if(isDropdown) {\n                module.verbose('Resetting dropdown value', $element, defaultValue);\n                $element.dropdown('restore defaults');\n              }\n              else if(isCheckbox) {\n                module.verbose('Resetting checkbox value', $element, defaultValue);\n                $field.prop('checked', defaultValue);\n              }\n              else {\n                module.verbose('Resetting field value', $field, defaultValue);\n                $field.val(defaultValue);\n              }\n            })\n          ;\n        },\n\n        determine: {\n          isValid: function() {\n            var\n              allValid = true\n            ;\n            $.each(validation, function(fieldName, field) {\n              if( !( module.validate.field(field, fieldName, true) ) ) {\n                allValid = false;\n              }\n            });\n            return allValid;\n          }\n        },\n\n        is: {\n          bracketedRule: function(rule) {\n            return (rule.type && rule.type.match(settings.regExp.bracket));\n          },\n          shorthandFields: function(fields) {\n            var\n              fieldKeys = Object.keys(fields),\n              firstRule = fields[fieldKeys[0]]\n            ;\n            return module.is.shorthandRules(firstRule);\n          },\n          // duck type rule test\n          shorthandRules: function(rules) {\n            return (typeof rules == 'string' || $.isArray(rules));\n          },\n          empty: function($field) {\n            if(!$field || $field.length === 0) {\n              return true;\n            }\n            else if($field.is('input[type=\"checkbox\"]')) {\n              return !$field.is(':checked');\n            }\n            else {\n              return module.is.blank($field);\n            }\n          },\n          blank: function($field) {\n            return $.trim($field.val()) === '';\n          },\n          valid: function(field) {\n            var\n              allValid = true\n            ;\n            if(field) {\n              module.verbose('Checking if field is valid', field);\n              return module.validate.field(validation[field], field, false);\n            }\n            else {\n              module.verbose('Checking if form is valid');\n              $.each(validation, function(fieldName, field) {\n                if( !module.is.valid(fieldName) ) {\n                  allValid = false;\n                }\n              });\n              return allValid;\n            }\n          }\n        },\n\n        removeEvents: function() {\n          $module\n            .off(eventNamespace)\n          ;\n          $field\n            .off(eventNamespace)\n          ;\n          $submit\n            .off(eventNamespace)\n          ;\n          $field\n            .off(eventNamespace)\n          ;\n        },\n\n        event: {\n          field: {\n            keydown: function(event) {\n              var\n                $field       = $(this),\n                key          = event.which,\n                isInput      = $field.is(selector.input),\n                isCheckbox   = $field.is(selector.checkbox),\n                isInDropdown = ($field.closest(selector.uiDropdown).length > 0),\n                keyCode      = {\n                  enter  : 13,\n                  escape : 27\n                }\n              ;\n              if( key == keyCode.escape) {\n                module.verbose('Escape key pressed blurring field');\n                $field\n                  .blur()\n                ;\n              }\n              if(!event.ctrlKey && key == keyCode.enter && isInput && !isInDropdown && !isCheckbox) {\n                if(!keyHeldDown) {\n                  $field\n                    .one('keyup' + eventNamespace, module.event.field.keyup)\n                  ;\n                  module.submit();\n                  module.debug('Enter pressed on input submitting form');\n                }\n                keyHeldDown = true;\n              }\n            },\n            keyup: function() {\n              keyHeldDown = false;\n            },\n            blur: function(event) {\n              var\n                $field          = $(this),\n                $fieldGroup     = $field.closest($group),\n                validationRules = module.get.validation($field)\n              ;\n              if( $fieldGroup.hasClass(className.error) ) {\n                module.debug('Revalidating field', $field, validationRules);\n                if(validationRules) {\n                  module.validate.field( validationRules );\n                }\n              }\n              else if(settings.on == 'blur' || settings.on == 'change') {\n                if(validationRules) {\n                  module.validate.field( validationRules );\n                }\n              }\n            },\n            change: function(event) {\n              var\n                $field      = $(this),\n                $fieldGroup = $field.closest($group),\n                validationRules = module.get.validation($field)\n              ;\n              if(validationRules && (settings.on == 'change' || ( $fieldGroup.hasClass(className.error) && settings.revalidate) )) {\n                clearTimeout(module.timer);\n                module.timer = setTimeout(function() {\n                  module.debug('Revalidating field', $field,  module.get.validation($field));\n                  module.validate.field( validationRules );\n                }, settings.delay);\n              }\n            }\n          }\n\n        },\n\n        get: {\n          ancillaryValue: function(rule) {\n            if(!rule.type || (!rule.value && !module.is.bracketedRule(rule))) {\n              return false;\n            }\n            return (rule.value !== undefined)\n              ? rule.value\n              : rule.type.match(settings.regExp.bracket)[1] + ''\n            ;\n          },\n          ruleName: function(rule) {\n            if( module.is.bracketedRule(rule) ) {\n              return rule.type.replace(rule.type.match(settings.regExp.bracket)[0], '');\n            }\n            return rule.type;\n          },\n          changeEvent: function(type, $input) {\n            if(type == 'checkbox' || type == 'radio' || type == 'hidden' || $input.is('select')) {\n              return 'change';\n            }\n            else {\n              return module.get.inputEvent();\n            }\n          },\n          inputEvent: function() {\n            return (document.createElement('input').oninput !== undefined)\n              ? 'input'\n              : (document.createElement('input').onpropertychange !== undefined)\n                ? 'propertychange'\n                : 'keyup'\n            ;\n          },\n          fieldsFromShorthand: function(fields) {\n            var\n              fullFields = {}\n            ;\n            $.each(fields, function(name, rules) {\n              if(typeof rules == 'string') {\n                rules = [rules];\n              }\n              fullFields[name] = {\n                rules: []\n              };\n              $.each(rules, function(index, rule) {\n                fullFields[name].rules.push({ type: rule });\n              });\n            });\n            return fullFields;\n          },\n          prompt: function(rule, field) {\n            var\n              ruleName      = module.get.ruleName(rule),\n              ancillary     = module.get.ancillaryValue(rule),\n              prompt        = rule.prompt || settings.prompt[ruleName] || settings.text.unspecifiedRule,\n              requiresValue = (prompt.search('{value}') !== -1),\n              requiresName  = (prompt.search('{name}') !== -1),\n              $label,\n              $field,\n              name\n            ;\n            if(requiresName || requiresValue) {\n              $field = module.get.field(field.identifier);\n            }\n            if(requiresValue) {\n              prompt = prompt.replace('{value}', $field.val());\n            }\n            if(requiresName) {\n              $label = $field.closest(selector.group).find('label').eq(0);\n              name = ($label.length == 1)\n                ? $label.text()\n                : $field.prop('placeholder') || settings.text.unspecifiedField\n              ;\n              prompt = prompt.replace('{name}', name);\n            }\n            prompt = prompt.replace('{identifier}', field.identifier);\n            prompt = prompt.replace('{ruleValue}', ancillary);\n            if(!rule.prompt) {\n              module.verbose('Using default validation prompt for type', prompt, ruleName);\n            }\n            return prompt;\n          },\n          settings: function() {\n            if($.isPlainObject(parameters)) {\n              var\n                keys     = Object.keys(parameters),\n                isLegacySettings = (keys.length > 0)\n                  ? (parameters[keys[0]].identifier !== undefined && parameters[keys[0]].rules !== undefined)\n                  : false,\n                ruleKeys\n              ;\n              if(isLegacySettings) {\n                // 1.x (ducktyped)\n                settings   = $.extend(true, {}, $.fn.form.settings, legacyParameters);\n                validation = $.extend({}, $.fn.form.settings.defaults, parameters);\n                module.error(settings.error.oldSyntax, element);\n                module.verbose('Extending settings from legacy parameters', validation, settings);\n              }\n              else {\n                // 2.x\n                if(parameters.fields && module.is.shorthandFields(parameters.fields)) {\n                  parameters.fields = module.get.fieldsFromShorthand(parameters.fields);\n                }\n                settings   = $.extend(true, {}, $.fn.form.settings, parameters);\n                validation = $.extend({}, $.fn.form.settings.defaults, settings.fields);\n                module.verbose('Extending settings', validation, settings);\n              }\n            }\n            else {\n              settings   = $.fn.form.settings;\n              validation = $.fn.form.settings.defaults;\n              module.verbose('Using default form validation', validation, settings);\n            }\n\n            // shorthand\n            namespace       = settings.namespace;\n            metadata        = settings.metadata;\n            selector        = settings.selector;\n            className       = settings.className;\n            regExp          = settings.regExp;\n            error           = settings.error;\n            moduleNamespace = 'module-' + namespace;\n            eventNamespace  = '.' + namespace;\n\n            // grab instance\n            instance = $module.data(moduleNamespace);\n\n            // refresh selector cache\n            module.refresh();\n          },\n          field: function(identifier) {\n            module.verbose('Finding field with identifier', identifier);\n            identifier = module.escape.string(identifier);\n            if($field.filter('#' + identifier).length > 0 ) {\n              return $field.filter('#' + identifier);\n            }\n            else if( $field.filter('[name=\"' + identifier +'\"]').length > 0 ) {\n              return $field.filter('[name=\"' + identifier +'\"]');\n            }\n            else if( $field.filter('[name=\"' + identifier +'[]\"]').length > 0 ) {\n              return $field.filter('[name=\"' + identifier +'[]\"]');\n            }\n            else if( $field.filter('[data-' + metadata.validate + '=\"'+ identifier +'\"]').length > 0 ) {\n              return $field.filter('[data-' + metadata.validate + '=\"'+ identifier +'\"]');\n            }\n            return $('<input/>');\n          },\n          fields: function(fields) {\n            var\n              $fields = $()\n            ;\n            $.each(fields, function(index, name) {\n              $fields = $fields.add( module.get.field(name) );\n            });\n            return $fields;\n          },\n          validation: function($field) {\n            var\n              fieldValidation,\n              identifier\n            ;\n            if(!validation) {\n              return false;\n            }\n            $.each(validation, function(fieldName, field) {\n              identifier = field.identifier || fieldName;\n              if( module.get.field(identifier)[0] == $field[0] ) {\n                field.identifier = identifier;\n                fieldValidation = field;\n              }\n            });\n            return fieldValidation || false;\n          },\n          value: function (field) {\n            var\n              fields = [],\n              results\n            ;\n            fields.push(field);\n            results = module.get.values.call(element, fields);\n            return results[field];\n          },\n          values: function (fields) {\n            var\n              $fields = $.isArray(fields)\n                ? module.get.fields(fields)\n                : $field,\n              values = {}\n            ;\n            $fields.each(function(index, field) {\n              var\n                $field     = $(field),\n                type       = $field.prop('type'),\n                name       = $field.prop('name'),\n                value      = $field.val(),\n                isCheckbox = $field.is(selector.checkbox),\n                isRadio    = $field.is(selector.radio),\n                isMultiple = (name.indexOf('[]') !== -1),\n                isChecked  = (isCheckbox)\n                  ? $field.is(':checked')\n                  : false\n              ;\n              if(name) {\n                if(isMultiple) {\n                  name = name.replace('[]', '');\n                  if(!values[name]) {\n                    values[name] = [];\n                  }\n                  if(isCheckbox) {\n                    if(isChecked) {\n                      values[name].push(value || true);\n                    }\n                    else {\n                      values[name].push(false);\n                    }\n                  }\n                  else {\n                    values[name].push(value);\n                  }\n                }\n                else {\n                  if(isRadio) {\n                    if(values[name] === undefined) {\n                      values[name] = (isChecked)\n                        ? true\n                        : false\n                      ;\n                    }\n                  }\n                  else if(isCheckbox) {\n                    if(isChecked) {\n                      values[name] = value || true;\n                    }\n                    else {\n                      values[name] = false;\n                    }\n                  }\n                  else {\n                    values[name] = value;\n                  }\n                }\n              }\n            });\n            return values;\n          }\n        },\n\n        has: {\n\n          field: function(identifier) {\n            module.verbose('Checking for existence of a field with identifier', identifier);\n            identifier = module.escape.string(identifier);\n            if(typeof identifier !== 'string') {\n              module.error(error.identifier, identifier);\n            }\n            if($field.filter('#' + identifier).length > 0 ) {\n              return true;\n            }\n            else if( $field.filter('[name=\"' + identifier +'\"]').length > 0 ) {\n              return true;\n            }\n            else if( $field.filter('[data-' + metadata.validate + '=\"'+ identifier +'\"]').length > 0 ) {\n              return true;\n            }\n            return false;\n          }\n\n        },\n\n        escape: {\n          string: function(text) {\n            text =  String(text);\n            return text.replace(regExp.escape, '\\\\$&');\n          }\n        },\n\n        add: {\n          // alias\n          rule: function(name, rules) {\n            module.add.field(name, rules);\n          },\n          field: function(name, rules) {\n            var\n              newValidation = {}\n            ;\n            if(module.is.shorthandRules(rules)) {\n              rules = $.isArray(rules)\n                ? rules\n                : [rules]\n              ;\n              newValidation[name] = {\n                rules: []\n              };\n              $.each(rules, function(index, rule) {\n                newValidation[name].rules.push({ type: rule });\n              });\n            }\n            else {\n              newValidation[name] = rules;\n            }\n            validation = $.extend({}, validation, newValidation);\n            module.debug('Adding rules', newValidation, validation);\n          },\n          fields: function(fields) {\n            var\n              newValidation\n            ;\n            if(fields && module.is.shorthandFields(fields)) {\n              newValidation = module.get.fieldsFromShorthand(fields);\n            }\n            else {\n              newValidation = fields;\n            }\n            validation = $.extend({}, validation, newValidation);\n          },\n          prompt: function(identifier, errors) {\n            var\n              $field       = module.get.field(identifier),\n              $fieldGroup  = $field.closest($group),\n              $prompt      = $fieldGroup.children(selector.prompt),\n              promptExists = ($prompt.length !== 0)\n            ;\n            errors = (typeof errors == 'string')\n              ? [errors]\n              : errors\n            ;\n            module.verbose('Adding field error state', identifier);\n            $fieldGroup\n              .addClass(className.error)\n            ;\n            if(settings.inline) {\n              if(!promptExists) {\n                $prompt = settings.templates.prompt(errors);\n                $prompt\n                  .appendTo($fieldGroup)\n                ;\n              }\n              $prompt\n                .html(errors[0])\n              ;\n              if(!promptExists) {\n                if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {\n                  module.verbose('Displaying error with css transition', settings.transition);\n                  $prompt.transition(settings.transition + ' in', settings.duration);\n                }\n                else {\n                  module.verbose('Displaying error with fallback javascript animation');\n                  $prompt\n                    .fadeIn(settings.duration)\n                  ;\n                }\n              }\n              else {\n                module.verbose('Inline errors are disabled, no inline error added', identifier);\n              }\n            }\n          },\n          errors: function(errors) {\n            module.debug('Adding form error messages', errors);\n            module.set.error();\n            $message\n              .html( settings.templates.error(errors) )\n            ;\n          }\n        },\n\n        remove: {\n          rule: function(field, rule) {\n            var\n              rules = $.isArray(rule)\n                ? rule\n                : [rule]\n            ;\n            if(rule == undefined) {\n              module.debug('Removed all rules');\n              validation[field].rules = [];\n              return;\n            }\n            if(validation[field] == undefined || !$.isArray(validation[field].rules)) {\n              return;\n            }\n            $.each(validation[field].rules, function(index, rule) {\n              if(rules.indexOf(rule.type) !== -1) {\n                module.debug('Removed rule', rule.type);\n                validation[field].rules.splice(index, 1);\n              }\n            });\n          },\n          field: function(field) {\n            var\n              fields = $.isArray(field)\n                ? field\n                : [field]\n            ;\n            $.each(fields, function(index, field) {\n              module.remove.rule(field);\n            });\n          },\n          // alias\n          rules: function(field, rules) {\n            if($.isArray(field)) {\n              $.each(fields, function(index, field) {\n                module.remove.rule(field, rules);\n              });\n            }\n            else {\n              module.remove.rule(field, rules);\n            }\n          },\n          fields: function(fields) {\n            module.remove.field(fields);\n          },\n          prompt: function(identifier) {\n            var\n              $field      = module.get.field(identifier),\n              $fieldGroup = $field.closest($group),\n              $prompt     = $fieldGroup.children(selector.prompt)\n            ;\n            $fieldGroup\n              .removeClass(className.error)\n            ;\n            if(settings.inline && $prompt.is(':visible')) {\n              module.verbose('Removing prompt for field', identifier);\n              if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {\n                $prompt.transition(settings.transition + ' out', settings.duration, function() {\n                  $prompt.remove();\n                });\n              }\n              else {\n                $prompt\n                  .fadeOut(settings.duration, function(){\n                    $prompt.remove();\n                  })\n                ;\n              }\n            }\n          }\n        },\n\n        set: {\n          success: function() {\n            $module\n              .removeClass(className.error)\n              .addClass(className.success)\n            ;\n          },\n          defaults: function () {\n            $field\n              .each(function () {\n                var\n                  $field     = $(this),\n                  isCheckbox = ($field.filter(selector.checkbox).length > 0),\n                  value      = (isCheckbox)\n                    ? $field.is(':checked')\n                    : $field.val()\n                ;\n                $field.data(metadata.defaultValue, value);\n              })\n            ;\n          },\n          error: function() {\n            $module\n              .removeClass(className.success)\n              .addClass(className.error)\n            ;\n          },\n          value: function (field, value) {\n            var\n              fields = {}\n            ;\n            fields[field] = value;\n            return module.set.values.call(element, fields);\n          },\n          values: function (fields) {\n            if($.isEmptyObject(fields)) {\n              return;\n            }\n            $.each(fields, function(key, value) {\n              var\n                $field      = module.get.field(key),\n                $element    = $field.parent(),\n                isMultiple  = $.isArray(value),\n                isCheckbox  = $element.is(selector.uiCheckbox),\n                isDropdown  = $element.is(selector.uiDropdown),\n                isRadio     = ($field.is(selector.radio) && isCheckbox),\n                fieldExists = ($field.length > 0),\n                $multipleField\n              ;\n              if(fieldExists) {\n                if(isMultiple && isCheckbox) {\n                  module.verbose('Selecting multiple', value, $field);\n                  $element.checkbox('uncheck');\n                  $.each(value, function(index, value) {\n                    $multipleField = $field.filter('[value=\"' + value + '\"]');\n                    $element       = $multipleField.parent();\n                    if($multipleField.length > 0) {\n                      $element.checkbox('check');\n                    }\n                  });\n                }\n                else if(isRadio) {\n                  module.verbose('Selecting radio value', value, $field);\n                  $field.filter('[value=\"' + value + '\"]')\n                    .parent(selector.uiCheckbox)\n                      .checkbox('check')\n                  ;\n                }\n                else if(isCheckbox) {\n                  module.verbose('Setting checkbox value', value, $element);\n                  if(value === true) {\n                    $element.checkbox('check');\n                  }\n                  else {\n                    $element.checkbox('uncheck');\n                  }\n                }\n                else if(isDropdown) {\n                  module.verbose('Setting dropdown value', value, $element);\n                  $element.dropdown('set selected', value);\n                }\n                else {\n                  module.verbose('Setting field value', value, $field);\n                  $field.val(value);\n                }\n              }\n            });\n          }\n        },\n\n        validate: {\n\n          form: function(event, ignoreCallbacks) {\n            var\n              values = module.get.values(),\n              apiRequest\n            ;\n\n            // input keydown event will fire submit repeatedly by browser default\n            if(keyHeldDown) {\n              return false;\n            }\n\n            // reset errors\n            formErrors = [];\n            if( module.determine.isValid() ) {\n              module.debug('Form has no validation errors, submitting');\n              module.set.success();\n              if(ignoreCallbacks !== true) {\n                return settings.onSuccess.call(element, event, values);\n              }\n            }\n            else {\n              module.debug('Form has errors');\n              module.set.error();\n              if(!settings.inline) {\n                module.add.errors(formErrors);\n              }\n              // prevent ajax submit\n              if($module.data('moduleApi') !== undefined) {\n                event.stopImmediatePropagation();\n              }\n              if(ignoreCallbacks !== true) {\n                return settings.onFailure.call(element, formErrors, values);\n              }\n            }\n          },\n\n          // takes a validation object and returns whether field passes validation\n          field: function(field, fieldName, showErrors) {\n            showErrors = (showErrors !== undefined)\n              ? showErrors\n              : true\n            ;\n            if(typeof field == 'string') {\n              module.verbose('Validating field', field);\n              fieldName = field;\n              field     = validation[field];\n            }\n            var\n              identifier    = field.identifier || fieldName,\n              $field        = module.get.field(identifier),\n              $dependsField = (field.depends)\n                ? module.get.field(field.depends)\n                : false,\n              fieldValid  = true,\n              fieldErrors = []\n            ;\n            if(!field.identifier) {\n              module.debug('Using field name as identifier', identifier);\n              field.identifier = identifier;\n            }\n            if($field.prop('disabled')) {\n              module.debug('Field is disabled. Skipping', identifier);\n              fieldValid = true;\n            }\n            else if(field.optional && module.is.blank($field)){\n              module.debug('Field is optional and blank. Skipping', identifier);\n              fieldValid = true;\n            }\n            else if(field.depends && module.is.empty($dependsField)) {\n              module.debug('Field depends on another value that is not present or empty. Skipping', $dependsField);\n              fieldValid = true;\n            }\n            else if(field.rules !== undefined) {\n              $.each(field.rules, function(index, rule) {\n                if( module.has.field(identifier) && !( module.validate.rule(field, rule) ) ) {\n                  module.debug('Field is invalid', identifier, rule.type);\n                  fieldErrors.push(module.get.prompt(rule, field));\n                  fieldValid = false;\n                }\n              });\n            }\n            if(fieldValid) {\n              if(showErrors) {\n                module.remove.prompt(identifier, fieldErrors);\n                settings.onValid.call($field);\n              }\n            }\n            else {\n              if(showErrors) {\n                formErrors = formErrors.concat(fieldErrors);\n                module.add.prompt(identifier, fieldErrors);\n                settings.onInvalid.call($field, fieldErrors);\n              }\n              return false;\n            }\n            return true;\n          },\n\n          // takes validation rule and returns whether field passes rule\n          rule: function(field, rule) {\n            var\n              $field       = module.get.field(field.identifier),\n              type         = rule.type,\n              value        = $field.val(),\n              isValid      = true,\n              ancillary    = module.get.ancillaryValue(rule),\n              ruleName     = module.get.ruleName(rule),\n              ruleFunction = settings.rules[ruleName]\n            ;\n            if( !$.isFunction(ruleFunction) ) {\n              module.error(error.noRule, ruleName);\n              return;\n            }\n            // cast to string avoiding encoding special values\n            value = (value === undefined || value === '' || value === null)\n              ? ''\n              : $.trim(value + '')\n            ;\n            return ruleFunction.call($field, value, ancillary);\n          }\n        },\n\n        setting: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            settings[name] = value;\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if($allModules.length > 1) {\n              title += ' ' + '(' + $allModules.length + ')';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                return false;\n              }\n            });\n          }\n          if( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n      module.initialize();\n    })\n  ;\n\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.form.settings = {\n\n  name              : 'Form',\n  namespace         : 'form',\n\n  debug             : false,\n  verbose           : false,\n  performance       : true,\n\n  fields            : false,\n\n  keyboardShortcuts : true,\n  on                : 'submit',\n  inline            : false,\n\n  delay             : 200,\n  revalidate        : true,\n\n  transition        : 'scale',\n  duration          : 200,\n\n  onValid           : function() {},\n  onInvalid         : function() {},\n  onSuccess         : function() { return true; },\n  onFailure         : function() { return false; },\n\n  metadata : {\n    defaultValue : 'default',\n    validate     : 'validate'\n  },\n\n  regExp: {\n    htmlID  : /^[a-zA-Z][\\w:.-]*$/g,\n    bracket : /\\[(.*)\\]/i,\n    decimal : /^\\d+\\.?\\d*$/,\n    email   : /^[a-z0-9!#$%&'*+\\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,\n    escape  : /[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\n    flags   : /^\\/(.*)\\/(.*)?/,\n    integer : /^\\-?\\d+$/,\n    number  : /^\\-?\\d*(\\.\\d+)?$/,\n    url     : /(https?:\\/\\/(?:www\\.|(?!www))[^\\s\\.]+\\.[^\\s]{2,}|www\\.[^\\s]+\\.[^\\s]{2,})/i\n  },\n\n  text: {\n    unspecifiedRule  : 'Please enter a valid value',\n    unspecifiedField : 'This field'\n  },\n\n  prompt: {\n    empty                : '{name} must have a value',\n    checked              : '{name} must be checked',\n    email                : '{name} must be a valid e-mail',\n    url                  : '{name} must be a valid url',\n    regExp               : '{name} is not formatted correctly',\n    integer              : '{name} must be an integer',\n    decimal              : '{name} must be a decimal number',\n    number               : '{name} must be set to a number',\n    is                   : '{name} must be \"{ruleValue}\"',\n    isExactly            : '{name} must be exactly \"{ruleValue}\"',\n    not                  : '{name} cannot be set to \"{ruleValue}\"',\n    notExactly           : '{name} cannot be set to exactly \"{ruleValue}\"',\n    contain              : '{name} cannot contain \"{ruleValue}\"',\n    containExactly       : '{name} cannot contain exactly \"{ruleValue}\"',\n    doesntContain        : '{name} must contain  \"{ruleValue}\"',\n    doesntContainExactly : '{name} must contain exactly \"{ruleValue}\"',\n    minLength            : '{name} must be at least {ruleValue} characters',\n    length               : '{name} must be at least {ruleValue} characters',\n    exactLength          : '{name} must be exactly {ruleValue} characters',\n    maxLength            : '{name} cannot be longer than {ruleValue} characters',\n    match                : '{name} must match {ruleValue} field',\n    different            : '{name} must have a different value than {ruleValue} field',\n    creditCard           : '{name} must be a valid credit card number',\n    minCount             : '{name} must have at least {ruleValue} choices',\n    exactCount           : '{name} must have exactly {ruleValue} choices',\n    maxCount             : '{name} must have {ruleValue} or less choices'\n  },\n\n  selector : {\n    checkbox   : 'input[type=\"checkbox\"], input[type=\"radio\"]',\n    clear      : '.clear',\n    field      : 'input, textarea, select',\n    group      : '.field',\n    input      : 'input',\n    message    : '.error.message',\n    prompt     : '.prompt.label',\n    radio      : 'input[type=\"radio\"]',\n    reset      : '.reset:not([type=\"reset\"])',\n    submit     : '.submit:not([type=\"submit\"])',\n    uiCheckbox : '.ui.checkbox',\n    uiDropdown : '.ui.dropdown'\n  },\n\n  className : {\n    error   : 'error',\n    label   : 'ui prompt label',\n    pressed : 'down',\n    success : 'success'\n  },\n\n  error: {\n    identifier : 'You must specify a string identifier for each field',\n    method     : 'The method you called is not defined.',\n    noRule     : 'There is no rule matching the one you specified',\n    oldSyntax  : 'Starting in 2.0 forms now only take a single settings object. Validation settings converted to new syntax automatically.'\n  },\n\n  templates: {\n\n    // template that produces error message\n    error: function(errors) {\n      var\n        html = '<ul class=\"list\">'\n      ;\n      $.each(errors, function(index, value) {\n        html += '<li>' + value + '</li>';\n      });\n      html += '</ul>';\n      return $(html);\n    },\n\n    // template that produces label\n    prompt: function(errors) {\n      return $('<div/>')\n        .addClass('ui basic red pointing prompt label')\n        .html(errors[0])\n      ;\n    }\n  },\n\n  rules: {\n\n    // is not empty or blank string\n    empty: function(value) {\n      return !(value === undefined || '' === value || $.isArray(value) && value.length === 0);\n    },\n\n    // checkbox checked\n    checked: function() {\n      return ($(this).filter(':checked').length > 0);\n    },\n\n    // is most likely an email\n    email: function(value){\n      return $.fn.form.settings.regExp.email.test(value);\n    },\n\n    // value is most likely url\n    url: function(value) {\n      return $.fn.form.settings.regExp.url.test(value);\n    },\n\n    // matches specified regExp\n    regExp: function(value, regExp) {\n      if(regExp instanceof RegExp) {\n        return value.match(regExp);\n      }\n      var\n        regExpParts = regExp.match($.fn.form.settings.regExp.flags),\n        flags\n      ;\n      // regular expression specified as /baz/gi (flags)\n      if(regExpParts) {\n        regExp = (regExpParts.length >= 2)\n          ? regExpParts[1]\n          : regExp\n        ;\n        flags = (regExpParts.length >= 3)\n          ? regExpParts[2]\n          : ''\n        ;\n      }\n      return value.match( new RegExp(regExp, flags) );\n    },\n\n    // is valid integer or matches range\n    integer: function(value, range) {\n      var\n        intRegExp = $.fn.form.settings.regExp.integer,\n        min,\n        max,\n        parts\n      ;\n      if( !range || ['', '..'].indexOf(range) !== -1) {\n        // do nothing\n      }\n      else if(range.indexOf('..') == -1) {\n        if(intRegExp.test(range)) {\n          min = max = range - 0;\n        }\n      }\n      else {\n        parts = range.split('..', 2);\n        if(intRegExp.test(parts[0])) {\n          min = parts[0] - 0;\n        }\n        if(intRegExp.test(parts[1])) {\n          max = parts[1] - 0;\n        }\n      }\n      return (\n        intRegExp.test(value) &&\n        (min === undefined || value >= min) &&\n        (max === undefined || value <= max)\n      );\n    },\n\n    // is valid number (with decimal)\n    decimal: function(value) {\n      return $.fn.form.settings.regExp.decimal.test(value);\n    },\n\n    // is valid number\n    number: function(value) {\n      return $.fn.form.settings.regExp.number.test(value);\n    },\n\n    // is value (case insensitive)\n    is: function(value, text) {\n      text = (typeof text == 'string')\n        ? text.toLowerCase()\n        : text\n      ;\n      value = (typeof value == 'string')\n        ? value.toLowerCase()\n        : value\n      ;\n      return (value == text);\n    },\n\n    // is value\n    isExactly: function(value, text) {\n      return (value == text);\n    },\n\n    // value is not another value (case insensitive)\n    not: function(value, notValue) {\n      value = (typeof value == 'string')\n        ? value.toLowerCase()\n        : value\n      ;\n      notValue = (typeof notValue == 'string')\n        ? notValue.toLowerCase()\n        : notValue\n      ;\n      return (value != notValue);\n    },\n\n    // value is not another value (case sensitive)\n    notExactly: function(value, notValue) {\n      return (value != notValue);\n    },\n\n    // value contains text (insensitive)\n    contains: function(value, text) {\n      // escape regex characters\n      text = text.replace($.fn.form.settings.regExp.escape, \"\\\\$&\");\n      return (value.search( new RegExp(text, 'i') ) !== -1);\n    },\n\n    // value contains text (case sensitive)\n    containsExactly: function(value, text) {\n      // escape regex characters\n      text = text.replace($.fn.form.settings.regExp.escape, \"\\\\$&\");\n      return (value.search( new RegExp(text) ) !== -1);\n    },\n\n    // value contains text (insensitive)\n    doesntContain: function(value, text) {\n      // escape regex characters\n      text = text.replace($.fn.form.settings.regExp.escape, \"\\\\$&\");\n      return (value.search( new RegExp(text, 'i') ) === -1);\n    },\n\n    // value contains text (case sensitive)\n    doesntContainExactly: function(value, text) {\n      // escape regex characters\n      text = text.replace($.fn.form.settings.regExp.escape, \"\\\\$&\");\n      return (value.search( new RegExp(text) ) === -1);\n    },\n\n    // is at least string length\n    minLength: function(value, requiredLength) {\n      return (value !== undefined)\n        ? (value.length >= requiredLength)\n        : false\n      ;\n    },\n\n    // see rls notes for 2.0.6 (this is a duplicate of minLength)\n    length: function(value, requiredLength) {\n      return (value !== undefined)\n        ? (value.length >= requiredLength)\n        : false\n      ;\n    },\n\n    // is exactly length\n    exactLength: function(value, requiredLength) {\n      return (value !== undefined)\n        ? (value.length == requiredLength)\n        : false\n      ;\n    },\n\n    // is less than length\n    maxLength: function(value, maxLength) {\n      return (value !== undefined)\n        ? (value.length <= maxLength)\n        : false\n      ;\n    },\n\n    // matches another field\n    match: function(value, identifier) {\n      var\n        $form = $(this),\n        matchingValue\n      ;\n      if( $('[data-validate=\"'+ identifier +'\"]').length > 0 ) {\n        matchingValue = $('[data-validate=\"'+ identifier +'\"]').val();\n      }\n      else if($('#' + identifier).length > 0) {\n        matchingValue = $('#' + identifier).val();\n      }\n      else if($('[name=\"' + identifier +'\"]').length > 0) {\n        matchingValue = $('[name=\"' + identifier + '\"]').val();\n      }\n      else if( $('[name=\"' + identifier +'[]\"]').length > 0 ) {\n        matchingValue = $('[name=\"' + identifier +'[]\"]');\n      }\n      return (matchingValue !== undefined)\n        ? ( value.toString() == matchingValue.toString() )\n        : false\n      ;\n    },\n\n    // different than another field\n    different: function(value, identifier) {\n      // use either id or name of field\n      var\n        $form = $(this),\n        matchingValue\n      ;\n      if( $('[data-validate=\"'+ identifier +'\"]').length > 0 ) {\n        matchingValue = $('[data-validate=\"'+ identifier +'\"]').val();\n      }\n      else if($('#' + identifier).length > 0) {\n        matchingValue = $('#' + identifier).val();\n      }\n      else if($('[name=\"' + identifier +'\"]').length > 0) {\n        matchingValue = $('[name=\"' + identifier + '\"]').val();\n      }\n      else if( $('[name=\"' + identifier +'[]\"]').length > 0 ) {\n        matchingValue = $('[name=\"' + identifier +'[]\"]');\n      }\n      return (matchingValue !== undefined)\n        ? ( value.toString() !== matchingValue.toString() )\n        : false\n      ;\n    },\n\n    creditCard: function(cardNumber, cardTypes) {\n      var\n        cards = {\n          visa: {\n            pattern : /^4/,\n            length  : [16]\n          },\n          amex: {\n            pattern : /^3[47]/,\n            length  : [15]\n          },\n          mastercard: {\n            pattern : /^5[1-5]/,\n            length  : [16]\n          },\n          discover: {\n            pattern : /^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/,\n            length  : [16]\n          },\n          unionPay: {\n            pattern : /^(62|88)/,\n            length  : [16, 17, 18, 19]\n          },\n          jcb: {\n            pattern : /^35(2[89]|[3-8][0-9])/,\n            length  : [16]\n          },\n          maestro: {\n            pattern : /^(5018|5020|5038|6304|6759|676[1-3])/,\n            length  : [12, 13, 14, 15, 16, 17, 18, 19]\n          },\n          dinersClub: {\n            pattern : /^(30[0-5]|^36)/,\n            length  : [14]\n          },\n          laser: {\n            pattern : /^(6304|670[69]|6771)/,\n            length  : [16, 17, 18, 19]\n          },\n          visaElectron: {\n            pattern : /^(4026|417500|4508|4844|491(3|7))/,\n            length  : [16]\n          }\n        },\n        valid         = {},\n        validCard     = false,\n        requiredTypes = (typeof cardTypes == 'string')\n          ? cardTypes.split(',')\n          : false,\n        unionPay,\n        validation\n      ;\n\n      if(typeof cardNumber !== 'string' || cardNumber.length === 0) {\n        return;\n      }\n\n      // allow dashes in card\n      cardNumber = cardNumber.replace(/[\\-]/g, '');\n\n      // verify card types\n      if(requiredTypes) {\n        $.each(requiredTypes, function(index, type){\n          // verify each card type\n          validation = cards[type];\n          if(validation) {\n            valid = {\n              length  : ($.inArray(cardNumber.length, validation.length) !== -1),\n              pattern : (cardNumber.search(validation.pattern) !== -1)\n            };\n            if(valid.length && valid.pattern) {\n              validCard = true;\n            }\n          }\n        });\n\n        if(!validCard) {\n          return false;\n        }\n      }\n\n      // skip luhn for UnionPay\n      unionPay = {\n        number  : ($.inArray(cardNumber.length, cards.unionPay.length) !== -1),\n        pattern : (cardNumber.search(cards.unionPay.pattern) !== -1)\n      };\n      if(unionPay.number && unionPay.pattern) {\n        return true;\n      }\n\n      // verify luhn, adapted from  <https://gist.github.com/2134376>\n      var\n        length        = cardNumber.length,\n        multiple      = 0,\n        producedValue = [\n          [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],\n          [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]\n        ],\n        sum           = 0\n      ;\n      while (length--) {\n        sum += producedValue[multiple][parseInt(cardNumber.charAt(length), 10)];\n        multiple ^= 1;\n      }\n      return (sum % 10 === 0 && sum > 0);\n    },\n\n    minCount: function(value, minCount) {\n      if(minCount == 0) {\n        return true;\n      }\n      if(minCount == 1) {\n        return (value !== '');\n      }\n      return (value.split(',').length >= minCount);\n    },\n\n    exactCount: function(value, exactCount) {\n      if(exactCount == 0) {\n        return (value === '');\n      }\n      if(exactCount == 1) {\n        return (value !== '' && value.search(',') === -1);\n      }\n      return (value.split(',').length == exactCount);\n    },\n\n    maxCount: function(value, maxCount) {\n      if(maxCount == 0) {\n        return false;\n      }\n      if(maxCount == 1) {\n        return (value.search(',') === -1);\n      }\n      return (value.split(',').length <= maxCount);\n    }\n  }\n\n};\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Accordion\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.accordion = function(parameters) {\n  var\n    $allModules     = $(this),\n\n    time            = new Date().getTime(),\n    performance     = [],\n\n    query           = arguments[0],\n    methodInvoked   = (typeof query == 'string'),\n    queryArguments  = [].slice.call(arguments, 1),\n\n    requestAnimationFrame = window.requestAnimationFrame\n      || window.mozRequestAnimationFrame\n      || window.webkitRequestAnimationFrame\n      || window.msRequestAnimationFrame\n      || function(callback) { setTimeout(callback, 0); },\n\n    returnedValue\n  ;\n  $allModules\n    .each(function() {\n      var\n        settings        = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.accordion.settings, parameters)\n          : $.extend({}, $.fn.accordion.settings),\n\n        className       = settings.className,\n        namespace       = settings.namespace,\n        selector        = settings.selector,\n        error           = settings.error,\n\n        eventNamespace  = '.' + namespace,\n        moduleNamespace = 'module-' + namespace,\n        moduleSelector  = $allModules.selector || '',\n\n        $module  = $(this),\n        $title   = $module.find(selector.title),\n        $content = $module.find(selector.content),\n\n        element  = this,\n        instance = $module.data(moduleNamespace),\n        observer,\n        module\n      ;\n\n      module = {\n\n        initialize: function() {\n          module.debug('Initializing', $module);\n          module.bind.events();\n          if(settings.observeChanges) {\n            module.observeChanges();\n          }\n          module.instantiate();\n        },\n\n        instantiate: function() {\n          instance = module;\n          $module\n            .data(moduleNamespace, module)\n          ;\n        },\n\n        destroy: function() {\n          module.debug('Destroying previous instance', $module);\n          $module\n            .off(eventNamespace)\n            .removeData(moduleNamespace)\n          ;\n        },\n\n        refresh: function() {\n          $title   = $module.find(selector.title);\n          $content = $module.find(selector.content);\n        },\n\n        observeChanges: function() {\n          if('MutationObserver' in window) {\n            observer = new MutationObserver(function(mutations) {\n              module.debug('DOM tree modified, updating selector cache');\n              module.refresh();\n            });\n            observer.observe(element, {\n              childList : true,\n              subtree   : true\n            });\n            module.debug('Setting up mutation observer', observer);\n          }\n        },\n\n        bind: {\n          events: function() {\n            module.debug('Binding delegated events');\n            $module\n              .on(settings.on + eventNamespace, selector.trigger, module.event.click)\n            ;\n          }\n        },\n\n        event: {\n          click: function() {\n            module.toggle.call(this);\n          }\n        },\n\n        toggle: function(query) {\n          var\n            $activeTitle = (query !== undefined)\n              ? (typeof query === 'number')\n                ? $title.eq(query)\n                : $(query).closest(selector.title)\n              : $(this).closest(selector.title),\n            $activeContent = $activeTitle.next($content),\n            isAnimating = $activeContent.hasClass(className.animating),\n            isActive    = $activeContent.hasClass(className.active),\n            isOpen      = (isActive && !isAnimating),\n            isOpening   = (!isActive && isAnimating)\n          ;\n          module.debug('Toggling visibility of content', $activeTitle);\n          if(isOpen || isOpening) {\n            if(settings.collapsible) {\n              module.close.call($activeTitle);\n            }\n            else {\n              module.debug('Cannot close accordion content collapsing is disabled');\n            }\n          }\n          else {\n            module.open.call($activeTitle);\n          }\n        },\n\n        open: function(query) {\n          var\n            $activeTitle = (query !== undefined)\n              ? (typeof query === 'number')\n                ? $title.eq(query)\n                : $(query).closest(selector.title)\n              : $(this).closest(selector.title),\n            $activeContent = $activeTitle.next($content),\n            isAnimating = $activeContent.hasClass(className.animating),\n            isActive    = $activeContent.hasClass(className.active),\n            isOpen      = (isActive || isAnimating)\n          ;\n          if(isOpen) {\n            module.debug('Accordion already open, skipping', $activeContent);\n            return;\n          }\n          module.debug('Opening accordion content', $activeTitle);\n          settings.onOpening.call($activeContent);\n          if(settings.exclusive) {\n            module.closeOthers.call($activeTitle);\n          }\n          $activeTitle\n            .addClass(className.active)\n          ;\n          $activeContent\n            .stop(true, true)\n            .addClass(className.animating)\n          ;\n          if(settings.animateChildren) {\n            if($.fn.transition !== undefined && $module.transition('is supported')) {\n              $activeContent\n                .children()\n                  .transition({\n                    animation   : 'fade in',\n                    queue       : false,\n                    useFailSafe : true,\n                    debug       : settings.debug,\n                    verbose     : settings.verbose,\n                    duration    : settings.duration\n                  })\n              ;\n            }\n            else {\n              $activeContent\n                .children()\n                  .stop(true, true)\n                  .animate({\n                    opacity: 1\n                  }, settings.duration, module.resetOpacity)\n              ;\n            }\n          }\n          $activeContent\n            .slideDown(settings.duration, settings.easing, function() {\n              $activeContent\n                .removeClass(className.animating)\n                .addClass(className.active)\n              ;\n              module.reset.display.call(this);\n              settings.onOpen.call(this);\n              settings.onChange.call(this);\n            })\n          ;\n        },\n\n        close: function(query) {\n          var\n            $activeTitle = (query !== undefined)\n              ? (typeof query === 'number')\n                ? $title.eq(query)\n                : $(query).closest(selector.title)\n              : $(this).closest(selector.title),\n            $activeContent = $activeTitle.next($content),\n            isAnimating    = $activeContent.hasClass(className.animating),\n            isActive       = $activeContent.hasClass(className.active),\n            isOpening      = (!isActive && isAnimating),\n            isClosing      = (isActive && isAnimating)\n          ;\n          if((isActive || isOpening) && !isClosing) {\n            module.debug('Closing accordion content', $activeContent);\n            settings.onClosing.call($activeContent);\n            $activeTitle\n              .removeClass(className.active)\n            ;\n            $activeContent\n              .stop(true, true)\n              .addClass(className.animating)\n            ;\n            if(settings.animateChildren) {\n              if($.fn.transition !== undefined && $module.transition('is supported')) {\n                $activeContent\n                  .children()\n                    .transition({\n                      animation   : 'fade out',\n                      queue       : false,\n                      useFailSafe : true,\n                      debug       : settings.debug,\n                      verbose     : settings.verbose,\n                      duration    : settings.duration\n                    })\n                ;\n              }\n              else {\n                $activeContent\n                  .children()\n                    .stop(true, true)\n                    .animate({\n                      opacity: 0\n                    }, settings.duration, module.resetOpacity)\n                ;\n              }\n            }\n            $activeContent\n              .slideUp(settings.duration, settings.easing, function() {\n                $activeContent\n                  .removeClass(className.animating)\n                  .removeClass(className.active)\n                ;\n                module.reset.display.call(this);\n                settings.onClose.call(this);\n                settings.onChange.call(this);\n              })\n            ;\n          }\n        },\n\n        closeOthers: function(index) {\n          var\n            $activeTitle = (index !== undefined)\n              ? $title.eq(index)\n              : $(this).closest(selector.title),\n            $parentTitles    = $activeTitle.parents(selector.content).prev(selector.title),\n            $activeAccordion = $activeTitle.closest(selector.accordion),\n            activeSelector   = selector.title + '.' + className.active + ':visible',\n            activeContent    = selector.content + '.' + className.active + ':visible',\n            $openTitles,\n            $nestedTitles,\n            $openContents\n          ;\n          if(settings.closeNested) {\n            $openTitles   = $activeAccordion.find(activeSelector).not($parentTitles);\n            $openContents = $openTitles.next($content);\n          }\n          else {\n            $openTitles   = $activeAccordion.find(activeSelector).not($parentTitles);\n            $nestedTitles = $activeAccordion.find(activeContent).find(activeSelector).not($parentTitles);\n            $openTitles   = $openTitles.not($nestedTitles);\n            $openContents = $openTitles.next($content);\n          }\n          if( ($openTitles.length > 0) ) {\n            module.debug('Exclusive enabled, closing other content', $openTitles);\n            $openTitles\n              .removeClass(className.active)\n            ;\n            $openContents\n              .removeClass(className.animating)\n              .stop(true, true)\n            ;\n            if(settings.animateChildren) {\n              if($.fn.transition !== undefined && $module.transition('is supported')) {\n                $openContents\n                  .children()\n                    .transition({\n                      animation   : 'fade out',\n                      useFailSafe : true,\n                      debug       : settings.debug,\n                      verbose     : settings.verbose,\n                      duration    : settings.duration\n                    })\n                ;\n              }\n              else {\n                $openContents\n                  .children()\n                    .stop(true, true)\n                    .animate({\n                      opacity: 0\n                    }, settings.duration, module.resetOpacity)\n                ;\n              }\n            }\n            $openContents\n              .slideUp(settings.duration , settings.easing, function() {\n                $(this).removeClass(className.active);\n                module.reset.display.call(this);\n              })\n            ;\n          }\n        },\n\n        reset: {\n\n          display: function() {\n            module.verbose('Removing inline display from element', this);\n            $(this).css('display', '');\n            if( $(this).attr('style') === '') {\n              $(this)\n                .attr('style', '')\n                .removeAttr('style')\n              ;\n            }\n          },\n\n          opacity: function() {\n            module.verbose('Removing inline opacity from element', this);\n            $(this).css('opacity', '');\n            if( $(this).attr('style') === '') {\n              $(this)\n                .attr('style', '')\n                .removeAttr('style')\n              ;\n            }\n          },\n\n        },\n\n        setting: function(name, value) {\n          module.debug('Changing setting', name, value);\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            if($.isPlainObject(settings[name])) {\n              $.extend(true, settings[name], value);\n            }\n            else {\n              settings[name] = value;\n            }\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          module.debug('Changing internal', name, value);\n          if(value !== undefined) {\n            if( $.isPlainObject(name) ) {\n              $.extend(true, module, name);\n            }\n            else {\n              module[name] = value;\n            }\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                module.error(error.method, query);\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.accordion.settings = {\n\n  name            : 'Accordion',\n  namespace       : 'accordion',\n\n  silent          : false,\n  debug           : false,\n  verbose         : false,\n  performance     : true,\n\n  on              : 'click', // event on title that opens accordion\n\n  observeChanges  : true,  // whether accordion should automatically refresh on DOM insertion\n\n  exclusive       : true,  // whether a single accordion content panel should be open at once\n  collapsible     : true,  // whether accordion content can be closed\n  closeNested     : false, // whether nested content should be closed when a panel is closed\n  animateChildren : true,  // whether children opacity should be animated\n\n  duration        : 350, // duration of animation\n  easing          : 'easeOutQuad', // easing equation for animation\n\n\n  onOpening       : function(){}, // callback before open animation\n  onOpen          : function(){}, // callback after open animation\n  onClosing       : function(){}, // callback before closing animation\n  onClose         : function(){}, // callback after closing animation\n  onChange        : function(){}, // callback after closing or opening animation\n\n  error: {\n    method : 'The method you called is not defined'\n  },\n\n  className   : {\n    active    : 'active',\n    animating : 'animating'\n  },\n\n  selector    : {\n    accordion : '.accordion',\n    title     : '.title',\n    trigger   : '.title',\n    content   : '.content'\n  }\n\n};\n\n// Adds easing\n$.extend( $.easing, {\n  easeOutQuad: function (x, t, b, c, d) {\n    return -c *(t/=d)*(t-2) + b;\n  }\n});\n\n})( jQuery, window, document );\n\n\n/*!\n * # Semantic UI 2.2.11 - Checkbox\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.checkbox = function(parameters) {\n  var\n    $allModules    = $(this),\n    moduleSelector = $allModules.selector || '',\n\n    time           = new Date().getTime(),\n    performance    = [],\n\n    query          = arguments[0],\n    methodInvoked  = (typeof query == 'string'),\n    queryArguments = [].slice.call(arguments, 1),\n    returnedValue\n  ;\n\n  $allModules\n    .each(function() {\n      var\n        settings        = $.extend(true, {}, $.fn.checkbox.settings, parameters),\n\n        className       = settings.className,\n        namespace       = settings.namespace,\n        selector        = settings.selector,\n        error           = settings.error,\n\n        eventNamespace  = '.' + namespace,\n        moduleNamespace = 'module-' + namespace,\n\n        $module         = $(this),\n        $label          = $(this).children(selector.label),\n        $input          = $(this).children(selector.input),\n        input           = $input[0],\n\n        initialLoad     = false,\n        shortcutPressed = false,\n        instance        = $module.data(moduleNamespace),\n\n        observer,\n        element         = this,\n        module\n      ;\n\n      module      = {\n\n        initialize: function() {\n          module.verbose('Initializing checkbox', settings);\n\n          module.create.label();\n          module.bind.events();\n\n          module.set.tabbable();\n          module.hide.input();\n\n          module.observeChanges();\n          module.instantiate();\n          module.setup();\n        },\n\n        instantiate: function() {\n          module.verbose('Storing instance of module', module);\n          instance = module;\n          $module\n            .data(moduleNamespace, module)\n          ;\n        },\n\n        destroy: function() {\n          module.verbose('Destroying module');\n          module.unbind.events();\n          module.show.input();\n          $module.removeData(moduleNamespace);\n        },\n\n        fix: {\n          reference: function() {\n            if( $module.is(selector.input) ) {\n              module.debug('Behavior called on <input> adjusting invoked element');\n              $module = $module.closest(selector.checkbox);\n              module.refresh();\n            }\n          }\n        },\n\n        setup: function() {\n          module.set.initialLoad();\n          if( module.is.indeterminate() ) {\n            module.debug('Initial value is indeterminate');\n            module.indeterminate();\n          }\n          else if( module.is.checked() ) {\n            module.debug('Initial value is checked');\n            module.check();\n          }\n          else {\n            module.debug('Initial value is unchecked');\n            module.uncheck();\n          }\n          module.remove.initialLoad();\n        },\n\n        refresh: function() {\n          $label = $module.children(selector.label);\n          $input = $module.children(selector.input);\n          input  = $input[0];\n        },\n\n        hide: {\n          input: function() {\n            module.verbose('Modifying <input> z-index to be unselectable');\n            $input.addClass(className.hidden);\n          }\n        },\n        show: {\n          input: function() {\n            module.verbose('Modifying <input> z-index to be selectable');\n            $input.removeClass(className.hidden);\n          }\n        },\n\n        observeChanges: function() {\n          if('MutationObserver' in window) {\n            observer = new MutationObserver(function(mutations) {\n              module.debug('DOM tree modified, updating selector cache');\n              module.refresh();\n            });\n            observer.observe(element, {\n              childList : true,\n              subtree   : true\n            });\n            module.debug('Setting up mutation observer', observer);\n          }\n        },\n\n        attachEvents: function(selector, event) {\n          var\n            $element = $(selector)\n          ;\n          event = $.isFunction(module[event])\n            ? module[event]\n            : module.toggle\n          ;\n          if($element.length > 0) {\n            module.debug('Attaching checkbox events to element', selector, event);\n            $element\n              .on('click' + eventNamespace, event)\n            ;\n          }\n          else {\n            module.error(error.notFound);\n          }\n        },\n\n        event: {\n          click: function(event) {\n            var\n              $target = $(event.target)\n            ;\n            if( $target.is(selector.input) ) {\n              module.verbose('Using default check action on initialized checkbox');\n              return;\n            }\n            if( $target.is(selector.link) ) {\n              module.debug('Clicking link inside checkbox, skipping toggle');\n              return;\n            }\n            module.toggle();\n            $input.focus();\n            event.preventDefault();\n          },\n          keydown: function(event) {\n            var\n              key     = event.which,\n              keyCode = {\n                enter  : 13,\n                space  : 32,\n                escape : 27\n              }\n            ;\n            if(key == keyCode.escape) {\n              module.verbose('Escape key pressed blurring field');\n              $input.blur();\n              shortcutPressed = true;\n            }\n            else if(!event.ctrlKey && ( key == keyCode.space || key == keyCode.enter) ) {\n              module.verbose('Enter/space key pressed, toggling checkbox');\n              module.toggle();\n              shortcutPressed = true;\n            }\n            else {\n              shortcutPressed = false;\n            }\n          },\n          keyup: function(event) {\n            if(shortcutPressed) {\n              event.preventDefault();\n            }\n          }\n        },\n\n        check: function() {\n          if( !module.should.allowCheck() ) {\n            return;\n          }\n          module.debug('Checking checkbox', $input);\n          module.set.checked();\n          if( !module.should.ignoreCallbacks() ) {\n            settings.onChecked.call(input);\n            settings.onChange.call(input);\n          }\n        },\n\n        uncheck: function() {\n          if( !module.should.allowUncheck() ) {\n            return;\n          }\n          module.debug('Unchecking checkbox');\n          module.set.unchecked();\n          if( !module.should.ignoreCallbacks() ) {\n            settings.onUnchecked.call(input);\n            settings.onChange.call(input);\n          }\n        },\n\n        indeterminate: function() {\n          if( module.should.allowIndeterminate() ) {\n            module.debug('Checkbox is already indeterminate');\n            return;\n          }\n          module.debug('Making checkbox indeterminate');\n          module.set.indeterminate();\n          if( !module.should.ignoreCallbacks() ) {\n            settings.onIndeterminate.call(input);\n            settings.onChange.call(input);\n          }\n        },\n\n        determinate: function() {\n          if( module.should.allowDeterminate() ) {\n            module.debug('Checkbox is already determinate');\n            return;\n          }\n          module.debug('Making checkbox determinate');\n          module.set.determinate();\n          if( !module.should.ignoreCallbacks() ) {\n            settings.onDeterminate.call(input);\n            settings.onChange.call(input);\n          }\n        },\n\n        enable: function() {\n          if( module.is.enabled() ) {\n            module.debug('Checkbox is already enabled');\n            return;\n          }\n          module.debug('Enabling checkbox');\n          module.set.enabled();\n          settings.onEnable.call(input);\n          // preserve legacy callbacks\n          settings.onEnabled.call(input);\n        },\n\n        disable: function() {\n          if( module.is.disabled() ) {\n            module.debug('Checkbox is already disabled');\n            return;\n          }\n          module.debug('Disabling checkbox');\n          module.set.disabled();\n          settings.onDisable.call(input);\n          // preserve legacy callbacks\n          settings.onDisabled.call(input);\n        },\n\n        get: {\n          radios: function() {\n            var\n              name = module.get.name()\n            ;\n            return $('input[name=\"' + name + '\"]').closest(selector.checkbox);\n          },\n          otherRadios: function() {\n            return module.get.radios().not($module);\n          },\n          name: function() {\n            return $input.attr('name');\n          }\n        },\n\n        is: {\n          initialLoad: function() {\n            return initialLoad;\n          },\n          radio: function() {\n            return ($input.hasClass(className.radio) || $input.attr('type') == 'radio');\n          },\n          indeterminate: function() {\n            return $input.prop('indeterminate') !== undefined && $input.prop('indeterminate');\n          },\n          checked: function() {\n            return $input.prop('checked') !== undefined && $input.prop('checked');\n          },\n          disabled: function() {\n            return $input.prop('disabled') !== undefined && $input.prop('disabled');\n          },\n          enabled: function() {\n            return !module.is.disabled();\n          },\n          determinate: function() {\n            return !module.is.indeterminate();\n          },\n          unchecked: function() {\n            return !module.is.checked();\n          }\n        },\n\n        should: {\n          allowCheck: function() {\n            if(module.is.determinate() && module.is.checked() && !module.should.forceCallbacks() ) {\n              module.debug('Should not allow check, checkbox is already checked');\n              return false;\n            }\n            if(settings.beforeChecked.apply(input) === false) {\n              module.debug('Should not allow check, beforeChecked cancelled');\n              return false;\n            }\n            return true;\n          },\n          allowUncheck: function() {\n            if(module.is.determinate() && module.is.unchecked() && !module.should.forceCallbacks() ) {\n              module.debug('Should not allow uncheck, checkbox is already unchecked');\n              return false;\n            }\n            if(settings.beforeUnchecked.apply(input) === false) {\n              module.debug('Should not allow uncheck, beforeUnchecked cancelled');\n              return false;\n            }\n            return true;\n          },\n          allowIndeterminate: function() {\n            if(module.is.indeterminate() && !module.should.forceCallbacks() ) {\n              module.debug('Should not allow indeterminate, checkbox is already indeterminate');\n              return false;\n            }\n            if(settings.beforeIndeterminate.apply(input) === false) {\n              module.debug('Should not allow indeterminate, beforeIndeterminate cancelled');\n              return false;\n            }\n            return true;\n          },\n          allowDeterminate: function() {\n            if(module.is.determinate() && !module.should.forceCallbacks() ) {\n              module.debug('Should not allow determinate, checkbox is already determinate');\n              return false;\n            }\n            if(settings.beforeDeterminate.apply(input) === false) {\n              module.debug('Should not allow determinate, beforeDeterminate cancelled');\n              return false;\n            }\n            return true;\n          },\n          forceCallbacks: function() {\n            return (module.is.initialLoad() && settings.fireOnInit);\n          },\n          ignoreCallbacks: function() {\n            return (initialLoad && !settings.fireOnInit);\n          }\n        },\n\n        can: {\n          change: function() {\n            return !( $module.hasClass(className.disabled) || $module.hasClass(className.readOnly) || $input.prop('disabled') || $input.prop('readonly') );\n          },\n          uncheck: function() {\n            return (typeof settings.uncheckable === 'boolean')\n              ? settings.uncheckable\n              : !module.is.radio()\n            ;\n          }\n        },\n\n        set: {\n          initialLoad: function() {\n            initialLoad = true;\n          },\n          checked: function() {\n            module.verbose('Setting class to checked');\n            $module\n              .removeClass(className.indeterminate)\n              .addClass(className.checked)\n            ;\n            if( module.is.radio() ) {\n              module.uncheckOthers();\n            }\n            if(!module.is.indeterminate() && module.is.checked()) {\n              module.debug('Input is already checked, skipping input property change');\n              return;\n            }\n            module.verbose('Setting state to checked', input);\n            $input\n              .prop('indeterminate', false)\n              .prop('checked', true)\n            ;\n            module.trigger.change();\n          },\n          unchecked: function() {\n            module.verbose('Removing checked class');\n            $module\n              .removeClass(className.indeterminate)\n              .removeClass(className.checked)\n            ;\n            if(!module.is.indeterminate() &&  module.is.unchecked() ) {\n              module.debug('Input is already unchecked');\n              return;\n            }\n            module.debug('Setting state to unchecked');\n            $input\n              .prop('indeterminate', false)\n              .prop('checked', false)\n            ;\n            module.trigger.change();\n          },\n          indeterminate: function() {\n            module.verbose('Setting class to indeterminate');\n            $module\n              .addClass(className.indeterminate)\n            ;\n            if( module.is.indeterminate() ) {\n              module.debug('Input is already indeterminate, skipping input property change');\n              return;\n            }\n            module.debug('Setting state to indeterminate');\n            $input\n              .prop('indeterminate', true)\n            ;\n            module.trigger.change();\n          },\n          determinate: function() {\n            module.verbose('Removing indeterminate class');\n            $module\n              .removeClass(className.indeterminate)\n            ;\n            if( module.is.determinate() ) {\n              module.debug('Input is already determinate, skipping input property change');\n              return;\n            }\n            module.debug('Setting state to determinate');\n            $input\n              .prop('indeterminate', false)\n            ;\n          },\n          disabled: function() {\n            module.verbose('Setting class to disabled');\n            $module\n              .addClass(className.disabled)\n            ;\n            if( module.is.disabled() ) {\n              module.debug('Input is already disabled, skipping input property change');\n              return;\n            }\n            module.debug('Setting state to disabled');\n            $input\n              .prop('disabled', 'disabled')\n            ;\n            module.trigger.change();\n          },\n          enabled: function() {\n            module.verbose('Removing disabled class');\n            $module.removeClass(className.disabled);\n            if( module.is.enabled() ) {\n              module.debug('Input is already enabled, skipping input property change');\n              return;\n            }\n            module.debug('Setting state to enabled');\n            $input\n              .prop('disabled', false)\n            ;\n            module.trigger.change();\n          },\n          tabbable: function() {\n            module.verbose('Adding tabindex to checkbox');\n            if( $input.attr('tabindex') === undefined) {\n              $input.attr('tabindex', 0);\n            }\n          }\n        },\n\n        remove: {\n          initialLoad: function() {\n            initialLoad = false;\n          }\n        },\n\n        trigger: {\n          change: function() {\n            var\n              events       = document.createEvent('HTMLEvents'),\n              inputElement = $input[0]\n            ;\n            if(inputElement) {\n              module.verbose('Triggering native change event');\n              events.initEvent('change', true, false);\n              inputElement.dispatchEvent(events);\n            }\n          }\n        },\n\n\n        create: {\n          label: function() {\n            if($input.prevAll(selector.label).length > 0) {\n              $input.prev(selector.label).detach().insertAfter($input);\n              module.debug('Moving existing label', $label);\n            }\n            else if( !module.has.label() ) {\n              $label = $('<label>').insertAfter($input);\n              module.debug('Creating label', $label);\n            }\n          }\n        },\n\n        has: {\n          label: function() {\n            return ($label.length > 0);\n          }\n        },\n\n        bind: {\n          events: function() {\n            module.verbose('Attaching checkbox events');\n            $module\n              .on('click'   + eventNamespace, module.event.click)\n              .on('keydown' + eventNamespace, selector.input, module.event.keydown)\n              .on('keyup'   + eventNamespace, selector.input, module.event.keyup)\n            ;\n          }\n        },\n\n        unbind: {\n          events: function() {\n            module.debug('Removing events');\n            $module\n              .off(eventNamespace)\n            ;\n          }\n        },\n\n        uncheckOthers: function() {\n          var\n            $radios = module.get.otherRadios()\n          ;\n          module.debug('Unchecking other radios', $radios);\n          $radios.removeClass(className.checked);\n        },\n\n        toggle: function() {\n          if( !module.can.change() ) {\n            if(!module.is.radio()) {\n              module.debug('Checkbox is read-only or disabled, ignoring toggle');\n            }\n            return;\n          }\n          if( module.is.indeterminate() || module.is.unchecked() ) {\n            module.debug('Currently unchecked');\n            module.check();\n          }\n          else if( module.is.checked() && module.can.uncheck() ) {\n            module.debug('Currently checked');\n            module.uncheck();\n          }\n        },\n        setting: function(name, value) {\n          module.debug('Changing setting', name, value);\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            if($.isPlainObject(settings[name])) {\n              $.extend(true, settings[name], value);\n            }\n            else {\n              settings[name] = value;\n            }\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                module.error(error.method, query);\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.checkbox.settings = {\n\n  name                : 'Checkbox',\n  namespace           : 'checkbox',\n\n  silent              : false,\n  debug               : false,\n  verbose             : true,\n  performance         : true,\n\n  // delegated event context\n  uncheckable         : 'auto',\n  fireOnInit          : false,\n\n  onChange            : function(){},\n\n  beforeChecked       : function(){},\n  beforeUnchecked     : function(){},\n  beforeDeterminate   : function(){},\n  beforeIndeterminate : function(){},\n\n  onChecked           : function(){},\n  onUnchecked         : function(){},\n\n  onDeterminate       : function() {},\n  onIndeterminate     : function() {},\n\n  onEnable            : function(){},\n  onDisable           : function(){},\n\n  // preserve misspelled callbacks (will be removed in 3.0)\n  onEnabled           : function(){},\n  onDisabled          : function(){},\n\n  className       : {\n    checked       : 'checked',\n    indeterminate : 'indeterminate',\n    disabled      : 'disabled',\n    hidden        : 'hidden',\n    radio         : 'radio',\n    readOnly      : 'read-only'\n  },\n\n  error     : {\n    method       : 'The method you called is not defined'\n  },\n\n  selector : {\n    checkbox : '.ui.checkbox',\n    label    : 'label, .box',\n    input    : 'input[type=\"checkbox\"], input[type=\"radio\"]',\n    link     : 'a[href]'\n  }\n\n};\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Dimmer\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.dimmer = function(parameters) {\n  var\n    $allModules     = $(this),\n\n    time            = new Date().getTime(),\n    performance     = [],\n\n    query           = arguments[0],\n    methodInvoked   = (typeof query == 'string'),\n    queryArguments  = [].slice.call(arguments, 1),\n\n    returnedValue\n  ;\n\n  $allModules\n    .each(function() {\n      var\n        settings        = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.dimmer.settings, parameters)\n          : $.extend({}, $.fn.dimmer.settings),\n\n        selector        = settings.selector,\n        namespace       = settings.namespace,\n        className       = settings.className,\n        error           = settings.error,\n\n        eventNamespace  = '.' + namespace,\n        moduleNamespace = 'module-' + namespace,\n        moduleSelector  = $allModules.selector || '',\n\n        clickEvent      = ('ontouchstart' in document.documentElement)\n          ? 'touchstart'\n          : 'click',\n\n        $module = $(this),\n        $dimmer,\n        $dimmable,\n\n        element   = this,\n        instance  = $module.data(moduleNamespace),\n        module\n      ;\n\n      module = {\n\n        preinitialize: function() {\n          if( module.is.dimmer() ) {\n\n            $dimmable = $module.parent();\n            $dimmer   = $module;\n          }\n          else {\n            $dimmable = $module;\n            if( module.has.dimmer() ) {\n              if(settings.dimmerName) {\n                $dimmer = $dimmable.find(selector.dimmer).filter('.' + settings.dimmerName);\n              }\n              else {\n                $dimmer = $dimmable.find(selector.dimmer);\n              }\n            }\n            else {\n              $dimmer = module.create();\n            }\n            module.set.variation();\n          }\n        },\n\n        initialize: function() {\n          module.debug('Initializing dimmer', settings);\n\n          module.bind.events();\n          module.set.dimmable();\n          module.instantiate();\n        },\n\n        instantiate: function() {\n          module.verbose('Storing instance of module', module);\n          instance = module;\n          $module\n            .data(moduleNamespace, instance)\n          ;\n        },\n\n        destroy: function() {\n          module.verbose('Destroying previous module', $dimmer);\n          module.unbind.events();\n          module.remove.variation();\n          $dimmable\n            .off(eventNamespace)\n          ;\n        },\n\n        bind: {\n          events: function() {\n            if(settings.on == 'hover') {\n              $dimmable\n                .on('mouseenter' + eventNamespace, module.show)\n                .on('mouseleave' + eventNamespace, module.hide)\n              ;\n            }\n            else if(settings.on == 'click') {\n              $dimmable\n                .on(clickEvent + eventNamespace, module.toggle)\n              ;\n            }\n            if( module.is.page() ) {\n              module.debug('Setting as a page dimmer', $dimmable);\n              module.set.pageDimmer();\n            }\n\n            if( module.is.closable() ) {\n              module.verbose('Adding dimmer close event', $dimmer);\n              $dimmable\n                .on(clickEvent + eventNamespace, selector.dimmer, module.event.click)\n              ;\n            }\n          }\n        },\n\n        unbind: {\n          events: function() {\n            $module\n              .removeData(moduleNamespace)\n            ;\n            $dimmable\n              .off(eventNamespace)\n            ;\n          }\n        },\n\n        event: {\n          click: function(event) {\n            module.verbose('Determining if event occured on dimmer', event);\n            if( $dimmer.find(event.target).length === 0 || $(event.target).is(selector.content) ) {\n              module.hide();\n              event.stopImmediatePropagation();\n            }\n          }\n        },\n\n        addContent: function(element) {\n          var\n            $content = $(element)\n          ;\n          module.debug('Add content to dimmer', $content);\n          if($content.parent()[0] !== $dimmer[0]) {\n            $content.detach().appendTo($dimmer);\n          }\n        },\n\n        create: function() {\n          var\n            $element = $( settings.template.dimmer() )\n          ;\n          if(settings.dimmerName) {\n            module.debug('Creating named dimmer', settings.dimmerName);\n            $element.addClass(settings.dimmerName);\n          }\n          $element\n            .appendTo($dimmable)\n          ;\n          return $element;\n        },\n\n        show: function(callback) {\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          module.debug('Showing dimmer', $dimmer, settings);\n          if( (!module.is.dimmed() || module.is.animating()) && module.is.enabled() ) {\n            module.animate.show(callback);\n            settings.onShow.call(element);\n            settings.onChange.call(element);\n          }\n          else {\n            module.debug('Dimmer is already shown or disabled');\n          }\n        },\n\n        hide: function(callback) {\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          if( module.is.dimmed() || module.is.animating() ) {\n            module.debug('Hiding dimmer', $dimmer);\n            module.animate.hide(callback);\n            settings.onHide.call(element);\n            settings.onChange.call(element);\n          }\n          else {\n            module.debug('Dimmer is not visible');\n          }\n        },\n\n        toggle: function() {\n          module.verbose('Toggling dimmer visibility', $dimmer);\n          if( !module.is.dimmed() ) {\n            module.show();\n          }\n          else {\n            module.hide();\n          }\n        },\n\n        animate: {\n          show: function(callback) {\n            callback = $.isFunction(callback)\n              ? callback\n              : function(){}\n            ;\n            if(settings.useCSS && $.fn.transition !== undefined && $dimmer.transition('is supported')) {\n              if(settings.opacity !== 'auto') {\n                module.set.opacity();\n              }\n              $dimmer\n                .transition({\n                  animation   : settings.transition + ' in',\n                  queue       : false,\n                  duration    : module.get.duration(),\n                  useFailSafe : true,\n                  onStart     : function() {\n                    module.set.dimmed();\n                  },\n                  onComplete  : function() {\n                    module.set.active();\n                    callback();\n                  }\n                })\n              ;\n            }\n            else {\n              module.verbose('Showing dimmer animation with javascript');\n              module.set.dimmed();\n              if(settings.opacity == 'auto') {\n                settings.opacity = 0.8;\n              }\n              $dimmer\n                .stop()\n                .css({\n                  opacity : 0,\n                  width   : '100%',\n                  height  : '100%'\n                })\n                .fadeTo(module.get.duration(), settings.opacity, function() {\n                  $dimmer.removeAttr('style');\n                  module.set.active();\n                  callback();\n                })\n              ;\n            }\n          },\n          hide: function(callback) {\n            callback = $.isFunction(callback)\n              ? callback\n              : function(){}\n            ;\n            if(settings.useCSS && $.fn.transition !== undefined && $dimmer.transition('is supported')) {\n              module.verbose('Hiding dimmer with css');\n              $dimmer\n                .transition({\n                  animation   : settings.transition + ' out',\n                  queue       : false,\n                  duration    : module.get.duration(),\n                  useFailSafe : true,\n                  onStart     : function() {\n                    module.remove.dimmed();\n                  },\n                  onComplete  : function() {\n                    module.remove.active();\n                    callback();\n                  }\n                })\n              ;\n            }\n            else {\n              module.verbose('Hiding dimmer with javascript');\n              module.remove.dimmed();\n              $dimmer\n                .stop()\n                .fadeOut(module.get.duration(), function() {\n                  module.remove.active();\n                  $dimmer.removeAttr('style');\n                  callback();\n                })\n              ;\n            }\n          }\n        },\n\n        get: {\n          dimmer: function() {\n            return $dimmer;\n          },\n          duration: function() {\n            if(typeof settings.duration == 'object') {\n              if( module.is.active() ) {\n                return settings.duration.hide;\n              }\n              else {\n                return settings.duration.show;\n              }\n            }\n            return settings.duration;\n          }\n        },\n\n        has: {\n          dimmer: function() {\n            if(settings.dimmerName) {\n              return ($module.find(selector.dimmer).filter('.' + settings.dimmerName).length > 0);\n            }\n            else {\n              return ( $module.find(selector.dimmer).length > 0 );\n            }\n          }\n        },\n\n        is: {\n          active: function() {\n            return $dimmer.hasClass(className.active);\n          },\n          animating: function() {\n            return ( $dimmer.is(':animated') || $dimmer.hasClass(className.animating) );\n          },\n          closable: function() {\n            if(settings.closable == 'auto') {\n              if(settings.on == 'hover') {\n                return false;\n              }\n              return true;\n            }\n            return settings.closable;\n          },\n          dimmer: function() {\n            return $module.hasClass(className.dimmer);\n          },\n          dimmable: function() {\n            return $module.hasClass(className.dimmable);\n          },\n          dimmed: function() {\n            return $dimmable.hasClass(className.dimmed);\n          },\n          disabled: function() {\n            return $dimmable.hasClass(className.disabled);\n          },\n          enabled: function() {\n            return !module.is.disabled();\n          },\n          page: function () {\n            return $dimmable.is('body');\n          },\n          pageDimmer: function() {\n            return $dimmer.hasClass(className.pageDimmer);\n          }\n        },\n\n        can: {\n          show: function() {\n            return !$dimmer.hasClass(className.disabled);\n          }\n        },\n\n        set: {\n          opacity: function(opacity) {\n            var\n              color      = $dimmer.css('background-color'),\n              colorArray = color.split(','),\n              isRGB      = (colorArray && colorArray.length == 3),\n              isRGBA     = (colorArray && colorArray.length == 4)\n            ;\n            opacity    = settings.opacity === 0 ? 0 : settings.opacity || opacity;\n            if(isRGB || isRGBA) {\n              colorArray[3] = opacity + ')';\n              color         = colorArray.join(',');\n            }\n            else {\n              color = 'rgba(0, 0, 0, ' + opacity + ')';\n            }\n            module.debug('Setting opacity to', opacity);\n            $dimmer.css('background-color', color);\n          },\n          active: function() {\n            $dimmer.addClass(className.active);\n          },\n          dimmable: function() {\n            $dimmable.addClass(className.dimmable);\n          },\n          dimmed: function() {\n            $dimmable.addClass(className.dimmed);\n          },\n          pageDimmer: function() {\n            $dimmer.addClass(className.pageDimmer);\n          },\n          disabled: function() {\n            $dimmer.addClass(className.disabled);\n          },\n          variation: function(variation) {\n            variation = variation || settings.variation;\n            if(variation) {\n              $dimmer.addClass(variation);\n            }\n          }\n        },\n\n        remove: {\n          active: function() {\n            $dimmer\n              .removeClass(className.active)\n            ;\n          },\n          dimmed: function() {\n            $dimmable.removeClass(className.dimmed);\n          },\n          disabled: function() {\n            $dimmer.removeClass(className.disabled);\n          },\n          variation: function(variation) {\n            variation = variation || settings.variation;\n            if(variation) {\n              $dimmer.removeClass(variation);\n            }\n          }\n        },\n\n        setting: function(name, value) {\n          module.debug('Changing setting', name, value);\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            if($.isPlainObject(settings[name])) {\n              $.extend(true, settings[name], value);\n            }\n            else {\n              settings[name] = value;\n            }\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if($allModules.length > 1) {\n              title += ' ' + '(' + $allModules.length + ')';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                module.error(error.method, query);\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n\n      module.preinitialize();\n\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.dimmer.settings = {\n\n  name        : 'Dimmer',\n  namespace   : 'dimmer',\n\n  silent      : false,\n  debug       : false,\n  verbose     : false,\n  performance : true,\n\n  // name to distinguish between multiple dimmers in context\n  dimmerName  : false,\n\n  // whether to add a variation type\n  variation   : false,\n\n  // whether to bind close events\n  closable    : 'auto',\n\n  // whether to use css animations\n  useCSS      : true,\n\n  // css animation to use\n  transition  : 'fade',\n\n  // event to bind to\n  on          : false,\n\n  // overriding opacity value\n  opacity     : 'auto',\n\n  // transition durations\n  duration    : {\n    show : 500,\n    hide : 500\n  },\n\n  onChange    : function(){},\n  onShow      : function(){},\n  onHide      : function(){},\n\n  error   : {\n    method   : 'The method you called is not defined.'\n  },\n\n  className : {\n    active     : 'active',\n    animating  : 'animating',\n    dimmable   : 'dimmable',\n    dimmed     : 'dimmed',\n    dimmer     : 'dimmer',\n    disabled   : 'disabled',\n    hide       : 'hide',\n    pageDimmer : 'page',\n    show       : 'show'\n  },\n\n  selector: {\n    dimmer   : '> .ui.dimmer',\n    content  : '.ui.dimmer > .content, .ui.dimmer > .content > .center'\n  },\n\n  template: {\n    dimmer: function() {\n     return $('<div />').attr('class', 'ui dimmer');\n    }\n  }\n\n};\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Dropdown\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.dropdown = function(parameters) {\n  var\n    $allModules    = $(this),\n    $document      = $(document),\n\n    moduleSelector = $allModules.selector || '',\n\n    hasTouch       = ('ontouchstart' in document.documentElement),\n    time           = new Date().getTime(),\n    performance    = [],\n\n    query          = arguments[0],\n    methodInvoked  = (typeof query == 'string'),\n    queryArguments = [].slice.call(arguments, 1),\n    returnedValue\n  ;\n\n  $allModules\n    .each(function(elementIndex) {\n      var\n        settings          = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.dropdown.settings, parameters)\n          : $.extend({}, $.fn.dropdown.settings),\n\n        className       = settings.className,\n        message         = settings.message,\n        fields          = settings.fields,\n        keys            = settings.keys,\n        metadata        = settings.metadata,\n        namespace       = settings.namespace,\n        regExp          = settings.regExp,\n        selector        = settings.selector,\n        error           = settings.error,\n        templates       = settings.templates,\n\n        eventNamespace  = '.' + namespace,\n        moduleNamespace = 'module-' + namespace,\n\n        $module         = $(this),\n        $context        = $(settings.context),\n        $text           = $module.find(selector.text),\n        $search         = $module.find(selector.search),\n        $sizer          = $module.find(selector.sizer),\n        $input          = $module.find(selector.input),\n        $icon           = $module.find(selector.icon),\n\n        $combo = ($module.prev().find(selector.text).length > 0)\n          ? $module.prev().find(selector.text)\n          : $module.prev(),\n\n        $menu           = $module.children(selector.menu),\n        $item           = $menu.find(selector.item),\n\n        activated       = false,\n        itemActivated   = false,\n        internalChange  = false,\n        element         = this,\n        instance        = $module.data(moduleNamespace),\n\n        initialLoad,\n        pageLostFocus,\n        willRefocus,\n        elementNamespace,\n        id,\n        selectObserver,\n        menuObserver,\n        module\n      ;\n\n      module = {\n\n        initialize: function() {\n          module.debug('Initializing dropdown', settings);\n\n          if( module.is.alreadySetup() ) {\n            module.setup.reference();\n          }\n          else {\n            module.setup.layout();\n            module.refreshData();\n\n            module.save.defaults();\n            module.restore.selected();\n\n            module.create.id();\n            module.bind.events();\n\n            module.observeChanges();\n            module.instantiate();\n          }\n\n        },\n\n        instantiate: function() {\n          module.verbose('Storing instance of dropdown', module);\n          instance = module;\n          $module\n            .data(moduleNamespace, module)\n          ;\n        },\n\n        destroy: function() {\n          module.verbose('Destroying previous dropdown', $module);\n          module.remove.tabbable();\n          $module\n            .off(eventNamespace)\n            .removeData(moduleNamespace)\n          ;\n          $menu\n            .off(eventNamespace)\n          ;\n          $document\n            .off(elementNamespace)\n          ;\n          module.disconnect.menuObserver();\n          module.disconnect.selectObserver();\n        },\n\n        observeChanges: function() {\n          if('MutationObserver' in window) {\n            selectObserver = new MutationObserver(module.event.select.mutation);\n            menuObserver   = new MutationObserver(module.event.menu.mutation);\n            module.debug('Setting up mutation observer', selectObserver, menuObserver);\n            module.observe.select();\n            module.observe.menu();\n          }\n        },\n\n        disconnect: {\n          menuObserver: function() {\n            if(menuObserver) {\n              menuObserver.disconnect();\n            }\n          },\n          selectObserver: function() {\n            if(selectObserver) {\n              selectObserver.disconnect();\n            }\n          }\n        },\n        observe: {\n          select: function() {\n            if(module.has.input()) {\n              selectObserver.observe($input[0], {\n                childList : true,\n                subtree   : true\n              });\n            }\n          },\n          menu: function() {\n            if(module.has.menu()) {\n              menuObserver.observe($menu[0], {\n                childList : true,\n                subtree   : true\n              });\n            }\n          }\n        },\n\n        create: {\n          id: function() {\n            id = (Math.random().toString(16) + '000000000').substr(2, 8);\n            elementNamespace = '.' + id;\n            module.verbose('Creating unique id for element', id);\n          },\n          userChoice: function(values) {\n            var\n              $userChoices,\n              $userChoice,\n              isUserValue,\n              html\n            ;\n            values = values || module.get.userValues();\n            if(!values) {\n              return false;\n            }\n            values = $.isArray(values)\n              ? values\n              : [values]\n            ;\n            $.each(values, function(index, value) {\n              if(module.get.item(value) === false) {\n                html         = settings.templates.addition( module.add.variables(message.addResult, value) );\n                $userChoice  = $('<div />')\n                  .html(html)\n                  .attr('data-' + metadata.value, value)\n                  .attr('data-' + metadata.text, value)\n                  .addClass(className.addition)\n                  .addClass(className.item)\n                ;\n                if(settings.hideAdditions) {\n                  $userChoice.addClass(className.hidden);\n                }\n                $userChoices = ($userChoices === undefined)\n                  ? $userChoice\n                  : $userChoices.add($userChoice)\n                ;\n                module.verbose('Creating user choices for value', value, $userChoice);\n              }\n            });\n            return $userChoices;\n          },\n          userLabels: function(value) {\n            var\n              userValues = module.get.userValues()\n            ;\n            if(userValues) {\n              module.debug('Adding user labels', userValues);\n              $.each(userValues, function(index, value) {\n                module.verbose('Adding custom user value');\n                module.add.label(value, value);\n              });\n            }\n          },\n          menu: function() {\n            $menu = $('<div />')\n              .addClass(className.menu)\n              .appendTo($module)\n            ;\n          },\n          sizer: function() {\n            $sizer = $('<span />')\n              .addClass(className.sizer)\n              .insertAfter($search)\n            ;\n          }\n        },\n\n        search: function(query) {\n          query = (query !== undefined)\n            ? query\n            : module.get.query()\n          ;\n          module.verbose('Searching for query', query);\n          if(module.has.minCharacters(query)) {\n            module.filter(query);\n          }\n          else {\n            module.hide();\n          }\n        },\n\n        select: {\n          firstUnfiltered: function() {\n            module.verbose('Selecting first non-filtered element');\n            module.remove.selectedItem();\n            $item\n              .not(selector.unselectable)\n              .not(selector.addition + selector.hidden)\n                .eq(0)\n                .addClass(className.selected)\n            ;\n          },\n          nextAvailable: function($selected) {\n            $selected = $selected.eq(0);\n            var\n              $nextAvailable = $selected.nextAll(selector.item).not(selector.unselectable).eq(0),\n              $prevAvailable = $selected.prevAll(selector.item).not(selector.unselectable).eq(0),\n              hasNext        = ($nextAvailable.length > 0)\n            ;\n            if(hasNext) {\n              module.verbose('Moving selection to', $nextAvailable);\n              $nextAvailable.addClass(className.selected);\n            }\n            else {\n              module.verbose('Moving selection to', $prevAvailable);\n              $prevAvailable.addClass(className.selected);\n            }\n          }\n        },\n\n        setup: {\n          api: function() {\n            var\n              apiSettings = {\n                debug   : settings.debug,\n                urlData : {\n                  value : module.get.value(),\n                  query : module.get.query()\n                },\n                on    : false\n              }\n            ;\n            module.verbose('First request, initializing API');\n            $module\n              .api(apiSettings)\n            ;\n          },\n          layout: function() {\n            if( $module.is('select') ) {\n              module.setup.select();\n              module.setup.returnedObject();\n            }\n            if( !module.has.menu() ) {\n              module.create.menu();\n            }\n            if( module.is.search() && !module.has.search() ) {\n              module.verbose('Adding search input');\n              $search = $('<input />')\n                .addClass(className.search)\n                .prop('autocomplete', 'off')\n                .insertBefore($text)\n              ;\n            }\n            if( module.is.multiple() && module.is.searchSelection() && !module.has.sizer()) {\n              module.create.sizer();\n            }\n            if(settings.allowTab) {\n              module.set.tabbable();\n            }\n          },\n          select: function() {\n            var\n              selectValues  = module.get.selectValues()\n            ;\n            module.debug('Dropdown initialized on a select', selectValues);\n            if( $module.is('select') ) {\n              $input = $module;\n            }\n            // see if select is placed correctly already\n            if($input.parent(selector.dropdown).length > 0) {\n              module.debug('UI dropdown already exists. Creating dropdown menu only');\n              $module = $input.closest(selector.dropdown);\n              if( !module.has.menu() ) {\n                module.create.menu();\n              }\n              $menu = $module.children(selector.menu);\n              module.setup.menu(selectValues);\n            }\n            else {\n              module.debug('Creating entire dropdown from select');\n              $module = $('<div />')\n                .attr('class', $input.attr('class') )\n                .addClass(className.selection)\n                .addClass(className.dropdown)\n                .html( templates.dropdown(selectValues) )\n                .insertBefore($input)\n              ;\n              if($input.hasClass(className.multiple) && $input.prop('multiple') === false) {\n                module.error(error.missingMultiple);\n                $input.prop('multiple', true);\n              }\n              if($input.is('[multiple]')) {\n                module.set.multiple();\n              }\n              if ($input.prop('disabled')) {\n                module.debug('Disabling dropdown');\n                $module.addClass(className.disabled);\n              }\n              $input\n                .removeAttr('class')\n                .detach()\n                .prependTo($module)\n              ;\n            }\n            module.refresh();\n          },\n          menu: function(values) {\n            $menu.html( templates.menu(values, fields));\n            $item = $menu.find(selector.item);\n          },\n          reference: function() {\n            module.debug('Dropdown behavior was called on select, replacing with closest dropdown');\n            // replace module reference\n            $module = $module.parent(selector.dropdown);\n            module.refresh();\n            module.setup.returnedObject();\n            // invoke method in context of current instance\n            if(methodInvoked) {\n              instance = module;\n              module.invoke(query);\n            }\n          },\n          returnedObject: function() {\n            var\n              $firstModules = $allModules.slice(0, elementIndex),\n              $lastModules = $allModules.slice(elementIndex + 1)\n            ;\n            // adjust all modules to use correct reference\n            $allModules = $firstModules.add($module).add($lastModules);\n          }\n        },\n\n        refresh: function() {\n          module.refreshSelectors();\n          module.refreshData();\n        },\n\n        refreshItems: function() {\n          $item = $menu.find(selector.item);\n        },\n\n        refreshSelectors: function() {\n          module.verbose('Refreshing selector cache');\n          $text   = $module.find(selector.text);\n          $search = $module.find(selector.search);\n          $input  = $module.find(selector.input);\n          $icon   = $module.find(selector.icon);\n          $combo  = ($module.prev().find(selector.text).length > 0)\n            ? $module.prev().find(selector.text)\n            : $module.prev()\n          ;\n          $menu    = $module.children(selector.menu);\n          $item    = $menu.find(selector.item);\n        },\n\n        refreshData: function() {\n          module.verbose('Refreshing cached metadata');\n          $item\n            .removeData(metadata.text)\n            .removeData(metadata.value)\n          ;\n        },\n\n        clearData: function() {\n          module.verbose('Clearing metadata');\n          $item\n            .removeData(metadata.text)\n            .removeData(metadata.value)\n          ;\n          $module\n            .removeData(metadata.defaultText)\n            .removeData(metadata.defaultValue)\n            .removeData(metadata.placeholderText)\n          ;\n        },\n\n        toggle: function() {\n          module.verbose('Toggling menu visibility');\n          if( !module.is.active() ) {\n            module.show();\n          }\n          else {\n            module.hide();\n          }\n        },\n\n        show: function(callback) {\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          if(!module.can.show() && module.is.remote()) {\n            module.debug('No API results retrieved, searching before show');\n            module.queryRemote(module.get.query(), module.show);\n          }\n          if( module.can.show() && !module.is.active() ) {\n            module.debug('Showing dropdown');\n            if(module.has.message() && !(module.has.maxSelections() || module.has.allResultsFiltered()) ) {\n              module.remove.message();\n            }\n            if(module.is.allFiltered()) {\n              return true;\n            }\n            if(settings.onShow.call(element) !== false) {\n              module.animate.show(function() {\n                if( module.can.click() ) {\n                  module.bind.intent();\n                }\n                if(module.has.menuSearch()) {\n                  module.focusSearch();\n                }\n                module.set.visible();\n                callback.call(element);\n              });\n            }\n          }\n        },\n\n        hide: function(callback) {\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          if( module.is.active() ) {\n            module.debug('Hiding dropdown');\n            if(settings.onHide.call(element) !== false) {\n              module.animate.hide(function() {\n                module.remove.visible();\n                callback.call(element);\n              });\n            }\n          }\n        },\n\n        hideOthers: function() {\n          module.verbose('Finding other dropdowns to hide');\n          $allModules\n            .not($module)\n              .has(selector.menu + '.' + className.visible)\n                .dropdown('hide')\n          ;\n        },\n\n        hideMenu: function() {\n          module.verbose('Hiding menu  instantaneously');\n          module.remove.active();\n          module.remove.visible();\n          $menu.transition('hide');\n        },\n\n        hideSubMenus: function() {\n          var\n            $subMenus = $menu.children(selector.item).find(selector.menu)\n          ;\n          module.verbose('Hiding sub menus', $subMenus);\n          $subMenus.transition('hide');\n        },\n\n        bind: {\n          events: function() {\n            if(hasTouch) {\n              module.bind.touchEvents();\n            }\n            module.bind.keyboardEvents();\n            module.bind.inputEvents();\n            module.bind.mouseEvents();\n          },\n          touchEvents: function() {\n            module.debug('Touch device detected binding additional touch events');\n            if( module.is.searchSelection() ) {\n              // do nothing special yet\n            }\n            else if( module.is.single() ) {\n              $module\n                .on('touchstart' + eventNamespace, module.event.test.toggle)\n              ;\n            }\n            $menu\n              .on('touchstart' + eventNamespace, selector.item, module.event.item.mouseenter)\n            ;\n          },\n          keyboardEvents: function() {\n            module.verbose('Binding keyboard events');\n            $module\n              .on('keydown' + eventNamespace, module.event.keydown)\n            ;\n            if( module.has.search() ) {\n              $module\n                .on(module.get.inputEvent() + eventNamespace, selector.search, module.event.input)\n              ;\n            }\n            if( module.is.multiple() ) {\n              $document\n                .on('keydown' + elementNamespace, module.event.document.keydown)\n              ;\n            }\n          },\n          inputEvents: function() {\n            module.verbose('Binding input change events');\n            $module\n              .on('change' + eventNamespace, selector.input, module.event.change)\n            ;\n          },\n          mouseEvents: function() {\n            module.verbose('Binding mouse events');\n            if(module.is.multiple()) {\n              $module\n                .on('click'   + eventNamespace, selector.label,  module.event.label.click)\n                .on('click'   + eventNamespace, selector.remove, module.event.remove.click)\n              ;\n            }\n            if( module.is.searchSelection() ) {\n              $module\n                .on('mousedown' + eventNamespace, module.event.mousedown)\n                .on('mouseup'   + eventNamespace, module.event.mouseup)\n                .on('mousedown' + eventNamespace, selector.menu,   module.event.menu.mousedown)\n                .on('mouseup'   + eventNamespace, selector.menu,   module.event.menu.mouseup)\n                .on('click'     + eventNamespace, selector.icon,   module.event.icon.click)\n                .on('focus'     + eventNamespace, selector.search, module.event.search.focus)\n                .on('click'     + eventNamespace, selector.search, module.event.search.focus)\n                .on('blur'      + eventNamespace, selector.search, module.event.search.blur)\n                .on('click'     + eventNamespace, selector.text,   module.event.text.focus)\n              ;\n              if(module.is.multiple()) {\n                $module\n                  .on('click' + eventNamespace, module.event.click)\n                ;\n              }\n            }\n            else {\n              if(settings.on == 'click') {\n                $module\n                  .on('click' + eventNamespace, selector.icon, module.event.icon.click)\n                  .on('click' + eventNamespace, module.event.test.toggle)\n                ;\n              }\n              else if(settings.on == 'hover') {\n                $module\n                  .on('mouseenter' + eventNamespace, module.delay.show)\n                  .on('mouseleave' + eventNamespace, module.delay.hide)\n                ;\n              }\n              else {\n                $module\n                  .on(settings.on + eventNamespace, module.toggle)\n                ;\n              }\n              $module\n                .on('mousedown' + eventNamespace, module.event.mousedown)\n                .on('mouseup'   + eventNamespace, module.event.mouseup)\n                .on('focus'     + eventNamespace, module.event.focus)\n              ;\n              if(module.has.menuSearch() ) {\n                $module\n                  .on('blur' + eventNamespace, selector.search, module.event.search.blur)\n                ;\n              }\n              else {\n                $module\n                  .on('blur' + eventNamespace, module.event.blur)\n                ;\n              }\n            }\n            $menu\n              .on('mouseenter' + eventNamespace, selector.item, module.event.item.mouseenter)\n              .on('mouseleave' + eventNamespace, selector.item, module.event.item.mouseleave)\n              .on('click'      + eventNamespace, selector.item, module.event.item.click)\n            ;\n          },\n          intent: function() {\n            module.verbose('Binding hide intent event to document');\n            if(hasTouch) {\n              $document\n                .on('touchstart' + elementNamespace, module.event.test.touch)\n                .on('touchmove'  + elementNamespace, module.event.test.touch)\n              ;\n            }\n            $document\n              .on('click' + elementNamespace, module.event.test.hide)\n            ;\n          }\n        },\n\n        unbind: {\n          intent: function() {\n            module.verbose('Removing hide intent event from document');\n            if(hasTouch) {\n              $document\n                .off('touchstart' + elementNamespace)\n                .off('touchmove' + elementNamespace)\n              ;\n            }\n            $document\n              .off('click' + elementNamespace)\n            ;\n          }\n        },\n\n        filter: function(query) {\n          var\n            searchTerm = (query !== undefined)\n              ? query\n              : module.get.query(),\n            afterFiltered = function() {\n              if(module.is.multiple()) {\n                module.filterActive();\n              }\n              if(query || (!query && module.get.activeItem().length == 0)) {\n                module.select.firstUnfiltered();\n              }\n              if( module.has.allResultsFiltered() ) {\n                if( settings.onNoResults.call(element, searchTerm) ) {\n                  if(settings.allowAdditions) {\n                    if(settings.hideAdditions) {\n                      module.verbose('User addition with no menu, setting empty style');\n                      module.set.empty();\n                      module.hideMenu();\n                    }\n                  }\n                  else {\n                    module.verbose('All items filtered, showing message', searchTerm);\n                    module.add.message(message.noResults);\n                  }\n                }\n                else {\n                  module.verbose('All items filtered, hiding dropdown', searchTerm);\n                  module.hideMenu();\n                }\n              }\n              else {\n                module.remove.empty();\n                module.remove.message();\n              }\n              if(settings.allowAdditions) {\n                module.add.userSuggestion(query);\n              }\n              if(module.is.searchSelection() && module.can.show() && module.is.focusedOnSearch() ) {\n                module.show();\n              }\n            }\n          ;\n          if(settings.useLabels && module.has.maxSelections()) {\n            return;\n          }\n          if(settings.apiSettings) {\n            if( module.can.useAPI() ) {\n              module.queryRemote(searchTerm, function() {\n                if(settings.filterRemoteData) {\n                  module.filterItems(searchTerm);\n                }\n                afterFiltered();\n              });\n            }\n            else {\n              module.error(error.noAPI);\n            }\n          }\n          else {\n            module.filterItems(searchTerm);\n            afterFiltered();\n          }\n        },\n\n        queryRemote: function(query, callback) {\n          var\n            apiSettings = {\n              errorDuration : false,\n              cache         : 'local',\n              throttle      : settings.throttle,\n              urlData       : {\n                query: query\n              },\n              onError: function() {\n                module.add.message(message.serverError);\n                callback();\n              },\n              onFailure: function() {\n                module.add.message(message.serverError);\n                callback();\n              },\n              onSuccess : function(response) {\n                module.remove.message();\n                module.setup.menu({\n                  values: response[fields.remoteValues]\n                });\n                callback();\n              }\n            }\n          ;\n          if( !$module.api('get request') ) {\n            module.setup.api();\n          }\n          apiSettings = $.extend(true, {}, apiSettings, settings.apiSettings);\n          $module\n            .api('setting', apiSettings)\n            .api('query')\n          ;\n        },\n\n        filterItems: function(query) {\n          var\n            searchTerm = (query !== undefined)\n              ? query\n              : module.get.query(),\n            results          =  null,\n            escapedTerm      = module.escape.string(searchTerm),\n            beginsWithRegExp = new RegExp('^' + escapedTerm, 'igm')\n          ;\n          // avoid loop if we're matching nothing\n          if( module.has.query() ) {\n            results = [];\n\n            module.verbose('Searching for matching values', searchTerm);\n            $item\n              .each(function(){\n                var\n                  $choice = $(this),\n                  text,\n                  value\n                ;\n                if(settings.match == 'both' || settings.match == 'text') {\n                  text = String(module.get.choiceText($choice, false));\n                  if(text.search(beginsWithRegExp) !== -1) {\n                    results.push(this);\n                    return true;\n                  }\n                  else if (settings.fullTextSearch === 'exact' && module.exactSearch(searchTerm, text)) {\n                    results.push(this);\n                    return true;\n                  }\n                  else if (settings.fullTextSearch === true && module.fuzzySearch(searchTerm, text)) {\n                    results.push(this);\n                    return true;\n                  }\n                }\n                if(settings.match == 'both' || settings.match == 'value') {\n                  value = String(module.get.choiceValue($choice, text));\n                  if(value.search(beginsWithRegExp) !== -1) {\n                    results.push(this);\n                    return true;\n                  }\n                  else if (settings.fullTextSearch === 'exact' && module.exactSearch(searchTerm, value)) {\n                    results.push(this);\n                    return true;\n                  }\n                  else if (settings.fullTextSearch === true && module.fuzzySearch(searchTerm, value)) {\n                    results.push(this);\n                    return true;\n                  }\n                }\n              })\n            ;\n          }\n          module.debug('Showing only matched items', searchTerm);\n          module.remove.filteredItem();\n          if(results) {\n            $item\n              .not(results)\n              .addClass(className.filtered)\n            ;\n          }\n        },\n\n        fuzzySearch: function(query, term) {\n          var\n            termLength  = term.length,\n            queryLength = query.length\n          ;\n          query = query.toLowerCase();\n          term  = term.toLowerCase();\n          if(queryLength > termLength) {\n            return false;\n          }\n          if(queryLength === termLength) {\n            return (query === term);\n          }\n          search: for (var characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) {\n            var\n              queryCharacter = query.charCodeAt(characterIndex)\n            ;\n            while(nextCharacterIndex < termLength) {\n              if(term.charCodeAt(nextCharacterIndex++) === queryCharacter) {\n                continue search;\n              }\n            }\n            return false;\n          }\n          return true;\n        },\n        exactSearch: function (query, term) {\n          query = query.toLowerCase();\n          term  = term.toLowerCase();\n          if(term.indexOf(query) > -1) {\n             return true;\n          }\n          return false;\n        },\n        filterActive: function() {\n          if(settings.useLabels) {\n            $item.filter('.' + className.active)\n              .addClass(className.filtered)\n            ;\n          }\n        },\n\n        focusSearch: function(skipHandler) {\n          if( module.has.search() && !module.is.focusedOnSearch() ) {\n            if(skipHandler) {\n              $module.off('focus' + eventNamespace, selector.search);\n              $search.focus();\n              $module.on('focus'  + eventNamespace, selector.search, module.event.search.focus);\n            }\n            else {\n              $search.focus();\n            }\n          }\n        },\n\n        forceSelection: function() {\n          var\n            $currentlySelected = $item.not(className.filtered).filter('.' + className.selected).eq(0),\n            $activeItem        = $item.not(className.filtered).filter('.' + className.active).eq(0),\n            $selectedItem      = ($currentlySelected.length > 0)\n              ? $currentlySelected\n              : $activeItem,\n            hasSelected = ($selectedItem.length > 0)\n          ;\n          if(hasSelected && !module.is.multiple()) {\n            module.debug('Forcing partial selection to selected item', $selectedItem);\n            module.event.item.click.call($selectedItem, {}, true);\n            return;\n          }\n          else {\n            if(settings.allowAdditions) {\n              module.set.selected(module.get.query());\n              module.remove.searchTerm();\n            }\n            else {\n              module.remove.searchTerm();\n            }\n          }\n        },\n\n        event: {\n          change: function() {\n            if(!internalChange) {\n              module.debug('Input changed, updating selection');\n              module.set.selected();\n            }\n          },\n          focus: function() {\n            if(settings.showOnFocus && !activated && module.is.hidden() && !pageLostFocus) {\n              module.show();\n            }\n          },\n          blur: function(event) {\n            pageLostFocus = (document.activeElement === this);\n            if(!activated && !pageLostFocus) {\n              module.remove.activeLabel();\n              module.hide();\n            }\n          },\n          mousedown: function() {\n            if(module.is.searchSelection()) {\n              // prevent menu hiding on immediate re-focus\n              willRefocus = true;\n            }\n            else {\n              // prevents focus callback from occurring on mousedown\n              activated = true;\n            }\n          },\n          mouseup: function() {\n            if(module.is.searchSelection()) {\n              // prevent menu hiding on immediate re-focus\n              willRefocus = false;\n            }\n            else {\n              activated = false;\n            }\n          },\n          click: function(event) {\n            var\n              $target = $(event.target)\n            ;\n            // focus search\n            if($target.is($module)) {\n              if(!module.is.focusedOnSearch()) {\n                module.focusSearch();\n              }\n              else {\n                module.show();\n              }\n            }\n          },\n          search: {\n            focus: function() {\n              activated = true;\n              if(module.is.multiple()) {\n                module.remove.activeLabel();\n              }\n              if(settings.showOnFocus) {\n                module.search();\n              }\n            },\n            blur: function(event) {\n              pageLostFocus = (document.activeElement === this);\n              if(module.is.searchSelection() && !willRefocus) {\n                if(!itemActivated && !pageLostFocus) {\n                  if(settings.forceSelection) {\n                    module.forceSelection();\n                  }\n                  module.hide();\n                }\n              }\n              willRefocus = false;\n            }\n          },\n          icon: {\n            click: function(event) {\n              module.toggle();\n            }\n          },\n          text: {\n            focus: function(event) {\n              activated = true;\n              module.focusSearch();\n            }\n          },\n          input: function(event) {\n            if(module.is.multiple() || module.is.searchSelection()) {\n              module.set.filtered();\n            }\n            clearTimeout(module.timer);\n            module.timer = setTimeout(module.search, settings.delay.search);\n          },\n          label: {\n            click: function(event) {\n              var\n                $label        = $(this),\n                $labels       = $module.find(selector.label),\n                $activeLabels = $labels.filter('.' + className.active),\n                $nextActive   = $label.nextAll('.' + className.active),\n                $prevActive   = $label.prevAll('.' + className.active),\n                $range = ($nextActive.length > 0)\n                  ? $label.nextUntil($nextActive).add($activeLabels).add($label)\n                  : $label.prevUntil($prevActive).add($activeLabels).add($label)\n              ;\n              if(event.shiftKey) {\n                $activeLabels.removeClass(className.active);\n                $range.addClass(className.active);\n              }\n              else if(event.ctrlKey) {\n                $label.toggleClass(className.active);\n              }\n              else {\n                $activeLabels.removeClass(className.active);\n                $label.addClass(className.active);\n              }\n              settings.onLabelSelect.apply(this, $labels.filter('.' + className.active));\n            }\n          },\n          remove: {\n            click: function() {\n              var\n                $label = $(this).parent()\n              ;\n              if( $label.hasClass(className.active) ) {\n                // remove all selected labels\n                module.remove.activeLabels();\n              }\n              else {\n                // remove this label only\n                module.remove.activeLabels( $label );\n              }\n            }\n          },\n          test: {\n            toggle: function(event) {\n              var\n                toggleBehavior = (module.is.multiple())\n                  ? module.show\n                  : module.toggle\n              ;\n              if(module.is.bubbledLabelClick(event) || module.is.bubbledIconClick(event)) {\n                return;\n              }\n              if( module.determine.eventOnElement(event, toggleBehavior) ) {\n                event.preventDefault();\n              }\n            },\n            touch: function(event) {\n              module.determine.eventOnElement(event, function() {\n                if(event.type == 'touchstart') {\n                  module.timer = setTimeout(function() {\n                    module.hide();\n                  }, settings.delay.touch);\n                }\n                else if(event.type == 'touchmove') {\n                  clearTimeout(module.timer);\n                }\n              });\n              event.stopPropagation();\n            },\n            hide: function(event) {\n              module.determine.eventInModule(event, module.hide);\n            }\n          },\n          select: {\n            mutation: function(mutations) {\n              module.debug('<select> modified, recreating menu');\n              module.setup.select();\n            }\n          },\n          menu: {\n            mutation: function(mutations) {\n              var\n                mutation   = mutations[0],\n                $addedNode = mutation.addedNodes\n                  ? $(mutation.addedNodes[0])\n                  : $(false),\n                $removedNode = mutation.removedNodes\n                  ? $(mutation.removedNodes[0])\n                  : $(false),\n                $changedNodes  = $addedNode.add($removedNode),\n                isUserAddition = $changedNodes.is(selector.addition) || $changedNodes.closest(selector.addition).length > 0,\n                isMessage      = $changedNodes.is(selector.message)  || $changedNodes.closest(selector.message).length > 0\n              ;\n              if(isUserAddition || isMessage) {\n                module.debug('Updating item selector cache');\n                module.refreshItems();\n              }\n              else {\n                module.debug('Menu modified, updating selector cache');\n                module.refresh();\n              }\n            },\n            mousedown: function() {\n              itemActivated = true;\n            },\n            mouseup: function() {\n              itemActivated = false;\n            }\n          },\n          item: {\n            mouseenter: function(event) {\n              var\n                $target        = $(event.target),\n                $item          = $(this),\n                $subMenu       = $item.children(selector.menu),\n                $otherMenus    = $item.siblings(selector.item).children(selector.menu),\n                hasSubMenu     = ($subMenu.length > 0),\n                isBubbledEvent = ($subMenu.find($target).length > 0)\n              ;\n              if( !isBubbledEvent && hasSubMenu ) {\n                clearTimeout(module.itemTimer);\n                module.itemTimer = setTimeout(function() {\n                  module.verbose('Showing sub-menu', $subMenu);\n                  $.each($otherMenus, function() {\n                    module.animate.hide(false, $(this));\n                  });\n                  module.animate.show(false, $subMenu);\n                }, settings.delay.show);\n                event.preventDefault();\n              }\n            },\n            mouseleave: function(event) {\n              var\n                $subMenu = $(this).children(selector.menu)\n              ;\n              if($subMenu.length > 0) {\n                clearTimeout(module.itemTimer);\n                module.itemTimer = setTimeout(function() {\n                  module.verbose('Hiding sub-menu', $subMenu);\n                  module.animate.hide(false, $subMenu);\n                }, settings.delay.hide);\n              }\n            },\n            click: function (event, skipRefocus) {\n              var\n                $choice        = $(this),\n                $target        = (event)\n                  ? $(event.target)\n                  : $(''),\n                $subMenu       = $choice.find(selector.menu),\n                text           = module.get.choiceText($choice),\n                value          = module.get.choiceValue($choice, text),\n                hasSubMenu     = ($subMenu.length > 0),\n                isBubbledEvent = ($subMenu.find($target).length > 0)\n              ;\n              // prevents IE11 bug where menu receives focus even though `tabindex=-1`\n              if(module.has.menuSearch()) {\n                $(document.activeElement).blur();\n              }\n              if(!isBubbledEvent && (!hasSubMenu || settings.allowCategorySelection)) {\n                if(module.is.searchSelection()) {\n                  if(settings.allowAdditions) {\n                    module.remove.userAddition();\n                  }\n                  module.remove.searchTerm();\n                  if(!module.is.focusedOnSearch() && !(skipRefocus == true)) {\n                    module.focusSearch(true);\n                  }\n                }\n                if(!settings.useLabels) {\n                  module.remove.filteredItem();\n                  module.set.scrollPosition($choice);\n                }\n                module.determine.selectAction.call(this, text, value);\n              }\n            }\n          },\n\n          document: {\n            // label selection should occur even when element has no focus\n            keydown: function(event) {\n              var\n                pressedKey    = event.which,\n                isShortcutKey = module.is.inObject(pressedKey, keys)\n              ;\n              if(isShortcutKey) {\n                var\n                  $label            = $module.find(selector.label),\n                  $activeLabel      = $label.filter('.' + className.active),\n                  activeValue       = $activeLabel.data(metadata.value),\n                  labelIndex        = $label.index($activeLabel),\n                  labelCount        = $label.length,\n                  hasActiveLabel    = ($activeLabel.length > 0),\n                  hasMultipleActive = ($activeLabel.length > 1),\n                  isFirstLabel      = (labelIndex === 0),\n                  isLastLabel       = (labelIndex + 1 == labelCount),\n                  isSearch          = module.is.searchSelection(),\n                  isFocusedOnSearch = module.is.focusedOnSearch(),\n                  isFocused         = module.is.focused(),\n                  caretAtStart      = (isFocusedOnSearch && module.get.caretPosition() === 0),\n                  $nextLabel\n                ;\n                if(isSearch && !hasActiveLabel && !isFocusedOnSearch) {\n                  return;\n                }\n\n                if(pressedKey == keys.leftArrow) {\n                  // activate previous label\n                  if((isFocused || caretAtStart) && !hasActiveLabel) {\n                    module.verbose('Selecting previous label');\n                    $label.last().addClass(className.active);\n                  }\n                  else if(hasActiveLabel) {\n                    if(!event.shiftKey) {\n                      module.verbose('Selecting previous label');\n                      $label.removeClass(className.active);\n                    }\n                    else {\n                      module.verbose('Adding previous label to selection');\n                    }\n                    if(isFirstLabel && !hasMultipleActive) {\n                      $activeLabel.addClass(className.active);\n                    }\n                    else {\n                      $activeLabel.prev(selector.siblingLabel)\n                        .addClass(className.active)\n                        .end()\n                      ;\n                    }\n                    event.preventDefault();\n                  }\n                }\n                else if(pressedKey == keys.rightArrow) {\n                  // activate first label\n                  if(isFocused && !hasActiveLabel) {\n                    $label.first().addClass(className.active);\n                  }\n                  // activate next label\n                  if(hasActiveLabel) {\n                    if(!event.shiftKey) {\n                      module.verbose('Selecting next label');\n                      $label.removeClass(className.active);\n                    }\n                    else {\n                      module.verbose('Adding next label to selection');\n                    }\n                    if(isLastLabel) {\n                      if(isSearch) {\n                        if(!isFocusedOnSearch) {\n                          module.focusSearch();\n                        }\n                        else {\n                          $label.removeClass(className.active);\n                        }\n                      }\n                      else if(hasMultipleActive) {\n                        $activeLabel.next(selector.siblingLabel).addClass(className.active);\n                      }\n                      else {\n                        $activeLabel.addClass(className.active);\n                      }\n                    }\n                    else {\n                      $activeLabel.next(selector.siblingLabel).addClass(className.active);\n                    }\n                    event.preventDefault();\n                  }\n                }\n                else if(pressedKey == keys.deleteKey || pressedKey == keys.backspace) {\n                  if(hasActiveLabel) {\n                    module.verbose('Removing active labels');\n                    if(isLastLabel) {\n                      if(isSearch && !isFocusedOnSearch) {\n                        module.focusSearch();\n                      }\n                    }\n                    $activeLabel.last().next(selector.siblingLabel).addClass(className.active);\n                    module.remove.activeLabels($activeLabel);\n                    event.preventDefault();\n                  }\n                  else if(caretAtStart && !hasActiveLabel && pressedKey == keys.backspace) {\n                    module.verbose('Removing last label on input backspace');\n                    $activeLabel = $label.last().addClass(className.active);\n                    module.remove.activeLabels($activeLabel);\n                  }\n                }\n                else {\n                  $activeLabel.removeClass(className.active);\n                }\n              }\n            }\n          },\n\n          keydown: function(event) {\n            var\n              pressedKey    = event.which,\n              isShortcutKey = module.is.inObject(pressedKey, keys)\n            ;\n            if(isShortcutKey) {\n              var\n                $currentlySelected = $item.not(selector.unselectable).filter('.' + className.selected).eq(0),\n                $activeItem        = $menu.children('.' + className.active).eq(0),\n                $selectedItem      = ($currentlySelected.length > 0)\n                  ? $currentlySelected\n                  : $activeItem,\n                $visibleItems = ($selectedItem.length > 0)\n                  ? $selectedItem.siblings(':not(.' + className.filtered +')').addBack()\n                  : $menu.children(':not(.' + className.filtered +')'),\n                $subMenu              = $selectedItem.children(selector.menu),\n                $parentMenu           = $selectedItem.closest(selector.menu),\n                inVisibleMenu         = ($parentMenu.hasClass(className.visible) || $parentMenu.hasClass(className.animating) || $parentMenu.parent(selector.menu).length > 0),\n                hasSubMenu            = ($subMenu.length> 0),\n                hasSelectedItem       = ($selectedItem.length > 0),\n                selectedIsSelectable  = ($selectedItem.not(selector.unselectable).length > 0),\n                delimiterPressed      = (pressedKey == keys.delimiter && settings.allowAdditions && module.is.multiple()),\n                isAdditionWithoutMenu = (settings.allowAdditions && settings.hideAdditions && (pressedKey == keys.enter || delimiterPressed) && selectedIsSelectable),\n                $nextItem,\n                isSubMenuItem,\n                newIndex\n              ;\n              // allow selection with menu closed\n              if(isAdditionWithoutMenu) {\n                module.verbose('Selecting item from keyboard shortcut', $selectedItem);\n                module.event.item.click.call($selectedItem, event);\n                if(module.is.searchSelection()) {\n                  module.remove.searchTerm();\n                }\n              }\n\n              // visible menu keyboard shortcuts\n              if( module.is.visible() ) {\n\n                // enter (select or open sub-menu)\n                if(pressedKey == keys.enter || delimiterPressed) {\n                  if(pressedKey == keys.enter && hasSelectedItem && hasSubMenu && !settings.allowCategorySelection) {\n                    module.verbose('Pressed enter on unselectable category, opening sub menu');\n                    pressedKey = keys.rightArrow;\n                  }\n                  else if(selectedIsSelectable) {\n                    module.verbose('Selecting item from keyboard shortcut', $selectedItem);\n                    module.event.item.click.call($selectedItem, event);\n                    if(module.is.searchSelection()) {\n                      module.remove.searchTerm();\n                    }\n                  }\n                  event.preventDefault();\n                }\n\n                // sub-menu actions\n                if(hasSelectedItem) {\n\n                  if(pressedKey == keys.leftArrow) {\n\n                    isSubMenuItem = ($parentMenu[0] !== $menu[0]);\n\n                    if(isSubMenuItem) {\n                      module.verbose('Left key pressed, closing sub-menu');\n                      module.animate.hide(false, $parentMenu);\n                      $selectedItem\n                        .removeClass(className.selected)\n                      ;\n                      $parentMenu\n                        .closest(selector.item)\n                          .addClass(className.selected)\n                      ;\n                      event.preventDefault();\n                    }\n                  }\n\n                  // right arrow (show sub-menu)\n                  if(pressedKey == keys.rightArrow) {\n                    if(hasSubMenu) {\n                      module.verbose('Right key pressed, opening sub-menu');\n                      module.animate.show(false, $subMenu);\n                      $selectedItem\n                        .removeClass(className.selected)\n                      ;\n                      $subMenu\n                        .find(selector.item).eq(0)\n                          .addClass(className.selected)\n                      ;\n                      event.preventDefault();\n                    }\n                  }\n                }\n\n                // up arrow (traverse menu up)\n                if(pressedKey == keys.upArrow) {\n                  $nextItem = (hasSelectedItem && inVisibleMenu)\n                    ? $selectedItem.prevAll(selector.item + ':not(' + selector.unselectable + ')').eq(0)\n                    : $item.eq(0)\n                  ;\n                  if($visibleItems.index( $nextItem ) < 0) {\n                    module.verbose('Up key pressed but reached top of current menu');\n                    event.preventDefault();\n                    return;\n                  }\n                  else {\n                    module.verbose('Up key pressed, changing active item');\n                    $selectedItem\n                      .removeClass(className.selected)\n                    ;\n                    $nextItem\n                      .addClass(className.selected)\n                    ;\n                    module.set.scrollPosition($nextItem);\n                    if(settings.selectOnKeydown && module.is.single()) {\n                      module.set.selectedItem($nextItem);\n                    }\n                  }\n                  event.preventDefault();\n                }\n\n                // down arrow (traverse menu down)\n                if(pressedKey == keys.downArrow) {\n                  $nextItem = (hasSelectedItem && inVisibleMenu)\n                    ? $nextItem = $selectedItem.nextAll(selector.item + ':not(' + selector.unselectable + ')').eq(0)\n                    : $item.eq(0)\n                  ;\n                  if($nextItem.length === 0) {\n                    module.verbose('Down key pressed but reached bottom of current menu');\n                    event.preventDefault();\n                    return;\n                  }\n                  else {\n                    module.verbose('Down key pressed, changing active item');\n                    $item\n                      .removeClass(className.selected)\n                    ;\n                    $nextItem\n                      .addClass(className.selected)\n                    ;\n                    module.set.scrollPosition($nextItem);\n                    if(settings.selectOnKeydown && module.is.single()) {\n                      module.set.selectedItem($nextItem);\n                    }\n                  }\n                  event.preventDefault();\n                }\n\n                // page down (show next page)\n                if(pressedKey == keys.pageUp) {\n                  module.scrollPage('up');\n                  event.preventDefault();\n                }\n                if(pressedKey == keys.pageDown) {\n                  module.scrollPage('down');\n                  event.preventDefault();\n                }\n\n                // escape (close menu)\n                if(pressedKey == keys.escape) {\n                  module.verbose('Escape key pressed, closing dropdown');\n                  module.hide();\n                }\n\n              }\n              else {\n                // delimiter key\n                if(delimiterPressed) {\n                  event.preventDefault();\n                }\n                // down arrow (open menu)\n                if(pressedKey == keys.downArrow && !module.is.visible()) {\n                  module.verbose('Down key pressed, showing dropdown');\n                  module.show();\n                  event.preventDefault();\n                }\n              }\n            }\n            else {\n              if( !module.has.search() ) {\n                module.set.selectedLetter( String.fromCharCode(pressedKey) );\n              }\n            }\n          }\n        },\n\n        trigger: {\n          change: function() {\n            var\n              events       = document.createEvent('HTMLEvents'),\n              inputElement = $input[0]\n            ;\n            if(inputElement) {\n              module.verbose('Triggering native change event');\n              events.initEvent('change', true, false);\n              inputElement.dispatchEvent(events);\n            }\n          }\n        },\n\n        determine: {\n          selectAction: function(text, value) {\n            module.verbose('Determining action', settings.action);\n            if( $.isFunction( module.action[settings.action] ) ) {\n              module.verbose('Triggering preset action', settings.action, text, value);\n              module.action[ settings.action ].call(element, text, value, this);\n            }\n            else if( $.isFunction(settings.action) ) {\n              module.verbose('Triggering user action', settings.action, text, value);\n              settings.action.call(element, text, value, this);\n            }\n            else {\n              module.error(error.action, settings.action);\n            }\n          },\n          eventInModule: function(event, callback) {\n            var\n              $target    = $(event.target),\n              inDocument = ($target.closest(document.documentElement).length > 0),\n              inModule   = ($target.closest($module).length > 0)\n            ;\n            callback = $.isFunction(callback)\n              ? callback\n              : function(){}\n            ;\n            if(inDocument && !inModule) {\n              module.verbose('Triggering event', callback);\n              callback();\n              return true;\n            }\n            else {\n              module.verbose('Event occurred in dropdown, canceling callback');\n              return false;\n            }\n          },\n          eventOnElement: function(event, callback) {\n            var\n              $target      = $(event.target),\n              $label       = $target.closest(selector.siblingLabel),\n              inVisibleDOM = document.body.contains(event.target),\n              notOnLabel   = ($module.find($label).length === 0),\n              notInMenu    = ($target.closest($menu).length === 0)\n            ;\n            callback = $.isFunction(callback)\n              ? callback\n              : function(){}\n            ;\n            if(inVisibleDOM && notOnLabel && notInMenu) {\n              module.verbose('Triggering event', callback);\n              callback();\n              return true;\n            }\n            else {\n              module.verbose('Event occurred in dropdown menu, canceling callback');\n              return false;\n            }\n          }\n        },\n\n        action: {\n\n          nothing: function() {},\n\n          activate: function(text, value, element) {\n            value = (value !== undefined)\n              ? value\n              : text\n            ;\n            if( module.can.activate( $(element) ) ) {\n              module.set.selected(value, $(element));\n              if(module.is.multiple() && !module.is.allFiltered()) {\n                return;\n              }\n              else {\n                module.hideAndClear();\n              }\n            }\n          },\n\n          select: function(text, value, element) {\n            value = (value !== undefined)\n              ? value\n              : text\n            ;\n            if( module.can.activate( $(element) ) ) {\n              module.set.value(value, $(element));\n              if(module.is.multiple() && !module.is.allFiltered()) {\n                return;\n              }\n              else {\n                module.hideAndClear();\n              }\n            }\n          },\n\n          combo: function(text, value, element) {\n            value = (value !== undefined)\n              ? value\n              : text\n            ;\n            module.set.selected(value, $(element));\n            module.hideAndClear();\n          },\n\n          hide: function(text, value, element) {\n            module.set.value(value, text);\n            module.hideAndClear();\n          }\n\n        },\n\n        get: {\n          id: function() {\n            return id;\n          },\n          defaultText: function() {\n            return $module.data(metadata.defaultText);\n          },\n          defaultValue: function() {\n            return $module.data(metadata.defaultValue);\n          },\n          placeholderText: function() {\n            return $module.data(metadata.placeholderText) || '';\n          },\n          text: function() {\n            return $text.text();\n          },\n          query: function() {\n            return $.trim($search.val());\n          },\n          searchWidth: function(value) {\n            value = (value !== undefined)\n              ? value\n              : $search.val()\n            ;\n            $sizer.text(value);\n            // prevent rounding issues\n            return Math.ceil( $sizer.width() + 1);\n          },\n          selectionCount: function() {\n            var\n              values = module.get.values(),\n              count\n            ;\n            count = ( module.is.multiple() )\n              ? $.isArray(values)\n                ? values.length\n                : 0\n              : (module.get.value() !== '')\n                ? 1\n                : 0\n            ;\n            return count;\n          },\n          transition: function($subMenu) {\n            return (settings.transition == 'auto')\n              ? module.is.upward($subMenu)\n                ? 'slide up'\n                : 'slide down'\n              : settings.transition\n            ;\n          },\n          userValues: function() {\n            var\n              values = module.get.values()\n            ;\n            if(!values) {\n              return false;\n            }\n            values = $.isArray(values)\n              ? values\n              : [values]\n            ;\n            return $.grep(values, function(value) {\n              return (module.get.item(value) === false);\n            });\n          },\n          uniqueArray: function(array) {\n            return $.grep(array, function (value, index) {\n                return $.inArray(value, array) === index;\n            });\n          },\n          caretPosition: function() {\n            var\n              input = $search.get(0),\n              range,\n              rangeLength\n            ;\n            if('selectionStart' in input) {\n              return input.selectionStart;\n            }\n            else if (document.selection) {\n              input.focus();\n              range       = document.selection.createRange();\n              rangeLength = range.text.length;\n              range.moveStart('character', -input.value.length);\n              return range.text.length - rangeLength;\n            }\n          },\n          value: function() {\n            var\n              value = ($input.length > 0)\n                ? $input.val()\n                : $module.data(metadata.value),\n              isEmptyMultiselect = ($.isArray(value) && value.length === 1 && value[0] === '')\n            ;\n            // prevents placeholder element from being selected when multiple\n            return (value === undefined || isEmptyMultiselect)\n              ? ''\n              : value\n            ;\n          },\n          values: function() {\n            var\n              value = module.get.value()\n            ;\n            if(value === '') {\n              return '';\n            }\n            return ( !module.has.selectInput() && module.is.multiple() )\n              ? (typeof value == 'string') // delimited string\n                ? value.split(settings.delimiter)\n                : ''\n              : value\n            ;\n          },\n          remoteValues: function() {\n            var\n              values = module.get.values(),\n              remoteValues = false\n            ;\n            if(values) {\n              if(typeof values == 'string') {\n                values = [values];\n              }\n              $.each(values, function(index, value) {\n                var\n                  name = module.read.remoteData(value)\n                ;\n                module.verbose('Restoring value from session data', name, value);\n                if(name) {\n                  if(!remoteValues) {\n                    remoteValues = {};\n                  }\n                  remoteValues[value] = name;\n                }\n              });\n            }\n            return remoteValues;\n          },\n          choiceText: function($choice, preserveHTML) {\n            preserveHTML = (preserveHTML !== undefined)\n              ? preserveHTML\n              : settings.preserveHTML\n            ;\n            if($choice) {\n              if($choice.find(selector.menu).length > 0) {\n                module.verbose('Retrieving text of element with sub-menu');\n                $choice = $choice.clone();\n                $choice.find(selector.menu).remove();\n                $choice.find(selector.menuIcon).remove();\n              }\n              return ($choice.data(metadata.text) !== undefined)\n                ? $choice.data(metadata.text)\n                : (preserveHTML)\n                  ? $.trim($choice.html())\n                  : $.trim($choice.text())\n              ;\n            }\n          },\n          choiceValue: function($choice, choiceText) {\n            choiceText = choiceText || module.get.choiceText($choice);\n            if(!$choice) {\n              return false;\n            }\n            return ($choice.data(metadata.value) !== undefined)\n              ? String( $choice.data(metadata.value) )\n              : (typeof choiceText === 'string')\n                ? $.trim(choiceText.toLowerCase())\n                : String(choiceText)\n            ;\n          },\n          inputEvent: function() {\n            var\n              input = $search[0]\n            ;\n            if(input) {\n              return (input.oninput !== undefined)\n                ? 'input'\n                : (input.onpropertychange !== undefined)\n                  ? 'propertychange'\n                  : 'keyup'\n              ;\n            }\n            return false;\n          },\n          selectValues: function() {\n            var\n              select = {}\n            ;\n            select.values = [];\n            $module\n              .find('option')\n                .each(function() {\n                  var\n                    $option  = $(this),\n                    name     = $option.html(),\n                    disabled = $option.attr('disabled'),\n                    value    = ( $option.attr('value') !== undefined )\n                      ? $option.attr('value')\n                      : name\n                  ;\n                  if(settings.placeholder === 'auto' && value === '') {\n                    select.placeholder = name;\n                  }\n                  else {\n                    select.values.push({\n                      name     : name,\n                      value    : value,\n                      disabled : disabled\n                    });\n                  }\n                })\n            ;\n            if(settings.placeholder && settings.placeholder !== 'auto') {\n              module.debug('Setting placeholder value to', settings.placeholder);\n              select.placeholder = settings.placeholder;\n            }\n            if(settings.sortSelect) {\n              select.values.sort(function(a, b) {\n                return (a.name > b.name)\n                  ? 1\n                  : -1\n                ;\n              });\n              module.debug('Retrieved and sorted values from select', select);\n            }\n            else {\n              module.debug('Retrieved values from select', select);\n            }\n            return select;\n          },\n          activeItem: function() {\n            return $item.filter('.'  + className.active);\n          },\n          selectedItem: function() {\n            var\n              $selectedItem = $item.not(selector.unselectable).filter('.'  + className.selected)\n            ;\n            return ($selectedItem.length > 0)\n              ? $selectedItem\n              : $item.eq(0)\n            ;\n          },\n          itemWithAdditions: function(value) {\n            var\n              $items       = module.get.item(value),\n              $userItems   = module.create.userChoice(value),\n              hasUserItems = ($userItems && $userItems.length > 0)\n            ;\n            if(hasUserItems) {\n              $items = ($items.length > 0)\n                ? $items.add($userItems)\n                : $userItems\n              ;\n            }\n            return $items;\n          },\n          item: function(value, strict) {\n            var\n              $selectedItem = false,\n              shouldSearch,\n              isMultiple\n            ;\n            value = (value !== undefined)\n              ? value\n              : ( module.get.values() !== undefined)\n                ? module.get.values()\n                : module.get.text()\n            ;\n            shouldSearch = (isMultiple)\n              ? (value.length > 0)\n              : (value !== undefined && value !== null)\n            ;\n            isMultiple = (module.is.multiple() && $.isArray(value));\n            strict     = (value === '' || value === 0)\n              ? true\n              : strict || false\n            ;\n            if(shouldSearch) {\n              $item\n                .each(function() {\n                  var\n                    $choice       = $(this),\n                    optionText    = module.get.choiceText($choice),\n                    optionValue   = module.get.choiceValue($choice, optionText)\n                  ;\n                  // safe early exit\n                  if(optionValue === null || optionValue === undefined) {\n                    return;\n                  }\n                  if(isMultiple) {\n                    if($.inArray( String(optionValue), value) !== -1 || $.inArray(optionText, value) !== -1) {\n                      $selectedItem = ($selectedItem)\n                        ? $selectedItem.add($choice)\n                        : $choice\n                      ;\n                    }\n                  }\n                  else if(strict) {\n                    module.verbose('Ambiguous dropdown value using strict type check', $choice, value);\n                    if( optionValue === value || optionText === value) {\n                      $selectedItem = $choice;\n                      return true;\n                    }\n                  }\n                  else {\n                    if( String(optionValue) == String(value) || optionText == value) {\n                      module.verbose('Found select item by value', optionValue, value);\n                      $selectedItem = $choice;\n                      return true;\n                    }\n                  }\n                })\n              ;\n            }\n            return $selectedItem;\n          }\n        },\n\n        check: {\n          maxSelections: function(selectionCount) {\n            if(settings.maxSelections) {\n              selectionCount = (selectionCount !== undefined)\n                ? selectionCount\n                : module.get.selectionCount()\n              ;\n              if(selectionCount >= settings.maxSelections) {\n                module.debug('Maximum selection count reached');\n                if(settings.useLabels) {\n                  $item.addClass(className.filtered);\n                  module.add.message(message.maxSelections);\n                }\n                return true;\n              }\n              else {\n                module.verbose('No longer at maximum selection count');\n                module.remove.message();\n                module.remove.filteredItem();\n                if(module.is.searchSelection()) {\n                  module.filterItems();\n                }\n                return false;\n              }\n            }\n            return true;\n          }\n        },\n\n        restore: {\n          defaults: function() {\n            module.clear();\n            module.restore.defaultText();\n            module.restore.defaultValue();\n          },\n          defaultText: function() {\n            var\n              defaultText     = module.get.defaultText(),\n              placeholderText = module.get.placeholderText\n            ;\n            if(defaultText === placeholderText) {\n              module.debug('Restoring default placeholder text', defaultText);\n              module.set.placeholderText(defaultText);\n            }\n            else {\n              module.debug('Restoring default text', defaultText);\n              module.set.text(defaultText);\n            }\n          },\n          placeholderText: function() {\n            module.set.placeholderText();\n          },\n          defaultValue: function() {\n            var\n              defaultValue = module.get.defaultValue()\n            ;\n            if(defaultValue !== undefined) {\n              module.debug('Restoring default value', defaultValue);\n              if(defaultValue !== '') {\n                module.set.value(defaultValue);\n                module.set.selected();\n              }\n              else {\n                module.remove.activeItem();\n                module.remove.selectedItem();\n              }\n            }\n          },\n          labels: function() {\n            if(settings.allowAdditions) {\n              if(!settings.useLabels) {\n                module.error(error.labels);\n                settings.useLabels = true;\n              }\n              module.debug('Restoring selected values');\n              module.create.userLabels();\n            }\n            module.check.maxSelections();\n          },\n          selected: function() {\n            module.restore.values();\n            if(module.is.multiple()) {\n              module.debug('Restoring previously selected values and labels');\n              module.restore.labels();\n            }\n            else {\n              module.debug('Restoring previously selected values');\n            }\n          },\n          values: function() {\n            // prevents callbacks from occurring on initial load\n            module.set.initialLoad();\n            if(settings.apiSettings && settings.saveRemoteData && module.get.remoteValues()) {\n              module.restore.remoteValues();\n            }\n            else {\n              module.set.selected();\n            }\n            module.remove.initialLoad();\n          },\n          remoteValues: function() {\n            var\n              values = module.get.remoteValues()\n            ;\n            module.debug('Recreating selected from session data', values);\n            if(values) {\n              if( module.is.single() ) {\n                $.each(values, function(value, name) {\n                  module.set.text(name);\n                });\n              }\n              else {\n                $.each(values, function(value, name) {\n                  module.add.label(value, name);\n                });\n              }\n            }\n          }\n        },\n\n        read: {\n          remoteData: function(value) {\n            var\n              name\n            ;\n            if(window.Storage === undefined) {\n              module.error(error.noStorage);\n              return;\n            }\n            name = sessionStorage.getItem(value);\n            return (name !== undefined)\n              ? name\n              : false\n            ;\n          }\n        },\n\n        save: {\n          defaults: function() {\n            module.save.defaultText();\n            module.save.placeholderText();\n            module.save.defaultValue();\n          },\n          defaultValue: function() {\n            var\n              value = module.get.value()\n            ;\n            module.verbose('Saving default value as', value);\n            $module.data(metadata.defaultValue, value);\n          },\n          defaultText: function() {\n            var\n              text = module.get.text()\n            ;\n            module.verbose('Saving default text as', text);\n            $module.data(metadata.defaultText, text);\n          },\n          placeholderText: function() {\n            var\n              text\n            ;\n            if(settings.placeholder !== false && $text.hasClass(className.placeholder)) {\n              text = module.get.text();\n              module.verbose('Saving placeholder text as', text);\n              $module.data(metadata.placeholderText, text);\n            }\n          },\n          remoteData: function(name, value) {\n            if(window.Storage === undefined) {\n              module.error(error.noStorage);\n              return;\n            }\n            module.verbose('Saving remote data to session storage', value, name);\n            sessionStorage.setItem(value, name);\n          }\n        },\n\n        clear: function() {\n          if(module.is.multiple() && settings.useLabels) {\n            module.remove.labels();\n          }\n          else {\n            module.remove.activeItem();\n            module.remove.selectedItem();\n          }\n          module.set.placeholderText();\n          module.clearValue();\n        },\n\n        clearValue: function() {\n          module.set.value('');\n        },\n\n        scrollPage: function(direction, $selectedItem) {\n          var\n            $currentItem  = $selectedItem || module.get.selectedItem(),\n            $menu         = $currentItem.closest(selector.menu),\n            menuHeight    = $menu.outerHeight(),\n            currentScroll = $menu.scrollTop(),\n            itemHeight    = $item.eq(0).outerHeight(),\n            itemsPerPage  = Math.floor(menuHeight / itemHeight),\n            maxScroll     = $menu.prop('scrollHeight'),\n            newScroll     = (direction == 'up')\n              ? currentScroll - (itemHeight * itemsPerPage)\n              : currentScroll + (itemHeight * itemsPerPage),\n            $selectableItem = $item.not(selector.unselectable),\n            isWithinRange,\n            $nextSelectedItem,\n            elementIndex\n          ;\n          elementIndex      = (direction == 'up')\n            ? $selectableItem.index($currentItem) - itemsPerPage\n            : $selectableItem.index($currentItem) + itemsPerPage\n          ;\n          isWithinRange = (direction == 'up')\n            ? (elementIndex >= 0)\n            : (elementIndex < $selectableItem.length)\n          ;\n          $nextSelectedItem = (isWithinRange)\n            ? $selectableItem.eq(elementIndex)\n            : (direction == 'up')\n              ? $selectableItem.first()\n              : $selectableItem.last()\n          ;\n          if($nextSelectedItem.length > 0) {\n            module.debug('Scrolling page', direction, $nextSelectedItem);\n            $currentItem\n              .removeClass(className.selected)\n            ;\n            $nextSelectedItem\n              .addClass(className.selected)\n            ;\n            if(settings.selectOnKeydown && module.is.single()) {\n              module.set.selectedItem($nextSelectedItem);\n            }\n            $menu\n              .scrollTop(newScroll)\n            ;\n          }\n        },\n\n        set: {\n          filtered: function() {\n            var\n              isMultiple       = module.is.multiple(),\n              isSearch         = module.is.searchSelection(),\n              isSearchMultiple = (isMultiple && isSearch),\n              searchValue      = (isSearch)\n                ? module.get.query()\n                : '',\n              hasSearchValue   = (typeof searchValue === 'string' && searchValue.length > 0),\n              searchWidth      = module.get.searchWidth(),\n              valueIsSet       = searchValue !== ''\n            ;\n            if(isMultiple && hasSearchValue) {\n              module.verbose('Adjusting input width', searchWidth, settings.glyphWidth);\n              $search.css('width', searchWidth);\n            }\n            if(hasSearchValue || (isSearchMultiple && valueIsSet)) {\n              module.verbose('Hiding placeholder text');\n              $text.addClass(className.filtered);\n            }\n            else if(!isMultiple || (isSearchMultiple && !valueIsSet)) {\n              module.verbose('Showing placeholder text');\n              $text.removeClass(className.filtered);\n            }\n          },\n          empty: function() {\n            $module.addClass(className.empty);\n          },\n          loading: function() {\n            $module.addClass(className.loading);\n          },\n          placeholderText: function(text) {\n            text = text || module.get.placeholderText();\n            module.debug('Setting placeholder text', text);\n            module.set.text(text);\n            $text.addClass(className.placeholder);\n          },\n          tabbable: function() {\n            if( module.is.searchSelection() ) {\n              module.debug('Added tabindex to searchable dropdown');\n              $search\n                .val('')\n                .attr('tabindex', 0)\n              ;\n              $menu\n                .attr('tabindex', -1)\n              ;\n            }\n            else {\n              module.debug('Added tabindex to dropdown');\n              if( $module.attr('tabindex') === undefined) {\n                $module\n                  .attr('tabindex', 0)\n                ;\n                $menu\n                  .attr('tabindex', -1)\n                ;\n              }\n            }\n          },\n          initialLoad: function() {\n            module.verbose('Setting initial load');\n            initialLoad = true;\n          },\n          activeItem: function($item) {\n            if( settings.allowAdditions && $item.filter(selector.addition).length > 0 ) {\n              $item.addClass(className.filtered);\n            }\n            else {\n              $item.addClass(className.active);\n            }\n          },\n          partialSearch: function(text) {\n            var\n              length = module.get.query().length\n            ;\n            $search.val( text.substr(0 , length));\n          },\n          scrollPosition: function($item, forceScroll) {\n            var\n              edgeTolerance = 5,\n              $menu,\n              hasActive,\n              offset,\n              itemHeight,\n              itemOffset,\n              menuOffset,\n              menuScroll,\n              menuHeight,\n              abovePage,\n              belowPage\n            ;\n\n            $item       = $item || module.get.selectedItem();\n            $menu       = $item.closest(selector.menu);\n            hasActive   = ($item && $item.length > 0);\n            forceScroll = (forceScroll !== undefined)\n              ? forceScroll\n              : false\n            ;\n            if($item && $menu.length > 0 && hasActive) {\n              itemOffset = $item.position().top;\n\n              $menu.addClass(className.loading);\n              menuScroll = $menu.scrollTop();\n              menuOffset = $menu.offset().top;\n              itemOffset = $item.offset().top;\n              offset     = menuScroll - menuOffset + itemOffset;\n              if(!forceScroll) {\n                menuHeight = $menu.height();\n                belowPage  = menuScroll + menuHeight < (offset + edgeTolerance);\n                abovePage  = ((offset - edgeTolerance) < menuScroll);\n              }\n              module.debug('Scrolling to active item', offset);\n              if(forceScroll || abovePage || belowPage) {\n                $menu.scrollTop(offset);\n              }\n              $menu.removeClass(className.loading);\n            }\n          },\n          text: function(text) {\n            if(settings.action !== 'select') {\n              if(settings.action == 'combo') {\n                module.debug('Changing combo button text', text, $combo);\n                if(settings.preserveHTML) {\n                  $combo.html(text);\n                }\n                else {\n                  $combo.text(text);\n                }\n              }\n              else {\n                if(text !== module.get.placeholderText()) {\n                  $text.removeClass(className.placeholder);\n                }\n                module.debug('Changing text', text, $text);\n                $text\n                  .removeClass(className.filtered)\n                ;\n                if(settings.preserveHTML) {\n                  $text.html(text);\n                }\n                else {\n                  $text.text(text);\n                }\n              }\n            }\n          },\n          selectedItem: function($item) {\n            var\n              value      = module.get.choiceValue($item),\n              searchText = module.get.choiceText($item, false),\n              text       = module.get.choiceText($item, true)\n            ;\n            module.debug('Setting user selection to item', $item);\n            module.remove.activeItem();\n            module.set.partialSearch(searchText);\n            module.set.activeItem($item);\n            module.set.selected(value, $item);\n            module.set.text(text);\n          },\n          selectedLetter: function(letter) {\n            var\n              $selectedItem         = $item.filter('.' + className.selected),\n              alreadySelectedLetter = $selectedItem.length > 0 && module.has.firstLetter($selectedItem, letter),\n              $nextValue            = false,\n              $nextItem\n            ;\n            // check next of same letter\n            if(alreadySelectedLetter) {\n              $nextItem = $selectedItem.nextAll($item).eq(0);\n              if( module.has.firstLetter($nextItem, letter) ) {\n                $nextValue  = $nextItem;\n              }\n            }\n            // check all values\n            if(!$nextValue) {\n              $item\n                .each(function(){\n                  if(module.has.firstLetter($(this), letter)) {\n                    $nextValue = $(this);\n                    return false;\n                  }\n                })\n              ;\n            }\n            // set next value\n            if($nextValue) {\n              module.verbose('Scrolling to next value with letter', letter);\n              module.set.scrollPosition($nextValue);\n              $selectedItem.removeClass(className.selected);\n              $nextValue.addClass(className.selected);\n              if(settings.selectOnKeydown && module.is.single()) {\n                module.set.selectedItem($nextValue);\n              }\n            }\n          },\n          direction: function($menu) {\n            if(settings.direction == 'auto') {\n              // reset position\n              module.remove.upward();\n\n              if(module.can.openDownward($menu)) {\n                module.remove.upward($menu);\n              }\n              else {\n                module.set.upward($menu);\n              }\n              if(!module.is.leftward($menu) && !module.can.openRightward($menu)) {\n                module.set.leftward($menu);\n              }\n            }\n            else if(settings.direction == 'upward') {\n              module.set.upward($menu);\n            }\n          },\n          upward: function($currentMenu) {\n            var $element = $currentMenu || $module;\n            $element.addClass(className.upward);\n          },\n          leftward: function($currentMenu) {\n            var $element = $currentMenu || $menu;\n            $element.addClass(className.leftward);\n          },\n          value: function(value, text, $selected) {\n            var\n              escapedValue = module.escape.value(value),\n              hasInput     = ($input.length > 0),\n              isAddition   = !module.has.value(value),\n              currentValue = module.get.values(),\n              stringValue  = (value !== undefined)\n                ? String(value)\n                : value,\n              newValue\n            ;\n            if(hasInput) {\n              if(!settings.allowReselection && stringValue == currentValue) {\n                module.verbose('Skipping value update already same value', value, currentValue);\n                if(!module.is.initialLoad()) {\n                  return;\n                }\n              }\n\n              if( module.is.single() && module.has.selectInput() && module.can.extendSelect() ) {\n                module.debug('Adding user option', value);\n                module.add.optionValue(value);\n              }\n              module.debug('Updating input value', escapedValue, currentValue);\n              internalChange = true;\n              $input\n                .val(escapedValue)\n              ;\n              if(settings.fireOnInit === false && module.is.initialLoad()) {\n                module.debug('Input native change event ignored on initial load');\n              }\n              else {\n                module.trigger.change();\n              }\n              internalChange = false;\n            }\n            else {\n              module.verbose('Storing value in metadata', escapedValue, $input);\n              if(escapedValue !== currentValue) {\n                $module.data(metadata.value, stringValue);\n              }\n            }\n            if(settings.fireOnInit === false && module.is.initialLoad()) {\n              module.verbose('No callback on initial load', settings.onChange);\n            }\n            else {\n              settings.onChange.call(element, value, text, $selected);\n            }\n          },\n          active: function() {\n            $module\n              .addClass(className.active)\n            ;\n          },\n          multiple: function() {\n            $module.addClass(className.multiple);\n          },\n          visible: function() {\n            $module.addClass(className.visible);\n          },\n          exactly: function(value, $selectedItem) {\n            module.debug('Setting selected to exact values');\n            module.clear();\n            module.set.selected(value, $selectedItem);\n          },\n          selected: function(value, $selectedItem) {\n            var\n              isMultiple = module.is.multiple(),\n              $userSelectedItem\n            ;\n            $selectedItem = (settings.allowAdditions)\n              ? $selectedItem || module.get.itemWithAdditions(value)\n              : $selectedItem || module.get.item(value)\n            ;\n            if(!$selectedItem) {\n              return;\n            }\n            module.debug('Setting selected menu item to', $selectedItem);\n            if(module.is.multiple()) {\n              module.remove.searchWidth();\n            }\n            if(module.is.single()) {\n              module.remove.activeItem();\n              module.remove.selectedItem();\n            }\n            else if(settings.useLabels) {\n              module.remove.selectedItem();\n            }\n            // select each item\n            $selectedItem\n              .each(function() {\n                var\n                  $selected      = $(this),\n                  selectedText   = module.get.choiceText($selected),\n                  selectedValue  = module.get.choiceValue($selected, selectedText),\n\n                  isFiltered     = $selected.hasClass(className.filtered),\n                  isActive       = $selected.hasClass(className.active),\n                  isUserValue    = $selected.hasClass(className.addition),\n                  shouldAnimate  = (isMultiple && $selectedItem.length == 1)\n                ;\n                if(isMultiple) {\n                  if(!isActive || isUserValue) {\n                    if(settings.apiSettings && settings.saveRemoteData) {\n                      module.save.remoteData(selectedText, selectedValue);\n                    }\n                    if(settings.useLabels) {\n                      module.add.value(selectedValue, selectedText, $selected);\n                      module.add.label(selectedValue, selectedText, shouldAnimate);\n                      module.set.activeItem($selected);\n                      module.filterActive();\n                      module.select.nextAvailable($selectedItem);\n                    }\n                    else {\n                      module.add.value(selectedValue, selectedText, $selected);\n                      module.set.text(module.add.variables(message.count));\n                      module.set.activeItem($selected);\n                    }\n                  }\n                  else if(!isFiltered) {\n                    module.debug('Selected active value, removing label');\n                    module.remove.selected(selectedValue);\n                  }\n                }\n                else {\n                  if(settings.apiSettings && settings.saveRemoteData) {\n                    module.save.remoteData(selectedText, selectedValue);\n                  }\n                  module.set.text(selectedText);\n                  module.set.value(selectedValue, selectedText, $selected);\n                  $selected\n                    .addClass(className.active)\n                    .addClass(className.selected)\n                  ;\n                }\n              })\n            ;\n          }\n        },\n\n        add: {\n          label: function(value, text, shouldAnimate) {\n            var\n              $next  = module.is.searchSelection()\n                ? $search\n                : $text,\n              escapedValue = module.escape.value(value),\n              $label\n            ;\n            $label =  $('<a />')\n              .addClass(className.label)\n              .attr('data-' + metadata.value, escapedValue)\n              .html(templates.label(escapedValue, text))\n            ;\n            $label = settings.onLabelCreate.call($label, escapedValue, text);\n\n            if(module.has.label(value)) {\n              module.debug('Label already exists, skipping', escapedValue);\n              return;\n            }\n            if(settings.label.variation) {\n              $label.addClass(settings.label.variation);\n            }\n            if(shouldAnimate === true) {\n              module.debug('Animating in label', $label);\n              $label\n                .addClass(className.hidden)\n                .insertBefore($next)\n                .transition(settings.label.transition, settings.label.duration)\n              ;\n            }\n            else {\n              module.debug('Adding selection label', $label);\n              $label\n                .insertBefore($next)\n              ;\n            }\n          },\n          message: function(message) {\n            var\n              $message = $menu.children(selector.message),\n              html     = settings.templates.message(module.add.variables(message))\n            ;\n            if($message.length > 0) {\n              $message\n                .html(html)\n              ;\n            }\n            else {\n              $message = $('<div/>')\n                .html(html)\n                .addClass(className.message)\n                .appendTo($menu)\n              ;\n            }\n          },\n          optionValue: function(value) {\n            var\n              escapedValue = module.escape.value(value),\n              $option      = $input.find('option[value=\"' + module.escape.string(escapedValue) + '\"]'),\n              hasOption    = ($option.length > 0)\n            ;\n            if(hasOption) {\n              return;\n            }\n            // temporarily disconnect observer\n            module.disconnect.selectObserver();\n            if( module.is.single() ) {\n              module.verbose('Removing previous user addition');\n              $input.find('option.' + className.addition).remove();\n            }\n            $('<option/>')\n              .prop('value', escapedValue)\n              .addClass(className.addition)\n              .html(value)\n              .appendTo($input)\n            ;\n            module.verbose('Adding user addition as an <option>', value);\n            module.observe.select();\n          },\n          userSuggestion: function(value) {\n            var\n              $addition         = $menu.children(selector.addition),\n              $existingItem     = module.get.item(value),\n              alreadyHasValue   = $existingItem && $existingItem.not(selector.addition).length,\n              hasUserSuggestion = $addition.length > 0,\n              html\n            ;\n            if(settings.useLabels && module.has.maxSelections()) {\n              return;\n            }\n            if(value === '' || alreadyHasValue) {\n              $addition.remove();\n              return;\n            }\n            if(hasUserSuggestion) {\n              $addition\n                .data(metadata.value, value)\n                .data(metadata.text, value)\n                .attr('data-' + metadata.value, value)\n                .attr('data-' + metadata.text, value)\n                .removeClass(className.filtered)\n              ;\n              if(!settings.hideAdditions) {\n                html = settings.templates.addition( module.add.variables(message.addResult, value) );\n                $addition\n                  .html(html)\n                ;\n              }\n              module.verbose('Replacing user suggestion with new value', $addition);\n            }\n            else {\n              $addition = module.create.userChoice(value);\n              $addition\n                .prependTo($menu)\n              ;\n              module.verbose('Adding item choice to menu corresponding with user choice addition', $addition);\n            }\n            if(!settings.hideAdditions || module.is.allFiltered()) {\n              $addition\n                .addClass(className.selected)\n                .siblings()\n                .removeClass(className.selected)\n              ;\n            }\n            module.refreshItems();\n          },\n          variables: function(message, term) {\n            var\n              hasCount    = (message.search('{count}') !== -1),\n              hasMaxCount = (message.search('{maxCount}') !== -1),\n              hasTerm     = (message.search('{term}') !== -1),\n              values,\n              count,\n              query\n            ;\n            module.verbose('Adding templated variables to message', message);\n            if(hasCount) {\n              count  = module.get.selectionCount();\n              message = message.replace('{count}', count);\n            }\n            if(hasMaxCount) {\n              count  = module.get.selectionCount();\n              message = message.replace('{maxCount}', settings.maxSelections);\n            }\n            if(hasTerm) {\n              query   = term || module.get.query();\n              message = message.replace('{term}', query);\n            }\n            return message;\n          },\n          value: function(addedValue, addedText, $selectedItem) {\n            var\n              currentValue = module.get.values(),\n              newValue\n            ;\n            if(addedValue === '') {\n              module.debug('Cannot select blank values from multiselect');\n              return;\n            }\n            // extend current array\n            if($.isArray(currentValue)) {\n              newValue = currentValue.concat([addedValue]);\n              newValue = module.get.uniqueArray(newValue);\n            }\n            else {\n              newValue = [addedValue];\n            }\n            // add values\n            if( module.has.selectInput() ) {\n              if(module.can.extendSelect()) {\n                module.debug('Adding value to select', addedValue, newValue, $input);\n                module.add.optionValue(addedValue);\n              }\n            }\n            else {\n              newValue = newValue.join(settings.delimiter);\n              module.debug('Setting hidden input to delimited value', newValue, $input);\n            }\n\n            if(settings.fireOnInit === false && module.is.initialLoad()) {\n              module.verbose('Skipping onadd callback on initial load', settings.onAdd);\n            }\n            else {\n              settings.onAdd.call(element, addedValue, addedText, $selectedItem);\n            }\n            module.set.value(newValue, addedValue, addedText, $selectedItem);\n            module.check.maxSelections();\n          }\n        },\n\n        remove: {\n          active: function() {\n            $module.removeClass(className.active);\n          },\n          activeLabel: function() {\n            $module.find(selector.label).removeClass(className.active);\n          },\n          empty: function() {\n            $module.removeClass(className.empty);\n          },\n          loading: function() {\n            $module.removeClass(className.loading);\n          },\n          initialLoad: function() {\n            initialLoad = false;\n          },\n          upward: function($currentMenu) {\n            var $element = $currentMenu || $module;\n            $element.removeClass(className.upward);\n          },\n          leftward: function($currentMenu) {\n            var $element = $currentMenu || $menu;\n            $element.removeClass(className.leftward);\n          },\n          visible: function() {\n            $module.removeClass(className.visible);\n          },\n          activeItem: function() {\n            $item.removeClass(className.active);\n          },\n          filteredItem: function() {\n            if(settings.useLabels && module.has.maxSelections() ) {\n              return;\n            }\n            if(settings.useLabels && module.is.multiple()) {\n              $item.not('.' + className.active).removeClass(className.filtered);\n            }\n            else {\n              $item.removeClass(className.filtered);\n            }\n            module.remove.empty();\n          },\n          optionValue: function(value) {\n            var\n              escapedValue = module.escape.value(value),\n              $option      = $input.find('option[value=\"' + module.escape.string(escapedValue) + '\"]'),\n              hasOption    = ($option.length > 0)\n            ;\n            if(!hasOption || !$option.hasClass(className.addition)) {\n              return;\n            }\n            // temporarily disconnect observer\n            if(selectObserver) {\n              selectObserver.disconnect();\n              module.verbose('Temporarily disconnecting mutation observer');\n            }\n            $option.remove();\n            module.verbose('Removing user addition as an <option>', escapedValue);\n            if(selectObserver) {\n              selectObserver.observe($input[0], {\n                childList : true,\n                subtree   : true\n              });\n            }\n          },\n          message: function() {\n            $menu.children(selector.message).remove();\n          },\n          searchWidth: function() {\n            $search.css('width', '');\n          },\n          searchTerm: function() {\n            module.verbose('Cleared search term');\n            $search.val('');\n            module.set.filtered();\n          },\n          userAddition: function() {\n            $item.filter(selector.addition).remove();\n          },\n          selected: function(value, $selectedItem) {\n            $selectedItem = (settings.allowAdditions)\n              ? $selectedItem || module.get.itemWithAdditions(value)\n              : $selectedItem || module.get.item(value)\n            ;\n\n            if(!$selectedItem) {\n              return false;\n            }\n\n            $selectedItem\n              .each(function() {\n                var\n                  $selected     = $(this),\n                  selectedText  = module.get.choiceText($selected),\n                  selectedValue = module.get.choiceValue($selected, selectedText)\n                ;\n                if(module.is.multiple()) {\n                  if(settings.useLabels) {\n                    module.remove.value(selectedValue, selectedText, $selected);\n                    module.remove.label(selectedValue);\n                  }\n                  else {\n                    module.remove.value(selectedValue, selectedText, $selected);\n                    if(module.get.selectionCount() === 0) {\n                      module.set.placeholderText();\n                    }\n                    else {\n                      module.set.text(module.add.variables(message.count));\n                    }\n                  }\n                }\n                else {\n                  module.remove.value(selectedValue, selectedText, $selected);\n                }\n                $selected\n                  .removeClass(className.filtered)\n                  .removeClass(className.active)\n                ;\n                if(settings.useLabels) {\n                  $selected.removeClass(className.selected);\n                }\n              })\n            ;\n          },\n          selectedItem: function() {\n            $item.removeClass(className.selected);\n          },\n          value: function(removedValue, removedText, $removedItem) {\n            var\n              values = module.get.values(),\n              newValue\n            ;\n            if( module.has.selectInput() ) {\n              module.verbose('Input is <select> removing selected option', removedValue);\n              newValue = module.remove.arrayValue(removedValue, values);\n              module.remove.optionValue(removedValue);\n            }\n            else {\n              module.verbose('Removing from delimited values', removedValue);\n              newValue = module.remove.arrayValue(removedValue, values);\n              newValue = newValue.join(settings.delimiter);\n            }\n            if(settings.fireOnInit === false && module.is.initialLoad()) {\n              module.verbose('No callback on initial load', settings.onRemove);\n            }\n            else {\n              settings.onRemove.call(element, removedValue, removedText, $removedItem);\n            }\n            module.set.value(newValue, removedText, $removedItem);\n            module.check.maxSelections();\n          },\n          arrayValue: function(removedValue, values) {\n            if( !$.isArray(values) ) {\n              values = [values];\n            }\n            values = $.grep(values, function(value){\n              return (removedValue != value);\n            });\n            module.verbose('Removed value from delimited string', removedValue, values);\n            return values;\n          },\n          label: function(value, shouldAnimate) {\n            var\n              $labels       = $module.find(selector.label),\n              $removedLabel = $labels.filter('[data-' + metadata.value + '=\"' + module.escape.string(value) +'\"]')\n            ;\n            module.verbose('Removing label', $removedLabel);\n            $removedLabel.remove();\n          },\n          activeLabels: function($activeLabels) {\n            $activeLabels = $activeLabels || $module.find(selector.label).filter('.' + className.active);\n            module.verbose('Removing active label selections', $activeLabels);\n            module.remove.labels($activeLabels);\n          },\n          labels: function($labels) {\n            $labels = $labels || $module.find(selector.label);\n            module.verbose('Removing labels', $labels);\n            $labels\n              .each(function(){\n                var\n                  $label      = $(this),\n                  value       = $label.data(metadata.value),\n                  stringValue = (value !== undefined)\n                    ? String(value)\n                    : value,\n                  isUserValue = module.is.userValue(stringValue)\n                ;\n                if(settings.onLabelRemove.call($label, value) === false) {\n                  module.debug('Label remove callback cancelled removal');\n                  return;\n                }\n                module.remove.message();\n                if(isUserValue) {\n                  module.remove.value(stringValue);\n                  module.remove.label(stringValue);\n                }\n                else {\n                  // selected will also remove label\n                  module.remove.selected(stringValue);\n                }\n              })\n            ;\n          },\n          tabbable: function() {\n            if( module.is.searchSelection() ) {\n              module.debug('Searchable dropdown initialized');\n              $search\n                .removeAttr('tabindex')\n              ;\n              $menu\n                .removeAttr('tabindex')\n              ;\n            }\n            else {\n              module.debug('Simple selection dropdown initialized');\n              $module\n                .removeAttr('tabindex')\n              ;\n              $menu\n                .removeAttr('tabindex')\n              ;\n            }\n          }\n        },\n\n        has: {\n          menuSearch: function() {\n            return (module.has.search() && $search.closest($menu).length > 0);\n          },\n          search: function() {\n            return ($search.length > 0);\n          },\n          sizer: function() {\n            return ($sizer.length > 0);\n          },\n          selectInput: function() {\n            return ( $input.is('select') );\n          },\n          minCharacters: function(searchTerm) {\n            if(settings.minCharacters) {\n              searchTerm = (searchTerm !== undefined)\n                ? String(searchTerm)\n                : String(module.get.query())\n              ;\n              return (searchTerm.length >= settings.minCharacters);\n            }\n            return true;\n          },\n          firstLetter: function($item, letter) {\n            var\n              text,\n              firstLetter\n            ;\n            if(!$item || $item.length === 0 || typeof letter !== 'string') {\n              return false;\n            }\n            text        = module.get.choiceText($item, false);\n            letter      = letter.toLowerCase();\n            firstLetter = String(text).charAt(0).toLowerCase();\n            return (letter == firstLetter);\n          },\n          input: function() {\n            return ($input.length > 0);\n          },\n          items: function() {\n            return ($item.length > 0);\n          },\n          menu: function() {\n            return ($menu.length > 0);\n          },\n          message: function() {\n            return ($menu.children(selector.message).length !== 0);\n          },\n          label: function(value) {\n            var\n              escapedValue = module.escape.value(value),\n              $labels      = $module.find(selector.label)\n            ;\n            return ($labels.filter('[data-' + metadata.value + '=\"' + module.escape.string(escapedValue) +'\"]').length > 0);\n          },\n          maxSelections: function() {\n            return (settings.maxSelections && module.get.selectionCount() >= settings.maxSelections);\n          },\n          allResultsFiltered: function() {\n            var\n              $normalResults = $item.not(selector.addition)\n            ;\n            return ($normalResults.filter(selector.unselectable).length === $normalResults.length);\n          },\n          userSuggestion: function() {\n            return ($menu.children(selector.addition).length > 0);\n          },\n          query: function() {\n            return (module.get.query() !== '');\n          },\n          value: function(value) {\n            var\n              values   = module.get.values(),\n              hasValue = $.isArray(values)\n               ? values && ($.inArray(value, values) !== -1)\n               : (values == value)\n            ;\n            return (hasValue)\n              ? true\n              : false\n            ;\n          }\n        },\n\n        is: {\n          active: function() {\n            return $module.hasClass(className.active);\n          },\n          bubbledLabelClick: function(event) {\n            return $(event.target).is('select, input') && $module.closest('label').length > 0;\n          },\n          bubbledIconClick: function(event) {\n            return $(event.target).closest($icon).length > 0;\n          },\n          alreadySetup: function() {\n            return ($module.is('select') && $module.parent(selector.dropdown).length > 0  && $module.prev().length === 0);\n          },\n          animating: function($subMenu) {\n            return ($subMenu)\n              ? $subMenu.transition && $subMenu.transition('is animating')\n              : $menu.transition    && $menu.transition('is animating')\n            ;\n          },\n          leftward: function($subMenu) {\n            var $selectedMenu = $subMenu || $menu;\n            return $selectedMenu.hasClass(className.leftward);\n          },\n          disabled: function() {\n            return $module.hasClass(className.disabled);\n          },\n          focused: function() {\n            return (document.activeElement === $module[0]);\n          },\n          focusedOnSearch: function() {\n            return (document.activeElement === $search[0]);\n          },\n          allFiltered: function() {\n            return( (module.is.multiple() || module.has.search()) && !(settings.hideAdditions == false && module.has.userSuggestion()) && !module.has.message() && module.has.allResultsFiltered() );\n          },\n          hidden: function($subMenu) {\n            return !module.is.visible($subMenu);\n          },\n          initialLoad: function() {\n            return initialLoad;\n          },\n          inObject: function(needle, object) {\n            var\n              found = false\n            ;\n            $.each(object, function(index, property) {\n              if(property == needle) {\n                found = true;\n                return true;\n              }\n            });\n            return found;\n          },\n          multiple: function() {\n            return $module.hasClass(className.multiple);\n          },\n          remote: function() {\n            return settings.apiSettings && module.can.useAPI();\n          },\n          single: function() {\n            return !module.is.multiple();\n          },\n          selectMutation: function(mutations) {\n            var\n              selectChanged = false\n            ;\n            $.each(mutations, function(index, mutation) {\n              if(mutation.target && $(mutation.target).is('select')) {\n                selectChanged = true;\n                return true;\n              }\n            });\n            return selectChanged;\n          },\n          search: function() {\n            return $module.hasClass(className.search);\n          },\n          searchSelection: function() {\n            return ( module.has.search() && $search.parent(selector.dropdown).length === 1 );\n          },\n          selection: function() {\n            return $module.hasClass(className.selection);\n          },\n          userValue: function(value) {\n            return ($.inArray(value, module.get.userValues()) !== -1);\n          },\n          upward: function($menu) {\n            var $element = $menu || $module;\n            return $element.hasClass(className.upward);\n          },\n          visible: function($subMenu) {\n            return ($subMenu)\n              ? $subMenu.hasClass(className.visible)\n              : $menu.hasClass(className.visible)\n            ;\n          },\n          verticallyScrollableContext: function() {\n            var\n              overflowY = ($context.get(0) !== window)\n                ? $context.css('overflow-y')\n                : false\n            ;\n            return (overflowY == 'auto' || overflowY == 'scroll');\n          },\n          horizontallyScrollableContext: function() {\n            var\n              overflowX = ($context.get(0) !== window)\n                ? $context.css('overflow-X')\n                : false\n            ;\n            return (overflowX == 'auto' || overflowX == 'scroll');\n          }\n        },\n\n        can: {\n          activate: function($item) {\n            if(settings.useLabels) {\n              return true;\n            }\n            if(!module.has.maxSelections()) {\n              return true;\n            }\n            if(module.has.maxSelections() && $item.hasClass(className.active)) {\n              return true;\n            }\n            return false;\n          },\n          openDownward: function($subMenu) {\n            var\n              $currentMenu    = $subMenu || $menu,\n              canOpenDownward = true,\n              onScreen        = {},\n              calculations\n            ;\n            $currentMenu\n              .addClass(className.loading)\n            ;\n            calculations = {\n              context: {\n                scrollTop : $context.scrollTop(),\n                height    : $context.outerHeight()\n              },\n              menu : {\n                offset: $currentMenu.offset(),\n                height: $currentMenu.outerHeight()\n              }\n            };\n            if(module.is.verticallyScrollableContext()) {\n              calculations.menu.offset.top += calculations.context.scrollTop;\n            }\n            onScreen = {\n              above : (calculations.context.scrollTop) <= calculations.menu.offset.top - calculations.menu.height,\n              below : (calculations.context.scrollTop + calculations.context.height) >= calculations.menu.offset.top + calculations.menu.height\n            };\n            if(onScreen.below) {\n              module.verbose('Dropdown can fit in context downward', onScreen);\n              canOpenDownward = true;\n            }\n            else if(!onScreen.below && !onScreen.above) {\n              module.verbose('Dropdown cannot fit in either direction, favoring downward', onScreen);\n              canOpenDownward = true;\n            }\n            else {\n              module.verbose('Dropdown cannot fit below, opening upward', onScreen);\n              canOpenDownward = false;\n            }\n            $currentMenu.removeClass(className.loading);\n            return canOpenDownward;\n          },\n          openRightward: function($subMenu) {\n            var\n              $currentMenu     = $subMenu || $menu,\n              canOpenRightward = true,\n              isOffscreenRight = false,\n              calculations\n            ;\n            $currentMenu\n              .addClass(className.loading)\n            ;\n            calculations = {\n              context: {\n                scrollLeft : $context.scrollLeft(),\n                width      : $context.outerWidth()\n              },\n              menu: {\n                offset : $currentMenu.offset(),\n                width  : $currentMenu.outerWidth()\n              }\n            };\n            if(module.is.horizontallyScrollableContext()) {\n              calculations.menu.offset.left += calculations.context.scrollLeft;\n            }\n            isOffscreenRight = (calculations.menu.offset.left + calculations.menu.width >= calculations.context.scrollLeft + calculations.context.width);\n            if(isOffscreenRight) {\n              module.verbose('Dropdown cannot fit in context rightward', isOffscreenRight);\n              canOpenRightward = false;\n            }\n            $currentMenu.removeClass(className.loading);\n            return canOpenRightward;\n          },\n          click: function() {\n            return (hasTouch || settings.on == 'click');\n          },\n          extendSelect: function() {\n            return settings.allowAdditions || settings.apiSettings;\n          },\n          show: function() {\n            return !module.is.disabled() && (module.has.items() || module.has.message());\n          },\n          useAPI: function() {\n            return $.fn.api !== undefined;\n          }\n        },\n\n        animate: {\n          show: function(callback, $subMenu) {\n            var\n              $currentMenu = $subMenu || $menu,\n              start = ($subMenu)\n                ? function() {}\n                : function() {\n                  module.hideSubMenus();\n                  module.hideOthers();\n                  module.set.active();\n                },\n              transition\n            ;\n            callback = $.isFunction(callback)\n              ? callback\n              : function(){}\n            ;\n            module.verbose('Doing menu show animation', $currentMenu);\n            module.set.direction($subMenu);\n            transition = module.get.transition($subMenu);\n            if( module.is.selection() ) {\n              module.set.scrollPosition(module.get.selectedItem(), true);\n            }\n            if( module.is.hidden($currentMenu) || module.is.animating($currentMenu) ) {\n              if(transition == 'none') {\n                start();\n                $currentMenu.transition('show');\n                callback.call(element);\n              }\n              else if($.fn.transition !== undefined && $module.transition('is supported')) {\n                $currentMenu\n                  .transition({\n                    animation  : transition + ' in',\n                    debug      : settings.debug,\n                    verbose    : settings.verbose,\n                    duration   : settings.duration,\n                    queue      : true,\n                    onStart    : start,\n                    onComplete : function() {\n                      callback.call(element);\n                    }\n                  })\n                ;\n              }\n              else {\n                module.error(error.noTransition, transition);\n              }\n            }\n          },\n          hide: function(callback, $subMenu) {\n            var\n              $currentMenu = $subMenu || $menu,\n              duration = ($subMenu)\n                ? (settings.duration * 0.9)\n                : settings.duration,\n              start = ($subMenu)\n                ? function() {}\n                : function() {\n                  if( module.can.click() ) {\n                    module.unbind.intent();\n                  }\n                  module.remove.active();\n                },\n              transition = module.get.transition($subMenu)\n            ;\n            callback = $.isFunction(callback)\n              ? callback\n              : function(){}\n            ;\n            if( module.is.visible($currentMenu) || module.is.animating($currentMenu) ) {\n              module.verbose('Doing menu hide animation', $currentMenu);\n\n              if(transition == 'none') {\n                start();\n                $currentMenu.transition('hide');\n                callback.call(element);\n              }\n              else if($.fn.transition !== undefined && $module.transition('is supported')) {\n                $currentMenu\n                  .transition({\n                    animation  : transition + ' out',\n                    duration   : settings.duration,\n                    debug      : settings.debug,\n                    verbose    : settings.verbose,\n                    queue      : true,\n                    onStart    : start,\n                    onComplete : function() {\n                      callback.call(element);\n                    }\n                  })\n                ;\n              }\n              else {\n                module.error(error.transition);\n              }\n            }\n          }\n        },\n\n        hideAndClear: function() {\n          module.remove.searchTerm();\n          if( module.has.maxSelections() ) {\n            return;\n          }\n          if(module.has.search()) {\n            module.hide(function() {\n              module.remove.filteredItem();\n            });\n          }\n          else {\n            module.hide();\n          }\n        },\n\n        delay: {\n          show: function() {\n            module.verbose('Delaying show event to ensure user intent');\n            clearTimeout(module.timer);\n            module.timer = setTimeout(module.show, settings.delay.show);\n          },\n          hide: function() {\n            module.verbose('Delaying hide event to ensure user intent');\n            clearTimeout(module.timer);\n            module.timer = setTimeout(module.hide, settings.delay.hide);\n          }\n        },\n\n        escape: {\n          value: function(value) {\n            var\n              multipleValues = $.isArray(value),\n              stringValue    = (typeof value === 'string'),\n              isUnparsable   = (!stringValue && !multipleValues),\n              hasQuotes      = (stringValue && value.search(regExp.quote) !== -1),\n              values         = []\n            ;\n            if(isUnparsable || !hasQuotes) {\n              return value;\n            }\n            module.debug('Encoding quote values for use in select', value);\n            if(multipleValues) {\n              $.each(value, function(index, value){\n                values.push(value.replace(regExp.quote, '&quot;'));\n              });\n              return values;\n            }\n            return value.replace(regExp.quote, '&quot;');\n          },\n          string: function(text) {\n            text =  String(text);\n            return text.replace(regExp.escape, '\\\\$&');\n          }\n        },\n\n        setting: function(name, value) {\n          module.debug('Changing setting', name, value);\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            if($.isPlainObject(settings[name])) {\n              $.extend(true, settings[name], value);\n            }\n            else {\n              settings[name] = value;\n            }\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                module.error(error.method, query);\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : $allModules\n  ;\n};\n\n$.fn.dropdown.settings = {\n\n  silent                 : false,\n  debug                  : false,\n  verbose                : false,\n  performance            : true,\n\n  on                     : 'click',    // what event should show menu action on item selection\n  action                 : 'activate', // action on item selection (nothing, activate, select, combo, hide, function(){})\n\n\n  apiSettings            : false,\n  selectOnKeydown        : true,       // Whether selection should occur automatically when keyboard shortcuts used\n  minCharacters          : 0,          // Minimum characters required to trigger API call\n\n  filterRemoteData       : false,      // Whether API results should be filtered after being returned for query term\n  saveRemoteData         : true,       // Whether remote name/value pairs should be stored in sessionStorage to allow remote data to be restored on page refresh\n\n  throttle               : 200,        // How long to wait after last user input to search remotely\n\n  context                : window,     // Context to use when determining if on screen\n  direction              : 'auto',     // Whether dropdown should always open in one direction\n  keepOnScreen           : true,       // Whether dropdown should check whether it is on screen before showing\n\n  match                  : 'both',     // what to match against with search selection (both, text, or label)\n  fullTextSearch         : false,      // search anywhere in value (set to 'exact' to require exact matches)\n\n  placeholder            : 'auto',     // whether to convert blank <select> values to placeholder text\n  preserveHTML           : true,       // preserve html when selecting value\n  sortSelect             : false,      // sort selection on init\n\n  forceSelection         : true,       // force a choice on blur with search selection\n\n  allowAdditions         : false,      // whether multiple select should allow user added values\n  hideAdditions          : true,      // whether or not to hide special message prompting a user they can enter a value\n\n  maxSelections          : false,      // When set to a number limits the number of selections to this count\n  useLabels              : true,       // whether multiple select should filter currently active selections from choices\n  delimiter              : ',',        // when multiselect uses normal <input> the values will be delimited with this character\n\n  showOnFocus            : true,       // show menu on focus\n  allowReselection       : false,      // whether current value should trigger callbacks when reselected\n  allowTab               : true,       // add tabindex to element\n  allowCategorySelection : false,      // allow elements with sub-menus to be selected\n\n  fireOnInit             : false,      // Whether callbacks should fire when initializing dropdown values\n\n  transition             : 'auto',     // auto transition will slide down or up based on direction\n  duration               : 200,        // duration of transition\n\n  glyphWidth             : 1.037,      // widest glyph width in em (W is 1.037 em) used to calculate multiselect input width\n\n  // label settings on multi-select\n  label: {\n    transition : 'scale',\n    duration   : 200,\n    variation  : false\n  },\n\n  // delay before event\n  delay : {\n    hide   : 300,\n    show   : 200,\n    search : 20,\n    touch  : 50\n  },\n\n  /* Callbacks */\n  onChange      : function(value, text, $selected){},\n  onAdd         : function(value, text, $selected){},\n  onRemove      : function(value, text, $selected){},\n\n  onLabelSelect : function($selectedLabels){},\n  onLabelCreate : function(value, text) { return $(this); },\n  onLabelRemove : function(value) { return true; },\n  onNoResults   : function(searchTerm) { return true; },\n  onShow        : function(){},\n  onHide        : function(){},\n\n  /* Component */\n  name           : 'Dropdown',\n  namespace      : 'dropdown',\n\n  message: {\n    addResult     : 'Add <b>{term}</b>',\n    count         : '{count} selected',\n    maxSelections : 'Max {maxCount} selections',\n    noResults     : 'No results found.',\n    serverError   : 'There was an error contacting the server'\n  },\n\n  error : {\n    action          : 'You called a dropdown action that was not defined',\n    alreadySetup    : 'Once a select has been initialized behaviors must be called on the created ui dropdown',\n    labels          : 'Allowing user additions currently requires the use of labels.',\n    missingMultiple : '<select> requires multiple property to be set to correctly preserve multiple values',\n    method          : 'The method you called is not defined.',\n    noAPI           : 'The API module is required to load resources remotely',\n    noStorage       : 'Saving remote data requires session storage',\n    noTransition    : 'This module requires ui transitions <https://github.com/Semantic-Org/UI-Transition>'\n  },\n\n  regExp : {\n    escape   : /[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\n    quote    : /\"/g\n  },\n\n  metadata : {\n    defaultText     : 'defaultText',\n    defaultValue    : 'defaultValue',\n    placeholderText : 'placeholder',\n    text            : 'text',\n    value           : 'value'\n  },\n\n  // property names for remote query\n  fields: {\n    remoteValues : 'results',  // grouping for api results\n    values       : 'values',   // grouping for all dropdown values\n    disabled     : 'disabled', // whether value should be disabled\n    name         : 'name',     // displayed dropdown text\n    value        : 'value',    // actual dropdown value\n    text         : 'text'      // displayed text when selected\n  },\n\n  keys : {\n    backspace  : 8,\n    delimiter  : 188, // comma\n    deleteKey  : 46,\n    enter      : 13,\n    escape     : 27,\n    pageUp     : 33,\n    pageDown   : 34,\n    leftArrow  : 37,\n    upArrow    : 38,\n    rightArrow : 39,\n    downArrow  : 40\n  },\n\n  selector : {\n    addition     : '.addition',\n    dropdown     : '.ui.dropdown',\n    hidden       : '.hidden',\n    icon         : '> .dropdown.icon',\n    input        : '> input[type=\"hidden\"], > select',\n    item         : '.item',\n    label        : '> .label',\n    remove       : '> .label > .delete.icon',\n    siblingLabel : '.label',\n    menu         : '.menu',\n    message      : '.message',\n    menuIcon     : '.dropdown.icon',\n    search       : 'input.search, .menu > .search > input, .menu input.search',\n    sizer        : '> input.sizer',\n    text         : '> .text:not(.icon)',\n    unselectable : '.disabled, .filtered'\n  },\n\n  className : {\n    active      : 'active',\n    addition    : 'addition',\n    animating   : 'animating',\n    disabled    : 'disabled',\n    empty       : 'empty',\n    dropdown    : 'ui dropdown',\n    filtered    : 'filtered',\n    hidden      : 'hidden transition',\n    item        : 'item',\n    label       : 'ui label',\n    loading     : 'loading',\n    menu        : 'menu',\n    message     : 'message',\n    multiple    : 'multiple',\n    placeholder : 'default',\n    sizer       : 'sizer',\n    search      : 'search',\n    selected    : 'selected',\n    selection   : 'selection',\n    upward      : 'upward',\n    leftward    : 'left',\n    visible     : 'visible'\n  }\n\n};\n\n/* Templates */\n$.fn.dropdown.settings.templates = {\n\n  // generates dropdown from select values\n  dropdown: function(select) {\n    var\n      placeholder = select.placeholder || false,\n      values      = select.values || {},\n      html        = ''\n    ;\n    html +=  '<i class=\"dropdown icon\"></i>';\n    if(select.placeholder) {\n      html += '<div class=\"default text\">' + placeholder + '</div>';\n    }\n    else {\n      html += '<div class=\"text\"></div>';\n    }\n    html += '<div class=\"menu\">';\n    $.each(select.values, function(index, option) {\n      html += (option.disabled)\n        ? '<div class=\"disabled item\" data-value=\"' + option.value + '\">' + option.name + '</div>'\n        : '<div class=\"item\" data-value=\"' + option.value + '\">' + option.name + '</div>'\n      ;\n    });\n    html += '</div>';\n    return html;\n  },\n\n  // generates just menu from select\n  menu: function(response, fields) {\n    var\n      values = response[fields.values] || {},\n      html   = ''\n    ;\n    $.each(values, function(index, option) {\n      var\n        maybeText = (option[fields.text])\n          ? 'data-text=\"' + option[fields.text] + '\"'\n          : '',\n        maybeDisabled = (option[fields.disabled])\n          ? 'disabled '\n          : ''\n      ;\n      html += '<div class=\"'+ maybeDisabled +'item\" data-value=\"' + option[fields.value] + '\"' + maybeText + '>'\n      html +=   option[fields.name];\n      html += '</div>';\n    });\n    return html;\n  },\n\n  // generates label for multiselect\n  label: function(value, text) {\n    return text + '<i class=\"delete icon\"></i>';\n  },\n\n\n  // generates messages like \"No results\"\n  message: function(message) {\n    return message;\n  },\n\n  // generates user addition to selection menu\n  addition: function(choice) {\n    return choice;\n  }\n\n};\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Embed\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.embed = function(parameters) {\n\n  var\n    $allModules     = $(this),\n\n    moduleSelector  = $allModules.selector || '',\n\n    time            = new Date().getTime(),\n    performance     = [],\n\n    query           = arguments[0],\n    methodInvoked   = (typeof query == 'string'),\n    queryArguments  = [].slice.call(arguments, 1),\n\n    returnedValue\n  ;\n\n  $allModules\n    .each(function() {\n      var\n        settings        = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.embed.settings, parameters)\n          : $.extend({}, $.fn.embed.settings),\n\n        selector        = settings.selector,\n        className       = settings.className,\n        sources         = settings.sources,\n        error           = settings.error,\n        metadata        = settings.metadata,\n        namespace       = settings.namespace,\n        templates       = settings.templates,\n\n        eventNamespace  = '.' + namespace,\n        moduleNamespace = 'module-' + namespace,\n\n        $window         = $(window),\n        $module         = $(this),\n        $placeholder    = $module.find(selector.placeholder),\n        $icon           = $module.find(selector.icon),\n        $embed          = $module.find(selector.embed),\n\n        element         = this,\n        instance        = $module.data(moduleNamespace),\n        module\n      ;\n\n      module = {\n\n        initialize: function() {\n          module.debug('Initializing embed');\n          module.determine.autoplay();\n          module.create();\n          module.bind.events();\n          module.instantiate();\n        },\n\n        instantiate: function() {\n          module.verbose('Storing instance of module', module);\n          instance = module;\n          $module\n            .data(moduleNamespace, module)\n          ;\n        },\n\n        destroy: function() {\n          module.verbose('Destroying previous instance of embed');\n          module.reset();\n          $module\n            .removeData(moduleNamespace)\n            .off(eventNamespace)\n          ;\n        },\n\n        refresh: function() {\n          module.verbose('Refreshing selector cache');\n          $placeholder = $module.find(selector.placeholder);\n          $icon        = $module.find(selector.icon);\n          $embed       = $module.find(selector.embed);\n        },\n\n        bind: {\n          events: function() {\n            if( module.has.placeholder() ) {\n              module.debug('Adding placeholder events');\n              $module\n                .on('click' + eventNamespace, selector.placeholder, module.createAndShow)\n                .on('click' + eventNamespace, selector.icon, module.createAndShow)\n              ;\n            }\n          }\n        },\n\n        create: function() {\n          var\n            placeholder = module.get.placeholder()\n          ;\n          if(placeholder) {\n            module.createPlaceholder();\n          }\n          else {\n            module.createAndShow();\n          }\n        },\n\n        createPlaceholder: function(placeholder) {\n          var\n            icon  = module.get.icon(),\n            url   = module.get.url(),\n            embed = module.generate.embed(url)\n          ;\n          placeholder = placeholder || module.get.placeholder();\n          $module.html( templates.placeholder(placeholder, icon) );\n          module.debug('Creating placeholder for embed', placeholder, icon);\n        },\n\n        createEmbed: function(url) {\n          module.refresh();\n          url = url || module.get.url();\n          $embed = $('<div/>')\n            .addClass(className.embed)\n            .html( module.generate.embed(url) )\n            .appendTo($module)\n          ;\n          settings.onCreate.call(element, url);\n          module.debug('Creating embed object', $embed);\n        },\n\n        changeEmbed: function(url) {\n          $embed\n            .html( module.generate.embed(url) )\n          ;\n        },\n\n        createAndShow: function() {\n          module.createEmbed();\n          module.show();\n        },\n\n        // sets new embed\n        change: function(source, id, url) {\n          module.debug('Changing video to ', source, id, url);\n          $module\n            .data(metadata.source, source)\n            .data(metadata.id, id)\n          ;\n          if(url) {\n            $module.data(metadata.url, url);\n          }\n          else {\n            $module.removeData(metadata.url);\n          }\n          if(module.has.embed()) {\n            module.changeEmbed();\n          }\n          else {\n            module.create();\n          }\n        },\n\n        // clears embed\n        reset: function() {\n          module.debug('Clearing embed and showing placeholder');\n          module.remove.active();\n          module.remove.embed();\n          module.showPlaceholder();\n          settings.onReset.call(element);\n        },\n\n        // shows current embed\n        show: function() {\n          module.debug('Showing embed');\n          module.set.active();\n          settings.onDisplay.call(element);\n        },\n\n        hide: function() {\n          module.debug('Hiding embed');\n          module.showPlaceholder();\n        },\n\n        showPlaceholder: function() {\n          module.debug('Showing placeholder image');\n          module.remove.active();\n          settings.onPlaceholderDisplay.call(element);\n        },\n\n        get: {\n          id: function() {\n            return settings.id || $module.data(metadata.id);\n          },\n          placeholder: function() {\n            return settings.placeholder || $module.data(metadata.placeholder);\n          },\n          icon: function() {\n            return (settings.icon)\n              ? settings.icon\n              : ($module.data(metadata.icon) !== undefined)\n                ? $module.data(metadata.icon)\n                : module.determine.icon()\n            ;\n          },\n          source: function(url) {\n            return (settings.source)\n              ? settings.source\n              : ($module.data(metadata.source) !== undefined)\n                ? $module.data(metadata.source)\n                : module.determine.source()\n            ;\n          },\n          type: function() {\n            var source = module.get.source();\n            return (sources[source] !== undefined)\n              ? sources[source].type\n              : false\n            ;\n          },\n          url: function() {\n            return (settings.url)\n              ? settings.url\n              : ($module.data(metadata.url) !== undefined)\n                ? $module.data(metadata.url)\n                : module.determine.url()\n            ;\n          }\n        },\n\n        determine: {\n          autoplay: function() {\n            if(module.should.autoplay()) {\n              settings.autoplay = true;\n            }\n          },\n          source: function(url) {\n            var\n              matchedSource = false\n            ;\n            url = url || module.get.url();\n            if(url) {\n              $.each(sources, function(name, source) {\n                if(url.search(source.domain) !== -1) {\n                  matchedSource = name;\n                  return false;\n                }\n              });\n            }\n            return matchedSource;\n          },\n          icon: function() {\n            var\n              source = module.get.source()\n            ;\n            return (sources[source] !== undefined)\n              ? sources[source].icon\n              : false\n            ;\n          },\n          url: function() {\n            var\n              id     = settings.id     || $module.data(metadata.id),\n              source = settings.source || $module.data(metadata.source),\n              url\n            ;\n            url = (sources[source] !== undefined)\n              ? sources[source].url.replace('{id}', id)\n              : false\n            ;\n            if(url) {\n              $module.data(metadata.url, url);\n            }\n            return url;\n          }\n        },\n\n\n        set: {\n          active: function() {\n            $module.addClass(className.active);\n          }\n        },\n\n        remove: {\n          active: function() {\n            $module.removeClass(className.active);\n          },\n          embed: function() {\n            $embed.empty();\n          }\n        },\n\n        encode: {\n          parameters: function(parameters) {\n            var\n              urlString = [],\n              index\n            ;\n            for (index in parameters) {\n              urlString.push( encodeURIComponent(index) + '=' + encodeURIComponent( parameters[index] ) );\n            }\n            return urlString.join('&amp;');\n          }\n        },\n\n        generate: {\n          embed: function(url) {\n            module.debug('Generating embed html');\n            var\n              source = module.get.source(),\n              html,\n              parameters\n            ;\n            url = module.get.url(url);\n            if(url) {\n              parameters = module.generate.parameters(source);\n              html       = templates.iframe(url, parameters);\n            }\n            else {\n              module.error(error.noURL, $module);\n            }\n            return html;\n          },\n          parameters: function(source, extraParameters) {\n            var\n              parameters = (sources[source] && sources[source].parameters !== undefined)\n                ? sources[source].parameters(settings)\n                : {}\n            ;\n            extraParameters = extraParameters || settings.parameters;\n            if(extraParameters) {\n              parameters = $.extend({}, parameters, extraParameters);\n            }\n            parameters = settings.onEmbed(parameters);\n            return module.encode.parameters(parameters);\n          }\n        },\n\n        has: {\n          embed: function() {\n            return ($embed.length > 0);\n          },\n          placeholder: function() {\n            return settings.placeholder || $module.data(metadata.placeholder);\n          }\n        },\n\n        should: {\n          autoplay: function() {\n            return (settings.autoplay === 'auto')\n              ? (settings.placeholder || $module.data(metadata.placeholder) !== undefined)\n              : settings.autoplay\n            ;\n          }\n        },\n\n        is: {\n          video: function() {\n            return module.get.type() == 'video';\n          }\n        },\n\n        setting: function(name, value) {\n          module.debug('Changing setting', name, value);\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            if($.isPlainObject(settings[name])) {\n              $.extend(true, settings[name], value);\n            }\n            else {\n              settings[name] = value;\n            }\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if($allModules.length > 1) {\n              title += ' ' + '(' + $allModules.length + ')';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                module.error(error.method, query);\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.embed.settings = {\n\n  name        : 'Embed',\n  namespace   : 'embed',\n\n  silent      : false,\n  debug       : false,\n  verbose     : false,\n  performance : true,\n\n  icon     : false,\n  source   : false,\n  url      : false,\n  id       : false,\n\n  // standard video settings\n  autoplay  : 'auto',\n  color     : '#444444',\n  hd        : true,\n  brandedUI : false,\n\n  // additional parameters to include with the embed\n  parameters: false,\n\n  onDisplay            : function() {},\n  onPlaceholderDisplay : function() {},\n  onReset              : function() {},\n  onCreate             : function(url) {},\n  onEmbed              : function(parameters) {\n    return parameters;\n  },\n\n  metadata    : {\n    id          : 'id',\n    icon        : 'icon',\n    placeholder : 'placeholder',\n    source      : 'source',\n    url         : 'url'\n  },\n\n  error : {\n    noURL  : 'No URL specified',\n    method : 'The method you called is not defined'\n  },\n\n  className : {\n    active : 'active',\n    embed  : 'embed'\n  },\n\n  selector : {\n    embed       : '.embed',\n    placeholder : '.placeholder',\n    icon        : '.icon'\n  },\n\n  sources: {\n    youtube: {\n      name   : 'youtube',\n      type   : 'video',\n      icon   : 'video play',\n      domain : 'youtube.com',\n      url    : '//www.youtube.com/embed/{id}',\n      parameters: function(settings) {\n        return {\n          autohide       : !settings.brandedUI,\n          autoplay       : settings.autoplay,\n          color          : settings.color || undefined,\n          hq             : settings.hd,\n          jsapi          : settings.api,\n          modestbranding : !settings.brandedUI\n        };\n      }\n    },\n    vimeo: {\n      name   : 'vimeo',\n      type   : 'video',\n      icon   : 'video play',\n      domain : 'vimeo.com',\n      url    : '//player.vimeo.com/video/{id}',\n      parameters: function(settings) {\n        return {\n          api      : settings.api,\n          autoplay : settings.autoplay,\n          byline   : settings.brandedUI,\n          color    : settings.color || undefined,\n          portrait : settings.brandedUI,\n          title    : settings.brandedUI\n        };\n      }\n    }\n  },\n\n  templates: {\n    iframe : function(url, parameters) {\n      var src = url;\n      if (parameters) {\n          src += '?' + parameters;\n      }\n      return ''\n        + '<iframe src=\"' + src + '\"'\n        + ' width=\"100%\" height=\"100%\"'\n        + ' frameborder=\"0\" scrolling=\"no\" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>'\n      ;\n    },\n    placeholder : function(image, icon) {\n      var\n        html = ''\n      ;\n      if(icon) {\n        html += '<i class=\"' + icon + ' icon\"></i>';\n      }\n      if(image) {\n        html += '<img class=\"placeholder\" src=\"' + image + '\">';\n      }\n      return html;\n    }\n  },\n\n  // NOT YET IMPLEMENTED\n  api     : false,\n  onPause : function() {},\n  onPlay  : function() {},\n  onStop  : function() {}\n\n};\n\n\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Modal\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.modal = function(parameters) {\n  var\n    $allModules    = $(this),\n    $window        = $(window),\n    $document      = $(document),\n    $body          = $('body'),\n\n    moduleSelector = $allModules.selector || '',\n\n    time           = new Date().getTime(),\n    performance    = [],\n\n    query          = arguments[0],\n    methodInvoked  = (typeof query == 'string'),\n    queryArguments = [].slice.call(arguments, 1),\n\n    requestAnimationFrame = window.requestAnimationFrame\n      || window.mozRequestAnimationFrame\n      || window.webkitRequestAnimationFrame\n      || window.msRequestAnimationFrame\n      || function(callback) { setTimeout(callback, 0); },\n\n    returnedValue\n  ;\n\n  $allModules\n    .each(function() {\n      var\n        settings    = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.modal.settings, parameters)\n          : $.extend({}, $.fn.modal.settings),\n\n        selector        = settings.selector,\n        className       = settings.className,\n        namespace       = settings.namespace,\n        error           = settings.error,\n\n        eventNamespace  = '.' + namespace,\n        moduleNamespace = 'module-' + namespace,\n\n        $module         = $(this),\n        $context        = $(settings.context),\n        $close          = $module.find(selector.close),\n\n        $allModals,\n        $otherModals,\n        $focusedElement,\n        $dimmable,\n        $dimmer,\n\n        element         = this,\n        instance        = $module.data(moduleNamespace),\n\n        ignoreRepeatedEvents = false,\n\n        elementEventNamespace,\n        id,\n        observer,\n        module\n      ;\n      module  = {\n\n        initialize: function() {\n          module.verbose('Initializing dimmer', $context);\n\n          module.create.id();\n          module.create.dimmer();\n          module.refreshModals();\n\n          module.bind.events();\n          if(settings.observeChanges) {\n            module.observeChanges();\n          }\n          module.instantiate();\n        },\n\n        instantiate: function() {\n          module.verbose('Storing instance of modal');\n          instance = module;\n          $module\n            .data(moduleNamespace, instance)\n          ;\n        },\n\n        create: {\n          dimmer: function() {\n            var\n              defaultSettings = {\n                debug      : settings.debug,\n                dimmerName : 'modals'\n              },\n              dimmerSettings = $.extend(true, defaultSettings, settings.dimmerSettings)\n            ;\n            if($.fn.dimmer === undefined) {\n              module.error(error.dimmer);\n              return;\n            }\n            module.debug('Creating dimmer');\n            $dimmable = $context.dimmer(dimmerSettings);\n            if(settings.detachable) {\n              module.verbose('Modal is detachable, moving content into dimmer');\n              $dimmable.dimmer('add content', $module);\n            }\n            else {\n              module.set.undetached();\n            }\n            $dimmer = $dimmable.dimmer('get dimmer');\n          },\n          id: function() {\n            id = (Math.random().toString(16) + '000000000').substr(2,8);\n            elementEventNamespace = '.' + id;\n            module.verbose('Creating unique id for element', id);\n          }\n        },\n\n        destroy: function() {\n          module.verbose('Destroying previous modal');\n          $module\n            .removeData(moduleNamespace)\n            .off(eventNamespace)\n          ;\n          $window.off(elementEventNamespace);\n          $dimmer.off(elementEventNamespace);\n          $close.off(eventNamespace);\n          $context.dimmer('destroy');\n        },\n\n        observeChanges: function() {\n          if('MutationObserver' in window) {\n            observer = new MutationObserver(function(mutations) {\n              module.debug('DOM tree modified, refreshing');\n              module.refresh();\n            });\n            observer.observe(element, {\n              childList : true,\n              subtree   : true\n            });\n            module.debug('Setting up mutation observer', observer);\n          }\n        },\n\n        refresh: function() {\n          module.remove.scrolling();\n          module.cacheSizes();\n          module.set.screenHeight();\n          module.set.type();\n          module.set.position();\n        },\n\n        refreshModals: function() {\n          $otherModals = $module.siblings(selector.modal);\n          $allModals   = $otherModals.add($module);\n        },\n\n        attachEvents: function(selector, event) {\n          var\n            $toggle = $(selector)\n          ;\n          event = $.isFunction(module[event])\n            ? module[event]\n            : module.toggle\n          ;\n          if($toggle.length > 0) {\n            module.debug('Attaching modal events to element', selector, event);\n            $toggle\n              .off(eventNamespace)\n              .on('click' + eventNamespace, event)\n            ;\n          }\n          else {\n            module.error(error.notFound, selector);\n          }\n        },\n\n        bind: {\n          events: function() {\n            module.verbose('Attaching events');\n            $module\n              .on('click' + eventNamespace, selector.close, module.event.close)\n              .on('click' + eventNamespace, selector.approve, module.event.approve)\n              .on('click' + eventNamespace, selector.deny, module.event.deny)\n            ;\n            $window\n              .on('resize' + elementEventNamespace, module.event.resize)\n            ;\n          }\n        },\n\n        get: {\n          id: function() {\n            return (Math.random().toString(16) + '000000000').substr(2,8);\n          }\n        },\n\n        event: {\n          approve: function() {\n            if(ignoreRepeatedEvents || settings.onApprove.call(element, $(this)) === false) {\n              module.verbose('Approve callback returned false cancelling hide');\n              return;\n            }\n            ignoreRepeatedEvents = true;\n            module.hide(function() {\n              ignoreRepeatedEvents = false;\n            });\n          },\n          deny: function() {\n            if(ignoreRepeatedEvents || settings.onDeny.call(element, $(this)) === false) {\n              module.verbose('Deny callback returned false cancelling hide');\n              return;\n            }\n            ignoreRepeatedEvents = true;\n            module.hide(function() {\n              ignoreRepeatedEvents = false;\n            });\n          },\n          close: function() {\n            module.hide();\n          },\n          click: function(event) {\n            var\n              $target   = $(event.target),\n              isInModal = ($target.closest(selector.modal).length > 0),\n              isInDOM   = $.contains(document.documentElement, event.target)\n            ;\n            if(!isInModal && isInDOM) {\n              module.debug('Dimmer clicked, hiding all modals');\n              if( module.is.active() ) {\n                module.remove.clickaway();\n                if(settings.allowMultiple) {\n                  module.hide();\n                }\n                else {\n                  module.hideAll();\n                }\n              }\n            }\n          },\n          debounce: function(method, delay) {\n            clearTimeout(module.timer);\n            module.timer = setTimeout(method, delay);\n          },\n          keyboard: function(event) {\n            var\n              keyCode   = event.which,\n              escapeKey = 27\n            ;\n            if(keyCode == escapeKey) {\n              if(settings.closable) {\n                module.debug('Escape key pressed hiding modal');\n                module.hide();\n              }\n              else {\n                module.debug('Escape key pressed, but closable is set to false');\n              }\n              event.preventDefault();\n            }\n          },\n          resize: function() {\n            if( $dimmable.dimmer('is active') && ( module.is.animating() || module.is.active() ) ) {\n              requestAnimationFrame(module.refresh);\n            }\n          }\n        },\n\n        toggle: function() {\n          if( module.is.active() || module.is.animating() ) {\n            module.hide();\n          }\n          else {\n            module.show();\n          }\n        },\n\n        show: function(callback) {\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          module.refreshModals();\n          module.set.dimmerSettings();\n          module.showModal(callback);\n        },\n\n        hide: function(callback) {\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          module.refreshModals();\n          module.hideModal(callback);\n        },\n\n        showModal: function(callback) {\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          if( module.is.animating() || !module.is.active() ) {\n\n            module.showDimmer();\n            module.cacheSizes();\n            module.set.position();\n            module.set.screenHeight();\n            module.set.type();\n            module.set.clickaway();\n\n            if( !settings.allowMultiple && module.others.active() ) {\n              module.hideOthers(module.showModal);\n            }\n            else {\n              settings.onShow.call(element);\n              if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {\n                module.debug('Showing modal with css animations');\n                $module\n                  .transition({\n                    debug       : settings.debug,\n                    animation   : settings.transition + ' in',\n                    queue       : settings.queue,\n                    duration    : settings.duration,\n                    useFailSafe : true,\n                    onComplete : function() {\n                      settings.onVisible.apply(element);\n                      if(settings.keyboardShortcuts) {\n                        module.add.keyboardShortcuts();\n                      }\n                      module.save.focus();\n                      module.set.active();\n                      if(settings.autofocus) {\n                        module.set.autofocus();\n                      }\n                      callback();\n                    }\n                  })\n                ;\n              }\n              else {\n                module.error(error.noTransition);\n              }\n            }\n          }\n          else {\n            module.debug('Modal is already visible');\n          }\n        },\n\n        hideModal: function(callback, keepDimmed) {\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          module.debug('Hiding modal');\n          if(settings.onHide.call(element, $(this)) === false) {\n            module.verbose('Hide callback returned false cancelling hide');\n            return;\n          }\n\n          if( module.is.animating() || module.is.active() ) {\n            if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {\n              module.remove.active();\n              $module\n                .transition({\n                  debug       : settings.debug,\n                  animation   : settings.transition + ' out',\n                  queue       : settings.queue,\n                  duration    : settings.duration,\n                  useFailSafe : true,\n                  onStart     : function() {\n                    if(!module.others.active() && !keepDimmed) {\n                      module.hideDimmer();\n                    }\n                    if(settings.keyboardShortcuts) {\n                      module.remove.keyboardShortcuts();\n                    }\n                  },\n                  onComplete : function() {\n                    settings.onHidden.call(element);\n                    module.restore.focus();\n                    callback();\n                  }\n                })\n              ;\n            }\n            else {\n              module.error(error.noTransition);\n            }\n          }\n        },\n\n        showDimmer: function() {\n          if($dimmable.dimmer('is animating') || !$dimmable.dimmer('is active') ) {\n            module.debug('Showing dimmer');\n            $dimmable.dimmer('show');\n          }\n          else {\n            module.debug('Dimmer already visible');\n          }\n        },\n\n        hideDimmer: function() {\n          if( $dimmable.dimmer('is animating') || ($dimmable.dimmer('is active')) ) {\n            $dimmable.dimmer('hide', function() {\n              module.remove.clickaway();\n              module.remove.screenHeight();\n            });\n          }\n          else {\n            module.debug('Dimmer is not visible cannot hide');\n            return;\n          }\n        },\n\n        hideAll: function(callback) {\n          var\n            $visibleModals = $allModals.filter('.' + className.active + ', .' + className.animating)\n          ;\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          if( $visibleModals.length > 0 ) {\n            module.debug('Hiding all visible modals');\n            module.hideDimmer();\n            $visibleModals\n              .modal('hide modal', callback)\n            ;\n          }\n        },\n\n        hideOthers: function(callback) {\n          var\n            $visibleModals = $otherModals.filter('.' + className.active + ', .' + className.animating)\n          ;\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          if( $visibleModals.length > 0 ) {\n            module.debug('Hiding other modals', $otherModals);\n            $visibleModals\n              .modal('hide modal', callback, true)\n            ;\n          }\n        },\n\n        others: {\n          active: function() {\n            return ($otherModals.filter('.' + className.active).length > 0);\n          },\n          animating: function() {\n            return ($otherModals.filter('.' + className.animating).length > 0);\n          }\n        },\n\n\n        add: {\n          keyboardShortcuts: function() {\n            module.verbose('Adding keyboard shortcuts');\n            $document\n              .on('keyup' + eventNamespace, module.event.keyboard)\n            ;\n          }\n        },\n\n        save: {\n          focus: function() {\n            $focusedElement = $(document.activeElement).blur();\n          }\n        },\n\n        restore: {\n          focus: function() {\n            if($focusedElement && $focusedElement.length > 0) {\n              $focusedElement.focus();\n            }\n          }\n        },\n\n        remove: {\n          active: function() {\n            $module.removeClass(className.active);\n          },\n          clickaway: function() {\n            if(settings.closable) {\n              $dimmer\n                .off('click' + elementEventNamespace)\n              ;\n            }\n          },\n          bodyStyle: function() {\n            if($body.attr('style') === '') {\n              module.verbose('Removing style attribute');\n              $body.removeAttr('style');\n            }\n          },\n          screenHeight: function() {\n            module.debug('Removing page height');\n            $body\n              .css('height', '')\n            ;\n          },\n          keyboardShortcuts: function() {\n            module.verbose('Removing keyboard shortcuts');\n            $document\n              .off('keyup' + eventNamespace)\n            ;\n          },\n          scrolling: function() {\n            $dimmable.removeClass(className.scrolling);\n            $module.removeClass(className.scrolling);\n          }\n        },\n\n        cacheSizes: function() {\n          var\n            modalHeight = $module.outerHeight()\n          ;\n          if(module.cache === undefined || modalHeight !== 0) {\n            module.cache = {\n              pageHeight    : $(document).outerHeight(),\n              height        : modalHeight + settings.offset,\n              contextHeight : (settings.context == 'body')\n                ? $(window).height()\n                : $dimmable.height()\n            };\n          }\n          module.debug('Caching modal and container sizes', module.cache);\n        },\n\n        can: {\n          fit: function() {\n            return ( ( module.cache.height + (settings.padding * 2) ) < module.cache.contextHeight);\n          }\n        },\n\n        is: {\n          active: function() {\n            return $module.hasClass(className.active);\n          },\n          animating: function() {\n            return $module.transition('is supported')\n              ? $module.transition('is animating')\n              : $module.is(':visible')\n            ;\n          },\n          scrolling: function() {\n            return $dimmable.hasClass(className.scrolling);\n          },\n          modernBrowser: function() {\n            // appName for IE11 reports 'Netscape' can no longer use\n            return !(window.ActiveXObject || \"ActiveXObject\" in window);\n          }\n        },\n\n        set: {\n          autofocus: function() {\n            var\n              $inputs    = $module.find('[tabindex], :input').filter(':visible'),\n              $autofocus = $inputs.filter('[autofocus]'),\n              $input     = ($autofocus.length > 0)\n                ? $autofocus.first()\n                : $inputs.first()\n            ;\n            if($input.length > 0) {\n              $input.focus();\n            }\n          },\n          clickaway: function() {\n            if(settings.closable) {\n              $dimmer\n                .on('click' + elementEventNamespace, module.event.click)\n              ;\n            }\n          },\n          dimmerSettings: function() {\n            if($.fn.dimmer === undefined) {\n              module.error(error.dimmer);\n              return;\n            }\n            var\n              defaultSettings = {\n                debug      : settings.debug,\n                dimmerName : 'modals',\n                variation  : false,\n                closable   : 'auto',\n                duration   : {\n                  show     : settings.duration,\n                  hide     : settings.duration\n                }\n              },\n              dimmerSettings = $.extend(true, defaultSettings, settings.dimmerSettings)\n            ;\n            if(settings.inverted) {\n              dimmerSettings.variation = (dimmerSettings.variation !== undefined)\n                ? dimmerSettings.variation + ' inverted'\n                : 'inverted'\n              ;\n              $dimmer.addClass(className.inverted);\n            }\n            else {\n              $dimmer.removeClass(className.inverted);\n            }\n            if(settings.blurring) {\n              $dimmable.addClass(className.blurring);\n            }\n            else {\n              $dimmable.removeClass(className.blurring);\n            }\n            $context.dimmer('setting', dimmerSettings);\n          },\n          screenHeight: function() {\n            if( module.can.fit() ) {\n              $body.css('height', '');\n            }\n            else {\n              module.debug('Modal is taller than page content, resizing page height');\n              $body\n                .css('height', module.cache.height + (settings.padding * 2) )\n              ;\n            }\n          },\n          active: function() {\n            $module.addClass(className.active);\n          },\n          scrolling: function() {\n            $dimmable.addClass(className.scrolling);\n            $module.addClass(className.scrolling);\n          },\n          type: function() {\n            if(module.can.fit()) {\n              module.verbose('Modal fits on screen');\n              if(!module.others.active() && !module.others.animating()) {\n                module.remove.scrolling();\n              }\n            }\n            else {\n              module.verbose('Modal cannot fit on screen setting to scrolling');\n              module.set.scrolling();\n            }\n          },\n          position: function() {\n            module.verbose('Centering modal on page', module.cache);\n            if(module.can.fit()) {\n              $module\n                .css({\n                  top: '',\n                  marginTop: -(module.cache.height / 2)\n                })\n              ;\n            }\n            else {\n              $module\n                .css({\n                  marginTop : '',\n                  top       : $document.scrollTop()\n                })\n              ;\n            }\n          },\n          undetached: function() {\n            $dimmable.addClass(className.undetached);\n          }\n        },\n\n        setting: function(name, value) {\n          module.debug('Changing setting', name, value);\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            if($.isPlainObject(settings[name])) {\n              $.extend(true, settings[name], value);\n            }\n            else {\n              settings[name] = value;\n            }\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.modal.settings = {\n\n  name           : 'Modal',\n  namespace      : 'modal',\n\n  silent         : false,\n  debug          : false,\n  verbose        : false,\n  performance    : true,\n\n  observeChanges : false,\n\n  allowMultiple  : false,\n  detachable     : true,\n  closable       : true,\n  autofocus      : true,\n\n  inverted       : false,\n  blurring       : false,\n\n  dimmerSettings : {\n    closable : false,\n    useCSS   : true\n  },\n\n  // whether to use keyboard shortcuts\n  keyboardShortcuts: true,\n\n  context    : 'body',\n\n  queue      : false,\n  duration   : 500,\n  offset     : 0,\n  transition : 'scale',\n\n  // padding with edge of page\n  padding    : 50,\n\n  // called before show animation\n  onShow     : function(){},\n\n  // called after show animation\n  onVisible  : function(){},\n\n  // called before hide animation\n  onHide     : function(){ return true; },\n\n  // called after hide animation\n  onHidden   : function(){},\n\n  // called after approve selector match\n  onApprove  : function(){ return true; },\n\n  // called after deny selector match\n  onDeny     : function(){ return true; },\n\n  selector    : {\n    close    : '> .close',\n    approve  : '.actions .positive, .actions .approve, .actions .ok',\n    deny     : '.actions .negative, .actions .deny, .actions .cancel',\n    modal    : '.ui.modal'\n  },\n  error : {\n    dimmer    : 'UI Dimmer, a required component is not included in this page',\n    method    : 'The method you called is not defined.',\n    notFound  : 'The element you specified could not be found'\n  },\n  className : {\n    active     : 'active',\n    animating  : 'animating',\n    blurring   : 'blurring',\n    inverted   : 'inverted',\n    scrolling  : 'scrolling',\n    undetached : 'undetached'\n  }\n};\n\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Nag\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.nag = function(parameters) {\n  var\n    $allModules    = $(this),\n    moduleSelector = $allModules.selector || '',\n\n    time           = new Date().getTime(),\n    performance    = [],\n\n    query          = arguments[0],\n    methodInvoked  = (typeof query == 'string'),\n    queryArguments = [].slice.call(arguments, 1),\n    returnedValue\n  ;\n  $allModules\n    .each(function() {\n      var\n        settings          = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.nag.settings, parameters)\n          : $.extend({}, $.fn.nag.settings),\n\n        className       = settings.className,\n        selector        = settings.selector,\n        error           = settings.error,\n        namespace       = settings.namespace,\n\n        eventNamespace  = '.' + namespace,\n        moduleNamespace = namespace + '-module',\n\n        $module         = $(this),\n\n        $close          = $module.find(selector.close),\n        $context        = (settings.context)\n          ? $(settings.context)\n          : $('body'),\n\n        element         = this,\n        instance        = $module.data(moduleNamespace),\n\n        moduleOffset,\n        moduleHeight,\n\n        contextWidth,\n        contextHeight,\n        contextOffset,\n\n        yOffset,\n        yPosition,\n\n        timer,\n        module,\n\n        requestAnimationFrame = window.requestAnimationFrame\n          || window.mozRequestAnimationFrame\n          || window.webkitRequestAnimationFrame\n          || window.msRequestAnimationFrame\n          || function(callback) { setTimeout(callback, 0); }\n      ;\n      module = {\n\n        initialize: function() {\n          module.verbose('Initializing element');\n\n          $module\n            .on('click' + eventNamespace, selector.close, module.dismiss)\n            .data(moduleNamespace, module)\n          ;\n\n          if(settings.detachable && $module.parent()[0] !== $context[0]) {\n            $module\n              .detach()\n              .prependTo($context)\n            ;\n          }\n\n          if(settings.displayTime > 0) {\n            setTimeout(module.hide, settings.displayTime);\n          }\n          module.show();\n        },\n\n        destroy: function() {\n          module.verbose('Destroying instance');\n          $module\n            .removeData(moduleNamespace)\n            .off(eventNamespace)\n          ;\n        },\n\n        show: function() {\n          if( module.should.show() && !$module.is(':visible') ) {\n            module.debug('Showing nag', settings.animation.show);\n            if(settings.animation.show == 'fade') {\n              $module\n                .fadeIn(settings.duration, settings.easing)\n              ;\n            }\n            else {\n              $module\n                .slideDown(settings.duration, settings.easing)\n              ;\n            }\n          }\n        },\n\n        hide: function() {\n          module.debug('Showing nag', settings.animation.hide);\n          if(settings.animation.show == 'fade') {\n            $module\n              .fadeIn(settings.duration, settings.easing)\n            ;\n          }\n          else {\n            $module\n              .slideUp(settings.duration, settings.easing)\n            ;\n          }\n        },\n\n        onHide: function() {\n          module.debug('Removing nag', settings.animation.hide);\n          $module.remove();\n          if (settings.onHide) {\n            settings.onHide();\n          }\n        },\n\n        dismiss: function(event) {\n          if(settings.storageMethod) {\n            module.storage.set(settings.key, settings.value);\n          }\n          module.hide();\n          event.stopImmediatePropagation();\n          event.preventDefault();\n        },\n\n        should: {\n          show: function() {\n            if(settings.persist) {\n              module.debug('Persistent nag is set, can show nag');\n              return true;\n            }\n            if( module.storage.get(settings.key) != settings.value.toString() ) {\n              module.debug('Stored value is not set, can show nag', module.storage.get(settings.key));\n              return true;\n            }\n            module.debug('Stored value is set, cannot show nag', module.storage.get(settings.key));\n            return false;\n          }\n        },\n\n        get: {\n          storageOptions: function() {\n            var\n              options = {}\n            ;\n            if(settings.expires) {\n              options.expires = settings.expires;\n            }\n            if(settings.domain) {\n              options.domain = settings.domain;\n            }\n            if(settings.path) {\n              options.path = settings.path;\n            }\n            return options;\n          }\n        },\n\n        clear: function() {\n          module.storage.remove(settings.key);\n        },\n\n        storage: {\n          set: function(key, value) {\n            var\n              options = module.get.storageOptions()\n            ;\n            if(settings.storageMethod == 'localstorage' && window.localStorage !== undefined) {\n              window.localStorage.setItem(key, value);\n              module.debug('Value stored using local storage', key, value);\n            }\n            else if(settings.storageMethod == 'sessionstorage' && window.sessionStorage !== undefined) {\n              window.sessionStorage.setItem(key, value);\n              module.debug('Value stored using session storage', key, value);\n            }\n            else if($.cookie !== undefined) {\n              $.cookie(key, value, options);\n              module.debug('Value stored using cookie', key, value, options);\n            }\n            else {\n              module.error(error.noCookieStorage);\n              return;\n            }\n          },\n          get: function(key, value) {\n            var\n              storedValue\n            ;\n            if(settings.storageMethod == 'localstorage' && window.localStorage !== undefined) {\n              storedValue = window.localStorage.getItem(key);\n            }\n            else if(settings.storageMethod == 'sessionstorage' && window.sessionStorage !== undefined) {\n              storedValue = window.sessionStorage.getItem(key);\n            }\n            // get by cookie\n            else if($.cookie !== undefined) {\n              storedValue = $.cookie(key);\n            }\n            else {\n              module.error(error.noCookieStorage);\n            }\n            if(storedValue == 'undefined' || storedValue == 'null' || storedValue === undefined || storedValue === null) {\n              storedValue = undefined;\n            }\n            return storedValue;\n          },\n          remove: function(key) {\n            var\n              options = module.get.storageOptions()\n            ;\n            if(settings.storageMethod == 'localstorage' && window.localStorage !== undefined) {\n              window.localStorage.removeItem(key);\n            }\n            else if(settings.storageMethod == 'sessionstorage' && window.sessionStorage !== undefined) {\n              window.sessionStorage.removeItem(key);\n            }\n            // store by cookie\n            else if($.cookie !== undefined) {\n              $.removeCookie(key, options);\n            }\n            else {\n              module.error(error.noStorage);\n            }\n          }\n        },\n\n        setting: function(name, value) {\n          module.debug('Changing setting', name, value);\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            if($.isPlainObject(settings[name])) {\n              $.extend(true, settings[name], value);\n            }\n            else {\n              settings[name] = value;\n            }\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                module.error(error.method, query);\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.nag.settings = {\n\n  name        : 'Nag',\n\n  silent      : false,\n  debug       : false,\n  verbose     : false,\n  performance : true,\n\n  namespace   : 'Nag',\n\n  // allows cookie to be overridden\n  persist     : false,\n\n  // set to zero to require manually dismissal, otherwise hides on its own\n  displayTime : 0,\n\n  animation   : {\n    show : 'slide',\n    hide : 'slide'\n  },\n\n  context       : false,\n  detachable    : false,\n\n  expires       : 30,\n  domain        : false,\n  path          : '/',\n\n  // type of storage to use\n  storageMethod : 'cookie',\n\n  // value to store in dismissed localstorage/cookie\n  key           : 'nag',\n  value         : 'dismiss',\n\n  error: {\n    noCookieStorage : '$.cookie is not included. A storage solution is required.',\n    noStorage       : 'Neither $.cookie or store is defined. A storage solution is required for storing state',\n    method          : 'The method you called is not defined.'\n  },\n\n  className     : {\n    bottom : 'bottom',\n    fixed  : 'fixed'\n  },\n\n  selector      : {\n    close : '.close.icon'\n  },\n\n  speed         : 500,\n  easing        : 'easeOutQuad',\n\n  onHide: function() {}\n\n};\n\n// Adds easing\n$.extend( $.easing, {\n  easeOutQuad: function (x, t, b, c, d) {\n    return -c *(t/=d)*(t-2) + b;\n  }\n});\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Popup\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.popup = function(parameters) {\n  var\n    $allModules    = $(this),\n    $document      = $(document),\n    $window        = $(window),\n    $body          = $('body'),\n\n    moduleSelector = $allModules.selector || '',\n\n    hasTouch       = (true),\n    time           = new Date().getTime(),\n    performance    = [],\n\n    query          = arguments[0],\n    methodInvoked  = (typeof query == 'string'),\n    queryArguments = [].slice.call(arguments, 1),\n\n    returnedValue\n  ;\n  $allModules\n    .each(function() {\n      var\n        settings        = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.popup.settings, parameters)\n          : $.extend({}, $.fn.popup.settings),\n\n        selector           = settings.selector,\n        className          = settings.className,\n        error              = settings.error,\n        metadata           = settings.metadata,\n        namespace          = settings.namespace,\n\n        eventNamespace     = '.' + settings.namespace,\n        moduleNamespace    = 'module-' + namespace,\n\n        $module            = $(this),\n        $context           = $(settings.context),\n        $scrollContext     = $(settings.scrollContext),\n        $boundary          = $(settings.boundary),\n        $target            = (settings.target)\n          ? $(settings.target)\n          : $module,\n\n        $popup,\n        $offsetParent,\n\n        searchDepth        = 0,\n        triedPositions     = false,\n        openedWithTouch    = false,\n\n        element            = this,\n        instance           = $module.data(moduleNamespace),\n\n        documentObserver,\n        elementNamespace,\n        id,\n        module\n      ;\n\n      module = {\n\n        // binds events\n        initialize: function() {\n          module.debug('Initializing', $module);\n          module.createID();\n          module.bind.events();\n          if(!module.exists() && settings.preserve) {\n            module.create();\n          }\n          if(settings.observeChanges) {\n            module.observeChanges();\n          }\n          module.instantiate();\n        },\n\n        instantiate: function() {\n          module.verbose('Storing instance', module);\n          instance = module;\n          $module\n            .data(moduleNamespace, instance)\n          ;\n        },\n\n        observeChanges: function() {\n          if('MutationObserver' in window) {\n            documentObserver = new MutationObserver(module.event.documentChanged);\n            documentObserver.observe(document, {\n              childList : true,\n              subtree   : true\n            });\n            module.debug('Setting up mutation observer', documentObserver);\n          }\n        },\n\n        refresh: function() {\n          if(settings.popup) {\n            $popup = $(settings.popup).eq(0);\n          }\n          else {\n            if(settings.inline) {\n              $popup = $target.nextAll(selector.popup).eq(0);\n              settings.popup = $popup;\n            }\n          }\n          if(settings.popup) {\n            $popup.addClass(className.loading);\n            $offsetParent = module.get.offsetParent($target);\n            $popup.removeClass(className.loading);\n            if(settings.movePopup && module.has.popup() && module.get.offsetParent($popup)[0] !== $offsetParent[0]) {\n              module.debug('Moving popup to the same offset parent as target');\n              $popup\n                .detach()\n                .appendTo($offsetParent)\n              ;\n            }\n          }\n          else {\n            $offsetParent = (settings.inline)\n              ? module.get.offsetParent($target)\n              : module.has.popup()\n                ? module.get.offsetParent($target)\n                : $body\n            ;\n          }\n          if( $offsetParent.is('html') && $offsetParent[0] !== $body[0] ) {\n            module.debug('Setting page as offset parent');\n            $offsetParent = $body;\n          }\n          if( module.get.variation() ) {\n            module.set.variation();\n          }\n        },\n\n        reposition: function() {\n          module.refresh();\n          module.set.position();\n        },\n\n        destroy: function() {\n          module.debug('Destroying previous module');\n          if(documentObserver) {\n            documentObserver.disconnect();\n          }\n          // remove element only if was created dynamically\n          if($popup && !settings.preserve) {\n            module.removePopup();\n          }\n          // clear all timeouts\n          clearTimeout(module.hideTimer);\n          clearTimeout(module.showTimer);\n          // remove events\n          module.unbind.close();\n          module.unbind.events();\n          $module\n            .removeData(moduleNamespace)\n          ;\n        },\n\n        event: {\n          start:  function(event) {\n            var\n              delay = ($.isPlainObject(settings.delay))\n                ? settings.delay.show\n                : settings.delay\n            ;\n            clearTimeout(module.hideTimer);\n            if(!openedWithTouch) {\n              module.showTimer = setTimeout(module.show, delay);\n            }\n          },\n          end:  function() {\n            var\n              delay = ($.isPlainObject(settings.delay))\n                ? settings.delay.hide\n                : settings.delay\n            ;\n            clearTimeout(module.showTimer);\n            module.hideTimer = setTimeout(module.hide, delay);\n          },\n          touchstart: function(event) {\n            openedWithTouch = true;\n            module.show();\n          },\n          resize: function() {\n            if( module.is.visible() ) {\n              module.set.position();\n            }\n          },\n          documentChanged: function(mutations) {\n            [].forEach.call(mutations, function(mutation) {\n              if(mutation.removedNodes) {\n                [].forEach.call(mutation.removedNodes, function(node) {\n                  if(node == element || $(node).find(element).length > 0) {\n                    module.debug('Element removed from DOM, tearing down events');\n                    module.destroy();\n                  }\n                });\n              }\n            });\n          },\n          hideGracefully: function(event) {\n            var\n              $target = $(event.target),\n              isInDOM = $.contains(document.documentElement, event.target),\n              inPopup = ($target.closest(selector.popup).length > 0)\n            ;\n            // don't close on clicks inside popup\n            if(event && !inPopup && isInDOM) {\n              module.debug('Click occurred outside popup hiding popup');\n              module.hide();\n            }\n            else {\n              module.debug('Click was inside popup, keeping popup open');\n            }\n          }\n        },\n\n        // generates popup html from metadata\n        create: function() {\n          var\n            html      = module.get.html(),\n            title     = module.get.title(),\n            content   = module.get.content()\n          ;\n\n          if(html || content || title) {\n            module.debug('Creating pop-up html');\n            if(!html) {\n              html = settings.templates.popup({\n                title   : title,\n                content : content\n              });\n            }\n            $popup = $('<div/>')\n              .addClass(className.popup)\n              .data(metadata.activator, $module)\n              .html(html)\n            ;\n            if(settings.inline) {\n              module.verbose('Inserting popup element inline', $popup);\n              $popup\n                .insertAfter($module)\n              ;\n            }\n            else {\n              module.verbose('Appending popup element to body', $popup);\n              $popup\n                .appendTo( $context )\n              ;\n            }\n            module.refresh();\n            module.set.variation();\n\n            if(settings.hoverable) {\n              module.bind.popup();\n            }\n            settings.onCreate.call($popup, element);\n          }\n          else if($target.next(selector.popup).length !== 0) {\n            module.verbose('Pre-existing popup found');\n            settings.inline = true;\n            settings.popup  = $target.next(selector.popup).data(metadata.activator, $module);\n            module.refresh();\n            if(settings.hoverable) {\n              module.bind.popup();\n            }\n          }\n          else if(settings.popup) {\n            $(settings.popup).data(metadata.activator, $module);\n            module.verbose('Used popup specified in settings');\n            module.refresh();\n            if(settings.hoverable) {\n              module.bind.popup();\n            }\n          }\n          else {\n            module.debug('No content specified skipping display', element);\n          }\n        },\n\n        createID: function() {\n          id = (Math.random().toString(16) + '000000000').substr(2, 8);\n          elementNamespace = '.' + id;\n          module.verbose('Creating unique id for element', id);\n        },\n\n        // determines popup state\n        toggle: function() {\n          module.debug('Toggling pop-up');\n          if( module.is.hidden() ) {\n            module.debug('Popup is hidden, showing pop-up');\n            module.unbind.close();\n            module.show();\n          }\n          else {\n            module.debug('Popup is visible, hiding pop-up');\n            module.hide();\n          }\n        },\n\n        show: function(callback) {\n          callback = callback || function(){};\n          module.debug('Showing pop-up', settings.transition);\n          if(module.is.hidden() && !( module.is.active() && module.is.dropdown()) ) {\n            if( !module.exists() ) {\n              module.create();\n            }\n            if(settings.onShow.call($popup, element) === false) {\n              module.debug('onShow callback returned false, cancelling popup animation');\n              return;\n            }\n            else if(!settings.preserve && !settings.popup) {\n              module.refresh();\n            }\n            if( $popup && module.set.position() ) {\n              module.save.conditions();\n              if(settings.exclusive) {\n                module.hideAll();\n              }\n              module.animate.show(callback);\n            }\n          }\n        },\n\n\n        hide: function(callback) {\n          callback = callback || function(){};\n          if( module.is.visible() || module.is.animating() ) {\n            if(settings.onHide.call($popup, element) === false) {\n              module.debug('onHide callback returned false, cancelling popup animation');\n              return;\n            }\n            module.remove.visible();\n            module.unbind.close();\n            module.restore.conditions();\n            module.animate.hide(callback);\n          }\n        },\n\n        hideAll: function() {\n          $(selector.popup)\n            .filter('.' + className.popupVisible)\n            .each(function() {\n              $(this)\n                .data(metadata.activator)\n                  .popup('hide')\n              ;\n            })\n          ;\n        },\n        exists: function() {\n          if(!$popup) {\n            return false;\n          }\n          if(settings.inline || settings.popup) {\n            return ( module.has.popup() );\n          }\n          else {\n            return ( $popup.closest($context).length >= 1 )\n              ? true\n              : false\n            ;\n          }\n        },\n\n        removePopup: function() {\n          if( module.has.popup() && !settings.popup) {\n            module.debug('Removing popup', $popup);\n            $popup.remove();\n            $popup = undefined;\n            settings.onRemove.call($popup, element);\n          }\n        },\n\n        save: {\n          conditions: function() {\n            module.cache = {\n              title: $module.attr('title')\n            };\n            if (module.cache.title) {\n              $module.removeAttr('title');\n            }\n            module.verbose('Saving original attributes', module.cache.title);\n          }\n        },\n        restore: {\n          conditions: function() {\n            if(module.cache && module.cache.title) {\n              $module.attr('title', module.cache.title);\n              module.verbose('Restoring original attributes', module.cache.title);\n            }\n            return true;\n          }\n        },\n        supports: {\n          svg: function() {\n            return (typeof SVGGraphicsElement === 'undefined');\n          }\n        },\n        animate: {\n          show: function(callback) {\n            callback = $.isFunction(callback) ? callback : function(){};\n            if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {\n              module.set.visible();\n              $popup\n                .transition({\n                  animation  : settings.transition + ' in',\n                  queue      : false,\n                  debug      : settings.debug,\n                  verbose    : settings.verbose,\n                  duration   : settings.duration,\n                  onComplete : function() {\n                    module.bind.close();\n                    callback.call($popup, element);\n                    settings.onVisible.call($popup, element);\n                  }\n                })\n              ;\n            }\n            else {\n              module.error(error.noTransition);\n            }\n          },\n          hide: function(callback) {\n            callback = $.isFunction(callback) ? callback : function(){};\n            module.debug('Hiding pop-up');\n            if(settings.onHide.call($popup, element) === false) {\n              module.debug('onHide callback returned false, cancelling popup animation');\n              return;\n            }\n            if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {\n              $popup\n                .transition({\n                  animation  : settings.transition + ' out',\n                  queue      : false,\n                  duration   : settings.duration,\n                  debug      : settings.debug,\n                  verbose    : settings.verbose,\n                  onComplete : function() {\n                    module.reset();\n                    callback.call($popup, element);\n                    settings.onHidden.call($popup, element);\n                  }\n                })\n              ;\n            }\n            else {\n              module.error(error.noTransition);\n            }\n          }\n        },\n\n        change: {\n          content: function(html) {\n            $popup.html(html);\n          }\n        },\n\n        get: {\n          html: function() {\n            $module.removeData(metadata.html);\n            return $module.data(metadata.html) || settings.html;\n          },\n          title: function() {\n            $module.removeData(metadata.title);\n            return $module.data(metadata.title) || settings.title;\n          },\n          content: function() {\n            $module.removeData(metadata.content);\n            return $module.data(metadata.content) || $module.attr('title') || settings.content;\n          },\n          variation: function() {\n            $module.removeData(metadata.variation);\n            return $module.data(metadata.variation) || settings.variation;\n          },\n          popup: function() {\n            return $popup;\n          },\n          popupOffset: function() {\n            return $popup.offset();\n          },\n          calculations: function() {\n            var\n              targetElement    = $target[0],\n              isWindow         = ($boundary[0] == window),\n              targetPosition   = (settings.inline || (settings.popup && settings.movePopup))\n                ? $target.position()\n                : $target.offset(),\n              screenPosition = (isWindow)\n                ? { top: 0, left: 0 }\n                : $boundary.offset(),\n              calculations   = {},\n              scroll = (isWindow)\n                ? { top: $window.scrollTop(), left: $window.scrollLeft() }\n                : { top: 0, left: 0},\n              screen\n            ;\n            calculations = {\n              // element which is launching popup\n              target : {\n                element : $target[0],\n                width   : $target.outerWidth(),\n                height  : $target.outerHeight(),\n                top     : targetPosition.top,\n                left    : targetPosition.left,\n                margin  : {}\n              },\n              // popup itself\n              popup : {\n                width  : $popup.outerWidth(),\n                height : $popup.outerHeight()\n              },\n              // offset container (or 3d context)\n              parent : {\n                width  : $offsetParent.outerWidth(),\n                height : $offsetParent.outerHeight()\n              },\n              // screen boundaries\n              screen : {\n                top  : screenPosition.top,\n                left : screenPosition.left,\n                scroll: {\n                  top  : scroll.top,\n                  left : scroll.left\n                },\n                width  : $boundary.width(),\n                height : $boundary.height()\n              }\n            };\n\n            // add in container calcs if fluid\n            if( settings.setFluidWidth && module.is.fluid() ) {\n              calculations.container = {\n                width: $popup.parent().outerWidth()\n              };\n              calculations.popup.width = calculations.container.width;\n            }\n\n            // add in margins if inline\n            calculations.target.margin.top = (settings.inline)\n              ? parseInt( window.getComputedStyle(targetElement).getPropertyValue('margin-top'), 10)\n              : 0\n            ;\n            calculations.target.margin.left = (settings.inline)\n              ? module.is.rtl()\n                ? parseInt( window.getComputedStyle(targetElement).getPropertyValue('margin-right'), 10)\n                : parseInt( window.getComputedStyle(targetElement).getPropertyValue('margin-left'), 10)\n              : 0\n            ;\n            // calculate screen boundaries\n            screen = calculations.screen;\n            calculations.boundary = {\n              top    : screen.top + screen.scroll.top,\n              bottom : screen.top + screen.scroll.top + screen.height,\n              left   : screen.left + screen.scroll.left,\n              right  : screen.left + screen.scroll.left + screen.width\n            };\n            return calculations;\n          },\n          id: function() {\n            return id;\n          },\n          startEvent: function() {\n            if(settings.on == 'hover') {\n              return 'mouseenter';\n            }\n            else if(settings.on == 'focus') {\n              return 'focus';\n            }\n            return false;\n          },\n          scrollEvent: function() {\n            return 'scroll';\n          },\n          endEvent: function() {\n            if(settings.on == 'hover') {\n              return 'mouseleave';\n            }\n            else if(settings.on == 'focus') {\n              return 'blur';\n            }\n            return false;\n          },\n          distanceFromBoundary: function(offset, calculations) {\n            var\n              distanceFromBoundary = {},\n              popup,\n              boundary\n            ;\n            calculations = calculations || module.get.calculations();\n\n            // shorthand\n            popup        = calculations.popup;\n            boundary     = calculations.boundary;\n\n            if(offset) {\n              distanceFromBoundary = {\n                top    : (offset.top - boundary.top),\n                left   : (offset.left - boundary.left),\n                right  : (boundary.right - (offset.left + popup.width) ),\n                bottom : (boundary.bottom - (offset.top + popup.height) )\n              };\n              module.verbose('Distance from boundaries determined', offset, distanceFromBoundary);\n            }\n            return distanceFromBoundary;\n          },\n          offsetParent: function($target) {\n            var\n              element = ($target !== undefined)\n                ? $target[0]\n                : $module[0],\n              parentNode = element.parentNode,\n              $node    = $(parentNode)\n            ;\n            if(parentNode) {\n              var\n                is2D     = ($node.css('transform') === 'none'),\n                isStatic = ($node.css('position') === 'static'),\n                isHTML   = $node.is('html')\n              ;\n              while(parentNode && !isHTML && isStatic && is2D) {\n                parentNode = parentNode.parentNode;\n                $node    = $(parentNode);\n                is2D     = ($node.css('transform') === 'none');\n                isStatic = ($node.css('position') === 'static');\n                isHTML   = $node.is('html');\n              }\n            }\n            return ($node && $node.length > 0)\n              ? $node\n              : $()\n            ;\n          },\n          positions: function() {\n            return {\n              'top left'      : false,\n              'top center'    : false,\n              'top right'     : false,\n              'bottom left'   : false,\n              'bottom center' : false,\n              'bottom right'  : false,\n              'left center'   : false,\n              'right center'  : false\n            };\n          },\n          nextPosition: function(position) {\n            var\n              positions          = position.split(' '),\n              verticalPosition   = positions[0],\n              horizontalPosition = positions[1],\n              opposite = {\n                top    : 'bottom',\n                bottom : 'top',\n                left   : 'right',\n                right  : 'left'\n              },\n              adjacent = {\n                left   : 'center',\n                center : 'right',\n                right  : 'left'\n              },\n              backup = {\n                'top left'      : 'top center',\n                'top center'    : 'top right',\n                'top right'     : 'right center',\n                'right center'  : 'bottom right',\n                'bottom right'  : 'bottom center',\n                'bottom center' : 'bottom left',\n                'bottom left'   : 'left center',\n                'left center'   : 'top left'\n              },\n              adjacentsAvailable = (verticalPosition == 'top' || verticalPosition == 'bottom'),\n              oppositeTried = false,\n              adjacentTried = false,\n              nextPosition  = false\n            ;\n            if(!triedPositions) {\n              module.verbose('All available positions available');\n              triedPositions = module.get.positions();\n            }\n\n            module.debug('Recording last position tried', position);\n            triedPositions[position] = true;\n\n            if(settings.prefer === 'opposite') {\n              nextPosition  = [opposite[verticalPosition], horizontalPosition];\n              nextPosition  = nextPosition.join(' ');\n              oppositeTried = (triedPositions[nextPosition] === true);\n              module.debug('Trying opposite strategy', nextPosition);\n            }\n            if((settings.prefer === 'adjacent') && adjacentsAvailable ) {\n              nextPosition  = [verticalPosition, adjacent[horizontalPosition]];\n              nextPosition  = nextPosition.join(' ');\n              adjacentTried = (triedPositions[nextPosition] === true);\n              module.debug('Trying adjacent strategy', nextPosition);\n            }\n            if(adjacentTried || oppositeTried) {\n              module.debug('Using backup position', nextPosition);\n              nextPosition = backup[position];\n            }\n            return nextPosition;\n          }\n        },\n\n        set: {\n          position: function(position, calculations) {\n\n            // exit conditions\n            if($target.length === 0 || $popup.length === 0) {\n              module.error(error.notFound);\n              return;\n            }\n            var\n              offset,\n              distanceAway,\n              target,\n              popup,\n              parent,\n              positioning,\n              popupOffset,\n              distanceFromBoundary\n            ;\n\n            calculations = calculations || module.get.calculations();\n            position     = position     || $module.data(metadata.position) || settings.position;\n\n            offset       = $module.data(metadata.offset) || settings.offset;\n            distanceAway = settings.distanceAway;\n\n            // shorthand\n            target = calculations.target;\n            popup  = calculations.popup;\n            parent = calculations.parent;\n\n            if(target.width === 0 && target.height === 0 && !module.is.svg(target.element)) {\n              module.debug('Popup target is hidden, no action taken');\n              return false;\n            }\n\n            if(settings.inline) {\n              module.debug('Adding margin to calculation', target.margin);\n              if(position == 'left center' || position == 'right center') {\n                offset       +=  target.margin.top;\n                distanceAway += -target.margin.left;\n              }\n              else if (position == 'top left' || position == 'top center' || position == 'top right') {\n                offset       += target.margin.left;\n                distanceAway -= target.margin.top;\n              }\n              else {\n                offset       += target.margin.left;\n                distanceAway += target.margin.top;\n              }\n            }\n\n            module.debug('Determining popup position from calculations', position, calculations);\n\n            if (module.is.rtl()) {\n              position = position.replace(/left|right/g, function (match) {\n                return (match == 'left')\n                  ? 'right'\n                  : 'left'\n                ;\n              });\n              module.debug('RTL: Popup position updated', position);\n            }\n\n            // if last attempt use specified last resort position\n            if(searchDepth == settings.maxSearchDepth && typeof settings.lastResort === 'string') {\n              position = settings.lastResort;\n            }\n\n            switch (position) {\n              case 'top left':\n                positioning = {\n                  top    : 'auto',\n                  bottom : parent.height - target.top + distanceAway,\n                  left   : target.left + offset,\n                  right  : 'auto'\n                };\n              break;\n              case 'top center':\n                positioning = {\n                  bottom : parent.height - target.top + distanceAway,\n                  left   : target.left + (target.width / 2) - (popup.width / 2) + offset,\n                  top    : 'auto',\n                  right  : 'auto'\n                };\n              break;\n              case 'top right':\n                positioning = {\n                  bottom :  parent.height - target.top + distanceAway,\n                  right  :  parent.width - target.left - target.width - offset,\n                  top    : 'auto',\n                  left   : 'auto'\n                };\n              break;\n              case 'left center':\n                positioning = {\n                  top    : target.top + (target.height / 2) - (popup.height / 2) + offset,\n                  right  : parent.width - target.left + distanceAway,\n                  left   : 'auto',\n                  bottom : 'auto'\n                };\n              break;\n              case 'right center':\n                positioning = {\n                  top    : target.top + (target.height / 2) - (popup.height / 2) + offset,\n                  left   : target.left + target.width + distanceAway,\n                  bottom : 'auto',\n                  right  : 'auto'\n                };\n              break;\n              case 'bottom left':\n                positioning = {\n                  top    : target.top + target.height + distanceAway,\n                  left   : target.left + offset,\n                  bottom : 'auto',\n                  right  : 'auto'\n                };\n              break;\n              case 'bottom center':\n                positioning = {\n                  top    : target.top + target.height + distanceAway,\n                  left   : target.left + (target.width / 2) - (popup.width / 2) + offset,\n                  bottom : 'auto',\n                  right  : 'auto'\n                };\n              break;\n              case 'bottom right':\n                positioning = {\n                  top    : target.top + target.height + distanceAway,\n                  right  : parent.width - target.left  - target.width - offset,\n                  left   : 'auto',\n                  bottom : 'auto'\n                };\n              break;\n            }\n            if(positioning === undefined) {\n              module.error(error.invalidPosition, position);\n            }\n\n            module.debug('Calculated popup positioning values', positioning);\n\n            // tentatively place on stage\n            $popup\n              .css(positioning)\n              .removeClass(className.position)\n              .addClass(position)\n              .addClass(className.loading)\n            ;\n\n            popupOffset = module.get.popupOffset();\n\n            // see if any boundaries are surpassed with this tentative position\n            distanceFromBoundary = module.get.distanceFromBoundary(popupOffset, calculations);\n\n            if( module.is.offstage(distanceFromBoundary, position) ) {\n              module.debug('Position is outside viewport', position);\n              if(searchDepth < settings.maxSearchDepth) {\n                searchDepth++;\n                position = module.get.nextPosition(position);\n                module.debug('Trying new position', position);\n                return ($popup)\n                  ? module.set.position(position, calculations)\n                  : false\n                ;\n              }\n              else {\n                if(settings.lastResort) {\n                  module.debug('No position found, showing with last position');\n                }\n                else {\n                  module.debug('Popup could not find a position to display', $popup);\n                  module.error(error.cannotPlace, element);\n                  module.remove.attempts();\n                  module.remove.loading();\n                  module.reset();\n                  settings.onUnplaceable.call($popup, element);\n                  return false;\n                }\n              }\n            }\n            module.debug('Position is on stage', position);\n            module.remove.attempts();\n            module.remove.loading();\n            if( settings.setFluidWidth && module.is.fluid() ) {\n              module.set.fluidWidth(calculations);\n            }\n            return true;\n          },\n\n          fluidWidth: function(calculations) {\n            calculations = calculations || module.get.calculations();\n            module.debug('Automatically setting element width to parent width', calculations.parent.width);\n            $popup.css('width', calculations.container.width);\n          },\n\n          variation: function(variation) {\n            variation = variation || module.get.variation();\n            if(variation && module.has.popup() ) {\n              module.verbose('Adding variation to popup', variation);\n              $popup.addClass(variation);\n            }\n          },\n\n          visible: function() {\n            $module.addClass(className.visible);\n          }\n        },\n\n        remove: {\n          loading: function() {\n            $popup.removeClass(className.loading);\n          },\n          variation: function(variation) {\n            variation = variation || module.get.variation();\n            if(variation) {\n              module.verbose('Removing variation', variation);\n              $popup.removeClass(variation);\n            }\n          },\n          visible: function() {\n            $module.removeClass(className.visible);\n          },\n          attempts: function() {\n            module.verbose('Resetting all searched positions');\n            searchDepth    = 0;\n            triedPositions = false;\n          }\n        },\n\n        bind: {\n          events: function() {\n            module.debug('Binding popup events to module');\n            if(settings.on == 'click') {\n              $module\n                .on('click' + eventNamespace, module.toggle)\n              ;\n            }\n            if(settings.on == 'hover' && hasTouch) {\n              $module\n                .on('touchstart' + eventNamespace, module.event.touchstart)\n              ;\n            }\n            if( module.get.startEvent() ) {\n              $module\n                .on(module.get.startEvent() + eventNamespace, module.event.start)\n                .on(module.get.endEvent() + eventNamespace, module.event.end)\n              ;\n            }\n            if(settings.target) {\n              module.debug('Target set to element', $target);\n            }\n            $window.on('resize' + elementNamespace, module.event.resize);\n          },\n          popup: function() {\n            module.verbose('Allowing hover events on popup to prevent closing');\n            if( $popup && module.has.popup() ) {\n              $popup\n                .on('mouseenter' + eventNamespace, module.event.start)\n                .on('mouseleave' + eventNamespace, module.event.end)\n              ;\n            }\n          },\n          close: function() {\n            if(settings.hideOnScroll === true || (settings.hideOnScroll == 'auto' && settings.on != 'click')) {\n              module.bind.closeOnScroll();\n            }\n            if(settings.on == 'hover' && openedWithTouch) {\n              module.bind.touchClose();\n            }\n            if(settings.on == 'click' && settings.closable) {\n              module.bind.clickaway();\n            }\n          },\n          closeOnScroll: function() {\n            module.verbose('Binding scroll close event to document');\n            $scrollContext\n              .one(module.get.scrollEvent() + elementNamespace, module.event.hideGracefully)\n            ;\n          },\n          touchClose: function() {\n            module.verbose('Binding popup touchclose event to document');\n            $document\n              .on('touchstart' + elementNamespace, function(event) {\n                module.verbose('Touched away from popup');\n                module.event.hideGracefully.call(element, event);\n              })\n            ;\n          },\n          clickaway: function() {\n            module.verbose('Binding popup close event to document');\n            $document\n              .on('click' + elementNamespace, function(event) {\n                module.verbose('Clicked away from popup');\n                module.event.hideGracefully.call(element, event);\n              })\n            ;\n          }\n        },\n\n        unbind: {\n          events: function() {\n            $window\n              .off(elementNamespace)\n            ;\n            $module\n              .off(eventNamespace)\n            ;\n          },\n          close: function() {\n            $document\n              .off(elementNamespace)\n            ;\n            $scrollContext\n              .off(elementNamespace)\n            ;\n          },\n        },\n\n        has: {\n          popup: function() {\n            return ($popup && $popup.length > 0);\n          }\n        },\n\n        is: {\n          offstage: function(distanceFromBoundary, position) {\n            var\n              offstage = []\n            ;\n            // return boundaries that have been surpassed\n            $.each(distanceFromBoundary, function(direction, distance) {\n              if(distance < -settings.jitter) {\n                module.debug('Position exceeds allowable distance from edge', direction, distance, position);\n                offstage.push(direction);\n              }\n            });\n            if(offstage.length > 0) {\n              return true;\n            }\n            else {\n              return false;\n            }\n          },\n          svg: function(element) {\n            return module.supports.svg() && (element instanceof SVGGraphicsElement);\n          },\n          active: function() {\n            return $module.hasClass(className.active);\n          },\n          animating: function() {\n            return ($popup !== undefined && $popup.hasClass(className.animating) );\n          },\n          fluid: function() {\n            return ($popup !== undefined && $popup.hasClass(className.fluid));\n          },\n          visible: function() {\n            return ($popup !== undefined && $popup.hasClass(className.popupVisible));\n          },\n          dropdown: function() {\n            return $module.hasClass(className.dropdown);\n          },\n          hidden: function() {\n            return !module.is.visible();\n          },\n          rtl: function () {\n            return $module.css('direction') == 'rtl';\n          }\n        },\n\n        reset: function() {\n          module.remove.visible();\n          if(settings.preserve) {\n            if($.fn.transition !== undefined) {\n              $popup\n                .transition('remove transition')\n              ;\n            }\n          }\n          else {\n            module.removePopup();\n          }\n        },\n\n        setting: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            settings[name] = value;\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.popup.settings = {\n\n  name           : 'Popup',\n\n  // module settings\n  silent         : false,\n  debug          : false,\n  verbose        : false,\n  performance    : true,\n  namespace      : 'popup',\n\n  // whether it should use dom mutation observers\n  observeChanges : true,\n\n  // callback only when element added to dom\n  onCreate       : function(){},\n\n  // callback before element removed from dom\n  onRemove       : function(){},\n\n  // callback before show animation\n  onShow         : function(){},\n\n  // callback after show animation\n  onVisible      : function(){},\n\n  // callback before hide animation\n  onHide         : function(){},\n\n  // callback when popup cannot be positioned in visible screen\n  onUnplaceable  : function(){},\n\n  // callback after hide animation\n  onHidden       : function(){},\n\n  // when to show popup\n  on             : 'hover',\n\n  // element to use to determine if popup is out of boundary\n  boundary       : window,\n\n  // whether to add touchstart events when using hover\n  addTouchEvents : true,\n\n  // default position relative to element\n  position       : 'top left',\n\n  // name of variation to use\n  variation      : '',\n\n  // whether popup should be moved to context\n  movePopup      : true,\n\n  // element which popup should be relative to\n  target         : false,\n\n  // jq selector or element that should be used as popup\n  popup          : false,\n\n  // popup should remain inline next to activator\n  inline         : false,\n\n  // popup should be removed from page on hide\n  preserve       : false,\n\n  // popup should not close when being hovered on\n  hoverable      : false,\n\n  // explicitly set content\n  content        : false,\n\n  // explicitly set html\n  html           : false,\n\n  // explicitly set title\n  title          : false,\n\n  // whether automatically close on clickaway when on click\n  closable       : true,\n\n  // automatically hide on scroll\n  hideOnScroll   : 'auto',\n\n  // hide other popups on show\n  exclusive      : false,\n\n  // context to attach popups\n  context        : 'body',\n\n  // context for binding scroll events\n  scrollContext  : window,\n\n  // position to prefer when calculating new position\n  prefer         : 'opposite',\n\n  // specify position to appear even if it doesn't fit\n  lastResort     : false,\n\n  // delay used to prevent accidental refiring of animations due to user error\n  delay        : {\n    show : 50,\n    hide : 70\n  },\n\n  // whether fluid variation should assign width explicitly\n  setFluidWidth  : true,\n\n  // transition settings\n  duration       : 200,\n  transition     : 'scale',\n\n  // distance away from activating element in px\n  distanceAway   : 0,\n\n  // number of pixels an element is allowed to be \"offstage\" for a position to be chosen (allows for rounding)\n  jitter         : 2,\n\n  // offset on aligning axis from calculated position\n  offset         : 0,\n\n  // maximum times to look for a position before failing (9 positions total)\n  maxSearchDepth : 15,\n\n  error: {\n    invalidPosition : 'The position you specified is not a valid position',\n    cannotPlace     : 'Popup does not fit within the boundaries of the viewport',\n    method          : 'The method you called is not defined.',\n    noTransition    : 'This module requires ui transitions <https://github.com/Semantic-Org/UI-Transition>',\n    notFound        : 'The target or popup you specified does not exist on the page'\n  },\n\n  metadata: {\n    activator : 'activator',\n    content   : 'content',\n    html      : 'html',\n    offset    : 'offset',\n    position  : 'position',\n    title     : 'title',\n    variation : 'variation'\n  },\n\n  className   : {\n    active       : 'active',\n    animating    : 'animating',\n    dropdown     : 'dropdown',\n    fluid        : 'fluid',\n    loading      : 'loading',\n    popup        : 'ui popup',\n    position     : 'top left center bottom right',\n    visible      : 'visible',\n    popupVisible : 'visible'\n  },\n\n  selector    : {\n    popup    : '.ui.popup'\n  },\n\n  templates: {\n    escape: function(string) {\n      var\n        badChars     = /[&<>\"'`]/g,\n        shouldEscape = /[&<>\"'`]/,\n        escape       = {\n          \"&\": \"&amp;\",\n          \"<\": \"&lt;\",\n          \">\": \"&gt;\",\n          '\"': \"&quot;\",\n          \"'\": \"&#x27;\",\n          \"`\": \"&#x60;\"\n        },\n        escapedChar  = function(chr) {\n          return escape[chr];\n        }\n      ;\n      if(shouldEscape.test(string)) {\n        return string.replace(badChars, escapedChar);\n      }\n      return string;\n    },\n    popup: function(text) {\n      var\n        html   = '',\n        escape = $.fn.popup.settings.templates.escape\n      ;\n      if(typeof text !== undefined) {\n        if(typeof text.title !== undefined && text.title) {\n          text.title = escape(text.title);\n          html += '<div class=\"header\">' + text.title + '</div>';\n        }\n        if(typeof text.content !== undefined && text.content) {\n          text.content = escape(text.content);\n          html += '<div class=\"content\">' + text.content + '</div>';\n        }\n      }\n      return html;\n    }\n  }\n\n};\n\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Progress\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\nvar\n  global = (typeof window != 'undefined' && window.Math == Math)\n    ? window\n    : (typeof self != 'undefined' && self.Math == Math)\n      ? self\n      : Function('return this')()\n;\n\n$.fn.progress = function(parameters) {\n  var\n    $allModules    = $(this),\n\n    moduleSelector = $allModules.selector || '',\n\n    time           = new Date().getTime(),\n    performance    = [],\n\n    query          = arguments[0],\n    methodInvoked  = (typeof query == 'string'),\n    queryArguments = [].slice.call(arguments, 1),\n\n    returnedValue\n  ;\n\n  $allModules\n    .each(function() {\n      var\n        settings          = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.progress.settings, parameters)\n          : $.extend({}, $.fn.progress.settings),\n\n        className       = settings.className,\n        metadata        = settings.metadata,\n        namespace       = settings.namespace,\n        selector        = settings.selector,\n        error           = settings.error,\n\n        eventNamespace  = '.' + namespace,\n        moduleNamespace = 'module-' + namespace,\n\n        $module         = $(this),\n        $bar            = $(this).find(selector.bar),\n        $progress       = $(this).find(selector.progress),\n        $label          = $(this).find(selector.label),\n\n        element         = this,\n        instance        = $module.data(moduleNamespace),\n\n        animating = false,\n        transitionEnd,\n        module\n      ;\n\n      module = {\n\n        initialize: function() {\n          module.debug('Initializing progress bar', settings);\n\n          module.set.duration();\n          module.set.transitionEvent();\n\n          module.read.metadata();\n          module.read.settings();\n\n          module.instantiate();\n        },\n\n        instantiate: function() {\n          module.verbose('Storing instance of progress', module);\n          instance = module;\n          $module\n            .data(moduleNamespace, module)\n          ;\n        },\n        destroy: function() {\n          module.verbose('Destroying previous progress for', $module);\n          clearInterval(instance.interval);\n          module.remove.state();\n          $module.removeData(moduleNamespace);\n          instance = undefined;\n        },\n\n        reset: function() {\n          module.remove.nextValue();\n          module.update.progress(0);\n        },\n\n        complete: function() {\n          if(module.percent === undefined || module.percent < 100) {\n            module.remove.progressPoll();\n            module.set.percent(100);\n          }\n        },\n\n        read: {\n          metadata: function() {\n            var\n              data = {\n                percent : $module.data(metadata.percent),\n                total   : $module.data(metadata.total),\n                value   : $module.data(metadata.value)\n              }\n            ;\n            if(data.percent) {\n              module.debug('Current percent value set from metadata', data.percent);\n              module.set.percent(data.percent);\n            }\n            if(data.total) {\n              module.debug('Total value set from metadata', data.total);\n              module.set.total(data.total);\n            }\n            if(data.value) {\n              module.debug('Current value set from metadata', data.value);\n              module.set.value(data.value);\n              module.set.progress(data.value);\n            }\n          },\n          settings: function() {\n            if(settings.total !== false) {\n              module.debug('Current total set in settings', settings.total);\n              module.set.total(settings.total);\n            }\n            if(settings.value !== false) {\n              module.debug('Current value set in settings', settings.value);\n              module.set.value(settings.value);\n              module.set.progress(module.value);\n            }\n            if(settings.percent !== false) {\n              module.debug('Current percent set in settings', settings.percent);\n              module.set.percent(settings.percent);\n            }\n          }\n        },\n\n        bind: {\n          transitionEnd: function(callback) {\n            var\n              transitionEnd = module.get.transitionEnd()\n            ;\n            $bar\n              .one(transitionEnd + eventNamespace, function(event) {\n                clearTimeout(module.failSafeTimer);\n                callback.call(this, event);\n              })\n            ;\n            module.failSafeTimer = setTimeout(function() {\n              $bar.triggerHandler(transitionEnd);\n            }, settings.duration + settings.failSafeDelay);\n            module.verbose('Adding fail safe timer', module.timer);\n          }\n        },\n\n        increment: function(incrementValue) {\n          var\n            maxValue,\n            startValue,\n            newValue\n          ;\n          if( module.has.total() ) {\n            startValue     = module.get.value();\n            incrementValue = incrementValue || 1;\n            newValue       = startValue + incrementValue;\n          }\n          else {\n            startValue     = module.get.percent();\n            incrementValue = incrementValue || module.get.randomValue();\n\n            newValue       = startValue + incrementValue;\n            maxValue       = 100;\n            module.debug('Incrementing percentage by', startValue, newValue);\n          }\n          newValue = module.get.normalizedValue(newValue);\n          module.set.progress(newValue);\n        },\n        decrement: function(decrementValue) {\n          var\n            total     = module.get.total(),\n            startValue,\n            newValue\n          ;\n          if(total) {\n            startValue     =  module.get.value();\n            decrementValue =  decrementValue || 1;\n            newValue       =  startValue - decrementValue;\n            module.debug('Decrementing value by', decrementValue, startValue);\n          }\n          else {\n            startValue     =  module.get.percent();\n            decrementValue =  decrementValue || module.get.randomValue();\n            newValue       =  startValue - decrementValue;\n            module.debug('Decrementing percentage by', decrementValue, startValue);\n          }\n          newValue = module.get.normalizedValue(newValue);\n          module.set.progress(newValue);\n        },\n\n        has: {\n          progressPoll: function() {\n            return module.progressPoll;\n          },\n          total: function() {\n            return (module.get.total() !== false);\n          }\n        },\n\n        get: {\n          text: function(templateText) {\n            var\n              value   = module.value                || 0,\n              total   = module.total                || 0,\n              percent = (animating)\n                ? module.get.displayPercent()\n                : module.percent || 0,\n              left = (module.total > 0)\n                ? (total - value)\n                : (100 - percent)\n            ;\n            templateText = templateText || '';\n            templateText = templateText\n              .replace('{value}', value)\n              .replace('{total}', total)\n              .replace('{left}', left)\n              .replace('{percent}', percent)\n            ;\n            module.verbose('Adding variables to progress bar text', templateText);\n            return templateText;\n          },\n\n          normalizedValue: function(value) {\n            if(value < 0) {\n              module.debug('Value cannot decrement below 0');\n              return 0;\n            }\n            if(module.has.total()) {\n              if(value > module.total) {\n                module.debug('Value cannot increment above total', module.total);\n                return module.total;\n              }\n            }\n            else if(value > 100 ) {\n              module.debug('Value cannot increment above 100 percent');\n              return 100;\n            }\n            return value;\n          },\n\n          updateInterval: function() {\n            if(settings.updateInterval == 'auto') {\n              return settings.duration;\n            }\n            return settings.updateInterval;\n          },\n\n          randomValue: function() {\n            module.debug('Generating random increment percentage');\n            return Math.floor((Math.random() * settings.random.max) + settings.random.min);\n          },\n\n          numericValue: function(value) {\n            return (typeof value === 'string')\n              ? (value.replace(/[^\\d.]/g, '') !== '')\n                ? +(value.replace(/[^\\d.]/g, ''))\n                : false\n              : value\n            ;\n          },\n\n          transitionEnd: function() {\n            var\n              element     = document.createElement('element'),\n              transitions = {\n                'transition'       :'transitionend',\n                'OTransition'      :'oTransitionEnd',\n                'MozTransition'    :'transitionend',\n                'WebkitTransition' :'webkitTransitionEnd'\n              },\n              transition\n            ;\n            for(transition in transitions){\n              if( element.style[transition] !== undefined ){\n                return transitions[transition];\n              }\n            }\n          },\n\n          // gets current displayed percentage (if animating values this is the intermediary value)\n          displayPercent: function() {\n            var\n              barWidth       = $bar.width(),\n              totalWidth     = $module.width(),\n              minDisplay     = parseInt($bar.css('min-width'), 10),\n              displayPercent = (barWidth > minDisplay)\n                ? (barWidth / totalWidth * 100)\n                : module.percent\n            ;\n            return (settings.precision > 0)\n              ? Math.round(displayPercent * (10 * settings.precision)) / (10 * settings.precision)\n              : Math.round(displayPercent)\n            ;\n          },\n\n          percent: function() {\n            return module.percent || 0;\n          },\n          value: function() {\n            return module.nextValue || module.value || 0;\n          },\n          total: function() {\n            return module.total || false;\n          }\n        },\n\n        create: {\n          progressPoll: function() {\n            module.progressPoll = setTimeout(function() {\n              module.update.toNextValue();\n              module.remove.progressPoll();\n            }, module.get.updateInterval());\n          },\n        },\n\n        is: {\n          complete: function() {\n            return module.is.success() || module.is.warning() || module.is.error();\n          },\n          success: function() {\n            return $module.hasClass(className.success);\n          },\n          warning: function() {\n            return $module.hasClass(className.warning);\n          },\n          error: function() {\n            return $module.hasClass(className.error);\n          },\n          active: function() {\n            return $module.hasClass(className.active);\n          },\n          visible: function() {\n            return $module.is(':visible');\n          }\n        },\n\n        remove: {\n          progressPoll: function() {\n            module.verbose('Removing progress poll timer');\n            if(module.progressPoll) {\n              clearTimeout(module.progressPoll);\n              delete module.progressPoll;\n            }\n          },\n          nextValue: function() {\n            module.verbose('Removing progress value stored for next update');\n            delete module.nextValue;\n          },\n          state: function() {\n            module.verbose('Removing stored state');\n            delete module.total;\n            delete module.percent;\n            delete module.value;\n          },\n          active: function() {\n            module.verbose('Removing active state');\n            $module.removeClass(className.active);\n          },\n          success: function() {\n            module.verbose('Removing success state');\n            $module.removeClass(className.success);\n          },\n          warning: function() {\n            module.verbose('Removing warning state');\n            $module.removeClass(className.warning);\n          },\n          error: function() {\n            module.verbose('Removing error state');\n            $module.removeClass(className.error);\n          }\n        },\n\n        set: {\n          barWidth: function(value) {\n            if(value > 100) {\n              module.error(error.tooHigh, value);\n            }\n            else if (value < 0) {\n              module.error(error.tooLow, value);\n            }\n            else {\n              $bar\n                .css('width', value + '%')\n              ;\n              $module\n                .attr('data-percent', parseInt(value, 10))\n              ;\n            }\n          },\n          duration: function(duration) {\n            duration = duration || settings.duration;\n            duration = (typeof duration == 'number')\n              ? duration + 'ms'\n              : duration\n            ;\n            module.verbose('Setting progress bar transition duration', duration);\n            $bar\n              .css({\n                'transition-duration':  duration\n              })\n            ;\n          },\n          percent: function(percent) {\n            percent = (typeof percent == 'string')\n              ? +(percent.replace('%', ''))\n              : percent\n            ;\n            // round display percentage\n            percent = (settings.precision > 0)\n              ? Math.round(percent * (10 * settings.precision)) / (10 * settings.precision)\n              : Math.round(percent)\n            ;\n            module.percent = percent;\n            if( !module.has.total() ) {\n              module.value = (settings.precision > 0)\n                ? Math.round( (percent / 100) * module.total * (10 * settings.precision)) / (10 * settings.precision)\n                : Math.round( (percent / 100) * module.total * 10) / 10\n              ;\n              if(settings.limitValues) {\n                module.value = (module.value > 100)\n                  ? 100\n                  : (module.value < 0)\n                    ? 0\n                    : module.value\n                ;\n              }\n            }\n            module.set.barWidth(percent);\n            module.set.labelInterval();\n            module.set.labels();\n            settings.onChange.call(element, percent, module.value, module.total);\n          },\n          labelInterval: function() {\n            var\n              animationCallback = function() {\n                module.verbose('Bar finished animating, removing continuous label updates');\n                clearInterval(module.interval);\n                animating = false;\n                module.set.labels();\n              }\n            ;\n            clearInterval(module.interval);\n            module.bind.transitionEnd(animationCallback);\n            animating = true;\n            module.interval = setInterval(function() {\n              var\n                isInDOM = $.contains(document.documentElement, element)\n              ;\n              if(!isInDOM) {\n                clearInterval(module.interval);\n                animating = false;\n              }\n              module.set.labels();\n            }, settings.framerate);\n          },\n          labels: function() {\n            module.verbose('Setting both bar progress and outer label text');\n            module.set.barLabel();\n            module.set.state();\n          },\n          label: function(text) {\n            text = text || '';\n            if(text) {\n              text = module.get.text(text);\n              module.verbose('Setting label to text', text);\n              $label.text(text);\n            }\n          },\n          state: function(percent) {\n            percent = (percent !== undefined)\n              ? percent\n              : module.percent\n            ;\n            if(percent === 100) {\n              if(settings.autoSuccess && !(module.is.warning() || module.is.error() || module.is.success())) {\n                module.set.success();\n                module.debug('Automatically triggering success at 100%');\n              }\n              else {\n                module.verbose('Reached 100% removing active state');\n                module.remove.active();\n                module.remove.progressPoll();\n              }\n            }\n            else if(percent > 0) {\n              module.verbose('Adjusting active progress bar label', percent);\n              module.set.active();\n            }\n            else {\n              module.remove.active();\n              module.set.label(settings.text.active);\n            }\n          },\n          barLabel: function(text) {\n            if(text !== undefined) {\n              $progress.text( module.get.text(text) );\n            }\n            else if(settings.label == 'ratio' && module.total) {\n              module.verbose('Adding ratio to bar label');\n              $progress.text( module.get.text(settings.text.ratio) );\n            }\n            else if(settings.label == 'percent') {\n              module.verbose('Adding percentage to bar label');\n              $progress.text( module.get.text(settings.text.percent) );\n            }\n          },\n          active: function(text) {\n            text = text || settings.text.active;\n            module.debug('Setting active state');\n            if(settings.showActivity && !module.is.active() ) {\n              $module.addClass(className.active);\n            }\n            module.remove.warning();\n            module.remove.error();\n            module.remove.success();\n            text = settings.onLabelUpdate('active', text, module.value, module.total);\n            if(text) {\n              module.set.label(text);\n            }\n            module.bind.transitionEnd(function() {\n              settings.onActive.call(element, module.value, module.total);\n            });\n          },\n          success : function(text) {\n            text = text || settings.text.success || settings.text.active;\n            module.debug('Setting success state');\n            $module.addClass(className.success);\n            module.remove.active();\n            module.remove.warning();\n            module.remove.error();\n            module.complete();\n            if(settings.text.success) {\n              text = settings.onLabelUpdate('success', text, module.value, module.total);\n              module.set.label(text);\n            }\n            else {\n              text = settings.onLabelUpdate('active', text, module.value, module.total);\n              module.set.label(text);\n            }\n            module.bind.transitionEnd(function() {\n              settings.onSuccess.call(element, module.total);\n            });\n          },\n          warning : function(text) {\n            text = text || settings.text.warning;\n            module.debug('Setting warning state');\n            $module.addClass(className.warning);\n            module.remove.active();\n            module.remove.success();\n            module.remove.error();\n            module.complete();\n            text = settings.onLabelUpdate('warning', text, module.value, module.total);\n            if(text) {\n              module.set.label(text);\n            }\n            module.bind.transitionEnd(function() {\n              settings.onWarning.call(element, module.value, module.total);\n            });\n          },\n          error : function(text) {\n            text = text || settings.text.error;\n            module.debug('Setting error state');\n            $module.addClass(className.error);\n            module.remove.active();\n            module.remove.success();\n            module.remove.warning();\n            module.complete();\n            text = settings.onLabelUpdate('error', text, module.value, module.total);\n            if(text) {\n              module.set.label(text);\n            }\n            module.bind.transitionEnd(function() {\n              settings.onError.call(element, module.value, module.total);\n            });\n          },\n          transitionEvent: function() {\n            transitionEnd = module.get.transitionEnd();\n          },\n          total: function(totalValue) {\n            module.total = totalValue;\n          },\n          value: function(value) {\n            module.value = value;\n          },\n          progress: function(value) {\n            if(!module.has.progressPoll()) {\n              module.debug('First update in progress update interval, immediately updating', value);\n              module.update.progress(value);\n              module.create.progressPoll();\n            }\n            else {\n              module.debug('Updated within interval, setting next update to use new value', value);\n              module.set.nextValue(value);\n            }\n          },\n          nextValue: function(value) {\n            module.nextValue = value;\n          }\n        },\n\n        update: {\n          toNextValue: function() {\n            var\n              nextValue = module.nextValue\n            ;\n            if(nextValue) {\n              module.debug('Update interval complete using last updated value', nextValue);\n              module.update.progress(nextValue);\n              module.remove.nextValue();\n            }\n          },\n          progress: function(value) {\n            var\n              percentComplete\n            ;\n            value = module.get.numericValue(value);\n            if(value === false) {\n              module.error(error.nonNumeric, value);\n            }\n            value = module.get.normalizedValue(value);\n            if( module.has.total() ) {\n              module.set.value(value);\n              percentComplete = (value / module.total) * 100;\n              module.debug('Calculating percent complete from total', percentComplete);\n              module.set.percent( percentComplete );\n            }\n            else {\n              percentComplete = value;\n              module.debug('Setting value to exact percentage value', percentComplete);\n              module.set.percent( percentComplete );\n            }\n          }\n        },\n\n        setting: function(name, value) {\n          module.debug('Changing setting', name, value);\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            if($.isPlainObject(settings[name])) {\n              $.extend(true, settings[name], value);\n            }\n            else {\n              settings[name] = value;\n            }\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                module.error(error.method, query);\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.progress.settings = {\n\n  name         : 'Progress',\n  namespace    : 'progress',\n\n  silent       : false,\n  debug        : false,\n  verbose      : false,\n  performance  : true,\n\n  random       : {\n    min : 2,\n    max : 5\n  },\n\n  duration       : 300,\n\n  updateInterval : 'auto',\n\n  autoSuccess    : true,\n  showActivity   : true,\n  limitValues    : true,\n\n  label          : 'percent',\n  precision      : 0,\n  framerate      : (1000 / 30), /// 30 fps\n\n  percent        : false,\n  total          : false,\n  value          : false,\n\n  // delay in ms for fail safe animation callback\n  failSafeDelay : 100,\n\n  onLabelUpdate : function(state, text, value, total){\n    return text;\n  },\n  onChange      : function(percent, value, total){},\n  onSuccess     : function(total){},\n  onActive      : function(value, total){},\n  onError       : function(value, total){},\n  onWarning     : function(value, total){},\n\n  error    : {\n    method     : 'The method you called is not defined.',\n    nonNumeric : 'Progress value is non numeric',\n    tooHigh    : 'Value specified is above 100%',\n    tooLow     : 'Value specified is below 0%'\n  },\n\n  regExp: {\n    variable: /\\{\\$*[A-z0-9]+\\}/g\n  },\n\n  metadata: {\n    percent : 'percent',\n    total   : 'total',\n    value   : 'value'\n  },\n\n  selector : {\n    bar      : '> .bar',\n    label    : '> .label',\n    progress : '.bar > .progress'\n  },\n\n  text : {\n    active  : false,\n    error   : false,\n    success : false,\n    warning : false,\n    percent : '{percent}%',\n    ratio   : '{value} of {total}'\n  },\n\n  className : {\n    active  : 'active',\n    error   : 'error',\n    success : 'success',\n    warning : 'warning'\n  }\n\n};\n\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Rating\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.rating = function(parameters) {\n  var\n    $allModules     = $(this),\n    moduleSelector  = $allModules.selector || '',\n\n    time            = new Date().getTime(),\n    performance     = [],\n\n    query           = arguments[0],\n    methodInvoked   = (typeof query == 'string'),\n    queryArguments  = [].slice.call(arguments, 1),\n    returnedValue\n  ;\n  $allModules\n    .each(function() {\n      var\n        settings        = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.rating.settings, parameters)\n          : $.extend({}, $.fn.rating.settings),\n\n        namespace       = settings.namespace,\n        className       = settings.className,\n        metadata        = settings.metadata,\n        selector        = settings.selector,\n        error           = settings.error,\n\n        eventNamespace  = '.' + namespace,\n        moduleNamespace = 'module-' + namespace,\n\n        element         = this,\n        instance        = $(this).data(moduleNamespace),\n\n        $module         = $(this),\n        $icon           = $module.find(selector.icon),\n\n        initialLoad,\n        module\n      ;\n\n      module = {\n\n        initialize: function() {\n          module.verbose('Initializing rating module', settings);\n\n          if($icon.length === 0) {\n            module.setup.layout();\n          }\n\n          if(settings.interactive) {\n            module.enable();\n          }\n          else {\n            module.disable();\n          }\n          module.set.initialLoad();\n          module.set.rating( module.get.initialRating() );\n          module.remove.initialLoad();\n          module.instantiate();\n        },\n\n        instantiate: function() {\n          module.verbose('Instantiating module', settings);\n          instance = module;\n          $module\n            .data(moduleNamespace, module)\n          ;\n        },\n\n        destroy: function() {\n          module.verbose('Destroying previous instance', instance);\n          module.remove.events();\n          $module\n            .removeData(moduleNamespace)\n          ;\n        },\n\n        refresh: function() {\n          $icon   = $module.find(selector.icon);\n        },\n\n        setup: {\n          layout: function() {\n            var\n              maxRating = module.get.maxRating(),\n              html      = $.fn.rating.settings.templates.icon(maxRating)\n            ;\n            module.debug('Generating icon html dynamically');\n            $module\n              .html(html)\n            ;\n            module.refresh();\n          }\n        },\n\n        event: {\n          mouseenter: function() {\n            var\n              $activeIcon = $(this)\n            ;\n            $activeIcon\n              .nextAll()\n                .removeClass(className.selected)\n            ;\n            $module\n              .addClass(className.selected)\n            ;\n            $activeIcon\n              .addClass(className.selected)\n                .prevAll()\n                .addClass(className.selected)\n            ;\n          },\n          mouseleave: function() {\n            $module\n              .removeClass(className.selected)\n            ;\n            $icon\n              .removeClass(className.selected)\n            ;\n          },\n          click: function() {\n            var\n              $activeIcon   = $(this),\n              currentRating = module.get.rating(),\n              rating        = $icon.index($activeIcon) + 1,\n              canClear      = (settings.clearable == 'auto')\n               ? ($icon.length === 1)\n               : settings.clearable\n            ;\n            if(canClear && currentRating == rating) {\n              module.clearRating();\n            }\n            else {\n              module.set.rating( rating );\n            }\n          }\n        },\n\n        clearRating: function() {\n          module.debug('Clearing current rating');\n          module.set.rating(0);\n        },\n\n        bind: {\n          events: function() {\n            module.verbose('Binding events');\n            $module\n              .on('mouseenter' + eventNamespace, selector.icon, module.event.mouseenter)\n              .on('mouseleave' + eventNamespace, selector.icon, module.event.mouseleave)\n              .on('click'      + eventNamespace, selector.icon, module.event.click)\n            ;\n          }\n        },\n\n        remove: {\n          events: function() {\n            module.verbose('Removing events');\n            $module\n              .off(eventNamespace)\n            ;\n          },\n          initialLoad: function() {\n            initialLoad = false;\n          }\n        },\n\n        enable: function() {\n          module.debug('Setting rating to interactive mode');\n          module.bind.events();\n          $module\n            .removeClass(className.disabled)\n          ;\n        },\n\n        disable: function() {\n          module.debug('Setting rating to read-only mode');\n          module.remove.events();\n          $module\n            .addClass(className.disabled)\n          ;\n        },\n\n        is: {\n          initialLoad: function() {\n            return initialLoad;\n          }\n        },\n\n        get: {\n          initialRating: function() {\n            if($module.data(metadata.rating) !== undefined) {\n              $module.removeData(metadata.rating);\n              return $module.data(metadata.rating);\n            }\n            return settings.initialRating;\n          },\n          maxRating: function() {\n            if($module.data(metadata.maxRating) !== undefined) {\n              $module.removeData(metadata.maxRating);\n              return $module.data(metadata.maxRating);\n            }\n            return settings.maxRating;\n          },\n          rating: function() {\n            var\n              currentRating = $icon.filter('.' + className.active).length\n            ;\n            module.verbose('Current rating retrieved', currentRating);\n            return currentRating;\n          }\n        },\n\n        set: {\n          rating: function(rating) {\n            var\n              ratingIndex = (rating - 1 >= 0)\n                ? (rating - 1)\n                : 0,\n              $activeIcon = $icon.eq(ratingIndex)\n            ;\n            $module\n              .removeClass(className.selected)\n            ;\n            $icon\n              .removeClass(className.selected)\n              .removeClass(className.active)\n            ;\n            if(rating > 0) {\n              module.verbose('Setting current rating to', rating);\n              $activeIcon\n                .prevAll()\n                .addBack()\n                  .addClass(className.active)\n              ;\n            }\n            if(!module.is.initialLoad()) {\n              settings.onRate.call(element, rating);\n            }\n          },\n          initialLoad: function() {\n            initialLoad = true;\n          }\n        },\n\n        setting: function(name, value) {\n          module.debug('Changing setting', name, value);\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            if($.isPlainObject(settings[name])) {\n              $.extend(true, settings[name], value);\n            }\n            else {\n              settings[name] = value;\n            }\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if($allModules.length > 1) {\n              title += ' ' + '(' + $allModules.length + ')';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.rating.settings = {\n\n  name          : 'Rating',\n  namespace     : 'rating',\n\n  slent         : false,\n  debug         : false,\n  verbose       : false,\n  performance   : true,\n\n  initialRating : 0,\n  interactive   : true,\n  maxRating     : 4,\n  clearable     : 'auto',\n\n  fireOnInit    : false,\n\n  onRate        : function(rating){},\n\n  error         : {\n    method    : 'The method you called is not defined',\n    noMaximum : 'No maximum rating specified. Cannot generate HTML automatically'\n  },\n\n\n  metadata: {\n    rating    : 'rating',\n    maxRating : 'maxRating'\n  },\n\n  className : {\n    active   : 'active',\n    disabled : 'disabled',\n    selected : 'selected',\n    loading  : 'loading'\n  },\n\n  selector  : {\n    icon : '.icon'\n  },\n\n  templates: {\n    icon: function(maxRating) {\n      var\n        icon = 1,\n        html = ''\n      ;\n      while(icon <= maxRating) {\n        html += '<i class=\"icon\"></i>';\n        icon++;\n      }\n      return html;\n    }\n  }\n\n};\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Search\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.search = function(parameters) {\n  var\n    $allModules     = $(this),\n    moduleSelector  = $allModules.selector || '',\n\n    time            = new Date().getTime(),\n    performance     = [],\n\n    query           = arguments[0],\n    methodInvoked   = (typeof query == 'string'),\n    queryArguments  = [].slice.call(arguments, 1),\n    returnedValue\n  ;\n  $(this)\n    .each(function() {\n      var\n        settings          = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.search.settings, parameters)\n          : $.extend({}, $.fn.search.settings),\n\n        className        = settings.className,\n        metadata         = settings.metadata,\n        regExp           = settings.regExp,\n        fields           = settings.fields,\n        selector         = settings.selector,\n        error            = settings.error,\n        namespace        = settings.namespace,\n\n        eventNamespace   = '.' + namespace,\n        moduleNamespace  = namespace + '-module',\n\n        $module          = $(this),\n        $prompt          = $module.find(selector.prompt),\n        $searchButton    = $module.find(selector.searchButton),\n        $results         = $module.find(selector.results),\n        $result          = $module.find(selector.result),\n        $category        = $module.find(selector.category),\n\n        element          = this,\n        instance         = $module.data(moduleNamespace),\n\n        disabledBubbled  = false,\n        resultsDismissed = false,\n\n        module\n      ;\n\n      module = {\n\n        initialize: function() {\n          module.verbose('Initializing module');\n          module.determine.searchFields();\n          module.bind.events();\n          module.set.type();\n          module.create.results();\n          module.instantiate();\n        },\n        instantiate: function() {\n          module.verbose('Storing instance of module', module);\n          instance = module;\n          $module\n            .data(moduleNamespace, module)\n          ;\n        },\n        destroy: function() {\n          module.verbose('Destroying instance');\n          $module\n            .off(eventNamespace)\n            .removeData(moduleNamespace)\n          ;\n        },\n\n        refresh: function() {\n          module.debug('Refreshing selector cache');\n          $prompt         = $module.find(selector.prompt);\n          $searchButton   = $module.find(selector.searchButton);\n          $category       = $module.find(selector.category);\n          $results        = $module.find(selector.results);\n          $result         = $module.find(selector.result);\n        },\n\n        refreshResults: function() {\n          $results = $module.find(selector.results);\n          $result  = $module.find(selector.result);\n        },\n\n        bind: {\n          events: function() {\n            module.verbose('Binding events to search');\n            if(settings.automatic) {\n              $module\n                .on(module.get.inputEvent() + eventNamespace, selector.prompt, module.event.input)\n              ;\n              $prompt\n                .attr('autocomplete', 'off')\n              ;\n            }\n            $module\n              // prompt\n              .on('focus'     + eventNamespace, selector.prompt, module.event.focus)\n              .on('blur'      + eventNamespace, selector.prompt, module.event.blur)\n              .on('keydown'   + eventNamespace, selector.prompt, module.handleKeyboard)\n              // search button\n              .on('click'     + eventNamespace, selector.searchButton, module.query)\n              // results\n              .on('mousedown' + eventNamespace, selector.results, module.event.result.mousedown)\n              .on('mouseup'   + eventNamespace, selector.results, module.event.result.mouseup)\n              .on('click'     + eventNamespace, selector.result,  module.event.result.click)\n            ;\n          }\n        },\n\n        determine: {\n          searchFields: function() {\n            // this makes sure $.extend does not add specified search fields to default fields\n            // this is the only setting which should not extend defaults\n            if(parameters && parameters.searchFields !== undefined) {\n              settings.searchFields = parameters.searchFields;\n            }\n          }\n        },\n\n        event: {\n          input: function() {\n            if(settings.searchDelay) {\n              clearTimeout(module.timer);\n              module.timer = setTimeout(function() {\n                if(module.is.focused()) {\n                  module.query();\n                }\n              }, settings.searchDelay);\n            }\n            else {\n              module.query();\n            }\n          },\n          focus: function() {\n            module.set.focus();\n            if(settings.searchOnFocus && module.has.minimumCharacters() ) {\n              module.query(function() {\n                if(module.can.show() ) {\n                  module.showResults();\n                }\n              });\n            }\n          },\n          blur: function(event) {\n            var\n              pageLostFocus = (document.activeElement === this),\n              callback      = function() {\n                module.cancel.query();\n                module.remove.focus();\n                module.timer = setTimeout(module.hideResults, settings.hideDelay);\n              }\n            ;\n            if(pageLostFocus) {\n              return;\n            }\n            resultsDismissed = false;\n            if(module.resultsClicked) {\n              module.debug('Determining if user action caused search to close');\n              $module\n                .one('click.close' + eventNamespace, selector.results, function(event) {\n                  if(module.is.inMessage(event) || disabledBubbled) {\n                    $prompt.focus();\n                    return;\n                  }\n                  disabledBubbled = false;\n                  if( !module.is.animating() && !module.is.hidden()) {\n                    callback();\n                  }\n                })\n              ;\n            }\n            else {\n              module.debug('Input blurred without user action, closing results');\n              callback();\n            }\n          },\n          result: {\n            mousedown: function() {\n              module.resultsClicked = true;\n            },\n            mouseup: function() {\n              module.resultsClicked = false;\n            },\n            click: function(event) {\n              module.debug('Search result selected');\n              var\n                $result = $(this),\n                $title  = $result.find(selector.title).eq(0),\n                $link   = $result.is('a[href]')\n                  ? $result\n                  : $result.find('a[href]').eq(0),\n                href    = $link.attr('href')   || false,\n                target  = $link.attr('target') || false,\n                title   = $title.html(),\n                // title is used for result lookup\n                value   = ($title.length > 0)\n                  ? $title.text()\n                  : false,\n                results = module.get.results(),\n                result  = $result.data(metadata.result) || module.get.result(value, results),\n                returnedValue\n              ;\n              if( $.isFunction(settings.onSelect) ) {\n                if(settings.onSelect.call(element, result, results) === false) {\n                  module.debug('Custom onSelect callback cancelled default select action');\n                  disabledBubbled = true;\n                  return;\n                }\n              }\n              module.hideResults();\n              if(value) {\n                module.set.value(value);\n              }\n              if(href) {\n                module.verbose('Opening search link found in result', $link);\n                if(target == '_blank' || event.ctrlKey) {\n                  window.open(href);\n                }\n                else {\n                  window.location.href = (href);\n                }\n              }\n            }\n          }\n        },\n        handleKeyboard: function(event) {\n          var\n            // force selector refresh\n            $result         = $module.find(selector.result),\n            $category       = $module.find(selector.category),\n            $activeResult   = $result.filter('.' + className.active),\n            currentIndex    = $result.index( $activeResult ),\n            resultSize      = $result.length,\n            hasActiveResult = $activeResult.length > 0,\n\n            keyCode         = event.which,\n            keys            = {\n              backspace : 8,\n              enter     : 13,\n              escape    : 27,\n              upArrow   : 38,\n              downArrow : 40\n            },\n            newIndex\n          ;\n          // search shortcuts\n          if(keyCode == keys.escape) {\n            module.verbose('Escape key pressed, blurring search field');\n            module.hideResults();\n            resultsDismissed = true;\n          }\n          if( module.is.visible() ) {\n            if(keyCode == keys.enter) {\n              module.verbose('Enter key pressed, selecting active result');\n              if( $result.filter('.' + className.active).length > 0 ) {\n                module.event.result.click.call($result.filter('.' + className.active), event);\n                event.preventDefault();\n                return false;\n              }\n            }\n            else if(keyCode == keys.upArrow && hasActiveResult) {\n              module.verbose('Up key pressed, changing active result');\n              newIndex = (currentIndex - 1 < 0)\n                ? currentIndex\n                : currentIndex - 1\n              ;\n              $category\n                .removeClass(className.active)\n              ;\n              $result\n                .removeClass(className.active)\n                .eq(newIndex)\n                  .addClass(className.active)\n                  .closest($category)\n                    .addClass(className.active)\n              ;\n              event.preventDefault();\n            }\n            else if(keyCode == keys.downArrow) {\n              module.verbose('Down key pressed, changing active result');\n              newIndex = (currentIndex + 1 >= resultSize)\n                ? currentIndex\n                : currentIndex + 1\n              ;\n              $category\n                .removeClass(className.active)\n              ;\n              $result\n                .removeClass(className.active)\n                .eq(newIndex)\n                  .addClass(className.active)\n                  .closest($category)\n                    .addClass(className.active)\n              ;\n              event.preventDefault();\n            }\n          }\n          else {\n            // query shortcuts\n            if(keyCode == keys.enter) {\n              module.verbose('Enter key pressed, executing query');\n              module.query();\n              module.set.buttonPressed();\n              $prompt.one('keyup', module.remove.buttonFocus);\n            }\n          }\n        },\n\n        setup: {\n          api: function(searchTerm, callback) {\n            var\n              apiSettings = {\n                debug             : settings.debug,\n                on                : false,\n                cache             : true,\n                action            : 'search',\n                urlData           : {\n                  query : searchTerm\n                },\n                onSuccess         : function(response) {\n                  module.parse.response.call(element, response, searchTerm);\n                  callback();\n                },\n                onFailure         : function() {\n                  module.displayMessage(error.serverError);\n                  callback();\n                },\n                onAbort : function(response) {\n                },\n                onError           : module.error\n              },\n              searchHTML\n            ;\n            $.extend(true, apiSettings, settings.apiSettings);\n            module.verbose('Setting up API request', apiSettings);\n            $module.api(apiSettings);\n          }\n        },\n\n        can: {\n          useAPI: function() {\n            return $.fn.api !== undefined;\n          },\n          show: function() {\n            return module.is.focused() && !module.is.visible() && !module.is.empty();\n          },\n          transition: function() {\n            return settings.transition && $.fn.transition !== undefined && $module.transition('is supported');\n          }\n        },\n\n        is: {\n          animating: function() {\n            return $results.hasClass(className.animating);\n          },\n          hidden: function() {\n            return $results.hasClass(className.hidden);\n          },\n          inMessage: function(event) {\n            if(!event.target) {\n              return;\n            }\n            var\n              $target = $(event.target),\n              isInDOM = $.contains(document.documentElement, event.target)\n            ;\n            return (isInDOM && $target.closest(selector.message).length > 0);\n          },\n          empty: function() {\n            return ($results.html() === '');\n          },\n          visible: function() {\n            return ($results.filter(':visible').length > 0);\n          },\n          focused: function() {\n            return ($prompt.filter(':focus').length > 0);\n          }\n        },\n\n        get: {\n          inputEvent: function() {\n            var\n              prompt = $prompt[0],\n              inputEvent   = (prompt !== undefined && prompt.oninput !== undefined)\n                ? 'input'\n                : (prompt !== undefined && prompt.onpropertychange !== undefined)\n                  ? 'propertychange'\n                  : 'keyup'\n            ;\n            return inputEvent;\n          },\n          value: function() {\n            return $prompt.val();\n          },\n          results: function() {\n            var\n              results = $module.data(metadata.results)\n            ;\n            return results;\n          },\n          result: function(value, results) {\n            var\n              lookupFields = ['title', 'id'],\n              result       = false\n            ;\n            value = (value !== undefined)\n              ? value\n              : module.get.value()\n            ;\n            results = (results !== undefined)\n              ? results\n              : module.get.results()\n            ;\n            if(settings.type === 'category') {\n              module.debug('Finding result that matches', value);\n              $.each(results, function(index, category) {\n                if($.isArray(category.results)) {\n                  result = module.search.object(value, category.results, lookupFields)[0];\n                  // don't continue searching if a result is found\n                  if(result) {\n                    return false;\n                  }\n                }\n              });\n            }\n            else {\n              module.debug('Finding result in results object', value);\n              result = module.search.object(value, results, lookupFields)[0];\n            }\n            return result || false;\n          },\n        },\n\n        select: {\n          firstResult: function() {\n            module.verbose('Selecting first result');\n            $result.first().addClass(className.active);\n          }\n        },\n\n        set: {\n          focus: function() {\n            $module.addClass(className.focus);\n          },\n          loading: function() {\n            $module.addClass(className.loading);\n          },\n          value: function(value) {\n            module.verbose('Setting search input value', value);\n            $prompt\n              .val(value)\n            ;\n          },\n          type: function(type) {\n            type = type || settings.type;\n            if(settings.type == 'category') {\n              $module.addClass(settings.type);\n            }\n          },\n          buttonPressed: function() {\n            $searchButton.addClass(className.pressed);\n          }\n        },\n\n        remove: {\n          loading: function() {\n            $module.removeClass(className.loading);\n          },\n          focus: function() {\n            $module.removeClass(className.focus);\n          },\n          buttonPressed: function() {\n            $searchButton.removeClass(className.pressed);\n          }\n        },\n\n        query: function(callback) {\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          var\n            searchTerm = module.get.value(),\n            cache = module.read.cache(searchTerm)\n          ;\n          callback = callback || function() {};\n          if( module.has.minimumCharacters() )  {\n            if(cache) {\n              module.debug('Reading result from cache', searchTerm);\n              module.save.results(cache.results);\n              module.addResults(cache.html);\n              module.inject.id(cache.results);\n              callback();\n            }\n            else {\n              module.debug('Querying for', searchTerm);\n              if($.isPlainObject(settings.source) || $.isArray(settings.source)) {\n                module.search.local(searchTerm);\n                callback();\n              }\n              else if( module.can.useAPI() ) {\n                module.search.remote(searchTerm, callback);\n              }\n              else {\n                module.error(error.source);\n                callback();\n              }\n            }\n            settings.onSearchQuery.call(element, searchTerm);\n          }\n          else {\n            module.hideResults();\n          }\n        },\n\n        search: {\n          local: function(searchTerm) {\n            var\n              results = module.search.object(searchTerm, settings.content),\n              searchHTML\n            ;\n            module.set.loading();\n            module.save.results(results);\n            module.debug('Returned local search results', results);\n\n            searchHTML = module.generateResults({\n              results: results\n            });\n            module.remove.loading();\n            module.addResults(searchHTML);\n            module.inject.id(results);\n            module.write.cache(searchTerm, {\n              html    : searchHTML,\n              results : results\n            });\n          },\n          remote: function(searchTerm, callback) {\n            callback = $.isFunction(callback)\n              ? callback\n              : function(){}\n            ;\n            if($module.api('is loading')) {\n              $module.api('abort');\n            }\n            module.setup.api(searchTerm, callback);\n            $module\n              .api('query')\n            ;\n          },\n          object: function(searchTerm, source, searchFields) {\n            var\n              results      = [],\n              fuzzyResults = [],\n              searchExp    = searchTerm.toString().replace(regExp.escape, '\\\\$&'),\n              matchRegExp  = new RegExp(regExp.beginsWith + searchExp, 'i'),\n\n              // avoid duplicates when pushing results\n              addResult = function(array, result) {\n                var\n                  notResult      = ($.inArray(result, results) == -1),\n                  notFuzzyResult = ($.inArray(result, fuzzyResults) == -1)\n                ;\n                if(notResult && notFuzzyResult) {\n                  array.push(result);\n                }\n              }\n            ;\n            source = source || settings.source;\n            searchFields = (searchFields !== undefined)\n              ? searchFields\n              : settings.searchFields\n            ;\n\n            // search fields should be array to loop correctly\n            if(!$.isArray(searchFields)) {\n              searchFields = [searchFields];\n            }\n\n            // exit conditions if no source\n            if(source === undefined || source === false) {\n              module.error(error.source);\n              return [];\n            }\n\n            // iterate through search fields looking for matches\n            $.each(searchFields, function(index, field) {\n              $.each(source, function(label, content) {\n                var\n                  fieldExists = (typeof content[field] == 'string')\n                ;\n                if(fieldExists) {\n                  if( content[field].search(matchRegExp) !== -1) {\n                    // content starts with value (first in results)\n                    addResult(results, content);\n                  }\n                  else if(settings.searchFullText && module.fuzzySearch(searchTerm, content[field]) ) {\n                    // content fuzzy matches (last in results)\n                    addResult(fuzzyResults, content);\n                  }\n                }\n              });\n            });\n            return $.merge(results, fuzzyResults);\n          }\n        },\n\n        fuzzySearch: function(query, term) {\n          var\n            termLength  = term.length,\n            queryLength = query.length\n          ;\n          if(typeof query !== 'string') {\n            return false;\n          }\n          query = query.toLowerCase();\n          term  = term.toLowerCase();\n          if(queryLength > termLength) {\n            return false;\n          }\n          if(queryLength === termLength) {\n            return (query === term);\n          }\n          search: for (var characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) {\n            var\n              queryCharacter = query.charCodeAt(characterIndex)\n            ;\n            while(nextCharacterIndex < termLength) {\n              if(term.charCodeAt(nextCharacterIndex++) === queryCharacter) {\n                continue search;\n              }\n            }\n            return false;\n          }\n          return true;\n        },\n\n        parse: {\n          response: function(response, searchTerm) {\n            var\n              searchHTML = module.generateResults(response)\n            ;\n            module.verbose('Parsing server response', response);\n            if(response !== undefined) {\n              if(searchTerm !== undefined && response[fields.results] !== undefined) {\n                module.addResults(searchHTML);\n                module.inject.id(response[fields.results]);\n                module.write.cache(searchTerm, {\n                  html    : searchHTML,\n                  results : response[fields.results]\n                });\n                module.save.results(response[fields.results]);\n              }\n            }\n          }\n        },\n\n        cancel: {\n          query: function() {\n            if( module.can.useAPI() ) {\n              $module.api('abort');\n            }\n          }\n        },\n\n        has: {\n          minimumCharacters: function() {\n            var\n              searchTerm    = module.get.value(),\n              numCharacters = searchTerm.length\n            ;\n            return (numCharacters >= settings.minCharacters);\n          },\n          results: function() {\n            if($results.length === 0) {\n              return false;\n            }\n            var\n              html = $results.html()\n            ;\n            return html != '';\n          }\n        },\n\n        clear: {\n          cache: function(value) {\n            var\n              cache = $module.data(metadata.cache)\n            ;\n            if(!value) {\n              module.debug('Clearing cache', value);\n              $module.removeData(metadata.cache);\n            }\n            else if(value && cache && cache[value]) {\n              module.debug('Removing value from cache', value);\n              delete cache[value];\n              $module.data(metadata.cache, cache);\n            }\n          }\n        },\n\n        read: {\n          cache: function(name) {\n            var\n              cache = $module.data(metadata.cache)\n            ;\n            if(settings.cache) {\n              module.verbose('Checking cache for generated html for query', name);\n              return (typeof cache == 'object') && (cache[name] !== undefined)\n                ? cache[name]\n                : false\n              ;\n            }\n            return false;\n          }\n        },\n\n        create: {\n          id: function(resultIndex, categoryIndex) {\n            var\n              resultID      = (resultIndex + 1), // not zero indexed\n              categoryID    = (categoryIndex + 1),\n              firstCharCode,\n              letterID,\n              id\n            ;\n            if(categoryIndex !== undefined) {\n              // start char code for \"A\"\n              letterID = String.fromCharCode(97 + categoryIndex);\n              id          = letterID + resultID;\n              module.verbose('Creating category result id', id);\n            }\n            else {\n              id = resultID;\n              module.verbose('Creating result id', id);\n            }\n            return id;\n          },\n          results: function() {\n            if($results.length === 0) {\n              $results = $('<div />')\n                .addClass(className.results)\n                .appendTo($module)\n              ;\n            }\n          }\n        },\n\n        inject: {\n          result: function(result, resultIndex, categoryIndex) {\n            module.verbose('Injecting result into results');\n            var\n              $selectedResult = (categoryIndex !== undefined)\n                ? $results\n                    .children().eq(categoryIndex)\n                      .children(selector.result).eq(resultIndex)\n                : $results\n                    .children(selector.result).eq(resultIndex)\n            ;\n            module.verbose('Injecting results metadata', $selectedResult);\n            $selectedResult\n              .data(metadata.result, result)\n            ;\n          },\n          id: function(results) {\n            module.debug('Injecting unique ids into results');\n            var\n              // since results may be object, we must use counters\n              categoryIndex = 0,\n              resultIndex   = 0\n            ;\n            if(settings.type === 'category') {\n              // iterate through each category result\n              $.each(results, function(index, category) {\n                resultIndex = 0;\n                $.each(category.results, function(index, value) {\n                  var\n                    result = category.results[index]\n                  ;\n                  if(result.id === undefined) {\n                    result.id = module.create.id(resultIndex, categoryIndex);\n                  }\n                  module.inject.result(result, resultIndex, categoryIndex);\n                  resultIndex++;\n                });\n                categoryIndex++;\n              });\n            }\n            else {\n              // top level\n              $.each(results, function(index, value) {\n                var\n                  result = results[index]\n                ;\n                if(result.id === undefined) {\n                  result.id = module.create.id(resultIndex);\n                }\n                module.inject.result(result, resultIndex);\n                resultIndex++;\n              });\n            }\n            return results;\n          }\n        },\n\n        save: {\n          results: function(results) {\n            module.verbose('Saving current search results to metadata', results);\n            $module.data(metadata.results, results);\n          }\n        },\n\n        write: {\n          cache: function(name, value) {\n            var\n              cache = ($module.data(metadata.cache) !== undefined)\n                ? $module.data(metadata.cache)\n                : {}\n            ;\n            if(settings.cache) {\n              module.verbose('Writing generated html to cache', name, value);\n              cache[name] = value;\n              $module\n                .data(metadata.cache, cache)\n              ;\n            }\n          }\n        },\n\n        addResults: function(html) {\n          if( $.isFunction(settings.onResultsAdd) ) {\n            if( settings.onResultsAdd.call($results, html) === false ) {\n              module.debug('onResultsAdd callback cancelled default action');\n              return false;\n            }\n          }\n          if(html) {\n            $results\n              .html(html)\n            ;\n            module.refreshResults();\n            if(settings.selectFirstResult) {\n              module.select.firstResult();\n            }\n            module.showResults();\n          }\n          else {\n            module.hideResults(function() {\n              $results.empty();\n            });\n          }\n        },\n\n        showResults: function(callback) {\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          if(resultsDismissed) {\n            return;\n          }\n          if(!module.is.visible() && module.has.results()) {\n            if( module.can.transition() ) {\n              module.debug('Showing results with css animations');\n              $results\n                .transition({\n                  animation  : settings.transition + ' in',\n                  debug      : settings.debug,\n                  verbose    : settings.verbose,\n                  duration   : settings.duration,\n                  onComplete : function() {\n                    callback();\n                  },\n                  queue      : true\n                })\n              ;\n            }\n            else {\n              module.debug('Showing results with javascript');\n              $results\n                .stop()\n                .fadeIn(settings.duration, settings.easing)\n              ;\n            }\n            settings.onResultsOpen.call($results);\n          }\n        },\n        hideResults: function(callback) {\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          if( module.is.visible() ) {\n            if( module.can.transition() ) {\n              module.debug('Hiding results with css animations');\n              $results\n                .transition({\n                  animation  : settings.transition + ' out',\n                  debug      : settings.debug,\n                  verbose    : settings.verbose,\n                  duration   : settings.duration,\n                  onComplete : function() {\n                    callback();\n                  },\n                  queue      : true\n                })\n              ;\n            }\n            else {\n              module.debug('Hiding results with javascript');\n              $results\n                .stop()\n                .fadeOut(settings.duration, settings.easing)\n              ;\n            }\n            settings.onResultsClose.call($results);\n          }\n        },\n\n        generateResults: function(response) {\n          module.debug('Generating html from response', response);\n          var\n            template       = settings.templates[settings.type],\n            isProperObject = ($.isPlainObject(response[fields.results]) && !$.isEmptyObject(response[fields.results])),\n            isProperArray  = ($.isArray(response[fields.results]) && response[fields.results].length > 0),\n            html           = ''\n          ;\n          if(isProperObject || isProperArray ) {\n            if(settings.maxResults > 0) {\n              if(isProperObject) {\n                if(settings.type == 'standard') {\n                  module.error(error.maxResults);\n                }\n              }\n              else {\n                response[fields.results] = response[fields.results].slice(0, settings.maxResults);\n              }\n            }\n            if($.isFunction(template)) {\n              html = template(response, fields);\n            }\n            else {\n              module.error(error.noTemplate, false);\n            }\n          }\n          else if(settings.showNoResults) {\n            html = module.displayMessage(error.noResults, 'empty');\n          }\n          settings.onResults.call(element, response);\n          return html;\n        },\n\n        displayMessage: function(text, type) {\n          type = type || 'standard';\n          module.debug('Displaying message', text, type);\n          module.addResults( settings.templates.message(text, type) );\n          return settings.templates.message(text, type);\n        },\n\n        setting: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            settings[name] = value;\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if($allModules.length > 1) {\n              title += ' ' + '(' + $allModules.length + ')';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                return false;\n              }\n            });\n          }\n          if( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n\n    })\n  ;\n\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.search.settings = {\n\n  name              : 'Search',\n  namespace         : 'search',\n\n  silent            : false,\n  debug             : false,\n  verbose           : false,\n  performance       : true,\n\n  // template to use (specified in settings.templates)\n  type              : 'standard',\n\n  // minimum characters required to search\n  minCharacters     : 1,\n\n  // whether to select first result after searching automatically\n  selectFirstResult : false,\n\n  // API config\n  apiSettings       : false,\n\n  // object to search\n  source            : false,\n\n  // Whether search should query current term on focus\n  searchOnFocus     : true,\n\n  // fields to search\n  searchFields   : [\n    'title',\n    'description'\n  ],\n\n  // field to display in standard results template\n  displayField   : '',\n\n  // whether to include fuzzy results in local search\n  searchFullText : true,\n\n  // whether to add events to prompt automatically\n  automatic      : true,\n\n  // delay before hiding menu after blur\n  hideDelay      : 0,\n\n  // delay before searching\n  searchDelay    : 200,\n\n  // maximum results returned from local\n  maxResults     : 7,\n\n  // whether to store lookups in local cache\n  cache          : true,\n\n  // whether no results errors should be shown\n  showNoResults  : true,\n\n  // transition settings\n  transition     : 'scale',\n  duration       : 200,\n  easing         : 'easeOutExpo',\n\n  // callbacks\n  onSelect       : false,\n  onResultsAdd   : false,\n\n  onSearchQuery  : function(query){},\n  onResults      : function(response){},\n\n  onResultsOpen  : function(){},\n  onResultsClose : function(){},\n\n  className: {\n    animating : 'animating',\n    active    : 'active',\n    empty     : 'empty',\n    focus     : 'focus',\n    hidden    : 'hidden',\n    loading   : 'loading',\n    results   : 'results',\n    pressed   : 'down'\n  },\n\n  error : {\n    source      : 'Cannot search. No source used, and Semantic API module was not included',\n    noResults   : 'Your search returned no results',\n    logging     : 'Error in debug logging, exiting.',\n    noEndpoint  : 'No search endpoint was specified',\n    noTemplate  : 'A valid template name was not specified.',\n    serverError : 'There was an issue querying the server.',\n    maxResults  : 'Results must be an array to use maxResults setting',\n    method      : 'The method you called is not defined.'\n  },\n\n  metadata: {\n    cache   : 'cache',\n    results : 'results',\n    result  : 'result'\n  },\n\n  regExp: {\n    escape     : /[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\n    beginsWith : '(?:\\s|^)'\n  },\n\n  // maps api response attributes to internal representation\n  fields: {\n    categories      : 'results',     // array of categories (category view)\n    categoryName    : 'name',        // name of category (category view)\n    categoryResults : 'results',     // array of results (category view)\n    description     : 'description', // result description\n    image           : 'image',       // result image\n    price           : 'price',       // result price\n    results         : 'results',     // array of results (standard)\n    title           : 'title',       // result title\n    url             : 'url',         // result url\n    action          : 'action',      // \"view more\" object name\n    actionText      : 'text',        // \"view more\" text\n    actionURL       : 'url'          // \"view more\" url\n  },\n\n  selector : {\n    prompt       : '.prompt',\n    searchButton : '.search.button',\n    results      : '.results',\n    message      : '.results > .message',\n    category     : '.category',\n    result       : '.result',\n    title        : '.title, .name'\n  },\n\n  templates: {\n    escape: function(string) {\n      var\n        badChars     = /[&<>\"'`]/g,\n        shouldEscape = /[&<>\"'`]/,\n        escape       = {\n          \"&\": \"&amp;\",\n          \"<\": \"&lt;\",\n          \">\": \"&gt;\",\n          '\"': \"&quot;\",\n          \"'\": \"&#x27;\",\n          \"`\": \"&#x60;\"\n        },\n        escapedChar  = function(chr) {\n          return escape[chr];\n        }\n      ;\n      if(shouldEscape.test(string)) {\n        return string.replace(badChars, escapedChar);\n      }\n      return string;\n    },\n    message: function(message, type) {\n      var\n        html = ''\n      ;\n      if(message !== undefined && type !== undefined) {\n        html +=  ''\n          + '<div class=\"message ' + type + '\">'\n        ;\n        // message type\n        if(type == 'empty') {\n          html += ''\n            + '<div class=\"header\">No Results</div class=\"header\">'\n            + '<div class=\"description\">' + message + '</div class=\"description\">'\n          ;\n        }\n        else {\n          html += ' <div class=\"description\">' + message + '</div>';\n        }\n        html += '</div>';\n      }\n      return html;\n    },\n    category: function(response, fields) {\n      var\n        html = '',\n        escape = $.fn.search.settings.templates.escape\n      ;\n      if(response[fields.categoryResults] !== undefined) {\n\n        // each category\n        $.each(response[fields.categoryResults], function(index, category) {\n          if(category[fields.results] !== undefined && category.results.length > 0) {\n\n            html  += '<div class=\"category\">';\n\n            if(category[fields.categoryName] !== undefined) {\n              html += '<div class=\"name\">' + category[fields.categoryName] + '</div>';\n            }\n\n            // each item inside category\n            $.each(category.results, function(index, result) {\n              if(result[fields.url]) {\n                html  += '<a class=\"result\" href=\"' + result[fields.url] + '\">';\n              }\n              else {\n                html  += '<a class=\"result\">';\n              }\n              if(result[fields.image] !== undefined) {\n                html += ''\n                  + '<div class=\"image\">'\n                  + ' <img src=\"' + result[fields.image] + '\">'\n                  + '</div>'\n                ;\n              }\n              html += '<div class=\"content\">';\n              if(result[fields.price] !== undefined) {\n                html += '<div class=\"price\">' + result[fields.price] + '</div>';\n              }\n              if(result[fields.title] !== undefined) {\n                html += '<div class=\"title\">' + result[fields.title] + '</div>';\n              }\n              if(result[fields.description] !== undefined) {\n                html += '<div class=\"description\">' + result[fields.description] + '</div>';\n              }\n              html  += ''\n                + '</div>'\n              ;\n              html += '</a>';\n            });\n            html  += ''\n              + '</div>'\n            ;\n          }\n        });\n        if(response[fields.action]) {\n          html += ''\n          + '<a href=\"' + response[fields.action][fields.actionURL] + '\" class=\"action\">'\n          +   response[fields.action][fields.actionText]\n          + '</a>';\n        }\n        return html;\n      }\n      return false;\n    },\n    standard: function(response, fields) {\n      var\n        html = ''\n      ;\n      if(response[fields.results] !== undefined) {\n\n        // each result\n        $.each(response[fields.results], function(index, result) {\n          if(result[fields.url]) {\n            html  += '<a class=\"result\" href=\"' + result[fields.url] + '\">';\n          }\n          else {\n            html  += '<a class=\"result\">';\n          }\n          if(result[fields.image] !== undefined) {\n            html += ''\n              + '<div class=\"image\">'\n              + ' <img src=\"' + result[fields.image] + '\">'\n              + '</div>'\n            ;\n          }\n          html += '<div class=\"content\">';\n          if(result[fields.price] !== undefined) {\n            html += '<div class=\"price\">' + result[fields.price] + '</div>';\n          }\n          if(result[fields.title] !== undefined) {\n            html += '<div class=\"title\">' + result[fields.title] + '</div>';\n          }\n          if(result[fields.description] !== undefined) {\n            html += '<div class=\"description\">' + result[fields.description] + '</div>';\n          }\n          html  += ''\n            + '</div>'\n          ;\n          html += '</a>';\n        });\n\n        if(response[fields.action]) {\n          html += ''\n          + '<a href=\"' + response[fields.action][fields.actionURL] + '\" class=\"action\">'\n          +   response[fields.action][fields.actionText]\n          + '</a>';\n        }\n        return html;\n      }\n      return false;\n    }\n  }\n};\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Shape\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.shape = function(parameters) {\n  var\n    $allModules     = $(this),\n    $body           = $('body'),\n\n    time            = new Date().getTime(),\n    performance     = [],\n\n    query           = arguments[0],\n    methodInvoked   = (typeof query == 'string'),\n    queryArguments  = [].slice.call(arguments, 1),\n\n    requestAnimationFrame = window.requestAnimationFrame\n      || window.mozRequestAnimationFrame\n      || window.webkitRequestAnimationFrame\n      || window.msRequestAnimationFrame\n      || function(callback) { setTimeout(callback, 0); },\n\n    returnedValue\n  ;\n\n  $allModules\n    .each(function() {\n      var\n        moduleSelector = $allModules.selector || '',\n        settings       = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.shape.settings, parameters)\n          : $.extend({}, $.fn.shape.settings),\n\n        // internal aliases\n        namespace     = settings.namespace,\n        selector      = settings.selector,\n        error         = settings.error,\n        className     = settings.className,\n\n        // define namespaces for modules\n        eventNamespace  = '.' + namespace,\n        moduleNamespace = 'module-' + namespace,\n\n        // selector cache\n        $module       = $(this),\n        $sides        = $module.find(selector.sides),\n        $side         = $module.find(selector.side),\n\n        // private variables\n        nextIndex = false,\n        $activeSide,\n        $nextSide,\n\n        // standard module\n        element       = this,\n        instance      = $module.data(moduleNamespace),\n        module\n      ;\n\n      module = {\n\n        initialize: function() {\n          module.verbose('Initializing module for', element);\n          module.set.defaultSide();\n          module.instantiate();\n        },\n\n        instantiate: function() {\n          module.verbose('Storing instance of module', module);\n          instance = module;\n          $module\n            .data(moduleNamespace, instance)\n          ;\n        },\n\n        destroy: function() {\n          module.verbose('Destroying previous module for', element);\n          $module\n            .removeData(moduleNamespace)\n            .off(eventNamespace)\n          ;\n        },\n\n        refresh: function() {\n          module.verbose('Refreshing selector cache for', element);\n          $module = $(element);\n          $sides  = $(this).find(selector.shape);\n          $side   = $(this).find(selector.side);\n        },\n\n        repaint: function() {\n          module.verbose('Forcing repaint event');\n          var\n            shape          = $sides[0] || document.createElement('div'),\n            fakeAssignment = shape.offsetWidth\n          ;\n        },\n\n        animate: function(propertyObject, callback) {\n          module.verbose('Animating box with properties', propertyObject);\n          callback = callback || function(event) {\n            module.verbose('Executing animation callback');\n            if(event !== undefined) {\n              event.stopPropagation();\n            }\n            module.reset();\n            module.set.active();\n          };\n          settings.beforeChange.call($nextSide[0]);\n          if(module.get.transitionEvent()) {\n            module.verbose('Starting CSS animation');\n            $module\n              .addClass(className.animating)\n            ;\n            $sides\n              .css(propertyObject)\n              .one(module.get.transitionEvent(), callback)\n            ;\n            module.set.duration(settings.duration);\n            requestAnimationFrame(function() {\n              $module\n                .addClass(className.animating)\n              ;\n              $activeSide\n                .addClass(className.hidden)\n              ;\n            });\n          }\n          else {\n            callback();\n          }\n        },\n\n        queue: function(method) {\n          module.debug('Queueing animation of', method);\n          $sides\n            .one(module.get.transitionEvent(), function() {\n              module.debug('Executing queued animation');\n              setTimeout(function(){\n                $module.shape(method);\n              }, 0);\n            })\n          ;\n        },\n\n        reset: function() {\n          module.verbose('Animating states reset');\n          $module\n            .removeClass(className.animating)\n            .attr('style', '')\n            .removeAttr('style')\n          ;\n          // removeAttr style does not consistently work in safari\n          $sides\n            .attr('style', '')\n            .removeAttr('style')\n          ;\n          $side\n            .attr('style', '')\n            .removeAttr('style')\n            .removeClass(className.hidden)\n          ;\n          $nextSide\n            .removeClass(className.animating)\n            .attr('style', '')\n            .removeAttr('style')\n          ;\n        },\n\n        is: {\n          complete: function() {\n            return ($side.filter('.' + className.active)[0] == $nextSide[0]);\n          },\n          animating: function() {\n            return $module.hasClass(className.animating);\n          }\n        },\n\n        set: {\n\n          defaultSide: function() {\n            $activeSide = $module.find('.' + settings.className.active);\n            $nextSide   = ( $activeSide.next(selector.side).length > 0 )\n              ? $activeSide.next(selector.side)\n              : $module.find(selector.side).first()\n            ;\n            nextIndex = false;\n            module.verbose('Active side set to', $activeSide);\n            module.verbose('Next side set to', $nextSide);\n          },\n\n          duration: function(duration) {\n            duration = duration || settings.duration;\n            duration = (typeof duration == 'number')\n              ? duration + 'ms'\n              : duration\n            ;\n            module.verbose('Setting animation duration', duration);\n            if(settings.duration || settings.duration === 0) {\n              $sides.add($side)\n                .css({\n                  '-webkit-transition-duration': duration,\n                  '-moz-transition-duration': duration,\n                  '-ms-transition-duration': duration,\n                  '-o-transition-duration': duration,\n                  'transition-duration': duration\n                })\n              ;\n            }\n          },\n\n          currentStageSize: function() {\n            var\n              $activeSide = $module.find('.' + settings.className.active),\n              width       = $activeSide.outerWidth(true),\n              height      = $activeSide.outerHeight(true)\n            ;\n            $module\n              .css({\n                width: width,\n                height: height\n              })\n            ;\n          },\n\n          stageSize: function() {\n            var\n              $clone      = $module.clone().addClass(className.loading),\n              $activeSide = $clone.find('.' + settings.className.active),\n              $nextSide   = (nextIndex)\n                ? $clone.find(selector.side).eq(nextIndex)\n                : ( $activeSide.next(selector.side).length > 0 )\n                  ? $activeSide.next(selector.side)\n                  : $clone.find(selector.side).first(),\n              newWidth    = (settings.width == 'next')\n                ? $nextSide.outerWidth(true)\n                : (settings.width == 'initial')\n                  ? $module.width()\n                  : settings.width,\n              newHeight    = (settings.height == 'next')\n                ? $nextSide.outerHeight(true)\n                : (settings.height == 'initial')\n                  ? $module.height()\n                  : settings.height\n            ;\n            $activeSide.removeClass(className.active);\n            $nextSide.addClass(className.active);\n            $clone.insertAfter($module);\n            $clone.remove();\n            if(settings.width != 'auto') {\n              $module.css('width', newWidth + settings.jitter);\n              module.verbose('Specifying width during animation', newWidth);\n            }\n            if(settings.height != 'auto') {\n              $module.css('height', newHeight + settings.jitter);\n              module.verbose('Specifying height during animation', newHeight);\n            }\n          },\n\n          nextSide: function(selector) {\n            nextIndex = selector;\n            $nextSide = $side.filter(selector);\n            nextIndex = $side.index($nextSide);\n            if($nextSide.length === 0) {\n              module.set.defaultSide();\n              module.error(error.side);\n            }\n            module.verbose('Next side manually set to', $nextSide);\n          },\n\n          active: function() {\n            module.verbose('Setting new side to active', $nextSide);\n            $side\n              .removeClass(className.active)\n            ;\n            $nextSide\n              .addClass(className.active)\n            ;\n            settings.onChange.call($nextSide[0]);\n            module.set.defaultSide();\n          }\n        },\n\n        flip: {\n\n          up: function() {\n            if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) {\n              module.debug('Side already visible', $nextSide);\n              return;\n            }\n            if( !module.is.animating()) {\n              module.debug('Flipping up', $nextSide);\n              var\n                transform = module.get.transform.up()\n              ;\n              module.set.stageSize();\n              module.stage.above();\n              module.animate(transform);\n            }\n            else {\n              module.queue('flip up');\n            }\n          },\n\n          down: function() {\n            if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) {\n              module.debug('Side already visible', $nextSide);\n              return;\n            }\n            if( !module.is.animating()) {\n              module.debug('Flipping down', $nextSide);\n              var\n                transform = module.get.transform.down()\n              ;\n              module.set.stageSize();\n              module.stage.below();\n              module.animate(transform);\n            }\n            else {\n              module.queue('flip down');\n            }\n          },\n\n          left: function() {\n            if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) {\n              module.debug('Side already visible', $nextSide);\n              return;\n            }\n            if( !module.is.animating()) {\n              module.debug('Flipping left', $nextSide);\n              var\n                transform = module.get.transform.left()\n              ;\n              module.set.stageSize();\n              module.stage.left();\n              module.animate(transform);\n            }\n            else {\n              module.queue('flip left');\n            }\n          },\n\n          right: function() {\n            if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) {\n              module.debug('Side already visible', $nextSide);\n              return;\n            }\n            if( !module.is.animating()) {\n              module.debug('Flipping right', $nextSide);\n              var\n                transform = module.get.transform.right()\n              ;\n              module.set.stageSize();\n              module.stage.right();\n              module.animate(transform);\n            }\n            else {\n              module.queue('flip right');\n            }\n          },\n\n          over: function() {\n            if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) {\n              module.debug('Side already visible', $nextSide);\n              return;\n            }\n            if( !module.is.animating()) {\n              module.debug('Flipping over', $nextSide);\n              module.set.stageSize();\n              module.stage.behind();\n              module.animate(module.get.transform.over() );\n            }\n            else {\n              module.queue('flip over');\n            }\n          },\n\n          back: function() {\n            if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) {\n              module.debug('Side already visible', $nextSide);\n              return;\n            }\n            if( !module.is.animating()) {\n              module.debug('Flipping back', $nextSide);\n              module.set.stageSize();\n              module.stage.behind();\n              module.animate(module.get.transform.back() );\n            }\n            else {\n              module.queue('flip back');\n            }\n          }\n\n        },\n\n        get: {\n\n          transform: {\n            up: function() {\n              var\n                translate = {\n                  y: -(($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2),\n                  z: -($activeSide.outerHeight(true) / 2)\n                }\n              ;\n              return {\n                transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(-90deg)'\n              };\n            },\n\n            down: function() {\n              var\n                translate = {\n                  y: -(($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2),\n                  z: -($activeSide.outerHeight(true) / 2)\n                }\n              ;\n              return {\n                transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(90deg)'\n              };\n            },\n\n            left: function() {\n              var\n                translate = {\n                  x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2),\n                  z : -($activeSide.outerWidth(true) / 2)\n                }\n              ;\n              return {\n                transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(90deg)'\n              };\n            },\n\n            right: function() {\n              var\n                translate = {\n                  x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2),\n                  z : -($activeSide.outerWidth(true) / 2)\n                }\n              ;\n              return {\n                transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(-90deg)'\n              };\n            },\n\n            over: function() {\n              var\n                translate = {\n                  x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2)\n                }\n              ;\n              return {\n                transform: 'translateX(' + translate.x + 'px) rotateY(180deg)'\n              };\n            },\n\n            back: function() {\n              var\n                translate = {\n                  x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2)\n                }\n              ;\n              return {\n                transform: 'translateX(' + translate.x + 'px) rotateY(-180deg)'\n              };\n            }\n          },\n\n          transitionEvent: function() {\n            var\n              element     = document.createElement('element'),\n              transitions = {\n                'transition'       :'transitionend',\n                'OTransition'      :'oTransitionEnd',\n                'MozTransition'    :'transitionend',\n                'WebkitTransition' :'webkitTransitionEnd'\n              },\n              transition\n            ;\n            for(transition in transitions){\n              if( element.style[transition] !== undefined ){\n                return transitions[transition];\n              }\n            }\n          },\n\n          nextSide: function() {\n            return ( $activeSide.next(selector.side).length > 0 )\n              ? $activeSide.next(selector.side)\n              : $module.find(selector.side).first()\n            ;\n          }\n\n        },\n\n        stage: {\n\n          above: function() {\n            var\n              box = {\n                origin : (($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2),\n                depth  : {\n                  active : ($nextSide.outerHeight(true) / 2),\n                  next   : ($activeSide.outerHeight(true) / 2)\n                }\n              }\n            ;\n            module.verbose('Setting the initial animation position as above', $nextSide, box);\n            $sides\n              .css({\n                'transform' : 'translateZ(-' + box.depth.active + 'px)'\n              })\n            ;\n            $activeSide\n              .css({\n                'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)'\n              })\n            ;\n            $nextSide\n              .addClass(className.animating)\n              .css({\n                'top'       : box.origin + 'px',\n                'transform' : 'rotateX(90deg) translateZ(' + box.depth.next + 'px)'\n              })\n            ;\n          },\n\n          below: function() {\n            var\n              box = {\n                origin : (($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2),\n                depth  : {\n                  active : ($nextSide.outerHeight(true) / 2),\n                  next   : ($activeSide.outerHeight(true) / 2)\n                }\n              }\n            ;\n            module.verbose('Setting the initial animation position as below', $nextSide, box);\n            $sides\n              .css({\n                'transform' : 'translateZ(-' + box.depth.active + 'px)'\n              })\n            ;\n            $activeSide\n              .css({\n                'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)'\n              })\n            ;\n            $nextSide\n              .addClass(className.animating)\n              .css({\n                'top'       : box.origin + 'px',\n                'transform' : 'rotateX(-90deg) translateZ(' + box.depth.next + 'px)'\n              })\n            ;\n          },\n\n          left: function() {\n            var\n              height = {\n                active : $activeSide.outerWidth(true),\n                next   : $nextSide.outerWidth(true)\n              },\n              box = {\n                origin : ( ( height.active - height.next ) / 2),\n                depth  : {\n                  active : (height.next / 2),\n                  next   : (height.active / 2)\n                }\n              }\n            ;\n            module.verbose('Setting the initial animation position as left', $nextSide, box);\n            $sides\n              .css({\n                'transform' : 'translateZ(-' + box.depth.active + 'px)'\n              })\n            ;\n            $activeSide\n              .css({\n                'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)'\n              })\n            ;\n            $nextSide\n              .addClass(className.animating)\n              .css({\n                'left'      : box.origin + 'px',\n                'transform' : 'rotateY(-90deg) translateZ(' + box.depth.next + 'px)'\n              })\n            ;\n          },\n\n          right: function() {\n            var\n              height = {\n                active : $activeSide.outerWidth(true),\n                next   : $nextSide.outerWidth(true)\n              },\n              box = {\n                origin : ( ( height.active - height.next ) / 2),\n                depth  : {\n                  active : (height.next / 2),\n                  next   : (height.active / 2)\n                }\n              }\n            ;\n            module.verbose('Setting the initial animation position as left', $nextSide, box);\n            $sides\n              .css({\n                'transform' : 'translateZ(-' + box.depth.active + 'px)'\n              })\n            ;\n            $activeSide\n              .css({\n                'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)'\n              })\n            ;\n            $nextSide\n              .addClass(className.animating)\n              .css({\n                'left'      : box.origin + 'px',\n                'transform' : 'rotateY(90deg) translateZ(' + box.depth.next + 'px)'\n              })\n            ;\n          },\n\n          behind: function() {\n            var\n              height = {\n                active : $activeSide.outerWidth(true),\n                next   : $nextSide.outerWidth(true)\n              },\n              box = {\n                origin : ( ( height.active - height.next ) / 2),\n                depth  : {\n                  active : (height.next / 2),\n                  next   : (height.active / 2)\n                }\n              }\n            ;\n            module.verbose('Setting the initial animation position as behind', $nextSide, box);\n            $activeSide\n              .css({\n                'transform' : 'rotateY(0deg)'\n              })\n            ;\n            $nextSide\n              .addClass(className.animating)\n              .css({\n                'left'      : box.origin + 'px',\n                'transform' : 'rotateY(-180deg)'\n              })\n            ;\n          }\n        },\n        setting: function(name, value) {\n          module.debug('Changing setting', name, value);\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            if($.isPlainObject(settings[name])) {\n              $.extend(true, settings[name], value);\n            }\n            else {\n              settings[name] = value;\n            }\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if($allModules.length > 1) {\n              title += ' ' + '(' + $allModules.length + ')';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.shape.settings = {\n\n  // module info\n  name : 'Shape',\n\n  // hide all debug content\n  silent     : false,\n\n  // debug content outputted to console\n  debug      : false,\n\n  // verbose debug output\n  verbose    : false,\n\n  // fudge factor in pixels when swapping from 2d to 3d (can be useful to correct rounding errors)\n  jitter     : 0,\n\n  // performance data output\n  performance: true,\n\n  // event namespace\n  namespace  : 'shape',\n\n  // width during animation, can be set to 'auto', initial', 'next' or pixel amount\n  width: 'initial',\n\n  // height during animation, can be set to 'auto', 'initial', 'next' or pixel amount\n  height: 'initial',\n\n  // callback occurs on side change\n  beforeChange : function() {},\n  onChange     : function() {},\n\n  // allow animation to same side\n  allowRepeats: false,\n\n  // animation duration\n  duration   : false,\n\n  // possible errors\n  error: {\n    side   : 'You tried to switch to a side that does not exist.',\n    method : 'The method you called is not defined'\n  },\n\n  // classnames used\n  className   : {\n    animating : 'animating',\n    hidden    : 'hidden',\n    loading   : 'loading',\n    active    : 'active'\n  },\n\n  // selectors used\n  selector    : {\n    sides : '.sides',\n    side  : '.side'\n  }\n\n};\n\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Sidebar\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.sidebar = function(parameters) {\n  var\n    $allModules     = $(this),\n    $window         = $(window),\n    $document       = $(document),\n    $html           = $('html'),\n    $head           = $('head'),\n\n    moduleSelector  = $allModules.selector || '',\n\n    time            = new Date().getTime(),\n    performance     = [],\n\n    query           = arguments[0],\n    methodInvoked   = (typeof query == 'string'),\n    queryArguments  = [].slice.call(arguments, 1),\n\n    requestAnimationFrame = window.requestAnimationFrame\n      || window.mozRequestAnimationFrame\n      || window.webkitRequestAnimationFrame\n      || window.msRequestAnimationFrame\n      || function(callback) { setTimeout(callback, 0); },\n\n    returnedValue\n  ;\n\n  $allModules\n    .each(function() {\n      var\n        settings        = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.sidebar.settings, parameters)\n          : $.extend({}, $.fn.sidebar.settings),\n\n        selector        = settings.selector,\n        className       = settings.className,\n        namespace       = settings.namespace,\n        regExp          = settings.regExp,\n        error           = settings.error,\n\n        eventNamespace  = '.' + namespace,\n        moduleNamespace = 'module-' + namespace,\n\n        $module         = $(this),\n        $context        = $(settings.context),\n\n        $sidebars       = $module.children(selector.sidebar),\n        $fixed          = $context.children(selector.fixed),\n        $pusher         = $context.children(selector.pusher),\n        $style,\n\n        element         = this,\n        instance        = $module.data(moduleNamespace),\n\n        elementNamespace,\n        id,\n        currentScroll,\n        transitionEvent,\n\n        module\n      ;\n\n      module      = {\n\n        initialize: function() {\n          module.debug('Initializing sidebar', parameters);\n\n          module.create.id();\n\n          transitionEvent = module.get.transitionEvent();\n\n          // avoids locking rendering if initialized in onReady\n          if(settings.delaySetup) {\n            requestAnimationFrame(module.setup.layout);\n          }\n          else {\n            module.setup.layout();\n          }\n\n          requestAnimationFrame(function() {\n            module.setup.cache();\n          });\n\n          module.instantiate();\n        },\n\n        instantiate: function() {\n          module.verbose('Storing instance of module', module);\n          instance = module;\n          $module\n            .data(moduleNamespace, module)\n          ;\n        },\n\n        create: {\n          id: function() {\n            id = (Math.random().toString(16) + '000000000').substr(2,8);\n            elementNamespace = '.' + id;\n            module.verbose('Creating unique id for element', id);\n          }\n        },\n\n        destroy: function() {\n          module.verbose('Destroying previous module for', $module);\n          $module\n            .off(eventNamespace)\n            .removeData(moduleNamespace)\n          ;\n          if(module.is.ios()) {\n            module.remove.ios();\n          }\n          // bound by uuid\n          $context.off(elementNamespace);\n          $window.off(elementNamespace);\n          $document.off(elementNamespace);\n        },\n\n        event: {\n          clickaway: function(event) {\n            var\n              clickedInPusher = ($pusher.find(event.target).length > 0 || $pusher.is(event.target)),\n              clickedContext  = ($context.is(event.target))\n            ;\n            if(clickedInPusher) {\n              module.verbose('User clicked on dimmed page');\n              module.hide();\n            }\n            if(clickedContext) {\n              module.verbose('User clicked on dimmable context (scaled out page)');\n              module.hide();\n            }\n          },\n          touch: function(event) {\n            //event.stopPropagation();\n          },\n          containScroll: function(event) {\n            if(element.scrollTop <= 0)  {\n              element.scrollTop = 1;\n            }\n            if((element.scrollTop + element.offsetHeight) >= element.scrollHeight) {\n              element.scrollTop = element.scrollHeight - element.offsetHeight - 1;\n            }\n          },\n          scroll: function(event) {\n            if( $(event.target).closest(selector.sidebar).length === 0 ) {\n              event.preventDefault();\n            }\n          }\n        },\n\n        bind: {\n          clickaway: function() {\n            module.verbose('Adding clickaway events to context', $context);\n            if(settings.closable) {\n              $context\n                .on('click'    + elementNamespace, module.event.clickaway)\n                .on('touchend' + elementNamespace, module.event.clickaway)\n              ;\n            }\n          },\n          scrollLock: function() {\n            if(settings.scrollLock) {\n              module.debug('Disabling page scroll');\n              $window\n                .on('DOMMouseScroll' + elementNamespace, module.event.scroll)\n              ;\n            }\n            module.verbose('Adding events to contain sidebar scroll');\n            $document\n              .on('touchmove' + elementNamespace, module.event.touch)\n            ;\n            $module\n              .on('scroll' + eventNamespace, module.event.containScroll)\n            ;\n          }\n        },\n        unbind: {\n          clickaway: function() {\n            module.verbose('Removing clickaway events from context', $context);\n            $context.off(elementNamespace);\n          },\n          scrollLock: function() {\n            module.verbose('Removing scroll lock from page');\n            $document.off(elementNamespace);\n            $window.off(elementNamespace);\n            $module.off('scroll' + eventNamespace);\n          }\n        },\n\n        add: {\n          inlineCSS: function() {\n            var\n              width     = module.cache.width  || $module.outerWidth(),\n              height    = module.cache.height || $module.outerHeight(),\n              isRTL     = module.is.rtl(),\n              direction = module.get.direction(),\n              distance  = {\n                left   : width,\n                right  : -width,\n                top    : height,\n                bottom : -height\n              },\n              style\n            ;\n\n            if(isRTL){\n              module.verbose('RTL detected, flipping widths');\n              distance.left = -width;\n              distance.right = width;\n            }\n\n            style  = '<style>';\n\n            if(direction === 'left' || direction === 'right') {\n              module.debug('Adding CSS rules for animation distance', width);\n              style  += ''\n                + ' .ui.visible.' + direction + '.sidebar ~ .fixed,'\n                + ' .ui.visible.' + direction + '.sidebar ~ .pusher {'\n                + '   -webkit-transform: translate3d('+ distance[direction] + 'px, 0, 0);'\n                + '           transform: translate3d('+ distance[direction] + 'px, 0, 0);'\n                + ' }'\n              ;\n            }\n            else if(direction === 'top' || direction == 'bottom') {\n              style  += ''\n                + ' .ui.visible.' + direction + '.sidebar ~ .fixed,'\n                + ' .ui.visible.' + direction + '.sidebar ~ .pusher {'\n                + '   -webkit-transform: translate3d(0, ' + distance[direction] + 'px, 0);'\n                + '           transform: translate3d(0, ' + distance[direction] + 'px, 0);'\n                + ' }'\n              ;\n            }\n\n            /* IE is only browser not to create context with transforms */\n            /* https://www.w3.org/Bugs/Public/show_bug.cgi?id=16328 */\n            if( module.is.ie() ) {\n              if(direction === 'left' || direction === 'right') {\n                module.debug('Adding CSS rules for animation distance', width);\n                style  += ''\n                  + ' body.pushable > .ui.visible.' + direction + '.sidebar ~ .pusher:after {'\n                  + '   -webkit-transform: translate3d('+ distance[direction] + 'px, 0, 0);'\n                  + '           transform: translate3d('+ distance[direction] + 'px, 0, 0);'\n                  + ' }'\n                ;\n              }\n              else if(direction === 'top' || direction == 'bottom') {\n                style  += ''\n                  + ' body.pushable > .ui.visible.' + direction + '.sidebar ~ .pusher:after {'\n                  + '   -webkit-transform: translate3d(0, ' + distance[direction] + 'px, 0);'\n                  + '           transform: translate3d(0, ' + distance[direction] + 'px, 0);'\n                  + ' }'\n                ;\n              }\n              /* opposite sides visible forces content overlay */\n              style += ''\n                + ' body.pushable > .ui.visible.left.sidebar ~ .ui.visible.right.sidebar ~ .pusher:after,'\n                + ' body.pushable > .ui.visible.right.sidebar ~ .ui.visible.left.sidebar ~ .pusher:after {'\n                + '   -webkit-transform: translate3d(0px, 0, 0);'\n                + '           transform: translate3d(0px, 0, 0);'\n                + ' }'\n              ;\n            }\n            style += '</style>';\n            $style = $(style)\n              .appendTo($head)\n            ;\n            module.debug('Adding sizing css to head', $style);\n          }\n        },\n\n        refresh: function() {\n          module.verbose('Refreshing selector cache');\n          $context  = $(settings.context);\n          $sidebars = $context.children(selector.sidebar);\n          $pusher   = $context.children(selector.pusher);\n          $fixed    = $context.children(selector.fixed);\n          module.clear.cache();\n        },\n\n        refreshSidebars: function() {\n          module.verbose('Refreshing other sidebars');\n          $sidebars = $context.children(selector.sidebar);\n        },\n\n        repaint: function() {\n          module.verbose('Forcing repaint event');\n          element.style.display = 'none';\n          var ignored = element.offsetHeight;\n          element.scrollTop = element.scrollTop;\n          element.style.display = '';\n        },\n\n        setup: {\n          cache: function() {\n            module.cache = {\n              width  : $module.outerWidth(),\n              height : $module.outerHeight(),\n              rtl    : ($module.css('direction') == 'rtl')\n            };\n          },\n          layout: function() {\n            if( $context.children(selector.pusher).length === 0 ) {\n              module.debug('Adding wrapper element for sidebar');\n              module.error(error.pusher);\n              $pusher = $('<div class=\"pusher\" />');\n              $context\n                .children()\n                  .not(selector.omitted)\n                  .not($sidebars)\n                  .wrapAll($pusher)\n              ;\n              module.refresh();\n            }\n            if($module.nextAll(selector.pusher).length === 0 || $module.nextAll(selector.pusher)[0] !== $pusher[0]) {\n              module.debug('Moved sidebar to correct parent element');\n              module.error(error.movedSidebar, element);\n              $module.detach().prependTo($context);\n              module.refresh();\n            }\n            module.clear.cache();\n            module.set.pushable();\n            module.set.direction();\n          }\n        },\n\n        attachEvents: function(selector, event) {\n          var\n            $toggle = $(selector)\n          ;\n          event = $.isFunction(module[event])\n            ? module[event]\n            : module.toggle\n          ;\n          if($toggle.length > 0) {\n            module.debug('Attaching sidebar events to element', selector, event);\n            $toggle\n              .on('click' + eventNamespace, event)\n            ;\n          }\n          else {\n            module.error(error.notFound, selector);\n          }\n        },\n\n        show: function(callback) {\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          if(module.is.hidden()) {\n            module.refreshSidebars();\n            if(settings.overlay)  {\n              module.error(error.overlay);\n              settings.transition = 'overlay';\n            }\n            module.refresh();\n            if(module.othersActive()) {\n              module.debug('Other sidebars currently visible');\n              if(settings.exclusive) {\n                // if not overlay queue animation after hide\n                if(settings.transition != 'overlay') {\n                  module.hideOthers(module.show);\n                  return;\n                }\n                else {\n                  module.hideOthers();\n                }\n              }\n              else {\n                settings.transition = 'overlay';\n              }\n            }\n            module.pushPage(function() {\n              callback.call(element);\n              settings.onShow.call(element);\n            });\n            settings.onChange.call(element);\n            settings.onVisible.call(element);\n          }\n          else {\n            module.debug('Sidebar is already visible');\n          }\n        },\n\n        hide: function(callback) {\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          if(module.is.visible() || module.is.animating()) {\n            module.debug('Hiding sidebar', callback);\n            module.refreshSidebars();\n            module.pullPage(function() {\n              callback.call(element);\n              settings.onHidden.call(element);\n            });\n            settings.onChange.call(element);\n            settings.onHide.call(element);\n          }\n        },\n\n        othersAnimating: function() {\n          return ($sidebars.not($module).filter('.' + className.animating).length > 0);\n        },\n        othersVisible: function() {\n          return ($sidebars.not($module).filter('.' + className.visible).length > 0);\n        },\n        othersActive: function() {\n          return(module.othersVisible() || module.othersAnimating());\n        },\n\n        hideOthers: function(callback) {\n          var\n            $otherSidebars = $sidebars.not($module).filter('.' + className.visible),\n            sidebarCount   = $otherSidebars.length,\n            callbackCount  = 0\n          ;\n          callback = callback || function(){};\n          $otherSidebars\n            .sidebar('hide', function() {\n              callbackCount++;\n              if(callbackCount == sidebarCount) {\n                callback();\n              }\n            })\n          ;\n        },\n\n        toggle: function() {\n          module.verbose('Determining toggled direction');\n          if(module.is.hidden()) {\n            module.show();\n          }\n          else {\n            module.hide();\n          }\n        },\n\n        pushPage: function(callback) {\n          var\n            transition = module.get.transition(),\n            $transition = (transition === 'overlay' || module.othersActive())\n              ? $module\n              : $pusher,\n            animate,\n            dim,\n            transitionEnd\n          ;\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          if(settings.transition == 'scale down') {\n            module.scrollToTop();\n          }\n          module.set.transition(transition);\n          module.repaint();\n          animate = function() {\n            module.bind.clickaway();\n            module.add.inlineCSS();\n            module.set.animating();\n            module.set.visible();\n          };\n          dim = function() {\n            module.set.dimmed();\n          };\n          transitionEnd = function(event) {\n            if( event.target == $transition[0] ) {\n              $transition.off(transitionEvent + elementNamespace, transitionEnd);\n              module.remove.animating();\n              module.bind.scrollLock();\n              callback.call(element);\n            }\n          };\n          $transition.off(transitionEvent + elementNamespace);\n          $transition.on(transitionEvent + elementNamespace, transitionEnd);\n          requestAnimationFrame(animate);\n          if(settings.dimPage && !module.othersVisible()) {\n            requestAnimationFrame(dim);\n          }\n        },\n\n        pullPage: function(callback) {\n          var\n            transition = module.get.transition(),\n            $transition = (transition == 'overlay' || module.othersActive())\n              ? $module\n              : $pusher,\n            animate,\n            transitionEnd\n          ;\n          callback = $.isFunction(callback)\n            ? callback\n            : function(){}\n          ;\n          module.verbose('Removing context push state', module.get.direction());\n\n          module.unbind.clickaway();\n          module.unbind.scrollLock();\n\n          animate = function() {\n            module.set.transition(transition);\n            module.set.animating();\n            module.remove.visible();\n            if(settings.dimPage && !module.othersVisible()) {\n              $pusher.removeClass(className.dimmed);\n            }\n          };\n          transitionEnd = function(event) {\n            if( event.target == $transition[0] ) {\n              $transition.off(transitionEvent + elementNamespace, transitionEnd);\n              module.remove.animating();\n              module.remove.transition();\n              module.remove.inlineCSS();\n              if(transition == 'scale down' || (settings.returnScroll && module.is.mobile()) ) {\n                module.scrollBack();\n              }\n              callback.call(element);\n            }\n          };\n          $transition.off(transitionEvent + elementNamespace);\n          $transition.on(transitionEvent + elementNamespace, transitionEnd);\n          requestAnimationFrame(animate);\n        },\n\n        scrollToTop: function() {\n          module.verbose('Scrolling to top of page to avoid animation issues');\n          currentScroll = $(window).scrollTop();\n          $module.scrollTop(0);\n          window.scrollTo(0, 0);\n        },\n\n        scrollBack: function() {\n          module.verbose('Scrolling back to original page position');\n          window.scrollTo(0, currentScroll);\n        },\n\n        clear: {\n          cache: function() {\n            module.verbose('Clearing cached dimensions');\n            module.cache = {};\n          }\n        },\n\n        set: {\n\n          // ios only (scroll on html not document). This prevent auto-resize canvas/scroll in ios\n          // (This is no longer necessary in latest iOS)\n          ios: function() {\n            $html.addClass(className.ios);\n          },\n\n          // container\n          pushed: function() {\n            $context.addClass(className.pushed);\n          },\n          pushable: function() {\n            $context.addClass(className.pushable);\n          },\n\n          // pusher\n          dimmed: function() {\n            $pusher.addClass(className.dimmed);\n          },\n\n          // sidebar\n          active: function() {\n            $module.addClass(className.active);\n          },\n          animating: function() {\n            $module.addClass(className.animating);\n          },\n          transition: function(transition) {\n            transition = transition || module.get.transition();\n            $module.addClass(transition);\n          },\n          direction: function(direction) {\n            direction = direction || module.get.direction();\n            $module.addClass(className[direction]);\n          },\n          visible: function() {\n            $module.addClass(className.visible);\n          },\n          overlay: function() {\n            $module.addClass(className.overlay);\n          }\n        },\n        remove: {\n\n          inlineCSS: function() {\n            module.debug('Removing inline css styles', $style);\n            if($style && $style.length > 0) {\n              $style.remove();\n            }\n          },\n\n          // ios scroll on html not document\n          ios: function() {\n            $html.removeClass(className.ios);\n          },\n\n          // context\n          pushed: function() {\n            $context.removeClass(className.pushed);\n          },\n          pushable: function() {\n            $context.removeClass(className.pushable);\n          },\n\n          // sidebar\n          active: function() {\n            $module.removeClass(className.active);\n          },\n          animating: function() {\n            $module.removeClass(className.animating);\n          },\n          transition: function(transition) {\n            transition = transition || module.get.transition();\n            $module.removeClass(transition);\n          },\n          direction: function(direction) {\n            direction = direction || module.get.direction();\n            $module.removeClass(className[direction]);\n          },\n          visible: function() {\n            $module.removeClass(className.visible);\n          },\n          overlay: function() {\n            $module.removeClass(className.overlay);\n          }\n        },\n\n        get: {\n          direction: function() {\n            if($module.hasClass(className.top)) {\n              return className.top;\n            }\n            else if($module.hasClass(className.right)) {\n              return className.right;\n            }\n            else if($module.hasClass(className.bottom)) {\n              return className.bottom;\n            }\n            return className.left;\n          },\n          transition: function() {\n            var\n              direction = module.get.direction(),\n              transition\n            ;\n            transition = ( module.is.mobile() )\n              ? (settings.mobileTransition == 'auto')\n                ? settings.defaultTransition.mobile[direction]\n                : settings.mobileTransition\n              : (settings.transition == 'auto')\n                ? settings.defaultTransition.computer[direction]\n                : settings.transition\n            ;\n            module.verbose('Determined transition', transition);\n            return transition;\n          },\n          transitionEvent: function() {\n            var\n              element     = document.createElement('element'),\n              transitions = {\n                'transition'       :'transitionend',\n                'OTransition'      :'oTransitionEnd',\n                'MozTransition'    :'transitionend',\n                'WebkitTransition' :'webkitTransitionEnd'\n              },\n              transition\n            ;\n            for(transition in transitions){\n              if( element.style[transition] !== undefined ){\n                return transitions[transition];\n              }\n            }\n          }\n        },\n\n        is: {\n\n          ie: function() {\n            var\n              isIE11 = (!(window.ActiveXObject) && 'ActiveXObject' in window),\n              isIE   = ('ActiveXObject' in window)\n            ;\n            return (isIE11 || isIE);\n          },\n\n          ios: function() {\n            var\n              userAgent      = navigator.userAgent,\n              isIOS          = userAgent.match(regExp.ios),\n              isMobileChrome = userAgent.match(regExp.mobileChrome)\n            ;\n            if(isIOS && !isMobileChrome) {\n              module.verbose('Browser was found to be iOS', userAgent);\n              return true;\n            }\n            else {\n              return false;\n            }\n          },\n          mobile: function() {\n            var\n              userAgent    = navigator.userAgent,\n              isMobile     = userAgent.match(regExp.mobile)\n            ;\n            if(isMobile) {\n              module.verbose('Browser was found to be mobile', userAgent);\n              return true;\n            }\n            else {\n              module.verbose('Browser is not mobile, using regular transition', userAgent);\n              return false;\n            }\n          },\n          hidden: function() {\n            return !module.is.visible();\n          },\n          visible: function() {\n            return $module.hasClass(className.visible);\n          },\n          // alias\n          open: function() {\n            return module.is.visible();\n          },\n          closed: function() {\n            return module.is.hidden();\n          },\n          vertical: function() {\n            return $module.hasClass(className.top);\n          },\n          animating: function() {\n            return $context.hasClass(className.animating);\n          },\n          rtl: function () {\n            if(module.cache.rtl === undefined) {\n              module.cache.rtl = ($module.css('direction') == 'rtl');\n            }\n            return module.cache.rtl;\n          }\n        },\n\n        setting: function(name, value) {\n          module.debug('Changing setting', name, value);\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            if($.isPlainObject(settings[name])) {\n              $.extend(true, settings[name], value);\n            }\n            else {\n              settings[name] = value;\n            }\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                module.error(error.method, query);\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      }\n    ;\n\n    if(methodInvoked) {\n      if(instance === undefined) {\n        module.initialize();\n      }\n      module.invoke(query);\n    }\n    else {\n      if(instance !== undefined) {\n        module.invoke('destroy');\n      }\n      module.initialize();\n    }\n  });\n\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.sidebar.settings = {\n\n  name              : 'Sidebar',\n  namespace         : 'sidebar',\n\n  silent            : false,\n  debug             : false,\n  verbose           : false,\n  performance       : true,\n\n  transition        : 'auto',\n  mobileTransition  : 'auto',\n\n  defaultTransition : {\n    computer: {\n      left   : 'uncover',\n      right  : 'uncover',\n      top    : 'overlay',\n      bottom : 'overlay'\n    },\n    mobile: {\n      left   : 'uncover',\n      right  : 'uncover',\n      top    : 'overlay',\n      bottom : 'overlay'\n    }\n  },\n\n  context           : 'body',\n  exclusive         : false,\n  closable          : true,\n  dimPage           : true,\n  scrollLock        : false,\n  returnScroll      : false,\n  delaySetup        : false,\n\n  duration          : 500,\n\n  onChange          : function(){},\n  onShow            : function(){},\n  onHide            : function(){},\n\n  onHidden          : function(){},\n  onVisible         : function(){},\n\n  className         : {\n    active    : 'active',\n    animating : 'animating',\n    dimmed    : 'dimmed',\n    ios       : 'ios',\n    pushable  : 'pushable',\n    pushed    : 'pushed',\n    right     : 'right',\n    top       : 'top',\n    left      : 'left',\n    bottom    : 'bottom',\n    visible   : 'visible'\n  },\n\n  selector: {\n    fixed   : '.fixed',\n    omitted : 'script, link, style, .ui.modal, .ui.dimmer, .ui.nag, .ui.fixed',\n    pusher  : '.pusher',\n    sidebar : '.ui.sidebar'\n  },\n\n  regExp: {\n    ios          : /(iPad|iPhone|iPod)/g,\n    mobileChrome : /(CriOS)/g,\n    mobile       : /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/g\n  },\n\n  error   : {\n    method       : 'The method you called is not defined.',\n    pusher       : 'Had to add pusher element. For optimal performance make sure body content is inside a pusher element',\n    movedSidebar : 'Had to move sidebar. For optimal performance make sure sidebar and pusher are direct children of your body tag',\n    overlay      : 'The overlay setting is no longer supported, use animation: overlay',\n    notFound     : 'There were no elements that matched the specified selector'\n  }\n\n};\n\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Sticky\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.sticky = function(parameters) {\n  var\n    $allModules    = $(this),\n    moduleSelector = $allModules.selector || '',\n\n    time           = new Date().getTime(),\n    performance    = [],\n\n    query          = arguments[0],\n    methodInvoked  = (typeof query == 'string'),\n    queryArguments = [].slice.call(arguments, 1),\n    returnedValue\n  ;\n\n  $allModules\n    .each(function() {\n      var\n        settings              = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.sticky.settings, parameters)\n          : $.extend({}, $.fn.sticky.settings),\n\n        className             = settings.className,\n        namespace             = settings.namespace,\n        error                 = settings.error,\n\n        eventNamespace        = '.' + namespace,\n        moduleNamespace       = 'module-' + namespace,\n\n        $module               = $(this),\n        $window               = $(window),\n        $scroll               = $(settings.scrollContext),\n        $container,\n        $context,\n\n        selector              = $module.selector || '',\n        instance              = $module.data(moduleNamespace),\n\n        requestAnimationFrame = window.requestAnimationFrame\n          || window.mozRequestAnimationFrame\n          || window.webkitRequestAnimationFrame\n          || window.msRequestAnimationFrame\n          || function(callback) { setTimeout(callback, 0); },\n\n        element         = this,\n\n        documentObserver,\n        observer,\n        module\n      ;\n\n      module      = {\n\n        initialize: function() {\n\n          module.determineContainer();\n          module.determineContext();\n          module.verbose('Initializing sticky', settings, $container);\n\n          module.save.positions();\n          module.checkErrors();\n          module.bind.events();\n\n          if(settings.observeChanges) {\n            module.observeChanges();\n          }\n          module.instantiate();\n        },\n\n        instantiate: function() {\n          module.verbose('Storing instance of module', module);\n          instance = module;\n          $module\n            .data(moduleNamespace, module)\n          ;\n        },\n\n        destroy: function() {\n          module.verbose('Destroying previous instance');\n          module.reset();\n          if(documentObserver) {\n            documentObserver.disconnect();\n          }\n          if(observer) {\n            observer.disconnect();\n          }\n          $window\n            .off('load' + eventNamespace, module.event.load)\n            .off('resize' + eventNamespace, module.event.resize)\n          ;\n          $scroll\n            .off('scrollchange' + eventNamespace, module.event.scrollchange)\n          ;\n          $module.removeData(moduleNamespace);\n        },\n\n        observeChanges: function() {\n          if('MutationObserver' in window) {\n            documentObserver = new MutationObserver(module.event.documentChanged);\n            observer         = new MutationObserver(module.event.changed);\n            documentObserver.observe(document, {\n              childList : true,\n              subtree   : true\n            });\n            observer.observe(element, {\n              childList : true,\n              subtree   : true\n            });\n            observer.observe($context[0], {\n              childList : true,\n              subtree   : true\n            });\n            module.debug('Setting up mutation observer', observer);\n          }\n        },\n\n        determineContainer: function() {\n          if(settings.container) {\n            $container = $(settings.container);\n          }\n          else {\n            $container = $module.offsetParent();\n          }\n        },\n\n        determineContext: function() {\n          if(settings.context) {\n            $context = $(settings.context);\n          }\n          else {\n            $context = $container;\n          }\n          if($context.length === 0) {\n            module.error(error.invalidContext, settings.context, $module);\n            return;\n          }\n        },\n\n        checkErrors: function() {\n          if( module.is.hidden() ) {\n            module.error(error.visible, $module);\n          }\n          if(module.cache.element.height > module.cache.context.height) {\n            module.reset();\n            module.error(error.elementSize, $module);\n            return;\n          }\n        },\n\n        bind: {\n          events: function() {\n            $window\n              .on('load' + eventNamespace, module.event.load)\n              .on('resize' + eventNamespace, module.event.resize)\n            ;\n            // pub/sub pattern\n            $scroll\n              .off('scroll' + eventNamespace)\n              .on('scroll' + eventNamespace, module.event.scroll)\n              .on('scrollchange' + eventNamespace, module.event.scrollchange)\n            ;\n          }\n        },\n\n        event: {\n          changed: function(mutations) {\n            clearTimeout(module.timer);\n            module.timer = setTimeout(function() {\n              module.verbose('DOM tree modified, updating sticky menu', mutations);\n              module.refresh();\n            }, 100);\n          },\n          documentChanged: function(mutations) {\n            [].forEach.call(mutations, function(mutation) {\n              if(mutation.removedNodes) {\n                [].forEach.call(mutation.removedNodes, function(node) {\n                  if(node == element || $(node).find(element).length > 0) {\n                    module.debug('Element removed from DOM, tearing down events');\n                    module.destroy();\n                  }\n                });\n              }\n            });\n          },\n          load: function() {\n            module.verbose('Page contents finished loading');\n            requestAnimationFrame(module.refresh);\n          },\n          resize: function() {\n            module.verbose('Window resized');\n            requestAnimationFrame(module.refresh);\n          },\n          scroll: function() {\n            requestAnimationFrame(function() {\n              $scroll.triggerHandler('scrollchange' + eventNamespace, $scroll.scrollTop() );\n            });\n          },\n          scrollchange: function(event, scrollPosition) {\n            module.stick(scrollPosition);\n            settings.onScroll.call(element);\n          }\n        },\n\n        refresh: function(hardRefresh) {\n          module.reset();\n          if(!settings.context) {\n            module.determineContext();\n          }\n          if(hardRefresh) {\n            module.determineContainer();\n          }\n          module.save.positions();\n          module.stick();\n          settings.onReposition.call(element);\n        },\n\n        supports: {\n          sticky: function() {\n            var\n              $element = $('<div/>'),\n              element = $element[0]\n            ;\n            $element.addClass(className.supported);\n            return($element.css('position').match('sticky'));\n          }\n        },\n\n        save: {\n          lastScroll: function(scroll) {\n            module.lastScroll = scroll;\n          },\n          elementScroll: function(scroll) {\n            module.elementScroll = scroll;\n          },\n          positions: function() {\n            var\n              scrollContext = {\n                height : $scroll.height()\n              },\n              element = {\n                margin: {\n                  top    : parseInt($module.css('margin-top'), 10),\n                  bottom : parseInt($module.css('margin-bottom'), 10),\n                },\n                offset : $module.offset(),\n                width  : $module.outerWidth(),\n                height : $module.outerHeight()\n              },\n              context = {\n                offset : $context.offset(),\n                height : $context.outerHeight()\n              },\n              container = {\n                height: $container.outerHeight()\n              }\n            ;\n            if( !module.is.standardScroll() ) {\n              module.debug('Non-standard scroll. Removing scroll offset from element offset');\n\n              scrollContext.top  = $scroll.scrollTop();\n              scrollContext.left = $scroll.scrollLeft();\n\n              element.offset.top  += scrollContext.top;\n              context.offset.top  += scrollContext.top;\n              element.offset.left += scrollContext.left;\n              context.offset.left += scrollContext.left;\n            }\n            module.cache = {\n              fits          : ( (element.height + settings.offset) <= scrollContext.height),\n              sameHeight    : (element.height == context.height),\n              scrollContext : {\n                height : scrollContext.height\n              },\n              element: {\n                margin : element.margin,\n                top    : element.offset.top - element.margin.top,\n                left   : element.offset.left,\n                width  : element.width,\n                height : element.height,\n                bottom : element.offset.top + element.height\n              },\n              context: {\n                top           : context.offset.top,\n                height        : context.height,\n                bottom        : context.offset.top + context.height\n              }\n            };\n            module.set.containerSize();\n\n            module.stick();\n            module.debug('Caching element positions', module.cache);\n          }\n        },\n\n        get: {\n          direction: function(scroll) {\n            var\n              direction = 'down'\n            ;\n            scroll = scroll || $scroll.scrollTop();\n            if(module.lastScroll !== undefined) {\n              if(module.lastScroll < scroll) {\n                direction = 'down';\n              }\n              else if(module.lastScroll > scroll) {\n                direction = 'up';\n              }\n            }\n            return direction;\n          },\n          scrollChange: function(scroll) {\n            scroll = scroll || $scroll.scrollTop();\n            return (module.lastScroll)\n              ? (scroll - module.lastScroll)\n              : 0\n            ;\n          },\n          currentElementScroll: function() {\n            if(module.elementScroll) {\n              return module.elementScroll;\n            }\n            return ( module.is.top() )\n              ? Math.abs(parseInt($module.css('top'), 10))    || 0\n              : Math.abs(parseInt($module.css('bottom'), 10)) || 0\n            ;\n          },\n\n          elementScroll: function(scroll) {\n            scroll = scroll || $scroll.scrollTop();\n            var\n              element        = module.cache.element,\n              scrollContext  = module.cache.scrollContext,\n              delta          = module.get.scrollChange(scroll),\n              maxScroll      = (element.height - scrollContext.height + settings.offset),\n              elementScroll  = module.get.currentElementScroll(),\n              possibleScroll = (elementScroll + delta)\n            ;\n            if(module.cache.fits || possibleScroll < 0) {\n              elementScroll = 0;\n            }\n            else if(possibleScroll > maxScroll ) {\n              elementScroll = maxScroll;\n            }\n            else {\n              elementScroll = possibleScroll;\n            }\n            return elementScroll;\n          }\n        },\n\n        remove: {\n          lastScroll: function() {\n            delete module.lastScroll;\n          },\n          elementScroll: function(scroll) {\n            delete module.elementScroll;\n          },\n          minimumSize: function() {\n            $container\n              .css('min-height', '')\n            ;\n          },\n          offset: function() {\n            $module.css('margin-top', '');\n          }\n        },\n\n        set: {\n          offset: function() {\n            module.verbose('Setting offset on element', settings.offset);\n            $module\n              .css('margin-top', settings.offset)\n            ;\n          },\n          containerSize: function() {\n            var\n              tagName = $container.get(0).tagName\n            ;\n            if(tagName === 'HTML' || tagName == 'body') {\n              // this can trigger for too many reasons\n              //module.error(error.container, tagName, $module);\n              module.determineContainer();\n            }\n            else {\n              if( Math.abs($container.outerHeight() - module.cache.context.height) > settings.jitter) {\n                module.debug('Context has padding, specifying exact height for container', module.cache.context.height);\n                $container.css({\n                  height: module.cache.context.height\n                });\n              }\n            }\n          },\n          minimumSize: function() {\n            var\n              element   = module.cache.element\n            ;\n            $container\n              .css('min-height', element.height)\n            ;\n          },\n          scroll: function(scroll) {\n            module.debug('Setting scroll on element', scroll);\n            if(module.elementScroll == scroll) {\n              return;\n            }\n            if( module.is.top() ) {\n              $module\n                .css('bottom', '')\n                .css('top', -scroll)\n              ;\n            }\n            if( module.is.bottom() ) {\n              $module\n                .css('top', '')\n                .css('bottom', scroll)\n              ;\n            }\n          },\n          size: function() {\n            if(module.cache.element.height !== 0 && module.cache.element.width !== 0) {\n              element.style.setProperty('width',  module.cache.element.width  + 'px', 'important');\n              element.style.setProperty('height', module.cache.element.height + 'px', 'important');\n            }\n          }\n        },\n\n        is: {\n          standardScroll: function() {\n            return ($scroll[0] == window);\n          },\n          top: function() {\n            return $module.hasClass(className.top);\n          },\n          bottom: function() {\n            return $module.hasClass(className.bottom);\n          },\n          initialPosition: function() {\n            return (!module.is.fixed() && !module.is.bound());\n          },\n          hidden: function() {\n            return (!$module.is(':visible'));\n          },\n          bound: function() {\n            return $module.hasClass(className.bound);\n          },\n          fixed: function() {\n            return $module.hasClass(className.fixed);\n          }\n        },\n\n        stick: function(scroll) {\n          var\n            cachedPosition = scroll || $scroll.scrollTop(),\n            cache          = module.cache,\n            fits           = cache.fits,\n            sameHeight     = cache.sameHeight,\n            element        = cache.element,\n            scrollContext  = cache.scrollContext,\n            context        = cache.context,\n            offset         = (module.is.bottom() && settings.pushing)\n              ? settings.bottomOffset\n              : settings.offset,\n            scroll         = {\n              top    : cachedPosition + offset,\n              bottom : cachedPosition + offset + scrollContext.height\n            },\n            direction      = module.get.direction(scroll.top),\n            elementScroll  = (fits)\n              ? 0\n              : module.get.elementScroll(scroll.top),\n\n            // shorthand\n            doesntFit      = !fits,\n            elementVisible = (element.height !== 0)\n          ;\n          if(elementVisible && !sameHeight) {\n\n            if( module.is.initialPosition() ) {\n              if(scroll.top >= context.bottom) {\n                module.debug('Initial element position is bottom of container');\n                module.bindBottom();\n              }\n              else if(scroll.top > element.top) {\n                if( (element.height + scroll.top - elementScroll) >= context.bottom ) {\n                  module.debug('Initial element position is bottom of container');\n                  module.bindBottom();\n                }\n                else {\n                  module.debug('Initial element position is fixed');\n                  module.fixTop();\n                }\n              }\n\n            }\n            else if( module.is.fixed() ) {\n\n              // currently fixed top\n              if( module.is.top() ) {\n                if( scroll.top <= element.top ) {\n                  module.debug('Fixed element reached top of container');\n                  module.setInitialPosition();\n                }\n                else if( (element.height + scroll.top - elementScroll) >= context.bottom ) {\n                  module.debug('Fixed element reached bottom of container');\n                  module.bindBottom();\n                }\n                // scroll element if larger than screen\n                else if(doesntFit) {\n                  module.set.scroll(elementScroll);\n                  module.save.lastScroll(scroll.top);\n                  module.save.elementScroll(elementScroll);\n                }\n              }\n\n              // currently fixed bottom\n              else if(module.is.bottom() ) {\n\n                // top edge\n                if( (scroll.bottom - element.height) <= element.top) {\n                  module.debug('Bottom fixed rail has reached top of container');\n                  module.setInitialPosition();\n                }\n                // bottom edge\n                else if(scroll.bottom >= context.bottom) {\n                  module.debug('Bottom fixed rail has reached bottom of container');\n                  module.bindBottom();\n                }\n                // scroll element if larger than screen\n                else if(doesntFit) {\n                  module.set.scroll(elementScroll);\n                  module.save.lastScroll(scroll.top);\n                  module.save.elementScroll(elementScroll);\n                }\n\n              }\n            }\n            else if( module.is.bottom() ) {\n              if( scroll.top <= element.top ) {\n                module.debug('Jumped from bottom fixed to top fixed, most likely used home/end button');\n                module.setInitialPosition();\n              }\n              else {\n                if(settings.pushing) {\n                  if(module.is.bound() && scroll.bottom <= context.bottom ) {\n                    module.debug('Fixing bottom attached element to bottom of browser.');\n                    module.fixBottom();\n                  }\n                }\n                else {\n                  if(module.is.bound() && (scroll.top <= context.bottom - element.height) ) {\n                    module.debug('Fixing bottom attached element to top of browser.');\n                    module.fixTop();\n                  }\n                }\n              }\n            }\n          }\n        },\n\n        bindTop: function() {\n          module.debug('Binding element to top of parent container');\n          module.remove.offset();\n          $module\n            .css({\n              left         : '',\n              top          : '',\n              marginBottom : ''\n            })\n            .removeClass(className.fixed)\n            .removeClass(className.bottom)\n            .addClass(className.bound)\n            .addClass(className.top)\n          ;\n          settings.onTop.call(element);\n          settings.onUnstick.call(element);\n        },\n        bindBottom: function() {\n          module.debug('Binding element to bottom of parent container');\n          module.remove.offset();\n          $module\n            .css({\n              left         : '',\n              top          : ''\n            })\n            .removeClass(className.fixed)\n            .removeClass(className.top)\n            .addClass(className.bound)\n            .addClass(className.bottom)\n          ;\n          settings.onBottom.call(element);\n          settings.onUnstick.call(element);\n        },\n\n        setInitialPosition: function() {\n          module.debug('Returning to initial position');\n          module.unfix();\n          module.unbind();\n        },\n\n\n        fixTop: function() {\n          module.debug('Fixing element to top of page');\n          if(settings.setSize) {\n            module.set.size();\n          }\n          module.set.minimumSize();\n          module.set.offset();\n          $module\n            .css({\n              left         : module.cache.element.left,\n              bottom       : '',\n              marginBottom : ''\n            })\n            .removeClass(className.bound)\n            .removeClass(className.bottom)\n            .addClass(className.fixed)\n            .addClass(className.top)\n          ;\n          settings.onStick.call(element);\n        },\n\n        fixBottom: function() {\n          module.debug('Sticking element to bottom of page');\n          if(settings.setSize) {\n            module.set.size();\n          }\n          module.set.minimumSize();\n          module.set.offset();\n          $module\n            .css({\n              left         : module.cache.element.left,\n              bottom       : '',\n              marginBottom : ''\n            })\n            .removeClass(className.bound)\n            .removeClass(className.top)\n            .addClass(className.fixed)\n            .addClass(className.bottom)\n          ;\n          settings.onStick.call(element);\n        },\n\n        unbind: function() {\n          if( module.is.bound() ) {\n            module.debug('Removing container bound position on element');\n            module.remove.offset();\n            $module\n              .removeClass(className.bound)\n              .removeClass(className.top)\n              .removeClass(className.bottom)\n            ;\n          }\n        },\n\n        unfix: function() {\n          if( module.is.fixed() ) {\n            module.debug('Removing fixed position on element');\n            module.remove.minimumSize();\n            module.remove.offset();\n            $module\n              .removeClass(className.fixed)\n              .removeClass(className.top)\n              .removeClass(className.bottom)\n            ;\n            settings.onUnstick.call(element);\n          }\n        },\n\n        reset: function() {\n          module.debug('Resetting elements position');\n          module.unbind();\n          module.unfix();\n          module.resetCSS();\n          module.remove.offset();\n          module.remove.lastScroll();\n        },\n\n        resetCSS: function() {\n          $module\n            .css({\n              width  : '',\n              height : ''\n            })\n          ;\n          $container\n            .css({\n              height: ''\n            })\n          ;\n        },\n\n        setting: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            settings[name] = value;\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 0);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.sticky.settings = {\n\n  name           : 'Sticky',\n  namespace      : 'sticky',\n\n  silent         : false,\n  debug          : false,\n  verbose        : true,\n  performance    : true,\n\n  // whether to stick in the opposite direction on scroll up\n  pushing        : false,\n\n  context        : false,\n  container      : false,\n\n  // Context to watch scroll events\n  scrollContext  : window,\n\n  // Offset to adjust scroll\n  offset         : 0,\n\n  // Offset to adjust scroll when attached to bottom of screen\n  bottomOffset   : 0,\n\n  // will only set container height if difference between context and container is larger than this number\n  jitter         : 5,\n\n  // set width of sticky element when it is fixed to page (used to make sure 100% width is maintained if no fixed size set)\n  setSize        : true,\n\n  // Whether to automatically observe changes with Mutation Observers\n  observeChanges : false,\n\n  // Called when position is recalculated\n  onReposition   : function(){},\n\n  // Called on each scroll\n  onScroll       : function(){},\n\n  // Called when element is stuck to viewport\n  onStick        : function(){},\n\n  // Called when element is unstuck from viewport\n  onUnstick      : function(){},\n\n  // Called when element reaches top of context\n  onTop          : function(){},\n\n  // Called when element reaches bottom of context\n  onBottom       : function(){},\n\n  error         : {\n    container      : 'Sticky element must be inside a relative container',\n    visible        : 'Element is hidden, you must call refresh after element becomes visible. Use silent setting to surpress this warning in production.',\n    method         : 'The method you called is not defined.',\n    invalidContext : 'Context specified does not exist',\n    elementSize    : 'Sticky element is larger than its container, cannot create sticky.'\n  },\n\n  className : {\n    bound     : 'bound',\n    fixed     : 'fixed',\n    supported : 'native',\n    top       : 'top',\n    bottom    : 'bottom'\n  }\n\n};\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Tab\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.tab = function(parameters) {\n\n  var\n    // use window context if none specified\n    $allModules     = $.isFunction(this)\n        ? $(window)\n        : $(this),\n\n    moduleSelector  = $allModules.selector || '',\n    time            = new Date().getTime(),\n    performance     = [],\n\n    query           = arguments[0],\n    methodInvoked   = (typeof query == 'string'),\n    queryArguments  = [].slice.call(arguments, 1),\n\n    initializedHistory = false,\n    returnedValue\n  ;\n\n  $allModules\n    .each(function() {\n      var\n\n        settings        = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.tab.settings, parameters)\n          : $.extend({}, $.fn.tab.settings),\n\n        className       = settings.className,\n        metadata        = settings.metadata,\n        selector        = settings.selector,\n        error           = settings.error,\n\n        eventNamespace  = '.' + settings.namespace,\n        moduleNamespace = 'module-' + settings.namespace,\n\n        $module         = $(this),\n        $context,\n        $tabs,\n\n        cache           = {},\n        firstLoad       = true,\n        recursionDepth  = 0,\n        element         = this,\n        instance        = $module.data(moduleNamespace),\n\n        activeTabPath,\n        parameterArray,\n        module,\n\n        historyEvent\n\n      ;\n\n      module = {\n\n        initialize: function() {\n          module.debug('Initializing tab menu item', $module);\n          module.fix.callbacks();\n          module.determineTabs();\n\n          module.debug('Determining tabs', settings.context, $tabs);\n          // set up automatic routing\n          if(settings.auto) {\n            module.set.auto();\n          }\n          module.bind.events();\n\n          if(settings.history && !initializedHistory) {\n            module.initializeHistory();\n            initializedHistory = true;\n          }\n\n          module.instantiate();\n        },\n\n        instantiate: function () {\n          module.verbose('Storing instance of module', module);\n          instance = module;\n          $module\n            .data(moduleNamespace, module)\n          ;\n        },\n\n        destroy: function() {\n          module.debug('Destroying tabs', $module);\n          $module\n            .removeData(moduleNamespace)\n            .off(eventNamespace)\n          ;\n        },\n\n        bind: {\n          events: function() {\n            // if using $.tab don't add events\n            if( !$.isWindow( element ) ) {\n              module.debug('Attaching tab activation events to element', $module);\n              $module\n                .on('click' + eventNamespace, module.event.click)\n              ;\n            }\n          }\n        },\n\n        determineTabs: function() {\n          var\n            $reference\n          ;\n\n          // determine tab context\n          if(settings.context === 'parent') {\n            if($module.closest(selector.ui).length > 0) {\n              $reference = $module.closest(selector.ui);\n              module.verbose('Using closest UI element as parent', $reference);\n            }\n            else {\n              $reference = $module;\n            }\n            $context = $reference.parent();\n            module.verbose('Determined parent element for creating context', $context);\n          }\n          else if(settings.context) {\n            $context = $(settings.context);\n            module.verbose('Using selector for tab context', settings.context, $context);\n          }\n          else {\n            $context = $('body');\n          }\n          // find tabs\n          if(settings.childrenOnly) {\n            $tabs = $context.children(selector.tabs);\n            module.debug('Searching tab context children for tabs', $context, $tabs);\n          }\n          else {\n            $tabs = $context.find(selector.tabs);\n            module.debug('Searching tab context for tabs', $context, $tabs);\n          }\n        },\n\n        fix: {\n          callbacks: function() {\n            if( $.isPlainObject(parameters) && (parameters.onTabLoad || parameters.onTabInit) ) {\n              if(parameters.onTabLoad) {\n                parameters.onLoad = parameters.onTabLoad;\n                delete parameters.onTabLoad;\n                module.error(error.legacyLoad, parameters.onLoad);\n              }\n              if(parameters.onTabInit) {\n                parameters.onFirstLoad = parameters.onTabInit;\n                delete parameters.onTabInit;\n                module.error(error.legacyInit, parameters.onFirstLoad);\n              }\n              settings = $.extend(true, {}, $.fn.tab.settings, parameters);\n            }\n          }\n        },\n\n        initializeHistory: function() {\n          module.debug('Initializing page state');\n          if( $.address === undefined ) {\n            module.error(error.state);\n            return false;\n          }\n          else {\n            if(settings.historyType == 'state') {\n              module.debug('Using HTML5 to manage state');\n              if(settings.path !== false) {\n                $.address\n                  .history(true)\n                  .state(settings.path)\n                ;\n              }\n              else {\n                module.error(error.path);\n                return false;\n              }\n            }\n            $.address\n              .bind('change', module.event.history.change)\n            ;\n          }\n        },\n\n        event: {\n          click: function(event) {\n            var\n              tabPath = $(this).data(metadata.tab)\n            ;\n            if(tabPath !== undefined) {\n              if(settings.history) {\n                module.verbose('Updating page state', event);\n                $.address.value(tabPath);\n              }\n              else {\n                module.verbose('Changing tab', event);\n                module.changeTab(tabPath);\n              }\n              event.preventDefault();\n            }\n            else {\n              module.debug('No tab specified');\n            }\n          },\n          history: {\n            change: function(event) {\n              var\n                tabPath   = event.pathNames.join('/') || module.get.initialPath(),\n                pageTitle = settings.templates.determineTitle(tabPath) || false\n              ;\n              module.performance.display();\n              module.debug('History change event', tabPath, event);\n              historyEvent = event;\n              if(tabPath !== undefined) {\n                module.changeTab(tabPath);\n              }\n              if(pageTitle) {\n                $.address.title(pageTitle);\n              }\n            }\n          }\n        },\n\n        refresh: function() {\n          if(activeTabPath) {\n            module.debug('Refreshing tab', activeTabPath);\n            module.changeTab(activeTabPath);\n          }\n        },\n\n        cache: {\n\n          read: function(cacheKey) {\n            return (cacheKey !== undefined)\n              ? cache[cacheKey]\n              : false\n            ;\n          },\n          add: function(cacheKey, content) {\n            cacheKey = cacheKey || activeTabPath;\n            module.debug('Adding cached content for', cacheKey);\n            cache[cacheKey] = content;\n          },\n          remove: function(cacheKey) {\n            cacheKey = cacheKey || activeTabPath;\n            module.debug('Removing cached content for', cacheKey);\n            delete cache[cacheKey];\n          }\n        },\n\n        set: {\n          auto: function() {\n            var\n              url = (typeof settings.path == 'string')\n                ? settings.path.replace(/\\/$/, '') + '/{$tab}'\n                : '/{$tab}'\n            ;\n            module.verbose('Setting up automatic tab retrieval from server', url);\n            if($.isPlainObject(settings.apiSettings)) {\n              settings.apiSettings.url = url;\n            }\n            else {\n              settings.apiSettings = {\n                url: url\n              };\n            }\n          },\n          loading: function(tabPath) {\n            var\n              $tab      = module.get.tabElement(tabPath),\n              isLoading = $tab.hasClass(className.loading)\n            ;\n            if(!isLoading) {\n              module.verbose('Setting loading state for', $tab);\n              $tab\n                .addClass(className.loading)\n                .siblings($tabs)\n                  .removeClass(className.active + ' ' + className.loading)\n              ;\n              if($tab.length > 0) {\n                settings.onRequest.call($tab[0], tabPath);\n              }\n            }\n          },\n          state: function(state) {\n            $.address.value(state);\n          }\n        },\n\n        changeTab: function(tabPath) {\n          var\n            pushStateAvailable = (window.history && window.history.pushState),\n            shouldIgnoreLoad   = (pushStateAvailable && settings.ignoreFirstLoad && firstLoad),\n            remoteContent      = (settings.auto || $.isPlainObject(settings.apiSettings) ),\n            // only add default path if not remote content\n            pathArray = (remoteContent && !shouldIgnoreLoad)\n              ? module.utilities.pathToArray(tabPath)\n              : module.get.defaultPathArray(tabPath)\n          ;\n          tabPath = module.utilities.arrayToPath(pathArray);\n          $.each(pathArray, function(index, tab) {\n            var\n              currentPathArray   = pathArray.slice(0, index + 1),\n              currentPath        = module.utilities.arrayToPath(currentPathArray),\n\n              isTab              = module.is.tab(currentPath),\n              isLastIndex        = (index + 1 == pathArray.length),\n\n              $tab               = module.get.tabElement(currentPath),\n              $anchor,\n              nextPathArray,\n              nextPath,\n              isLastTab\n            ;\n            module.verbose('Looking for tab', tab);\n            if(isTab) {\n              module.verbose('Tab was found', tab);\n              // scope up\n              activeTabPath  = currentPath;\n              parameterArray = module.utilities.filterArray(pathArray, currentPathArray);\n\n              if(isLastIndex) {\n                isLastTab = true;\n              }\n              else {\n                nextPathArray = pathArray.slice(0, index + 2);\n                nextPath      = module.utilities.arrayToPath(nextPathArray);\n                isLastTab     = ( !module.is.tab(nextPath) );\n                if(isLastTab) {\n                  module.verbose('Tab parameters found', nextPathArray);\n                }\n              }\n              if(isLastTab && remoteContent) {\n                if(!shouldIgnoreLoad) {\n                  module.activate.navigation(currentPath);\n                  module.fetch.content(currentPath, tabPath);\n                }\n                else {\n                  module.debug('Ignoring remote content on first tab load', currentPath);\n                  firstLoad = false;\n                  module.cache.add(tabPath, $tab.html());\n                  module.activate.all(currentPath);\n                  settings.onFirstLoad.call($tab[0], currentPath, parameterArray, historyEvent);\n                  settings.onLoad.call($tab[0], currentPath, parameterArray, historyEvent);\n                }\n                return false;\n              }\n              else {\n                module.debug('Opened local tab', currentPath);\n                module.activate.all(currentPath);\n                if( !module.cache.read(currentPath) ) {\n                  module.cache.add(currentPath, true);\n                  module.debug('First time tab loaded calling tab init');\n                  settings.onFirstLoad.call($tab[0], currentPath, parameterArray, historyEvent);\n                }\n                settings.onLoad.call($tab[0], currentPath, parameterArray, historyEvent);\n              }\n\n            }\n            else if(tabPath.search('/') == -1 && tabPath !== '') {\n              // look for in page anchor\n              $anchor     = $('#' + tabPath + ', a[name=\"' + tabPath + '\"]');\n              currentPath = $anchor.closest('[data-tab]').data(metadata.tab);\n              $tab        = module.get.tabElement(currentPath);\n              // if anchor exists use parent tab\n              if($anchor && $anchor.length > 0 && currentPath) {\n                module.debug('Anchor link used, opening parent tab', $tab, $anchor);\n                if( !$tab.hasClass(className.active) ) {\n                  setTimeout(function() {\n                    module.scrollTo($anchor);\n                  }, 0);\n                }\n                module.activate.all(currentPath);\n                if( !module.cache.read(currentPath) ) {\n                  module.cache.add(currentPath, true);\n                  module.debug('First time tab loaded calling tab init');\n                  settings.onFirstLoad.call($tab[0], currentPath, parameterArray, historyEvent);\n                }\n                settings.onLoad.call($tab[0], currentPath, parameterArray, historyEvent);\n                return false;\n              }\n            }\n            else {\n              module.error(error.missingTab, $module, $context, currentPath);\n              return false;\n            }\n          });\n        },\n\n        scrollTo: function($element) {\n          var\n            scrollOffset = ($element && $element.length > 0)\n              ? $element.offset().top\n              : false\n          ;\n          if(scrollOffset !== false) {\n            module.debug('Forcing scroll to an in-page link in a hidden tab', scrollOffset, $element);\n            $(document).scrollTop(scrollOffset);\n          }\n        },\n\n        update: {\n          content: function(tabPath, html, evaluateScripts) {\n            var\n              $tab = module.get.tabElement(tabPath),\n              tab  = $tab[0]\n            ;\n            evaluateScripts = (evaluateScripts !== undefined)\n              ? evaluateScripts\n              : settings.evaluateScripts\n            ;\n            if(typeof settings.cacheType == 'string' && settings.cacheType.toLowerCase() == 'dom' && typeof html !== 'string') {\n              $tab\n                .empty()\n                .append($(html).clone(true))\n              ;\n            }\n            else {\n              if(evaluateScripts) {\n                module.debug('Updating HTML and evaluating inline scripts', tabPath, html);\n                $tab.html(html);\n              }\n              else {\n                module.debug('Updating HTML', tabPath, html);\n                tab.innerHTML = html;\n              }\n            }\n          }\n        },\n\n        fetch: {\n\n          content: function(tabPath, fullTabPath) {\n            var\n              $tab        = module.get.tabElement(tabPath),\n              apiSettings = {\n                dataType         : 'html',\n                encodeParameters : false,\n                on               : 'now',\n                cache            : settings.alwaysRefresh,\n                headers          : {\n                  'X-Remote': true\n                },\n                onSuccess : function(response) {\n                  if(settings.cacheType == 'response') {\n                    module.cache.add(fullTabPath, response);\n                  }\n                  module.update.content(tabPath, response);\n                  if(tabPath == activeTabPath) {\n                    module.debug('Content loaded', tabPath);\n                    module.activate.tab(tabPath);\n                  }\n                  else {\n                    module.debug('Content loaded in background', tabPath);\n                  }\n                  settings.onFirstLoad.call($tab[0], tabPath, parameterArray, historyEvent);\n                  settings.onLoad.call($tab[0], tabPath, parameterArray, historyEvent);\n\n                  if(settings.loadOnce) {\n                    module.cache.add(fullTabPath, true);\n                  }\n                  else if(typeof settings.cacheType == 'string' && settings.cacheType.toLowerCase() == 'dom' && $tab.children().length > 0) {\n                    setTimeout(function() {\n                      var\n                        $clone = $tab.children().clone(true)\n                      ;\n                      $clone = $clone.not('script');\n                      module.cache.add(fullTabPath, $clone);\n                    }, 0);\n                  }\n                  else {\n                    module.cache.add(fullTabPath, $tab.html());\n                  }\n                },\n                urlData: {\n                  tab: fullTabPath\n                }\n              },\n              request         = $tab.api('get request') || false,\n              existingRequest = ( request && request.state() === 'pending' ),\n              requestSettings,\n              cachedContent\n            ;\n\n            fullTabPath   = fullTabPath || tabPath;\n            cachedContent = module.cache.read(fullTabPath);\n\n\n            if(settings.cache && cachedContent) {\n              module.activate.tab(tabPath);\n              module.debug('Adding cached content', fullTabPath);\n              if(!settings.loadOnce) {\n                if(settings.evaluateScripts == 'once') {\n                  module.update.content(tabPath, cachedContent, false);\n                }\n                else {\n                  module.update.content(tabPath, cachedContent);\n                }\n              }\n              settings.onLoad.call($tab[0], tabPath, parameterArray, historyEvent);\n            }\n            else if(existingRequest) {\n              module.set.loading(tabPath);\n              module.debug('Content is already loading', fullTabPath);\n            }\n            else if($.api !== undefined) {\n              requestSettings = $.extend(true, {}, settings.apiSettings, apiSettings);\n              module.debug('Retrieving remote content', fullTabPath, requestSettings);\n              module.set.loading(tabPath);\n              $tab.api(requestSettings);\n            }\n            else {\n              module.error(error.api);\n            }\n          }\n        },\n\n        activate: {\n          all: function(tabPath) {\n            module.activate.tab(tabPath);\n            module.activate.navigation(tabPath);\n          },\n          tab: function(tabPath) {\n            var\n              $tab          = module.get.tabElement(tabPath),\n              $deactiveTabs = (settings.deactivate == 'siblings')\n                ? $tab.siblings($tabs)\n                : $tabs.not($tab),\n              isActive      = $tab.hasClass(className.active)\n            ;\n            module.verbose('Showing tab content for', $tab);\n            if(!isActive) {\n              $tab\n                .addClass(className.active)\n              ;\n              $deactiveTabs\n                .removeClass(className.active + ' ' + className.loading)\n              ;\n              if($tab.length > 0) {\n                settings.onVisible.call($tab[0], tabPath);\n              }\n            }\n          },\n          navigation: function(tabPath) {\n            var\n              $navigation         = module.get.navElement(tabPath),\n              $deactiveNavigation = (settings.deactivate == 'siblings')\n                ? $navigation.siblings($allModules)\n                : $allModules.not($navigation),\n              isActive    = $navigation.hasClass(className.active)\n            ;\n            module.verbose('Activating tab navigation for', $navigation, tabPath);\n            if(!isActive) {\n              $navigation\n                .addClass(className.active)\n              ;\n              $deactiveNavigation\n                .removeClass(className.active + ' ' + className.loading)\n              ;\n            }\n          }\n        },\n\n        deactivate: {\n          all: function() {\n            module.deactivate.navigation();\n            module.deactivate.tabs();\n          },\n          navigation: function() {\n            $allModules\n              .removeClass(className.active)\n            ;\n          },\n          tabs: function() {\n            $tabs\n              .removeClass(className.active + ' ' + className.loading)\n            ;\n          }\n        },\n\n        is: {\n          tab: function(tabName) {\n            return (tabName !== undefined)\n              ? ( module.get.tabElement(tabName).length > 0 )\n              : false\n            ;\n          }\n        },\n\n        get: {\n          initialPath: function() {\n            return $allModules.eq(0).data(metadata.tab) || $tabs.eq(0).data(metadata.tab);\n          },\n          path: function() {\n            return $.address.value();\n          },\n          // adds default tabs to tab path\n          defaultPathArray: function(tabPath) {\n            return module.utilities.pathToArray( module.get.defaultPath(tabPath) );\n          },\n          defaultPath: function(tabPath) {\n            var\n              $defaultNav = $allModules.filter('[data-' + metadata.tab + '^=\"' + tabPath + '/\"]').eq(0),\n              defaultTab  = $defaultNav.data(metadata.tab) || false\n            ;\n            if( defaultTab ) {\n              module.debug('Found default tab', defaultTab);\n              if(recursionDepth < settings.maxDepth) {\n                recursionDepth++;\n                return module.get.defaultPath(defaultTab);\n              }\n              module.error(error.recursion);\n            }\n            else {\n              module.debug('No default tabs found for', tabPath, $tabs);\n            }\n            recursionDepth = 0;\n            return tabPath;\n          },\n          navElement: function(tabPath) {\n            tabPath = tabPath || activeTabPath;\n            return $allModules.filter('[data-' + metadata.tab + '=\"' + tabPath + '\"]');\n          },\n          tabElement: function(tabPath) {\n            var\n              $fullPathTab,\n              $simplePathTab,\n              tabPathArray,\n              lastTab\n            ;\n            tabPath        = tabPath || activeTabPath;\n            tabPathArray   = module.utilities.pathToArray(tabPath);\n            lastTab        = module.utilities.last(tabPathArray);\n            $fullPathTab   = $tabs.filter('[data-' + metadata.tab + '=\"' + tabPath + '\"]');\n            $simplePathTab = $tabs.filter('[data-' + metadata.tab + '=\"' + lastTab + '\"]');\n            return ($fullPathTab.length > 0)\n              ? $fullPathTab\n              : $simplePathTab\n            ;\n          },\n          tab: function() {\n            return activeTabPath;\n          }\n        },\n\n        utilities: {\n          filterArray: function(keepArray, removeArray) {\n            return $.grep(keepArray, function(keepValue) {\n              return ( $.inArray(keepValue, removeArray) == -1);\n            });\n          },\n          last: function(array) {\n            return $.isArray(array)\n              ? array[ array.length - 1]\n              : false\n            ;\n          },\n          pathToArray: function(pathName) {\n            if(pathName === undefined) {\n              pathName = activeTabPath;\n            }\n            return typeof pathName == 'string'\n              ? pathName.split('/')\n              : [pathName]\n            ;\n          },\n          arrayToPath: function(pathArray) {\n            return $.isArray(pathArray)\n              ? pathArray.join('/')\n              : false\n            ;\n          }\n        },\n\n        setting: function(name, value) {\n          module.debug('Changing setting', name, value);\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            if($.isPlainObject(settings[name])) {\n              $.extend(true, settings[name], value);\n            }\n            else {\n              settings[name] = value;\n            }\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                module.error(error.method, query);\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n\n};\n\n// shortcut for tabbed content with no defined navigation\n$.tab = function() {\n  $(window).tab.apply(this, arguments);\n};\n\n$.fn.tab.settings = {\n\n  name            : 'Tab',\n  namespace       : 'tab',\n\n  silent          : false,\n  debug           : false,\n  verbose         : false,\n  performance     : true,\n\n  auto            : false,      // uses pjax style endpoints fetching content from same url with remote-content headers\n  history         : false,      // use browser history\n  historyType     : 'hash',     // #/ or html5 state\n  path            : false,      // base path of url\n\n  context         : false,      // specify a context that tabs must appear inside\n  childrenOnly    : false,      // use only tabs that are children of context\n  maxDepth        : 25,         // max depth a tab can be nested\n\n  deactivate      : 'siblings', // whether tabs should deactivate sibling menu elements or all elements initialized together\n\n  alwaysRefresh   : false,      // load tab content new every tab click\n  cache           : true,       // cache the content requests to pull locally\n  loadOnce        : false,      // Whether tab data should only be loaded once when using remote content\n  cacheType       : 'response', // Whether to cache exact response, or to html cache contents after scripts execute\n  ignoreFirstLoad : false,      // don't load remote content on first load\n\n  apiSettings     : false,      // settings for api call\n  evaluateScripts : 'once',     // whether inline scripts should be parsed (true/false/once). Once will not re-evaluate on cached content\n\n  onFirstLoad : function(tabPath, parameterArray, historyEvent) {}, // called first time loaded\n  onLoad      : function(tabPath, parameterArray, historyEvent) {}, // called on every load\n  onVisible   : function(tabPath, parameterArray, historyEvent) {}, // called every time tab visible\n  onRequest   : function(tabPath, parameterArray, historyEvent) {}, // called ever time a tab beings loading remote content\n\n  templates : {\n    determineTitle: function(tabArray) {} // returns page title for path\n  },\n\n  error: {\n    api        : 'You attempted to load content without API module',\n    method     : 'The method you called is not defined',\n    missingTab : 'Activated tab cannot be found. Tabs are case-sensitive.',\n    noContent  : 'The tab you specified is missing a content url.',\n    path       : 'History enabled, but no path was specified',\n    recursion  : 'Max recursive depth reached',\n    legacyInit : 'onTabInit has been renamed to onFirstLoad in 2.0, please adjust your code.',\n    legacyLoad : 'onTabLoad has been renamed to onLoad in 2.0. Please adjust your code',\n    state      : 'History requires Asual\\'s Address library <https://github.com/asual/jquery-address>'\n  },\n\n  metadata : {\n    tab    : 'tab',\n    loaded : 'loaded',\n    promise: 'promise'\n  },\n\n  className   : {\n    loading : 'loading',\n    active  : 'active'\n  },\n\n  selector    : {\n    tabs : '.ui.tab',\n    ui   : '.ui'\n  }\n\n};\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Transition\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.transition = function() {\n  var\n    $allModules     = $(this),\n    moduleSelector  = $allModules.selector || '',\n\n    time            = new Date().getTime(),\n    performance     = [],\n\n    moduleArguments = arguments,\n    query           = moduleArguments[0],\n    queryArguments  = [].slice.call(arguments, 1),\n    methodInvoked   = (typeof query === 'string'),\n\n    requestAnimationFrame = window.requestAnimationFrame\n      || window.mozRequestAnimationFrame\n      || window.webkitRequestAnimationFrame\n      || window.msRequestAnimationFrame\n      || function(callback) { setTimeout(callback, 0); },\n\n    returnedValue\n  ;\n  $allModules\n    .each(function(index) {\n      var\n        $module  = $(this),\n        element  = this,\n\n        // set at run time\n        settings,\n        instance,\n\n        error,\n        className,\n        metadata,\n        animationEnd,\n        animationName,\n\n        namespace,\n        moduleNamespace,\n        eventNamespace,\n        module\n      ;\n\n      module = {\n\n        initialize: function() {\n\n          // get full settings\n          settings        = module.get.settings.apply(element, moduleArguments);\n\n          // shorthand\n          className       = settings.className;\n          error           = settings.error;\n          metadata        = settings.metadata;\n\n          // define namespace\n          eventNamespace  = '.' + settings.namespace;\n          moduleNamespace = 'module-' + settings.namespace;\n          instance        = $module.data(moduleNamespace) || module;\n\n          // get vendor specific events\n          animationEnd    = module.get.animationEndEvent();\n\n          if(methodInvoked) {\n            methodInvoked = module.invoke(query);\n          }\n\n          // method not invoked, lets run an animation\n          if(methodInvoked === false) {\n            module.verbose('Converted arguments into settings object', settings);\n            if(settings.interval) {\n              module.delay(settings.animate);\n            }\n            else  {\n              module.animate();\n            }\n            module.instantiate();\n          }\n        },\n\n        instantiate: function() {\n          module.verbose('Storing instance of module', module);\n          instance = module;\n          $module\n            .data(moduleNamespace, instance)\n          ;\n        },\n\n        destroy: function() {\n          module.verbose('Destroying previous module for', element);\n          $module\n            .removeData(moduleNamespace)\n          ;\n        },\n\n        refresh: function() {\n          module.verbose('Refreshing display type on next animation');\n          delete module.displayType;\n        },\n\n        forceRepaint: function() {\n          module.verbose('Forcing element repaint');\n          var\n            $parentElement = $module.parent(),\n            $nextElement = $module.next()\n          ;\n          if($nextElement.length === 0) {\n            $module.detach().appendTo($parentElement);\n          }\n          else {\n            $module.detach().insertBefore($nextElement);\n          }\n        },\n\n        repaint: function() {\n          module.verbose('Repainting element');\n          var\n            fakeAssignment = element.offsetWidth\n          ;\n        },\n\n        delay: function(interval) {\n          var\n            direction = module.get.animationDirection(),\n            shouldReverse,\n            delay\n          ;\n          if(!direction) {\n            direction = module.can.transition()\n              ? module.get.direction()\n              : 'static'\n            ;\n          }\n          interval = (interval !== undefined)\n            ? interval\n            : settings.interval\n          ;\n          shouldReverse = (settings.reverse == 'auto' && direction == className.outward);\n          delay = (shouldReverse || settings.reverse == true)\n            ? ($allModules.length - index) * settings.interval\n            : index * settings.interval\n          ;\n          module.debug('Delaying animation by', delay);\n          setTimeout(module.animate, delay);\n        },\n\n        animate: function(overrideSettings) {\n          settings = overrideSettings || settings;\n          if(!module.is.supported()) {\n            module.error(error.support);\n            return false;\n          }\n          module.debug('Preparing animation', settings.animation);\n          if(module.is.animating()) {\n            if(settings.queue) {\n              if(!settings.allowRepeats && module.has.direction() && module.is.occurring() && module.queuing !== true) {\n                module.debug('Animation is currently occurring, preventing queueing same animation', settings.animation);\n              }\n              else {\n                module.queue(settings.animation);\n              }\n              return false;\n            }\n            else if(!settings.allowRepeats && module.is.occurring()) {\n              module.debug('Animation is already occurring, will not execute repeated animation', settings.animation);\n              return false;\n            }\n            else {\n              module.debug('New animation started, completing previous early', settings.animation);\n              instance.complete();\n            }\n          }\n          if( module.can.animate() ) {\n            module.set.animating(settings.animation);\n          }\n          else {\n            module.error(error.noAnimation, settings.animation, element);\n          }\n        },\n\n        reset: function() {\n          module.debug('Resetting animation to beginning conditions');\n          module.remove.animationCallbacks();\n          module.restore.conditions();\n          module.remove.animating();\n        },\n\n        queue: function(animation) {\n          module.debug('Queueing animation of', animation);\n          module.queuing = true;\n          $module\n            .one(animationEnd + '.queue' + eventNamespace, function() {\n              module.queuing = false;\n              module.repaint();\n              module.animate.apply(this, settings);\n            })\n          ;\n        },\n\n        complete: function (event) {\n          module.debug('Animation complete', settings.animation);\n          module.remove.completeCallback();\n          module.remove.failSafe();\n          if(!module.is.looping()) {\n            if( module.is.outward() ) {\n              module.verbose('Animation is outward, hiding element');\n              module.restore.conditions();\n              module.hide();\n            }\n            else if( module.is.inward() ) {\n              module.verbose('Animation is outward, showing element');\n              module.restore.conditions();\n              module.show();\n            }\n            else {\n              module.verbose('Static animation completed');\n              module.restore.conditions();\n              settings.onComplete.call(element);\n            }\n          }\n        },\n\n        force: {\n          visible: function() {\n            var\n              style          = $module.attr('style'),\n              userStyle      = module.get.userStyle(),\n              displayType    = module.get.displayType(),\n              overrideStyle  = userStyle + 'display: ' + displayType + ' !important;',\n              currentDisplay = $module.css('display'),\n              emptyStyle     = (style === undefined || style === '')\n            ;\n            if(currentDisplay !== displayType) {\n              module.verbose('Overriding default display to show element', displayType);\n              $module\n                .attr('style', overrideStyle)\n              ;\n            }\n            else if(emptyStyle) {\n              $module.removeAttr('style');\n            }\n          },\n          hidden: function() {\n            var\n              style          = $module.attr('style'),\n              currentDisplay = $module.css('display'),\n              emptyStyle     = (style === undefined || style === '')\n            ;\n            if(currentDisplay !== 'none' && !module.is.hidden()) {\n              module.verbose('Overriding default display to hide element');\n              $module\n                .css('display', 'none')\n              ;\n            }\n            else if(emptyStyle) {\n              $module\n                .removeAttr('style')\n              ;\n            }\n          }\n        },\n\n        has: {\n          direction: function(animation) {\n            var\n              hasDirection = false\n            ;\n            animation = animation || settings.animation;\n            if(typeof animation === 'string') {\n              animation = animation.split(' ');\n              $.each(animation, function(index, word){\n                if(word === className.inward || word === className.outward) {\n                  hasDirection = true;\n                }\n              });\n            }\n            return hasDirection;\n          },\n          inlineDisplay: function() {\n            var\n              style = $module.attr('style') || ''\n            ;\n            return $.isArray(style.match(/display.*?;/, ''));\n          }\n        },\n\n        set: {\n          animating: function(animation) {\n            var\n              animationClass,\n              direction\n            ;\n            // remove previous callbacks\n            module.remove.completeCallback();\n\n            // determine exact animation\n            animation      = animation || settings.animation;\n            animationClass = module.get.animationClass(animation);\n\n            // save animation class in cache to restore class names\n            module.save.animation(animationClass);\n\n            // override display if necessary so animation appears visibly\n            module.force.visible();\n\n            module.remove.hidden();\n            module.remove.direction();\n\n            module.start.animation(animationClass);\n\n          },\n          duration: function(animationName, duration) {\n            duration = duration || settings.duration;\n            duration = (typeof duration == 'number')\n              ? duration + 'ms'\n              : duration\n            ;\n            if(duration || duration === 0) {\n              module.verbose('Setting animation duration', duration);\n              $module\n                .css({\n                  'animation-duration':  duration\n                })\n              ;\n            }\n          },\n          direction: function(direction) {\n            direction = direction || module.get.direction();\n            if(direction == className.inward) {\n              module.set.inward();\n            }\n            else {\n              module.set.outward();\n            }\n          },\n          looping: function() {\n            module.debug('Transition set to loop');\n            $module\n              .addClass(className.looping)\n            ;\n          },\n          hidden: function() {\n            $module\n              .addClass(className.transition)\n              .addClass(className.hidden)\n            ;\n          },\n          inward: function() {\n            module.debug('Setting direction to inward');\n            $module\n              .removeClass(className.outward)\n              .addClass(className.inward)\n            ;\n          },\n          outward: function() {\n            module.debug('Setting direction to outward');\n            $module\n              .removeClass(className.inward)\n              .addClass(className.outward)\n            ;\n          },\n          visible: function() {\n            $module\n              .addClass(className.transition)\n              .addClass(className.visible)\n            ;\n          }\n        },\n\n        start: {\n          animation: function(animationClass) {\n            animationClass = animationClass || module.get.animationClass();\n            module.debug('Starting tween', animationClass);\n            $module\n              .addClass(animationClass)\n              .one(animationEnd + '.complete' + eventNamespace, module.complete)\n            ;\n            if(settings.useFailSafe) {\n              module.add.failSafe();\n            }\n            module.set.duration(settings.duration);\n            settings.onStart.call(element);\n          }\n        },\n\n        save: {\n          animation: function(animation) {\n            if(!module.cache) {\n              module.cache = {};\n            }\n            module.cache.animation = animation;\n          },\n          displayType: function(displayType) {\n            if(displayType !== 'none') {\n              $module.data(metadata.displayType, displayType);\n            }\n          },\n          transitionExists: function(animation, exists) {\n            $.fn.transition.exists[animation] = exists;\n            module.verbose('Saving existence of transition', animation, exists);\n          }\n        },\n\n        restore: {\n          conditions: function() {\n            var\n              animation = module.get.currentAnimation()\n            ;\n            if(animation) {\n              $module\n                .removeClass(animation)\n              ;\n              module.verbose('Removing animation class', module.cache);\n            }\n            module.remove.duration();\n          }\n        },\n\n        add: {\n          failSafe: function() {\n            var\n              duration = module.get.duration()\n            ;\n            module.timer = setTimeout(function() {\n              $module.triggerHandler(animationEnd);\n            }, duration + settings.failSafeDelay);\n            module.verbose('Adding fail safe timer', module.timer);\n          }\n        },\n\n        remove: {\n          animating: function() {\n            $module.removeClass(className.animating);\n          },\n          animationCallbacks: function() {\n            module.remove.queueCallback();\n            module.remove.completeCallback();\n          },\n          queueCallback: function() {\n            $module.off('.queue' + eventNamespace);\n          },\n          completeCallback: function() {\n            $module.off('.complete' + eventNamespace);\n          },\n          display: function() {\n            $module.css('display', '');\n          },\n          direction: function() {\n            $module\n              .removeClass(className.inward)\n              .removeClass(className.outward)\n            ;\n          },\n          duration: function() {\n            $module\n              .css('animation-duration', '')\n            ;\n          },\n          failSafe: function() {\n            module.verbose('Removing fail safe timer', module.timer);\n            if(module.timer) {\n              clearTimeout(module.timer);\n            }\n          },\n          hidden: function() {\n            $module.removeClass(className.hidden);\n          },\n          visible: function() {\n            $module.removeClass(className.visible);\n          },\n          looping: function() {\n            module.debug('Transitions are no longer looping');\n            if( module.is.looping() ) {\n              module.reset();\n              $module\n                .removeClass(className.looping)\n              ;\n            }\n          },\n          transition: function() {\n            $module\n              .removeClass(className.visible)\n              .removeClass(className.hidden)\n            ;\n          }\n        },\n        get: {\n          settings: function(animation, duration, onComplete) {\n            // single settings object\n            if(typeof animation == 'object') {\n              return $.extend(true, {}, $.fn.transition.settings, animation);\n            }\n            // all arguments provided\n            else if(typeof onComplete == 'function') {\n              return $.extend({}, $.fn.transition.settings, {\n                animation  : animation,\n                onComplete : onComplete,\n                duration   : duration\n              });\n            }\n            // only duration provided\n            else if(typeof duration == 'string' || typeof duration == 'number') {\n              return $.extend({}, $.fn.transition.settings, {\n                animation : animation,\n                duration  : duration\n              });\n            }\n            // duration is actually settings object\n            else if(typeof duration == 'object') {\n              return $.extend({}, $.fn.transition.settings, duration, {\n                animation : animation\n              });\n            }\n            // duration is actually callback\n            else if(typeof duration == 'function') {\n              return $.extend({}, $.fn.transition.settings, {\n                animation  : animation,\n                onComplete : duration\n              });\n            }\n            // only animation provided\n            else {\n              return $.extend({}, $.fn.transition.settings, {\n                animation : animation\n              });\n            }\n          },\n          animationClass: function(animation) {\n            var\n              animationClass = animation || settings.animation,\n              directionClass = (module.can.transition() && !module.has.direction())\n                ? module.get.direction() + ' '\n                : ''\n            ;\n            return className.animating + ' '\n              + className.transition + ' '\n              + directionClass\n              + animationClass\n            ;\n          },\n          currentAnimation: function() {\n            return (module.cache && module.cache.animation !== undefined)\n              ? module.cache.animation\n              : false\n            ;\n          },\n          currentDirection: function() {\n            return module.is.inward()\n              ? className.inward\n              : className.outward\n            ;\n          },\n          direction: function() {\n            return module.is.hidden() || !module.is.visible()\n              ? className.inward\n              : className.outward\n            ;\n          },\n          animationDirection: function(animation) {\n            var\n              direction\n            ;\n            animation = animation || settings.animation;\n            if(typeof animation === 'string') {\n              animation = animation.split(' ');\n              // search animation name for out/in class\n              $.each(animation, function(index, word){\n                if(word === className.inward) {\n                  direction = className.inward;\n                }\n                else if(word === className.outward) {\n                  direction = className.outward;\n                }\n              });\n            }\n            // return found direction\n            if(direction) {\n              return direction;\n            }\n            return false;\n          },\n          duration: function(duration) {\n            duration = duration || settings.duration;\n            if(duration === false) {\n              duration = $module.css('animation-duration') || 0;\n            }\n            return (typeof duration === 'string')\n              ? (duration.indexOf('ms') > -1)\n                ? parseFloat(duration)\n                : parseFloat(duration) * 1000\n              : duration\n            ;\n          },\n          displayType: function(shouldDetermine) {\n            shouldDetermine = (shouldDetermine !== undefined)\n              ? shouldDetermine\n              : true\n            ;\n            if(settings.displayType) {\n              return settings.displayType;\n            }\n            if(shouldDetermine && $module.data(metadata.displayType) === undefined) {\n              // create fake element to determine display state\n              module.can.transition(true);\n            }\n            return $module.data(metadata.displayType);\n          },\n          userStyle: function(style) {\n            style = style || $module.attr('style') || '';\n            return style.replace(/display.*?;/, '');\n          },\n          transitionExists: function(animation) {\n            return $.fn.transition.exists[animation];\n          },\n          animationStartEvent: function() {\n            var\n              element     = document.createElement('div'),\n              animations  = {\n                'animation'       :'animationstart',\n                'OAnimation'      :'oAnimationStart',\n                'MozAnimation'    :'mozAnimationStart',\n                'WebkitAnimation' :'webkitAnimationStart'\n              },\n              animation\n            ;\n            for(animation in animations){\n              if( element.style[animation] !== undefined ){\n                return animations[animation];\n              }\n            }\n            return false;\n          },\n          animationEndEvent: function() {\n            var\n              element     = document.createElement('div'),\n              animations  = {\n                'animation'       :'animationend',\n                'OAnimation'      :'oAnimationEnd',\n                'MozAnimation'    :'mozAnimationEnd',\n                'WebkitAnimation' :'webkitAnimationEnd'\n              },\n              animation\n            ;\n            for(animation in animations){\n              if( element.style[animation] !== undefined ){\n                return animations[animation];\n              }\n            }\n            return false;\n          }\n\n        },\n\n        can: {\n          transition: function(forced) {\n            var\n              animation         = settings.animation,\n              transitionExists  = module.get.transitionExists(animation),\n              displayType       = module.get.displayType(false),\n              elementClass,\n              tagName,\n              $clone,\n              currentAnimation,\n              inAnimation,\n              directionExists\n            ;\n            if( transitionExists === undefined || forced) {\n              module.verbose('Determining whether animation exists');\n              elementClass = $module.attr('class');\n              tagName      = $module.prop('tagName');\n\n              $clone = $('<' + tagName + ' />').addClass( elementClass ).insertAfter($module);\n              currentAnimation = $clone\n                .addClass(animation)\n                .removeClass(className.inward)\n                .removeClass(className.outward)\n                .addClass(className.animating)\n                .addClass(className.transition)\n                .css('animationName')\n              ;\n              inAnimation = $clone\n                .addClass(className.inward)\n                .css('animationName')\n              ;\n              if(!displayType) {\n                displayType = $clone\n                  .attr('class', elementClass)\n                  .removeAttr('style')\n                  .removeClass(className.hidden)\n                  .removeClass(className.visible)\n                  .show()\n                  .css('display')\n                ;\n                module.verbose('Determining final display state', displayType);\n                module.save.displayType(displayType);\n              }\n\n              $clone.remove();\n              if(currentAnimation != inAnimation) {\n                module.debug('Direction exists for animation', animation);\n                directionExists = true;\n              }\n              else if(currentAnimation == 'none' || !currentAnimation) {\n                module.debug('No animation defined in css', animation);\n                return;\n              }\n              else {\n                module.debug('Static animation found', animation, displayType);\n                directionExists = false;\n              }\n              module.save.transitionExists(animation, directionExists);\n            }\n            return (transitionExists !== undefined)\n              ? transitionExists\n              : directionExists\n            ;\n          },\n          animate: function() {\n            // can transition does not return a value if animation does not exist\n            return (module.can.transition() !== undefined);\n          }\n        },\n\n        is: {\n          animating: function() {\n            return $module.hasClass(className.animating);\n          },\n          inward: function() {\n            return $module.hasClass(className.inward);\n          },\n          outward: function() {\n            return $module.hasClass(className.outward);\n          },\n          looping: function() {\n            return $module.hasClass(className.looping);\n          },\n          occurring: function(animation) {\n            animation = animation || settings.animation;\n            animation = '.' + animation.replace(' ', '.');\n            return ( $module.filter(animation).length > 0 );\n          },\n          visible: function() {\n            return $module.is(':visible');\n          },\n          hidden: function() {\n            return $module.css('visibility') === 'hidden';\n          },\n          supported: function() {\n            return(animationEnd !== false);\n          }\n        },\n\n        hide: function() {\n          module.verbose('Hiding element');\n          if( module.is.animating() ) {\n            module.reset();\n          }\n          element.blur(); // IE will trigger focus change if element is not blurred before hiding\n          module.remove.display();\n          module.remove.visible();\n          module.set.hidden();\n          module.force.hidden();\n          settings.onHide.call(element);\n          settings.onComplete.call(element);\n          // module.repaint();\n        },\n\n        show: function(display) {\n          module.verbose('Showing element', display);\n          module.remove.hidden();\n          module.set.visible();\n          module.force.visible();\n          settings.onShow.call(element);\n          settings.onComplete.call(element);\n          // module.repaint();\n        },\n\n        toggle: function() {\n          if( module.is.visible() ) {\n            module.hide();\n          }\n          else {\n            module.show();\n          }\n        },\n\n        stop: function() {\n          module.debug('Stopping current animation');\n          $module.triggerHandler(animationEnd);\n        },\n\n        stopAll: function() {\n          module.debug('Stopping all animation');\n          module.remove.queueCallback();\n          $module.triggerHandler(animationEnd);\n        },\n\n        clear: {\n          queue: function() {\n            module.debug('Clearing animation queue');\n            module.remove.queueCallback();\n          }\n        },\n\n        enable: function() {\n          module.verbose('Starting animation');\n          $module.removeClass(className.disabled);\n        },\n\n        disable: function() {\n          module.debug('Stopping animation');\n          $module.addClass(className.disabled);\n        },\n\n        setting: function(name, value) {\n          module.debug('Changing setting', name, value);\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            if($.isPlainObject(settings[name])) {\n              $.extend(true, settings[name], value);\n            }\n            else {\n              settings[name] = value;\n            }\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if($allModules.length > 1) {\n              title += ' ' + '(' + $allModules.length + ')';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        // modified for transition to return invoke success\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return (found !== undefined)\n            ? found\n            : false\n          ;\n        }\n      };\n      module.initialize();\n    })\n  ;\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n// Records if CSS transition is available\n$.fn.transition.exists = {};\n\n$.fn.transition.settings = {\n\n  // module info\n  name          : 'Transition',\n\n  // hide all output from this component regardless of other settings\n  silent        : false,\n\n  // debug content outputted to console\n  debug         : false,\n\n  // verbose debug output\n  verbose       : false,\n\n  // performance data output\n  performance   : true,\n\n  // event namespace\n  namespace     : 'transition',\n\n  // delay between animations in group\n  interval      : 0,\n\n  // whether group animations should be reversed\n  reverse       : 'auto',\n\n  // animation callback event\n  onStart       : function() {},\n  onComplete    : function() {},\n  onShow        : function() {},\n  onHide        : function() {},\n\n  // whether timeout should be used to ensure callback fires in cases animationend does not\n  useFailSafe   : true,\n\n  // delay in ms for fail safe\n  failSafeDelay : 100,\n\n  // whether EXACT animation can occur twice in a row\n  allowRepeats  : false,\n\n  // Override final display type on visible\n  displayType   : false,\n\n  // animation duration\n  animation     : 'fade',\n  duration      : false,\n\n  // new animations will occur after previous ones\n  queue         : true,\n\n  metadata : {\n    displayType: 'display'\n  },\n\n  className   : {\n    animating  : 'animating',\n    disabled   : 'disabled',\n    hidden     : 'hidden',\n    inward     : 'in',\n    loading    : 'loading',\n    looping    : 'looping',\n    outward    : 'out',\n    transition : 'transition',\n    visible    : 'visible'\n  },\n\n  // possible errors\n  error: {\n    noAnimation : 'Element is no longer attached to DOM. Unable to animate.  Use silent setting to surpress this warning in production.',\n    repeated    : 'That animation is already occurring, cancelling repeated animation',\n    method      : 'The method you called is not defined',\n    support     : 'This browser does not support CSS animations'\n  }\n\n};\n\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - API\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nvar\n  window = (typeof window != 'undefined' && window.Math == Math)\n    ? window\n    : (typeof self != 'undefined' && self.Math == Math)\n      ? self\n      : Function('return this')()\n;\n\n$.api = $.fn.api = function(parameters) {\n\n  var\n    // use window context if none specified\n    $allModules     = $.isFunction(this)\n        ? $(window)\n        : $(this),\n    moduleSelector = $allModules.selector || '',\n    time           = new Date().getTime(),\n    performance    = [],\n\n    query          = arguments[0],\n    methodInvoked  = (typeof query == 'string'),\n    queryArguments = [].slice.call(arguments, 1),\n\n    returnedValue\n  ;\n\n  $allModules\n    .each(function() {\n      var\n        settings          = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.api.settings, parameters)\n          : $.extend({}, $.fn.api.settings),\n\n        // internal aliases\n        namespace       = settings.namespace,\n        metadata        = settings.metadata,\n        selector        = settings.selector,\n        error           = settings.error,\n        className       = settings.className,\n\n        // define namespaces for modules\n        eventNamespace  = '.' + namespace,\n        moduleNamespace = 'module-' + namespace,\n\n        // element that creates request\n        $module         = $(this),\n        $form           = $module.closest(selector.form),\n\n        // context used for state\n        $context        = (settings.stateContext)\n          ? $(settings.stateContext)\n          : $module,\n\n        // request details\n        ajaxSettings,\n        requestSettings,\n        url,\n        data,\n        requestStartTime,\n\n        // standard module\n        element         = this,\n        context         = $context[0],\n        instance        = $module.data(moduleNamespace),\n        module\n      ;\n\n      module = {\n\n        initialize: function() {\n          if(!methodInvoked) {\n            module.bind.events();\n          }\n          module.instantiate();\n        },\n\n        instantiate: function() {\n          module.verbose('Storing instance of module', module);\n          instance = module;\n          $module\n            .data(moduleNamespace, instance)\n          ;\n        },\n\n        destroy: function() {\n          module.verbose('Destroying previous module for', element);\n          $module\n            .removeData(moduleNamespace)\n            .off(eventNamespace)\n          ;\n        },\n\n        bind: {\n          events: function() {\n            var\n              triggerEvent = module.get.event()\n            ;\n            if( triggerEvent ) {\n              module.verbose('Attaching API events to element', triggerEvent);\n              $module\n                .on(triggerEvent + eventNamespace, module.event.trigger)\n              ;\n            }\n            else if(settings.on == 'now') {\n              module.debug('Querying API endpoint immediately');\n              module.query();\n            }\n          }\n        },\n\n        decode: {\n          json: function(response) {\n            if(response !== undefined && typeof response == 'string') {\n              try {\n               response = JSON.parse(response);\n              }\n              catch(e) {\n                // isnt json string\n              }\n            }\n            return response;\n          }\n        },\n\n        read: {\n          cachedResponse: function(url) {\n            var\n              response\n            ;\n            if(window.Storage === undefined) {\n              module.error(error.noStorage);\n              return;\n            }\n            response = sessionStorage.getItem(url);\n            module.debug('Using cached response', url, response);\n            response = module.decode.json(response);\n            return response;\n          }\n        },\n        write: {\n          cachedResponse: function(url, response) {\n            if(response && response === '') {\n              module.debug('Response empty, not caching', response);\n              return;\n            }\n            if(window.Storage === undefined) {\n              module.error(error.noStorage);\n              return;\n            }\n            if( $.isPlainObject(response) ) {\n              response = JSON.stringify(response);\n            }\n            sessionStorage.setItem(url, response);\n            module.verbose('Storing cached response for url', url, response);\n          }\n        },\n\n        query: function() {\n\n          if(module.is.disabled()) {\n            module.debug('Element is disabled API request aborted');\n            return;\n          }\n\n          if(module.is.loading()) {\n            if(settings.interruptRequests) {\n              module.debug('Interrupting previous request');\n              module.abort();\n            }\n            else {\n              module.debug('Cancelling request, previous request is still pending');\n              return;\n            }\n          }\n\n          // pass element metadata to url (value, text)\n          if(settings.defaultData) {\n            $.extend(true, settings.urlData, module.get.defaultData());\n          }\n\n          // Add form content\n          if(settings.serializeForm) {\n            settings.data = module.add.formData(settings.data);\n          }\n\n          // call beforesend and get any settings changes\n          requestSettings = module.get.settings();\n\n          // check if before send cancelled request\n          if(requestSettings === false) {\n            module.cancelled = true;\n            module.error(error.beforeSend);\n            return;\n          }\n          else {\n            module.cancelled = false;\n          }\n\n          // get url\n          url = module.get.templatedURL();\n\n          if(!url && !module.is.mocked()) {\n            module.error(error.missingURL);\n            return;\n          }\n\n          // replace variables\n          url = module.add.urlData( url );\n          // missing url parameters\n          if( !url && !module.is.mocked()) {\n            return;\n          }\n\n          requestSettings.url = settings.base + url;\n\n          // look for jQuery ajax parameters in settings\n          ajaxSettings = $.extend(true, {}, settings, {\n            type       : settings.method || settings.type,\n            data       : data,\n            url        : settings.base + url,\n            beforeSend : settings.beforeXHR,\n            success    : function() {},\n            failure    : function() {},\n            complete   : function() {}\n          });\n\n          module.debug('Querying URL', ajaxSettings.url);\n          module.verbose('Using AJAX settings', ajaxSettings);\n          if(settings.cache === 'local' && module.read.cachedResponse(url)) {\n            module.debug('Response returned from local cache');\n            module.request = module.create.request();\n            module.request.resolveWith(context, [ module.read.cachedResponse(url) ]);\n            return;\n          }\n\n          if( !settings.throttle ) {\n            module.debug('Sending request', data, ajaxSettings.method);\n            module.send.request();\n          }\n          else {\n            if(!settings.throttleFirstRequest && !module.timer) {\n              module.debug('Sending request', data, ajaxSettings.method);\n              module.send.request();\n              module.timer = setTimeout(function(){}, settings.throttle);\n            }\n            else {\n              module.debug('Throttling request', settings.throttle);\n              clearTimeout(module.timer);\n              module.timer = setTimeout(function() {\n                if(module.timer) {\n                  delete module.timer;\n                }\n                module.debug('Sending throttled request', data, ajaxSettings.method);\n                module.send.request();\n              }, settings.throttle);\n            }\n          }\n\n        },\n\n        should: {\n          removeError: function() {\n            return ( settings.hideError === true || (settings.hideError === 'auto' && !module.is.form()) );\n          }\n        },\n\n        is: {\n          disabled: function() {\n            return ($module.filter(selector.disabled).length > 0);\n          },\n          expectingJSON: function() {\n            return settings.dataType === 'json' || settings.dataType === 'jsonp';\n          },\n          form: function() {\n            return $module.is('form') || $context.is('form');\n          },\n          mocked: function() {\n            return (settings.mockResponse || settings.mockResponseAsync || settings.response || settings.responseAsync);\n          },\n          input: function() {\n            return $module.is('input');\n          },\n          loading: function() {\n            return (module.request)\n              ? (module.request.state() == 'pending')\n              : false\n            ;\n          },\n          abortedRequest: function(xhr) {\n            if(xhr && xhr.readyState !== undefined && xhr.readyState === 0) {\n              module.verbose('XHR request determined to be aborted');\n              return true;\n            }\n            else {\n              module.verbose('XHR request was not aborted');\n              return false;\n            }\n          },\n          validResponse: function(response) {\n            if( (!module.is.expectingJSON()) || !$.isFunction(settings.successTest) ) {\n              module.verbose('Response is not JSON, skipping validation', settings.successTest, response);\n              return true;\n            }\n            module.debug('Checking JSON returned success', settings.successTest, response);\n            if( settings.successTest(response) ) {\n              module.debug('Response passed success test', response);\n              return true;\n            }\n            else {\n              module.debug('Response failed success test', response);\n              return false;\n            }\n          }\n        },\n\n        was: {\n          cancelled: function() {\n            return (module.cancelled || false);\n          },\n          succesful: function() {\n            return (module.request && module.request.state() == 'resolved');\n          },\n          failure: function() {\n            return (module.request && module.request.state() == 'rejected');\n          },\n          complete: function() {\n            return (module.request && (module.request.state() == 'resolved' || module.request.state() == 'rejected') );\n          }\n        },\n\n        add: {\n          urlData: function(url, urlData) {\n            var\n              requiredVariables,\n              optionalVariables\n            ;\n            if(url) {\n              requiredVariables = url.match(settings.regExp.required);\n              optionalVariables = url.match(settings.regExp.optional);\n              urlData           = urlData || settings.urlData;\n              if(requiredVariables) {\n                module.debug('Looking for required URL variables', requiredVariables);\n                $.each(requiredVariables, function(index, templatedString) {\n                  var\n                    // allow legacy {$var} style\n                    variable = (templatedString.indexOf('$') !== -1)\n                      ? templatedString.substr(2, templatedString.length - 3)\n                      : templatedString.substr(1, templatedString.length - 2),\n                    value   = ($.isPlainObject(urlData) && urlData[variable] !== undefined)\n                      ? urlData[variable]\n                      : ($module.data(variable) !== undefined)\n                        ? $module.data(variable)\n                        : ($context.data(variable) !== undefined)\n                          ? $context.data(variable)\n                          : urlData[variable]\n                  ;\n                  // remove value\n                  if(value === undefined) {\n                    module.error(error.requiredParameter, variable, url);\n                    url = false;\n                    return false;\n                  }\n                  else {\n                    module.verbose('Found required variable', variable, value);\n                    value = (settings.encodeParameters)\n                      ? module.get.urlEncodedValue(value)\n                      : value\n                    ;\n                    url = url.replace(templatedString, value);\n                  }\n                });\n              }\n              if(optionalVariables) {\n                module.debug('Looking for optional URL variables', requiredVariables);\n                $.each(optionalVariables, function(index, templatedString) {\n                  var\n                    // allow legacy {/$var} style\n                    variable = (templatedString.indexOf('$') !== -1)\n                      ? templatedString.substr(3, templatedString.length - 4)\n                      : templatedString.substr(2, templatedString.length - 3),\n                    value   = ($.isPlainObject(urlData) && urlData[variable] !== undefined)\n                      ? urlData[variable]\n                      : ($module.data(variable) !== undefined)\n                        ? $module.data(variable)\n                        : ($context.data(variable) !== undefined)\n                          ? $context.data(variable)\n                          : urlData[variable]\n                  ;\n                  // optional replacement\n                  if(value !== undefined) {\n                    module.verbose('Optional variable Found', variable, value);\n                    url = url.replace(templatedString, value);\n                  }\n                  else {\n                    module.verbose('Optional variable not found', variable);\n                    // remove preceding slash if set\n                    if(url.indexOf('/' + templatedString) !== -1) {\n                      url = url.replace('/' + templatedString, '');\n                    }\n                    else {\n                      url = url.replace(templatedString, '');\n                    }\n                  }\n                });\n              }\n            }\n            return url;\n          },\n          formData: function(data) {\n            var\n              canSerialize = ($.fn.serializeObject !== undefined),\n              formData     = (canSerialize)\n                ? $form.serializeObject()\n                : $form.serialize(),\n              hasOtherData\n            ;\n            data         = data || settings.data;\n            hasOtherData = $.isPlainObject(data);\n\n            if(hasOtherData) {\n              if(canSerialize) {\n                module.debug('Extending existing data with form data', data, formData);\n                data = $.extend(true, {}, data, formData);\n              }\n              else {\n                module.error(error.missingSerialize);\n                module.debug('Cant extend data. Replacing data with form data', data, formData);\n                data = formData;\n              }\n            }\n            else {\n              module.debug('Adding form data', formData);\n              data = formData;\n            }\n            return data;\n          }\n        },\n\n        send: {\n          request: function() {\n            module.set.loading();\n            module.request = module.create.request();\n            if( module.is.mocked() ) {\n              module.mockedXHR = module.create.mockedXHR();\n            }\n            else {\n              module.xhr = module.create.xhr();\n            }\n            settings.onRequest.call(context, module.request, module.xhr);\n          }\n        },\n\n        event: {\n          trigger: function(event) {\n            module.query();\n            if(event.type == 'submit' || event.type == 'click') {\n              event.preventDefault();\n            }\n          },\n          xhr: {\n            always: function() {\n              // nothing special\n            },\n            done: function(response, textStatus, xhr) {\n              var\n                context            = this,\n                elapsedTime        = (new Date().getTime() - requestStartTime),\n                timeLeft           = (settings.loadingDuration - elapsedTime),\n                translatedResponse = ( $.isFunction(settings.onResponse) )\n                  ? module.is.expectingJSON()\n                    ? settings.onResponse.call(context, $.extend(true, {}, response))\n                    : settings.onResponse.call(context, response)\n                  : false\n              ;\n              timeLeft = (timeLeft > 0)\n                ? timeLeft\n                : 0\n              ;\n              if(translatedResponse) {\n                module.debug('Modified API response in onResponse callback', settings.onResponse, translatedResponse, response);\n                response = translatedResponse;\n              }\n              if(timeLeft > 0) {\n                module.debug('Response completed early delaying state change by', timeLeft);\n              }\n              setTimeout(function() {\n                if( module.is.validResponse(response) ) {\n                  module.request.resolveWith(context, [response, xhr]);\n                }\n                else {\n                  module.request.rejectWith(context, [xhr, 'invalid']);\n                }\n              }, timeLeft);\n            },\n            fail: function(xhr, status, httpMessage) {\n              var\n                context     = this,\n                elapsedTime = (new Date().getTime() - requestStartTime),\n                timeLeft    = (settings.loadingDuration - elapsedTime)\n              ;\n              timeLeft = (timeLeft > 0)\n                ? timeLeft\n                : 0\n              ;\n              if(timeLeft > 0) {\n                module.debug('Response completed early delaying state change by', timeLeft);\n              }\n              setTimeout(function() {\n                if( module.is.abortedRequest(xhr) ) {\n                  module.request.rejectWith(context, [xhr, 'aborted', httpMessage]);\n                }\n                else {\n                  module.request.rejectWith(context, [xhr, 'error', status, httpMessage]);\n                }\n              }, timeLeft);\n            }\n          },\n          request: {\n            done: function(response, xhr) {\n              module.debug('Successful API Response', response);\n              if(settings.cache === 'local' && url) {\n                module.write.cachedResponse(url, response);\n                module.debug('Saving server response locally', module.cache);\n              }\n              settings.onSuccess.call(context, response, $module, xhr);\n            },\n            complete: function(firstParameter, secondParameter) {\n              var\n                xhr,\n                response\n              ;\n              // have to guess callback parameters based on request success\n              if( module.was.succesful() ) {\n                response = firstParameter;\n                xhr      = secondParameter;\n              }\n              else {\n                xhr      = firstParameter;\n                response = module.get.responseFromXHR(xhr);\n              }\n              module.remove.loading();\n              settings.onComplete.call(context, response, $module, xhr);\n            },\n            fail: function(xhr, status, httpMessage) {\n              var\n                // pull response from xhr if available\n                response     = module.get.responseFromXHR(xhr),\n                errorMessage = module.get.errorFromRequest(response, status, httpMessage)\n              ;\n              if(status == 'aborted') {\n                module.debug('XHR Aborted (Most likely caused by page navigation or CORS Policy)', status, httpMessage);\n                settings.onAbort.call(context, status, $module, xhr);\n                return true;\n              }\n              else if(status == 'invalid') {\n                module.debug('JSON did not pass success test. A server-side error has most likely occurred', response);\n              }\n              else if(status == 'error') {\n                if(xhr !== undefined) {\n                  module.debug('XHR produced a server error', status, httpMessage);\n                  // make sure we have an error to display to console\n                  if( xhr.status != 200 && httpMessage !== undefined && httpMessage !== '') {\n                    module.error(error.statusMessage + httpMessage, ajaxSettings.url);\n                  }\n                  settings.onError.call(context, errorMessage, $module, xhr);\n                }\n              }\n\n              if(settings.errorDuration && status !== 'aborted') {\n                module.debug('Adding error state');\n                module.set.error();\n                if( module.should.removeError() ) {\n                  setTimeout(module.remove.error, settings.errorDuration);\n                }\n              }\n              module.debug('API Request failed', errorMessage, xhr);\n              settings.onFailure.call(context, response, $module, xhr);\n            }\n          }\n        },\n\n        create: {\n\n          request: function() {\n            // api request promise\n            return $.Deferred()\n              .always(module.event.request.complete)\n              .done(module.event.request.done)\n              .fail(module.event.request.fail)\n            ;\n          },\n\n          mockedXHR: function () {\n            var\n              // xhr does not simulate these properties of xhr but must return them\n              textStatus     = false,\n              status         = false,\n              httpMessage    = false,\n              responder      = settings.mockResponse      || settings.response,\n              asyncResponder = settings.mockResponseAsync || settings.responseAsync,\n              asyncCallback,\n              response,\n              mockedXHR\n            ;\n\n            mockedXHR = $.Deferred()\n              .always(module.event.xhr.complete)\n              .done(module.event.xhr.done)\n              .fail(module.event.xhr.fail)\n            ;\n\n            if(responder) {\n              if( $.isFunction(responder) ) {\n                module.debug('Using specified synchronous callback', responder);\n                response = responder.call(context, requestSettings);\n              }\n              else {\n                module.debug('Using settings specified response', responder);\n                response = responder;\n              }\n              // simulating response\n              mockedXHR.resolveWith(context, [ response, textStatus, { responseText: response }]);\n            }\n            else if( $.isFunction(asyncResponder) ) {\n              asyncCallback = function(response) {\n                module.debug('Async callback returned response', response);\n\n                if(response) {\n                  mockedXHR.resolveWith(context, [ response, textStatus, { responseText: response }]);\n                }\n                else {\n                  mockedXHR.rejectWith(context, [{ responseText: response }, status, httpMessage]);\n                }\n              };\n              module.debug('Using specified async response callback', asyncResponder);\n              asyncResponder.call(context, requestSettings, asyncCallback);\n            }\n            return mockedXHR;\n          },\n\n          xhr: function() {\n            var\n              xhr\n            ;\n            // ajax request promise\n            xhr = $.ajax(ajaxSettings)\n              .always(module.event.xhr.always)\n              .done(module.event.xhr.done)\n              .fail(module.event.xhr.fail)\n            ;\n            module.verbose('Created server request', xhr, ajaxSettings);\n            return xhr;\n          }\n        },\n\n        set: {\n          error: function() {\n            module.verbose('Adding error state to element', $context);\n            $context.addClass(className.error);\n          },\n          loading: function() {\n            module.verbose('Adding loading state to element', $context);\n            $context.addClass(className.loading);\n            requestStartTime = new Date().getTime();\n          }\n        },\n\n        remove: {\n          error: function() {\n            module.verbose('Removing error state from element', $context);\n            $context.removeClass(className.error);\n          },\n          loading: function() {\n            module.verbose('Removing loading state from element', $context);\n            $context.removeClass(className.loading);\n          }\n        },\n\n        get: {\n          responseFromXHR: function(xhr) {\n            return $.isPlainObject(xhr)\n              ? (module.is.expectingJSON())\n                ? module.decode.json(xhr.responseText)\n                : xhr.responseText\n              : false\n            ;\n          },\n          errorFromRequest: function(response, status, httpMessage) {\n            return ($.isPlainObject(response) && response.error !== undefined)\n              ? response.error // use json error message\n              : (settings.error[status] !== undefined) // use server error message\n                ? settings.error[status]\n                : httpMessage\n            ;\n          },\n          request: function() {\n            return module.request || false;\n          },\n          xhr: function() {\n            return module.xhr || false;\n          },\n          settings: function() {\n            var\n              runSettings\n            ;\n            runSettings = settings.beforeSend.call(context, settings);\n            if(runSettings) {\n              if(runSettings.success !== undefined) {\n                module.debug('Legacy success callback detected', runSettings);\n                module.error(error.legacyParameters, runSettings.success);\n                runSettings.onSuccess = runSettings.success;\n              }\n              if(runSettings.failure !== undefined) {\n                module.debug('Legacy failure callback detected', runSettings);\n                module.error(error.legacyParameters, runSettings.failure);\n                runSettings.onFailure = runSettings.failure;\n              }\n              if(runSettings.complete !== undefined) {\n                module.debug('Legacy complete callback detected', runSettings);\n                module.error(error.legacyParameters, runSettings.complete);\n                runSettings.onComplete = runSettings.complete;\n              }\n            }\n            if(runSettings === undefined) {\n              module.error(error.noReturnedValue);\n            }\n            if(runSettings === false) {\n              return runSettings;\n            }\n            return (runSettings !== undefined)\n              ? $.extend(true, {}, runSettings)\n              : $.extend(true, {}, settings)\n            ;\n          },\n          urlEncodedValue: function(value) {\n            var\n              decodedValue   = window.decodeURIComponent(value),\n              encodedValue   = window.encodeURIComponent(value),\n              alreadyEncoded = (decodedValue !== value)\n            ;\n            if(alreadyEncoded) {\n              module.debug('URL value is already encoded, avoiding double encoding', value);\n              return value;\n            }\n            module.verbose('Encoding value using encodeURIComponent', value, encodedValue);\n            return encodedValue;\n          },\n          defaultData: function() {\n            var\n              data = {}\n            ;\n            if( !$.isWindow(element) ) {\n              if( module.is.input() ) {\n                data.value = $module.val();\n              }\n              else if( module.is.form() ) {\n\n              }\n              else {\n                data.text = $module.text();\n              }\n            }\n            return data;\n          },\n          event: function() {\n            if( $.isWindow(element) || settings.on == 'now' ) {\n              module.debug('API called without element, no events attached');\n              return false;\n            }\n            else if(settings.on == 'auto') {\n              if( $module.is('input') ) {\n                return (element.oninput !== undefined)\n                  ? 'input'\n                  : (element.onpropertychange !== undefined)\n                    ? 'propertychange'\n                    : 'keyup'\n                ;\n              }\n              else if( $module.is('form') ) {\n                return 'submit';\n              }\n              else {\n                return 'click';\n              }\n            }\n            else {\n              return settings.on;\n            }\n          },\n          templatedURL: function(action) {\n            action = action || $module.data(metadata.action) || settings.action || false;\n            url    = $module.data(metadata.url) || settings.url || false;\n            if(url) {\n              module.debug('Using specified url', url);\n              return url;\n            }\n            if(action) {\n              module.debug('Looking up url for action', action, settings.api);\n              if(settings.api[action] === undefined && !module.is.mocked()) {\n                module.error(error.missingAction, settings.action, settings.api);\n                return;\n              }\n              url = settings.api[action];\n            }\n            else if( module.is.form() ) {\n              url = $module.attr('action') || $context.attr('action') || false;\n              module.debug('No url or action specified, defaulting to form action', url);\n            }\n            return url;\n          }\n        },\n\n        abort: function() {\n          var\n            xhr = module.get.xhr()\n          ;\n          if( xhr && xhr.state() !== 'resolved') {\n            module.debug('Cancelling API request');\n            xhr.abort();\n          }\n        },\n\n        // reset state\n        reset: function() {\n          module.remove.error();\n          module.remove.loading();\n        },\n\n        setting: function(name, value) {\n          module.debug('Changing setting', name, value);\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            if($.isPlainObject(settings[name])) {\n              $.extend(true, settings[name], value);\n            }\n            else {\n              settings[name] = value;\n            }\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                //'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                module.error(error.method, query);\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.api.settings = {\n\n  name              : 'API',\n  namespace         : 'api',\n\n  debug             : false,\n  verbose           : false,\n  performance       : true,\n\n  // object containing all templates endpoints\n  api               : {},\n\n  // whether to cache responses\n  cache             : true,\n\n  // whether new requests should abort previous requests\n  interruptRequests : true,\n\n  // event binding\n  on                : 'auto',\n\n  // context for applying state classes\n  stateContext      : false,\n\n  // duration for loading state\n  loadingDuration   : 0,\n\n  // whether to hide errors after a period of time\n  hideError         : 'auto',\n\n  // duration for error state\n  errorDuration     : 2000,\n\n  // whether parameters should be encoded with encodeURIComponent\n  encodeParameters  : true,\n\n  // API action to use\n  action            : false,\n\n  // templated URL to use\n  url               : false,\n\n  // base URL to apply to all endpoints\n  base              : '',\n\n  // data that will\n  urlData           : {},\n\n  // whether to add default data to url data\n  defaultData          : true,\n\n  // whether to serialize closest form\n  serializeForm        : false,\n\n  // how long to wait before request should occur\n  throttle             : 0,\n\n  // whether to throttle first request or only repeated\n  throttleFirstRequest : true,\n\n  // standard ajax settings\n  method            : 'get',\n  data              : {},\n  dataType          : 'json',\n\n  // mock response\n  mockResponse      : false,\n  mockResponseAsync : false,\n\n  // aliases for mock\n  response          : false,\n  responseAsync     : false,\n\n  // callbacks before request\n  beforeSend  : function(settings) { return settings; },\n  beforeXHR   : function(xhr) {},\n  onRequest   : function(promise, xhr) {},\n\n  // after request\n  onResponse  : false, // function(response) { },\n\n  // response was successful, if JSON passed validation\n  onSuccess   : function(response, $module) {},\n\n  // request finished without aborting\n  onComplete  : function(response, $module) {},\n\n  // failed JSON success test\n  onFailure   : function(response, $module) {},\n\n  // server error\n  onError     : function(errorMessage, $module) {},\n\n  // request aborted\n  onAbort     : function(errorMessage, $module) {},\n\n  successTest : false,\n\n  // errors\n  error : {\n    beforeSend        : 'The before send function has aborted the request',\n    error             : 'There was an error with your request',\n    exitConditions    : 'API Request Aborted. Exit conditions met',\n    JSONParse         : 'JSON could not be parsed during error handling',\n    legacyParameters  : 'You are using legacy API success callback names',\n    method            : 'The method you called is not defined',\n    missingAction     : 'API action used but no url was defined',\n    missingSerialize  : 'jquery-serialize-object is required to add form data to an existing data object',\n    missingURL        : 'No URL specified for api event',\n    noReturnedValue   : 'The beforeSend callback must return a settings object, beforeSend ignored.',\n    noStorage         : 'Caching responses locally requires session storage',\n    parseError        : 'There was an error parsing your request',\n    requiredParameter : 'Missing a required URL parameter: ',\n    statusMessage     : 'Server gave an error: ',\n    timeout           : 'Your request timed out'\n  },\n\n  regExp  : {\n    required : /\\{\\$*[A-z0-9]+\\}/g,\n    optional : /\\{\\/\\$*[A-z0-9]+\\}/g,\n  },\n\n  className: {\n    loading : 'loading',\n    error   : 'error'\n  },\n\n  selector: {\n    disabled : '.disabled',\n    form      : 'form'\n  },\n\n  metadata: {\n    action  : 'action',\n    url     : 'url'\n  }\n};\n\n\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - State\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.state = function(parameters) {\n  var\n    $allModules     = $(this),\n\n    moduleSelector  = $allModules.selector || '',\n\n    hasTouch        = ('ontouchstart' in document.documentElement),\n    time            = new Date().getTime(),\n    performance     = [],\n\n    query           = arguments[0],\n    methodInvoked   = (typeof query == 'string'),\n    queryArguments  = [].slice.call(arguments, 1),\n\n    returnedValue\n  ;\n  $allModules\n    .each(function() {\n      var\n        settings          = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.state.settings, parameters)\n          : $.extend({}, $.fn.state.settings),\n\n        error           = settings.error,\n        metadata        = settings.metadata,\n        className       = settings.className,\n        namespace       = settings.namespace,\n        states          = settings.states,\n        text            = settings.text,\n\n        eventNamespace  = '.' + namespace,\n        moduleNamespace = namespace + '-module',\n\n        $module         = $(this),\n\n        element         = this,\n        instance        = $module.data(moduleNamespace),\n\n        module\n      ;\n      module = {\n\n        initialize: function() {\n          module.verbose('Initializing module');\n\n          // allow module to guess desired state based on element\n          if(settings.automatic) {\n            module.add.defaults();\n          }\n\n          // bind events with delegated events\n          if(settings.context && moduleSelector !== '') {\n            $(settings.context)\n              .on(moduleSelector, 'mouseenter' + eventNamespace, module.change.text)\n              .on(moduleSelector, 'mouseleave' + eventNamespace, module.reset.text)\n              .on(moduleSelector, 'click'      + eventNamespace, module.toggle.state)\n            ;\n          }\n          else {\n            $module\n              .on('mouseenter' + eventNamespace, module.change.text)\n              .on('mouseleave' + eventNamespace, module.reset.text)\n              .on('click'      + eventNamespace, module.toggle.state)\n            ;\n          }\n          module.instantiate();\n        },\n\n        instantiate: function() {\n          module.verbose('Storing instance of module', module);\n          instance = module;\n          $module\n            .data(moduleNamespace, module)\n          ;\n        },\n\n        destroy: function() {\n          module.verbose('Destroying previous module', instance);\n          $module\n            .off(eventNamespace)\n            .removeData(moduleNamespace)\n          ;\n        },\n\n        refresh: function() {\n          module.verbose('Refreshing selector cache');\n          $module = $(element);\n        },\n\n        add: {\n          defaults: function() {\n            var\n              userStates = parameters && $.isPlainObject(parameters.states)\n                ? parameters.states\n                : {}\n            ;\n            $.each(settings.defaults, function(type, typeStates) {\n              if( module.is[type] !== undefined && module.is[type]() ) {\n                module.verbose('Adding default states', type, element);\n                $.extend(settings.states, typeStates, userStates);\n              }\n            });\n          }\n        },\n\n        is: {\n\n          active: function() {\n            return $module.hasClass(className.active);\n          },\n          loading: function() {\n            return $module.hasClass(className.loading);\n          },\n          inactive: function() {\n            return !( $module.hasClass(className.active) );\n          },\n          state: function(state) {\n            if(className[state] === undefined) {\n              return false;\n            }\n            return $module.hasClass( className[state] );\n          },\n\n          enabled: function() {\n            return !( $module.is(settings.filter.active) );\n          },\n          disabled: function() {\n            return ( $module.is(settings.filter.active) );\n          },\n          textEnabled: function() {\n            return !( $module.is(settings.filter.text) );\n          },\n\n          // definitions for automatic type detection\n          button: function() {\n            return $module.is('.button:not(a, .submit)');\n          },\n          input: function() {\n            return $module.is('input');\n          },\n          progress: function() {\n            return $module.is('.ui.progress');\n          }\n        },\n\n        allow: function(state) {\n          module.debug('Now allowing state', state);\n          states[state] = true;\n        },\n        disallow: function(state) {\n          module.debug('No longer allowing', state);\n          states[state] = false;\n        },\n\n        allows: function(state) {\n          return states[state] || false;\n        },\n\n        enable: function() {\n          $module.removeClass(className.disabled);\n        },\n\n        disable: function() {\n          $module.addClass(className.disabled);\n        },\n\n        setState: function(state) {\n          if(module.allows(state)) {\n            $module.addClass( className[state] );\n          }\n        },\n\n        removeState: function(state) {\n          if(module.allows(state)) {\n            $module.removeClass( className[state] );\n          }\n        },\n\n        toggle: {\n          state: function() {\n            var\n              apiRequest,\n              requestCancelled\n            ;\n            if( module.allows('active') && module.is.enabled() ) {\n              module.refresh();\n              if($.fn.api !== undefined) {\n                apiRequest       = $module.api('get request');\n                requestCancelled = $module.api('was cancelled');\n                if( requestCancelled ) {\n                  module.debug('API Request cancelled by beforesend');\n                  settings.activateTest   = function(){ return false; };\n                  settings.deactivateTest = function(){ return false; };\n                }\n                else if(apiRequest) {\n                  module.listenTo(apiRequest);\n                  return;\n                }\n              }\n              module.change.state();\n            }\n          }\n        },\n\n        listenTo: function(apiRequest) {\n          module.debug('API request detected, waiting for state signal', apiRequest);\n          if(apiRequest) {\n            if(text.loading) {\n              module.update.text(text.loading);\n            }\n            $.when(apiRequest)\n              .then(function() {\n                if(apiRequest.state() == 'resolved') {\n                  module.debug('API request succeeded');\n                  settings.activateTest   = function(){ return true; };\n                  settings.deactivateTest = function(){ return true; };\n                }\n                else {\n                  module.debug('API request failed');\n                  settings.activateTest   = function(){ return false; };\n                  settings.deactivateTest = function(){ return false; };\n                }\n                module.change.state();\n              })\n            ;\n          }\n        },\n\n        // checks whether active/inactive state can be given\n        change: {\n\n          state: function() {\n            module.debug('Determining state change direction');\n            // inactive to active change\n            if( module.is.inactive() ) {\n              module.activate();\n            }\n            else {\n              module.deactivate();\n            }\n            if(settings.sync) {\n              module.sync();\n            }\n            settings.onChange.call(element);\n          },\n\n          text: function() {\n            if( module.is.textEnabled() ) {\n              if(module.is.disabled() ) {\n                module.verbose('Changing text to disabled text', text.hover);\n                module.update.text(text.disabled);\n              }\n              else if( module.is.active() ) {\n                if(text.hover) {\n                  module.verbose('Changing text to hover text', text.hover);\n                  module.update.text(text.hover);\n                }\n                else if(text.deactivate) {\n                  module.verbose('Changing text to deactivating text', text.deactivate);\n                  module.update.text(text.deactivate);\n                }\n              }\n              else {\n                if(text.hover) {\n                  module.verbose('Changing text to hover text', text.hover);\n                  module.update.text(text.hover);\n                }\n                else if(text.activate){\n                  module.verbose('Changing text to activating text', text.activate);\n                  module.update.text(text.activate);\n                }\n              }\n            }\n          }\n\n        },\n\n        activate: function() {\n          if( settings.activateTest.call(element) ) {\n            module.debug('Setting state to active');\n            $module\n              .addClass(className.active)\n            ;\n            module.update.text(text.active);\n            settings.onActivate.call(element);\n          }\n        },\n\n        deactivate: function() {\n          if( settings.deactivateTest.call(element) ) {\n            module.debug('Setting state to inactive');\n            $module\n              .removeClass(className.active)\n            ;\n            module.update.text(text.inactive);\n            settings.onDeactivate.call(element);\n          }\n        },\n\n        sync: function() {\n          module.verbose('Syncing other buttons to current state');\n          if( module.is.active() ) {\n            $allModules\n              .not($module)\n                .state('activate');\n          }\n          else {\n            $allModules\n              .not($module)\n                .state('deactivate')\n            ;\n          }\n        },\n\n        get: {\n          text: function() {\n            return (settings.selector.text)\n              ? $module.find(settings.selector.text).text()\n              : $module.html()\n            ;\n          },\n          textFor: function(state) {\n            return text[state] || false;\n          }\n        },\n\n        flash: {\n          text: function(text, duration, callback) {\n            var\n              previousText = module.get.text()\n            ;\n            module.debug('Flashing text message', text, duration);\n            text     = text     || settings.text.flash;\n            duration = duration || settings.flashDuration;\n            callback = callback || function() {};\n            module.update.text(text);\n            setTimeout(function(){\n              module.update.text(previousText);\n              callback.call(element);\n            }, duration);\n          }\n        },\n\n        reset: {\n          // on mouseout sets text to previous value\n          text: function() {\n            var\n              activeText   = text.active   || $module.data(metadata.storedText),\n              inactiveText = text.inactive || $module.data(metadata.storedText)\n            ;\n            if( module.is.textEnabled() ) {\n              if( module.is.active() && activeText) {\n                module.verbose('Resetting active text', activeText);\n                module.update.text(activeText);\n              }\n              else if(inactiveText) {\n                module.verbose('Resetting inactive text', activeText);\n                module.update.text(inactiveText);\n              }\n            }\n          }\n        },\n\n        update: {\n          text: function(text) {\n            var\n              currentText = module.get.text()\n            ;\n            if(text && text !== currentText) {\n              module.debug('Updating text', text);\n              if(settings.selector.text) {\n                $module\n                  .data(metadata.storedText, text)\n                  .find(settings.selector.text)\n                    .text(text)\n                ;\n              }\n              else {\n                $module\n                  .data(metadata.storedText, text)\n                  .html(text)\n                ;\n              }\n            }\n            else {\n              module.debug('Text is already set, ignoring update', text);\n            }\n          }\n        },\n\n        setting: function(name, value) {\n          module.debug('Changing setting', name, value);\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            if($.isPlainObject(settings[name])) {\n              $.extend(true, settings[name], value);\n            }\n            else {\n              settings[name] = value;\n            }\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                module.error(error.method, query);\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.state.settings = {\n\n  // module info\n  name           : 'State',\n\n  // debug output\n  debug          : false,\n\n  // verbose debug output\n  verbose        : false,\n\n  // namespace for events\n  namespace      : 'state',\n\n  // debug data includes performance\n  performance    : true,\n\n  // callback occurs on state change\n  onActivate     : function() {},\n  onDeactivate   : function() {},\n  onChange       : function() {},\n\n  // state test functions\n  activateTest   : function() { return true; },\n  deactivateTest : function() { return true; },\n\n  // whether to automatically map default states\n  automatic      : true,\n\n  // activate / deactivate changes all elements instantiated at same time\n  sync           : false,\n\n  // default flash text duration, used for temporarily changing text of an element\n  flashDuration  : 1000,\n\n  // selector filter\n  filter     : {\n    text   : '.loading, .disabled',\n    active : '.disabled'\n  },\n\n  context    : false,\n\n  // error\n  error: {\n    beforeSend : 'The before send function has cancelled state change',\n    method     : 'The method you called is not defined.'\n  },\n\n  // metadata\n  metadata: {\n    promise    : 'promise',\n    storedText : 'stored-text'\n  },\n\n  // change class on state\n  className: {\n    active   : 'active',\n    disabled : 'disabled',\n    error    : 'error',\n    loading  : 'loading',\n    success  : 'success',\n    warning  : 'warning'\n  },\n\n  selector: {\n    // selector for text node\n    text: false\n  },\n\n  defaults : {\n    input: {\n      disabled : true,\n      loading  : true,\n      active   : true\n    },\n    button: {\n      disabled : true,\n      loading  : true,\n      active   : true,\n    },\n    progress: {\n      active   : true,\n      success  : true,\n      warning  : true,\n      error    : true\n    }\n  },\n\n  states     : {\n    active   : true,\n    disabled : true,\n    error    : true,\n    loading  : true,\n    success  : true,\n    warning  : true\n  },\n\n  text     : {\n    disabled   : false,\n    flash      : false,\n    hover      : false,\n    active     : false,\n    inactive   : false,\n    activate   : false,\n    deactivate : false\n  }\n\n};\n\n\n\n})( jQuery, window, document );\n\n/*!\n * # Semantic UI 2.2.11 - Visibility\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n  ? window\n  : (typeof self != 'undefined' && self.Math == Math)\n    ? self\n    : Function('return this')()\n;\n\n$.fn.visibility = function(parameters) {\n  var\n    $allModules    = $(this),\n    moduleSelector = $allModules.selector || '',\n\n    time           = new Date().getTime(),\n    performance    = [],\n\n    query          = arguments[0],\n    methodInvoked  = (typeof query == 'string'),\n    queryArguments = [].slice.call(arguments, 1),\n    returnedValue,\n\n    moduleCount    = $allModules.length,\n    loadedCount    = 0\n  ;\n\n  $allModules\n    .each(function() {\n      var\n        settings        = ( $.isPlainObject(parameters) )\n          ? $.extend(true, {}, $.fn.visibility.settings, parameters)\n          : $.extend({}, $.fn.visibility.settings),\n\n        className       = settings.className,\n        namespace       = settings.namespace,\n        error           = settings.error,\n        metadata        = settings.metadata,\n\n        eventNamespace  = '.' + namespace,\n        moduleNamespace = 'module-' + namespace,\n\n        $window         = $(window),\n\n        $module         = $(this),\n        $context        = $(settings.context),\n\n        $placeholder,\n\n        selector        = $module.selector || '',\n        instance        = $module.data(moduleNamespace),\n\n        requestAnimationFrame = window.requestAnimationFrame\n          || window.mozRequestAnimationFrame\n          || window.webkitRequestAnimationFrame\n          || window.msRequestAnimationFrame\n          || function(callback) { setTimeout(callback, 0); },\n\n        element         = this,\n        disabled        = false,\n\n        contextObserver,\n        observer,\n        module\n      ;\n\n      module = {\n\n        initialize: function() {\n          module.debug('Initializing', settings);\n\n          module.setup.cache();\n\n          if( module.should.trackChanges() ) {\n\n            if(settings.type == 'image') {\n              module.setup.image();\n            }\n            if(settings.type == 'fixed') {\n              module.setup.fixed();\n            }\n\n            if(settings.observeChanges) {\n              module.observeChanges();\n            }\n            module.bind.events();\n          }\n\n          module.save.position();\n          if( !module.is.visible() ) {\n            module.error(error.visible, $module);\n          }\n\n          if(settings.initialCheck) {\n            module.checkVisibility();\n          }\n          module.instantiate();\n        },\n\n        instantiate: function() {\n          module.debug('Storing instance', module);\n          $module\n            .data(moduleNamespace, module)\n          ;\n          instance = module;\n        },\n\n        destroy: function() {\n          module.verbose('Destroying previous module');\n          if(observer) {\n            observer.disconnect();\n          }\n          if(contextObserver) {\n            contextObserver.disconnect();\n          }\n          $window\n            .off('load'   + eventNamespace, module.event.load)\n            .off('resize' + eventNamespace, module.event.resize)\n          ;\n          $context\n            .off('scroll'       + eventNamespace, module.event.scroll)\n            .off('scrollchange' + eventNamespace, module.event.scrollchange)\n          ;\n          if(settings.type == 'fixed') {\n            module.resetFixed();\n            module.remove.placeholder();\n          }\n          $module\n            .off(eventNamespace)\n            .removeData(moduleNamespace)\n          ;\n        },\n\n        observeChanges: function() {\n          if('MutationObserver' in window) {\n            contextObserver = new MutationObserver(module.event.contextChanged);\n            observer        = new MutationObserver(module.event.changed);\n            contextObserver.observe(document, {\n              childList : true,\n              subtree   : true\n            });\n            observer.observe(element, {\n              childList : true,\n              subtree   : true\n            });\n            module.debug('Setting up mutation observer', observer);\n          }\n        },\n\n        bind: {\n          events: function() {\n            module.verbose('Binding visibility events to scroll and resize');\n            if(settings.refreshOnLoad) {\n              $window\n                .on('load'   + eventNamespace, module.event.load)\n              ;\n            }\n            $window\n              .on('resize' + eventNamespace, module.event.resize)\n            ;\n            // pub/sub pattern\n            $context\n              .off('scroll'      + eventNamespace)\n              .on('scroll'       + eventNamespace, module.event.scroll)\n              .on('scrollchange' + eventNamespace, module.event.scrollchange)\n            ;\n          }\n        },\n\n        event: {\n          changed: function(mutations) {\n            module.verbose('DOM tree modified, updating visibility calculations');\n            module.timer = setTimeout(function() {\n              module.verbose('DOM tree modified, updating sticky menu');\n              module.refresh();\n            }, 100);\n          },\n          contextChanged: function(mutations) {\n            [].forEach.call(mutations, function(mutation) {\n              if(mutation.removedNodes) {\n                [].forEach.call(mutation.removedNodes, function(node) {\n                  if(node == element || $(node).find(element).length > 0) {\n                    module.debug('Element removed from DOM, tearing down events');\n                    module.destroy();\n                  }\n                });\n              }\n            });\n          },\n          resize: function() {\n            module.debug('Window resized');\n            if(settings.refreshOnResize) {\n              requestAnimationFrame(module.refresh);\n            }\n          },\n          load: function() {\n            module.debug('Page finished loading');\n            requestAnimationFrame(module.refresh);\n          },\n          // publishes scrollchange event on one scroll\n          scroll: function() {\n            if(settings.throttle) {\n              clearTimeout(module.timer);\n              module.timer = setTimeout(function() {\n                $context.triggerHandler('scrollchange' + eventNamespace, [ $context.scrollTop() ]);\n              }, settings.throttle);\n            }\n            else {\n              requestAnimationFrame(function() {\n                $context.triggerHandler('scrollchange' + eventNamespace, [ $context.scrollTop() ]);\n              });\n            }\n          },\n          // subscribes to scrollchange\n          scrollchange: function(event, scrollPosition) {\n            module.checkVisibility(scrollPosition);\n          },\n        },\n\n        precache: function(images, callback) {\n          if (!(images instanceof Array)) {\n            images = [images];\n          }\n          var\n            imagesLength  = images.length,\n            loadedCounter = 0,\n            cache         = [],\n            cacheImage    = document.createElement('img'),\n            handleLoad    = function() {\n              loadedCounter++;\n              if (loadedCounter >= images.length) {\n                if ($.isFunction(callback)) {\n                  callback();\n                }\n              }\n            }\n          ;\n          while (imagesLength--) {\n            cacheImage         = document.createElement('img');\n            cacheImage.onload  = handleLoad;\n            cacheImage.onerror = handleLoad;\n            cacheImage.src     = images[imagesLength];\n            cache.push(cacheImage);\n          }\n        },\n\n        enableCallbacks: function() {\n          module.debug('Allowing callbacks to occur');\n          disabled = false;\n        },\n\n        disableCallbacks: function() {\n          module.debug('Disabling all callbacks temporarily');\n          disabled = true;\n        },\n\n        should: {\n          trackChanges: function() {\n            if(methodInvoked) {\n              module.debug('One time query, no need to bind events');\n              return false;\n            }\n            module.debug('Callbacks being attached');\n            return true;\n          }\n        },\n\n        setup: {\n          cache: function() {\n            module.cache = {\n              occurred : {},\n              screen   : {},\n              element  : {},\n            };\n          },\n          image: function() {\n            var\n              src = $module.data(metadata.src)\n            ;\n            if(src) {\n              module.verbose('Lazy loading image', src);\n              settings.once           = true;\n              settings.observeChanges = false;\n\n              // show when top visible\n              settings.onOnScreen = function() {\n                module.debug('Image on screen', element);\n                module.precache(src, function() {\n                  module.set.image(src, function() {\n                    loadedCount++;\n                    if(loadedCount == moduleCount) {\n                      settings.onAllLoaded.call(this);\n                    }\n                    settings.onLoad.call(this);\n                  });\n                });\n              };\n            }\n          },\n          fixed: function() {\n            module.debug('Setting up fixed');\n            settings.once           = false;\n            settings.observeChanges = false;\n            settings.initialCheck   = true;\n            settings.refreshOnLoad  = true;\n            if(!parameters.transition) {\n              settings.transition = false;\n            }\n            module.create.placeholder();\n            module.debug('Added placeholder', $placeholder);\n            settings.onTopPassed = function() {\n              module.debug('Element passed, adding fixed position', $module);\n              module.show.placeholder();\n              module.set.fixed();\n              if(settings.transition) {\n                if($.fn.transition !== undefined) {\n                  $module.transition(settings.transition, settings.duration);\n                }\n              }\n            };\n            settings.onTopPassedReverse = function() {\n              module.debug('Element returned to position, removing fixed', $module);\n              module.hide.placeholder();\n              module.remove.fixed();\n            };\n          }\n        },\n\n        create: {\n          placeholder: function() {\n            module.verbose('Creating fixed position placeholder');\n            $placeholder = $module\n              .clone(false)\n              .css('display', 'none')\n              .addClass(className.placeholder)\n              .insertAfter($module)\n            ;\n          }\n        },\n\n        show: {\n          placeholder: function() {\n            module.verbose('Showing placeholder');\n            $placeholder\n              .css('display', 'block')\n              .css('visibility', 'hidden')\n            ;\n          }\n        },\n        hide: {\n          placeholder: function() {\n            module.verbose('Hiding placeholder');\n            $placeholder\n              .css('display', 'none')\n              .css('visibility', '')\n            ;\n          }\n        },\n\n        set: {\n          fixed: function() {\n            module.verbose('Setting element to fixed position');\n            $module\n              .addClass(className.fixed)\n              .css({\n                position : 'fixed',\n                top      : settings.offset + 'px',\n                left     : 'auto',\n                zIndex   : settings.zIndex\n              })\n            ;\n            settings.onFixed.call(element);\n          },\n          image: function(src, callback) {\n            $module\n              .attr('src', src)\n            ;\n            if(settings.transition) {\n              if( $.fn.transition !== undefined) {\n                if($module.hasClass(className.visible)) {\n                  module.debug('Transition already occurred on this image, skipping animation');\n                  return;\n                }\n                $module.transition(settings.transition, settings.duration, callback);\n              }\n              else {\n                $module.fadeIn(settings.duration, callback);\n              }\n            }\n            else {\n              $module.show();\n            }\n          }\n        },\n\n        is: {\n          onScreen: function() {\n            var\n              calculations   = module.get.elementCalculations()\n            ;\n            return calculations.onScreen;\n          },\n          offScreen: function() {\n            var\n              calculations   = module.get.elementCalculations()\n            ;\n            return calculations.offScreen;\n          },\n          visible: function() {\n            if(module.cache && module.cache.element) {\n              return !(module.cache.element.width === 0 && module.cache.element.offset.top === 0);\n            }\n            return false;\n          },\n          verticallyScrollableContext: function() {\n            var\n              overflowY = ($context.get(0) !== window)\n                ? $context.css('overflow-y')\n                : false\n            ;\n            return (overflowY == 'auto' || overflowY == 'scroll');\n          },\n          horizontallyScrollableContext: function() {\n            var\n              overflowX = ($context.get(0) !== window)\n                ? $context.css('overflow-x')\n                : false\n            ;\n            return (overflowX == 'auto' || overflowX == 'scroll');\n          }\n        },\n\n        refresh: function() {\n          module.debug('Refreshing constants (width/height)');\n          if(settings.type == 'fixed') {\n            module.resetFixed();\n          }\n          module.reset();\n          module.save.position();\n          if(settings.checkOnRefresh) {\n            module.checkVisibility();\n          }\n          settings.onRefresh.call(element);\n        },\n\n        resetFixed: function () {\n          module.remove.fixed();\n          module.remove.occurred();\n        },\n\n        reset: function() {\n          module.verbose('Resetting all cached values');\n          if( $.isPlainObject(module.cache) ) {\n            module.cache.screen = {};\n            module.cache.element = {};\n          }\n        },\n\n        checkVisibility: function(scroll) {\n          module.verbose('Checking visibility of element', module.cache.element);\n\n          if( !disabled && module.is.visible() ) {\n\n            // save scroll position\n            module.save.scroll(scroll);\n\n            // update calculations derived from scroll\n            module.save.calculations();\n\n            // percentage\n            module.passed();\n\n            // reverse (must be first)\n            module.passingReverse();\n            module.topVisibleReverse();\n            module.bottomVisibleReverse();\n            module.topPassedReverse();\n            module.bottomPassedReverse();\n\n            // one time\n            module.onScreen();\n            module.offScreen();\n            module.passing();\n            module.topVisible();\n            module.bottomVisible();\n            module.topPassed();\n            module.bottomPassed();\n\n            // on update callback\n            if(settings.onUpdate) {\n              settings.onUpdate.call(element, module.get.elementCalculations());\n            }\n          }\n        },\n\n        passed: function(amount, newCallback) {\n          var\n            calculations   = module.get.elementCalculations(),\n            amountInPixels\n          ;\n          // assign callback\n          if(amount && newCallback) {\n            settings.onPassed[amount] = newCallback;\n          }\n          else if(amount !== undefined) {\n            return (module.get.pixelsPassed(amount) > calculations.pixelsPassed);\n          }\n          else if(calculations.passing) {\n            $.each(settings.onPassed, function(amount, callback) {\n              if(calculations.bottomVisible || calculations.pixelsPassed > module.get.pixelsPassed(amount)) {\n                module.execute(callback, amount);\n              }\n              else if(!settings.once) {\n                module.remove.occurred(callback);\n              }\n            });\n          }\n        },\n\n        onScreen: function(newCallback) {\n          var\n            calculations = module.get.elementCalculations(),\n            callback     = newCallback || settings.onOnScreen,\n            callbackName = 'onScreen'\n          ;\n          if(newCallback) {\n            module.debug('Adding callback for onScreen', newCallback);\n            settings.onOnScreen = newCallback;\n          }\n          if(calculations.onScreen) {\n            module.execute(callback, callbackName);\n          }\n          else if(!settings.once) {\n            module.remove.occurred(callbackName);\n          }\n          if(newCallback !== undefined) {\n            return calculations.onOnScreen;\n          }\n        },\n\n        offScreen: function(newCallback) {\n          var\n            calculations = module.get.elementCalculations(),\n            callback     = newCallback || settings.onOffScreen,\n            callbackName = 'offScreen'\n          ;\n          if(newCallback) {\n            module.debug('Adding callback for offScreen', newCallback);\n            settings.onOffScreen = newCallback;\n          }\n          if(calculations.offScreen) {\n            module.execute(callback, callbackName);\n          }\n          else if(!settings.once) {\n            module.remove.occurred(callbackName);\n          }\n          if(newCallback !== undefined) {\n            return calculations.onOffScreen;\n          }\n        },\n\n        passing: function(newCallback) {\n          var\n            calculations = module.get.elementCalculations(),\n            callback     = newCallback || settings.onPassing,\n            callbackName = 'passing'\n          ;\n          if(newCallback) {\n            module.debug('Adding callback for passing', newCallback);\n            settings.onPassing = newCallback;\n          }\n          if(calculations.passing) {\n            module.execute(callback, callbackName);\n          }\n          else if(!settings.once) {\n            module.remove.occurred(callbackName);\n          }\n          if(newCallback !== undefined) {\n            return calculations.passing;\n          }\n        },\n\n\n        topVisible: function(newCallback) {\n          var\n            calculations = module.get.elementCalculations(),\n            callback     = newCallback || settings.onTopVisible,\n            callbackName = 'topVisible'\n          ;\n          if(newCallback) {\n            module.debug('Adding callback for top visible', newCallback);\n            settings.onTopVisible = newCallback;\n          }\n          if(calculations.topVisible) {\n            module.execute(callback, callbackName);\n          }\n          else if(!settings.once) {\n            module.remove.occurred(callbackName);\n          }\n          if(newCallback === undefined) {\n            return calculations.topVisible;\n          }\n        },\n\n        bottomVisible: function(newCallback) {\n          var\n            calculations = module.get.elementCalculations(),\n            callback     = newCallback || settings.onBottomVisible,\n            callbackName = 'bottomVisible'\n          ;\n          if(newCallback) {\n            module.debug('Adding callback for bottom visible', newCallback);\n            settings.onBottomVisible = newCallback;\n          }\n          if(calculations.bottomVisible) {\n            module.execute(callback, callbackName);\n          }\n          else if(!settings.once) {\n            module.remove.occurred(callbackName);\n          }\n          if(newCallback === undefined) {\n            return calculations.bottomVisible;\n          }\n        },\n\n        topPassed: function(newCallback) {\n          var\n            calculations = module.get.elementCalculations(),\n            callback     = newCallback || settings.onTopPassed,\n            callbackName = 'topPassed'\n          ;\n          if(newCallback) {\n            module.debug('Adding callback for top passed', newCallback);\n            settings.onTopPassed = newCallback;\n          }\n          if(calculations.topPassed) {\n            module.execute(callback, callbackName);\n          }\n          else if(!settings.once) {\n            module.remove.occurred(callbackName);\n          }\n          if(newCallback === undefined) {\n            return calculations.topPassed;\n          }\n        },\n\n        bottomPassed: function(newCallback) {\n          var\n            calculations = module.get.elementCalculations(),\n            callback     = newCallback || settings.onBottomPassed,\n            callbackName = 'bottomPassed'\n          ;\n          if(newCallback) {\n            module.debug('Adding callback for bottom passed', newCallback);\n            settings.onBottomPassed = newCallback;\n          }\n          if(calculations.bottomPassed) {\n            module.execute(callback, callbackName);\n          }\n          else if(!settings.once) {\n            module.remove.occurred(callbackName);\n          }\n          if(newCallback === undefined) {\n            return calculations.bottomPassed;\n          }\n        },\n\n        passingReverse: function(newCallback) {\n          var\n            calculations = module.get.elementCalculations(),\n            callback     = newCallback || settings.onPassingReverse,\n            callbackName = 'passingReverse'\n          ;\n          if(newCallback) {\n            module.debug('Adding callback for passing reverse', newCallback);\n            settings.onPassingReverse = newCallback;\n          }\n          if(!calculations.passing) {\n            if(module.get.occurred('passing')) {\n              module.execute(callback, callbackName);\n            }\n          }\n          else if(!settings.once) {\n            module.remove.occurred(callbackName);\n          }\n          if(newCallback !== undefined) {\n            return !calculations.passing;\n          }\n        },\n\n\n        topVisibleReverse: function(newCallback) {\n          var\n            calculations = module.get.elementCalculations(),\n            callback     = newCallback || settings.onTopVisibleReverse,\n            callbackName = 'topVisibleReverse'\n          ;\n          if(newCallback) {\n            module.debug('Adding callback for top visible reverse', newCallback);\n            settings.onTopVisibleReverse = newCallback;\n          }\n          if(!calculations.topVisible) {\n            if(module.get.occurred('topVisible')) {\n              module.execute(callback, callbackName);\n            }\n          }\n          else if(!settings.once) {\n            module.remove.occurred(callbackName);\n          }\n          if(newCallback === undefined) {\n            return !calculations.topVisible;\n          }\n        },\n\n        bottomVisibleReverse: function(newCallback) {\n          var\n            calculations = module.get.elementCalculations(),\n            callback     = newCallback || settings.onBottomVisibleReverse,\n            callbackName = 'bottomVisibleReverse'\n          ;\n          if(newCallback) {\n            module.debug('Adding callback for bottom visible reverse', newCallback);\n            settings.onBottomVisibleReverse = newCallback;\n          }\n          if(!calculations.bottomVisible) {\n            if(module.get.occurred('bottomVisible')) {\n              module.execute(callback, callbackName);\n            }\n          }\n          else if(!settings.once) {\n            module.remove.occurred(callbackName);\n          }\n          if(newCallback === undefined) {\n            return !calculations.bottomVisible;\n          }\n        },\n\n        topPassedReverse: function(newCallback) {\n          var\n            calculations = module.get.elementCalculations(),\n            callback     = newCallback || settings.onTopPassedReverse,\n            callbackName = 'topPassedReverse'\n          ;\n          if(newCallback) {\n            module.debug('Adding callback for top passed reverse', newCallback);\n            settings.onTopPassedReverse = newCallback;\n          }\n          if(!calculations.topPassed) {\n            if(module.get.occurred('topPassed')) {\n              module.execute(callback, callbackName);\n            }\n          }\n          else if(!settings.once) {\n            module.remove.occurred(callbackName);\n          }\n          if(newCallback === undefined) {\n            return !calculations.onTopPassed;\n          }\n        },\n\n        bottomPassedReverse: function(newCallback) {\n          var\n            calculations = module.get.elementCalculations(),\n            callback     = newCallback || settings.onBottomPassedReverse,\n            callbackName = 'bottomPassedReverse'\n          ;\n          if(newCallback) {\n            module.debug('Adding callback for bottom passed reverse', newCallback);\n            settings.onBottomPassedReverse = newCallback;\n          }\n          if(!calculations.bottomPassed) {\n            if(module.get.occurred('bottomPassed')) {\n              module.execute(callback, callbackName);\n            }\n          }\n          else if(!settings.once) {\n            module.remove.occurred(callbackName);\n          }\n          if(newCallback === undefined) {\n            return !calculations.bottomPassed;\n          }\n        },\n\n        execute: function(callback, callbackName) {\n          var\n            calculations = module.get.elementCalculations(),\n            screen       = module.get.screenCalculations()\n          ;\n          callback = callback || false;\n          if(callback) {\n            if(settings.continuous) {\n              module.debug('Callback being called continuously', callbackName, calculations);\n              callback.call(element, calculations, screen);\n            }\n            else if(!module.get.occurred(callbackName)) {\n              module.debug('Conditions met', callbackName, calculations);\n              callback.call(element, calculations, screen);\n            }\n          }\n          module.save.occurred(callbackName);\n        },\n\n        remove: {\n          fixed: function() {\n            module.debug('Removing fixed position');\n            $module\n              .removeClass(className.fixed)\n              .css({\n                position : '',\n                top      : '',\n                left     : '',\n                zIndex   : ''\n              })\n            ;\n            settings.onUnfixed.call(element);\n          },\n          placeholder: function() {\n            module.debug('Removing placeholder content');\n            if($placeholder) {\n              $placeholder.remove();\n            }\n          },\n          occurred: function(callback) {\n            if(callback) {\n              var\n                occurred = module.cache.occurred\n              ;\n              if(occurred[callback] !== undefined && occurred[callback] === true) {\n                module.debug('Callback can now be called again', callback);\n                module.cache.occurred[callback] = false;\n              }\n            }\n            else {\n              module.cache.occurred = {};\n            }\n          }\n        },\n\n        save: {\n          calculations: function() {\n            module.verbose('Saving all calculations necessary to determine positioning');\n            module.save.direction();\n            module.save.screenCalculations();\n            module.save.elementCalculations();\n          },\n          occurred: function(callback) {\n            if(callback) {\n              if(module.cache.occurred[callback] === undefined || (module.cache.occurred[callback] !== true)) {\n                module.verbose('Saving callback occurred', callback);\n                module.cache.occurred[callback] = true;\n              }\n            }\n          },\n          scroll: function(scrollPosition) {\n            scrollPosition      = scrollPosition + settings.offset || $context.scrollTop() + settings.offset;\n            module.cache.scroll = scrollPosition;\n          },\n          direction: function() {\n            var\n              scroll     = module.get.scroll(),\n              lastScroll = module.get.lastScroll(),\n              direction\n            ;\n            if(scroll > lastScroll && lastScroll) {\n              direction = 'down';\n            }\n            else if(scroll < lastScroll && lastScroll) {\n              direction = 'up';\n            }\n            else {\n              direction = 'static';\n            }\n            module.cache.direction = direction;\n            return module.cache.direction;\n          },\n          elementPosition: function() {\n            var\n              element = module.cache.element,\n              screen  = module.get.screenSize()\n            ;\n            module.verbose('Saving element position');\n            // (quicker than $.extend)\n            element.fits          = (element.height < screen.height);\n            element.offset        = $module.offset();\n            element.width         = $module.outerWidth();\n            element.height        = $module.outerHeight();\n            // compensate for scroll in context\n            if(module.is.verticallyScrollableContext()) {\n              element.offset.top += $context.scrollTop() - $context.offset().top;\n            }\n            if(module.is.horizontallyScrollableContext()) {\n              element.offset.left += $context.scrollLeft - $context.offset().left;\n            }\n            // store\n            module.cache.element = element;\n            return element;\n          },\n          elementCalculations: function() {\n            var\n              screen     = module.get.screenCalculations(),\n              element    = module.get.elementPosition()\n            ;\n            // offset\n            if(settings.includeMargin) {\n              element.margin        = {};\n              element.margin.top    = parseInt($module.css('margin-top'), 10);\n              element.margin.bottom = parseInt($module.css('margin-bottom'), 10);\n              element.top    = element.offset.top - element.margin.top;\n              element.bottom = element.offset.top + element.height + element.margin.bottom;\n            }\n            else {\n              element.top    = element.offset.top;\n              element.bottom = element.offset.top + element.height;\n            }\n\n            // visibility\n            element.topPassed        = (screen.top >= element.top);\n            element.bottomPassed     = (screen.top >= element.bottom);\n            element.topVisible       = (screen.bottom >= element.top) && !element.bottomPassed;\n            element.bottomVisible    = (screen.bottom >= element.bottom) && !element.topPassed;\n            element.pixelsPassed     = 0;\n            element.percentagePassed = 0;\n\n            // meta calculations\n            element.onScreen  = (element.topVisible && !element.bottomPassed);\n            element.passing   = (element.topPassed && !element.bottomPassed);\n            element.offScreen = (!element.onScreen);\n\n            // passing calculations\n            if(element.passing) {\n              element.pixelsPassed     = (screen.top - element.top);\n              element.percentagePassed = (screen.top - element.top) / element.height;\n            }\n            module.cache.element = element;\n            module.verbose('Updated element calculations', element);\n            return element;\n          },\n          screenCalculations: function() {\n            var\n              scroll = module.get.scroll()\n            ;\n            module.save.direction();\n            module.cache.screen.top    = scroll;\n            module.cache.screen.bottom = scroll + module.cache.screen.height;\n            return module.cache.screen;\n          },\n          screenSize: function() {\n            module.verbose('Saving window position');\n            module.cache.screen = {\n              height: $context.height()\n            };\n          },\n          position: function() {\n            module.save.screenSize();\n            module.save.elementPosition();\n          }\n        },\n\n        get: {\n          pixelsPassed: function(amount) {\n            var\n              element = module.get.elementCalculations()\n            ;\n            if(amount.search('%') > -1) {\n              return ( element.height * (parseInt(amount, 10) / 100) );\n            }\n            return parseInt(amount, 10);\n          },\n          occurred: function(callback) {\n            return (module.cache.occurred !== undefined)\n              ? module.cache.occurred[callback] || false\n              : false\n            ;\n          },\n          direction: function() {\n            if(module.cache.direction === undefined) {\n              module.save.direction();\n            }\n            return module.cache.direction;\n          },\n          elementPosition: function() {\n            if(module.cache.element === undefined) {\n              module.save.elementPosition();\n            }\n            return module.cache.element;\n          },\n          elementCalculations: function() {\n            if(module.cache.element === undefined) {\n              module.save.elementCalculations();\n            }\n            return module.cache.element;\n          },\n          screenCalculations: function() {\n            if(module.cache.screen === undefined) {\n              module.save.screenCalculations();\n            }\n            return module.cache.screen;\n          },\n          screenSize: function() {\n            if(module.cache.screen === undefined) {\n              module.save.screenSize();\n            }\n            return module.cache.screen;\n          },\n          scroll: function() {\n            if(module.cache.scroll === undefined) {\n              module.save.scroll();\n            }\n            return module.cache.scroll;\n          },\n          lastScroll: function() {\n            if(module.cache.screen === undefined) {\n              module.debug('First scroll event, no last scroll could be found');\n              return false;\n            }\n            return module.cache.screen.top;\n          }\n        },\n\n        setting: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, settings, name);\n          }\n          else if(value !== undefined) {\n            settings[name] = value;\n          }\n          else {\n            return settings[name];\n          }\n        },\n        internal: function(name, value) {\n          if( $.isPlainObject(name) ) {\n            $.extend(true, module, name);\n          }\n          else if(value !== undefined) {\n            module[name] = value;\n          }\n          else {\n            return module[name];\n          }\n        },\n        debug: function() {\n          if(!settings.silent && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.debug.apply(console, arguments);\n            }\n          }\n        },\n        verbose: function() {\n          if(!settings.silent && settings.verbose && settings.debug) {\n            if(settings.performance) {\n              module.performance.log(arguments);\n            }\n            else {\n              module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n              module.verbose.apply(console, arguments);\n            }\n          }\n        },\n        error: function() {\n          if(!settings.silent) {\n            module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n            module.error.apply(console, arguments);\n          }\n        },\n        performance: {\n          log: function(message) {\n            var\n              currentTime,\n              executionTime,\n              previousTime\n            ;\n            if(settings.performance) {\n              currentTime   = new Date().getTime();\n              previousTime  = time || currentTime;\n              executionTime = currentTime - previousTime;\n              time          = currentTime;\n              performance.push({\n                'Name'           : message[0],\n                'Arguments'      : [].slice.call(message, 1) || '',\n                'Element'        : element,\n                'Execution Time' : executionTime\n              });\n            }\n            clearTimeout(module.performance.timer);\n            module.performance.timer = setTimeout(module.performance.display, 500);\n          },\n          display: function() {\n            var\n              title = settings.name + ':',\n              totalTime = 0\n            ;\n            time = false;\n            clearTimeout(module.performance.timer);\n            $.each(performance, function(index, data) {\n              totalTime += data['Execution Time'];\n            });\n            title += ' ' + totalTime + 'ms';\n            if(moduleSelector) {\n              title += ' \\'' + moduleSelector + '\\'';\n            }\n            if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n              console.groupCollapsed(title);\n              if(console.table) {\n                console.table(performance);\n              }\n              else {\n                $.each(performance, function(index, data) {\n                  console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n                });\n              }\n              console.groupEnd();\n            }\n            performance = [];\n          }\n        },\n        invoke: function(query, passedArguments, context) {\n          var\n            object = instance,\n            maxDepth,\n            found,\n            response\n          ;\n          passedArguments = passedArguments || queryArguments;\n          context         = element         || context;\n          if(typeof query == 'string' && object !== undefined) {\n            query    = query.split(/[\\. ]/);\n            maxDepth = query.length - 1;\n            $.each(query, function(depth, value) {\n              var camelCaseValue = (depth != maxDepth)\n                ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n                : query\n              ;\n              if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n                object = object[camelCaseValue];\n              }\n              else if( object[camelCaseValue] !== undefined ) {\n                found = object[camelCaseValue];\n                return false;\n              }\n              else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n                object = object[value];\n              }\n              else if( object[value] !== undefined ) {\n                found = object[value];\n                return false;\n              }\n              else {\n                module.error(error.method, query);\n                return false;\n              }\n            });\n          }\n          if ( $.isFunction( found ) ) {\n            response = found.apply(context, passedArguments);\n          }\n          else if(found !== undefined) {\n            response = found;\n          }\n          if($.isArray(returnedValue)) {\n            returnedValue.push(response);\n          }\n          else if(returnedValue !== undefined) {\n            returnedValue = [returnedValue, response];\n          }\n          else if(response !== undefined) {\n            returnedValue = response;\n          }\n          return found;\n        }\n      };\n\n      if(methodInvoked) {\n        if(instance === undefined) {\n          module.initialize();\n        }\n        instance.save.scroll();\n        instance.save.calculations();\n        module.invoke(query);\n      }\n      else {\n        if(instance !== undefined) {\n          instance.invoke('destroy');\n        }\n        module.initialize();\n      }\n    })\n  ;\n\n  return (returnedValue !== undefined)\n    ? returnedValue\n    : this\n  ;\n};\n\n$.fn.visibility.settings = {\n\n  name                   : 'Visibility',\n  namespace              : 'visibility',\n\n  debug                  : false,\n  verbose                : false,\n  performance            : true,\n\n  // whether to use mutation observers to follow changes\n  observeChanges         : true,\n\n  // check position immediately on init\n  initialCheck           : true,\n\n  // whether to refresh calculations after all page images load\n  refreshOnLoad          : true,\n\n  // whether to refresh calculations after page resize event\n  refreshOnResize        : true,\n\n  // should call callbacks on refresh event (resize, etc)\n  checkOnRefresh         : true,\n\n  // callback should only occur one time\n  once                   : true,\n\n  // callback should fire continuously whe evaluates to true\n  continuous             : false,\n\n  // offset to use with scroll top\n  offset                 : 0,\n\n  // whether to include margin in elements position\n  includeMargin          : false,\n\n  // scroll context for visibility checks\n  context                : window,\n\n  // visibility check delay in ms (defaults to animationFrame)\n  throttle               : false,\n\n  // special visibility type (image, fixed)\n  type                   : false,\n\n  // z-index to use with visibility 'fixed'\n  zIndex                 : '10',\n\n  // image only animation settings\n  transition             : 'fade in',\n  duration               : 1000,\n\n  // array of callbacks for percentage\n  onPassed               : {},\n\n  // standard callbacks\n  onOnScreen             : false,\n  onOffScreen            : false,\n  onPassing              : false,\n  onTopVisible           : false,\n  onBottomVisible        : false,\n  onTopPassed            : false,\n  onBottomPassed         : false,\n\n  // reverse callbacks\n  onPassingReverse       : false,\n  onTopVisibleReverse    : false,\n  onBottomVisibleReverse : false,\n  onTopPassedReverse     : false,\n  onBottomPassedReverse  : false,\n\n  // special callbacks for image\n  onLoad                 : function() {},\n  onAllLoaded            : function() {},\n\n  // special callbacks for fixed position\n  onFixed                : function() {},\n  onUnfixed              : function() {},\n\n  // utility callbacks\n  onUpdate               : false, // disabled by default for performance\n  onRefresh              : function(){},\n\n  metadata : {\n    src: 'src'\n  },\n\n  className: {\n    fixed       : 'fixed',\n    placeholder : 'placeholder',\n    visible     : 'visible'\n  },\n\n  error : {\n    method  : 'The method you called is not defined.',\n    visible : 'Element is hidden, you must call refresh after element becomes visible'\n  }\n\n};\n\n})( jQuery, window, document );\n";
},,function(e,t,n){"use strict";var o=n(601),r=n(162),i=n(591),a=n(344),s=n(346),u=n(613),l=n(1);n.d(t,"f",function(){return o.e}),n.d(t,"c",function(){return o.b}),n.d(t,"g",function(){return o.f}),n.d(t,"e",function(){return o.d}),n.d(t,"d",function(){return o.c}),n.d(t,"F",function(){return o.g}),n.d(t,"a",function(){return o.a}),n.d(t,"v",function(){return r.b}),n.d(t,"b",function(){return i.a}),n.d(t,"i",function(){return a.b}),n.d(t,"j",function(){return a.c}),n.d(t,"k",function(){return a.d}),n.d(t,"l",function(){return a.e}),n.d(t,"m",function(){return a.f}),n.d(t,"n",function(){return a.g}),n.d(t,"o",function(){return a.h}),n.d(t,"p",function(){return a.i}),n.d(t,"q",function(){return a.j}),n.d(t,"r",function(){return a.k}),n.d(t,"z",function(){return s.i}),n.d(t,"t",function(){return s.d}),n.d(t,"u",function(){return s.e}),n.d(t,"h",function(){return s.b}),n.d(t,"w",function(){return s.f}),n.d(t,"x",function(){return s.g}),n.d(t,"y",function(){return s.h}),n.d(t,"s",function(){return s.c}),n.d(t,"A",function(){return s.j}),n.d(t,"B",function(){return s.k}),n.d(t,"C",function(){return s.l}),n.d(t,"D",function(){return u.a}),n.d(t,"E",function(){return l.Version})},function(e,t,n){"use strict";var o=n(1),r=n(344),i=n(162),a=n(346);n.d(t,"a",function(){return s});var s=function(){function CommonModule(){}return CommonModule.decorators=[{type:o.NgModule,args:[{declarations:[r.a,a.a],exports:[r.a,a.a],providers:[{provide:i.b,useClass:i.c}]}]}],CommonModule.ctorParameters=function(){return[]},CommonModule}()},function(e,t,n){"use strict";var o=n(1),r=n(598),i=n(45);n.d(t,"a",function(){return a});var a=function(){function NgClass(e,t,n,o){this._iterableDiffers=e,this._keyValueDiffers=t,this._ngEl=n,this._renderer=o,this._initialClasses=[]}return Object.defineProperty(NgClass.prototype,"klass",{set:function(e){this._applyInitialClasses(!0),this._initialClasses="string"==typeof e?e.split(/\s+/):[],this._applyInitialClasses(!1),this._applyClasses(this._rawClass,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(NgClass.prototype,"ngClass",{set:function(e){this._cleanupClasses(this._rawClass),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof e?e.split(/\s+/):e,this._rawClass&&(n.i(r.a)(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create(null):this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create(null))},enumerable:!0,configurable:!0}),NgClass.prototype.ngDoCheck=function(){if(this._iterableDiffer){var e=this._iterableDiffer.diff(this._rawClass);e&&this._applyIterableChanges(e)}else if(this._keyValueDiffer){var e=this._keyValueDiffer.diff(this._rawClass);e&&this._applyKeyValueChanges(e)}},NgClass.prototype._cleanupClasses=function(e){this._applyClasses(e,!0),this._applyInitialClasses(!1)},NgClass.prototype._applyKeyValueChanges=function(e){var t=this;e.forEachAddedItem(function(e){return t._toggleClass(e.key,e.currentValue)}),e.forEachChangedItem(function(e){return t._toggleClass(e.key,e.currentValue)}),e.forEachRemovedItem(function(e){e.previousValue&&t._toggleClass(e.key,!1)})},NgClass.prototype._applyIterableChanges=function(e){var t=this;e.forEachAddedItem(function(e){if("string"!=typeof e.item)throw new Error("NgClass can only toggle CSS classes expressed as strings, got "+n.i(i.e)(e.item));t._toggleClass(e.item,!0)}),e.forEachRemovedItem(function(e){return t._toggleClass(e.item,!1)})},NgClass.prototype._applyInitialClasses=function(e){var t=this;this._initialClasses.forEach(function(n){return t._toggleClass(n,!e)})},NgClass.prototype._applyClasses=function(e,t){var n=this;e&&(Array.isArray(e)||e instanceof Set?e.forEach(function(e){return n._toggleClass(e,!t)}):Object.keys(e).forEach(function(o){null!=e[o]&&n._toggleClass(o,!t)}))},NgClass.prototype._toggleClass=function(e,t){var n=this;e=e.trim(),e&&e.split(/\s+/g).forEach(function(e){n._renderer.setElementClass(n._ngEl.nativeElement,e,t)})},NgClass.decorators=[{type:o.Directive,args:[{selector:"[ngClass]"}]}],NgClass.ctorParameters=function(){return[{type:o.IterableDiffers},{type:o.KeyValueDiffers},{type:o.ElementRef},{type:o.Renderer}]},NgClass.propDecorators={klass:[{type:o.Input,args:["class"]}],ngClass:[{type:o.Input}]},NgClass}()},function(e,t,n){"use strict";var o=n(1),r=n(45);n.d(t,"a",function(){return a});var i=function(){function NgForRow(e,t,n){this.$implicit=e,this.index=t,this.count=n}return Object.defineProperty(NgForRow.prototype,"first",{get:function(){return 0===this.index},enumerable:!0,configurable:!0}),Object.defineProperty(NgForRow.prototype,"last",{get:function(){return this.index===this.count-1},enumerable:!0,configurable:!0}),Object.defineProperty(NgForRow.prototype,"even",{get:function(){return this.index%2===0},enumerable:!0,configurable:!0}),Object.defineProperty(NgForRow.prototype,"odd",{get:function(){return!this.even},enumerable:!0,configurable:!0}),NgForRow}(),a=function(){function NgFor(e,t,n,o){this._viewContainer=e,this._template=t,this._differs=n,this._cdr=o,this._differ=null}return Object.defineProperty(NgFor.prototype,"ngForTrackBy",{get:function(){return this._trackByFn},set:function(e){n.i(o.isDevMode)()&&null!=e&&"function"!=typeof e&&console&&console.warn&&console.warn("trackBy must be a function, but received "+JSON.stringify(e)+". See https://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html#!#change-propagation for more information."),this._trackByFn=e},enumerable:!0,configurable:!0}),Object.defineProperty(NgFor.prototype,"ngForTemplate",{set:function(e){e&&(this._template=e)},enumerable:!0,configurable:!0}),NgFor.prototype.ngOnChanges=function(e){if("ngForOf"in e){var t=e.ngForOf.currentValue;if(!this._differ&&t)try{this._differ=this._differs.find(t).create(this._cdr,this.ngForTrackBy)}catch(o){throw new Error("Cannot find a differ supporting object '"+t+"' of type '"+n.i(r.f)(t)+"'. NgFor only supports binding to Iterables such as Arrays.")}}},NgFor.prototype.ngDoCheck=function(){if(this._differ){var e=this._differ.diff(this.ngForOf);e&&this._applyChanges(e)}},NgFor.prototype._applyChanges=function(e){var t=this,n=[];e.forEachOperation(function(e,o,r){if(null==e.previousIndex){var a=t._viewContainer.createEmbeddedView(t._template,new i(null,null,null),r),u=new s(e,a);n.push(u)}else if(null==r)t._viewContainer.remove(o);else{var a=t._viewContainer.get(o);t._viewContainer.move(a,r);var u=new s(e,a);n.push(u)}});for(var o=0;o<n.length;o++)this._perViewChange(n[o].view,n[o].record);for(var o=0,r=this._viewContainer.length;o<r;o++){var a=this._viewContainer.get(o);a.context.index=o,a.context.count=r}e.forEachIdentityChange(function(e){var n=t._viewContainer.get(e.currentIndex);n.context.$implicit=e.item})},NgFor.prototype._perViewChange=function(e,t){e.context.$implicit=t.item},NgFor.decorators=[{type:o.Directive,args:[{selector:"[ngFor][ngForOf]"}]}],NgFor.ctorParameters=function(){return[{type:o.ViewContainerRef},{type:o.TemplateRef},{type:o.IterableDiffers},{type:o.ChangeDetectorRef}]},NgFor.propDecorators={ngForOf:[{type:o.Input}],ngForTrackBy:[{type:o.Input}],ngForTemplate:[{type:o.Input}]},NgFor}(),s=function(){function RecordViewTuple(e,t){this.record=e,this.view=t}return RecordViewTuple}()},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r});var r=function(){function NgIf(e,t){this._viewContainer=e,this._template=t,this._hasView=!1}return Object.defineProperty(NgIf.prototype,"ngIf",{set:function(e){e&&!this._hasView?(this._hasView=!0,this._viewContainer.createEmbeddedView(this._template)):!e&&this._hasView&&(this._hasView=!1,this._viewContainer.clear())},enumerable:!0,configurable:!0}),NgIf.decorators=[{type:o.Directive,args:[{selector:"[ngIf]"}]}],NgIf.ctorParameters=function(){return[{type:o.ViewContainerRef},{type:o.TemplateRef}]},NgIf.propDecorators={ngIf:[{type:o.Input}]},NgIf}()},function(e,t,n){"use strict";var o=n(1),r=n(162),i=n(345);n.d(t,"a",function(){return a}),n.d(t,"b",function(){return s});var a=function(){function NgPlural(e){this._localization=e,this._caseViews={}}return Object.defineProperty(NgPlural.prototype,"ngPlural",{set:function(e){this._switchValue=e,this._updateView()},enumerable:!0,configurable:!0}),NgPlural.prototype.addCase=function(e,t){this._caseViews[e]=t},NgPlural.prototype._updateView=function(){this._clearViews();var e=Object.keys(this._caseViews),t=n.i(r.a)(this._switchValue,e,this._localization);this._activateView(this._caseViews[t])},NgPlural.prototype._clearViews=function(){this._activeView&&this._activeView.destroy()},NgPlural.prototype._activateView=function(e){e&&(this._activeView=e,this._activeView.create())},NgPlural.decorators=[{type:o.Directive,args:[{selector:"[ngPlural]"}]}],NgPlural.ctorParameters=function(){return[{type:r.b}]},NgPlural.propDecorators={ngPlural:[{type:o.Input}]},NgPlural}(),s=function(){function NgPluralCase(e,t,n,o){this.value=e;var r=!isNaN(Number(e));o.addCase(r?"="+e:e,new i.a(n,t))}return NgPluralCase.decorators=[{type:o.Directive,args:[{selector:"[ngPluralCase]"}]}],NgPluralCase.ctorParameters=function(){return[{type:void 0,decorators:[{type:o.Attribute,args:["ngPluralCase"]}]},{type:o.TemplateRef},{type:o.ViewContainerRef},{type:a,decorators:[{type:o.Host}]}]},NgPluralCase}()},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r});var r=function(){function NgStyle(e,t,n){this._differs=e,this._ngEl=t,this._renderer=n}return Object.defineProperty(NgStyle.prototype,"ngStyle",{set:function(e){this._ngStyle=e,!this._differ&&e&&(this._differ=this._differs.find(e).create(null))},enumerable:!0,configurable:!0}),NgStyle.prototype.ngDoCheck=function(){if(this._differ){var e=this._differ.diff(this._ngStyle);e&&this._applyChanges(e)}},NgStyle.prototype._applyChanges=function(e){var t=this;e.forEachRemovedItem(function(e){return t._setStyle(e.key,null)}),e.forEachAddedItem(function(e){return t._setStyle(e.key,e.currentValue)}),e.forEachChangedItem(function(e){return t._setStyle(e.key,e.currentValue)})},NgStyle.prototype._setStyle=function(e,t){var n=e.split("."),o=n[0],r=n[1];t=t&&r?""+t+r:t,this._renderer.setElementStyle(this._ngEl.nativeElement,o,t)},NgStyle.decorators=[{type:o.Directive,args:[{selector:"[ngStyle]"}]}],NgStyle.ctorParameters=function(){return[{type:o.KeyValueDiffers},{type:o.ElementRef},{type:o.Renderer}]},NgStyle.propDecorators={ngStyle:[{type:o.Input}]},NgStyle}()},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r});var r=function(){function NgTemplateOutlet(e){this._viewContainerRef=e}return Object.defineProperty(NgTemplateOutlet.prototype,"ngOutletContext",{set:function(e){this._context=e},enumerable:!0,configurable:!0}),Object.defineProperty(NgTemplateOutlet.prototype,"ngTemplateOutlet",{set:function(e){this._templateRef=e},enumerable:!0,configurable:!0}),NgTemplateOutlet.prototype.ngOnChanges=function(e){this._viewRef&&this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._viewRef)),this._templateRef&&(this._viewRef=this._viewContainerRef.createEmbeddedView(this._templateRef,this._context))},NgTemplateOutlet.decorators=[{type:o.Directive,args:[{selector:"[ngTemplateOutlet]"}]}],NgTemplateOutlet.ctorParameters=function(){return[{type:o.ViewContainerRef}]},NgTemplateOutlet.propDecorators={ngOutletContext:[{type:o.Input}],ngTemplateOutlet:[{type:o.Input}]},NgTemplateOutlet}()},function(e,t,n){"use strict";function isListLikeIterable(e){return!!n.i(o.c)(e)&&(Array.isArray(e)||!(e instanceof Map)&&n.i(o.d)()in e)}var o=n(45);t.a=isListLikeIterable;(function(){function StringMapWrapper(){}return StringMapWrapper.merge=function(e,t){for(var n={},o=0,r=Object.keys(e);o<r.length;o++){var i=r[o];n[i]=e[i]}for(var a=0,s=Object.keys(t);a<s.length;a++){var i=s[a];n[i]=t[i]}return n},StringMapWrapper.equals=function(e,t){var n=Object.keys(e),o=Object.keys(t);if(n.length!=o.length)return!1;for(var r=0;r<n.length;r++){var i=n[r];if(e[i]!==t[i])return!1}return!0},StringMapWrapper})(),function(){function ListWrapper(){}return ListWrapper.findLast=function(e,t){for(var n=e.length-1;n>=0;n--)if(t(e[n]))return e[n];return null},ListWrapper.removeAll=function(e,t){for(var n=0;n<t.length;++n){var o=e.indexOf(t[n]);o>-1&&e.splice(o,1)}},ListWrapper.remove=function(e,t){var n=e.indexOf(t);return n>-1&&(e.splice(n,1),!0)},ListWrapper.equals=function(e,t){if(e.length!=t.length)return!1;for(var n=0;n<e.length;++n)if(e[n]!==t[n])return!1;return!0},ListWrapper.flatten=function(e){return e.reduce(function(e,t){var n=Array.isArray(t)?ListWrapper.flatten(t):t;return e.concat(n)},[])},ListWrapper}()},function(e,t,n){"use strict";n.d(t,"a",function(){return r});var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=function(e){function BaseError(t){e.call(this,t);var n=new Error(t);this._nativeError=n}return o(BaseError,e),Object.defineProperty(BaseError.prototype,"message",{get:function(){return this._nativeError.message},set:function(e){this._nativeError.message=e},enumerable:!0,configurable:!0}),Object.defineProperty(BaseError.prototype,"name",{get:function(){return this._nativeError.name},enumerable:!0,configurable:!0}),Object.defineProperty(BaseError.prototype,"stack",{get:function(){return this._nativeError.stack},set:function(e){this._nativeError.stack=e},enumerable:!0,configurable:!0}),BaseError.prototype.toString=function(){return this._nativeError.toString()},BaseError}(Error);(function(e){function WrappedError(t,n){e.call(this,t+" caused by: "+(n instanceof Error?n.message:n)),this.originalError=n}return o(WrappedError,e),Object.defineProperty(WrappedError.prototype,"stack",{get:function(){return(this.originalError instanceof Error?this.originalError:this._nativeError).stack},enumerable:!0,configurable:!0}),WrappedError})(r)},function(e,t,n){"use strict";var o=n(1),r=n(45),i=n(237),a=n(163),s=n(238);n.d(t,"a",function(){return l});var u=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},l=function(e){function HashLocationStrategy(t,o){e.call(this),this._platformLocation=t,this._baseHref="",n.i(r.a)(o)&&(this._baseHref=o)}return u(HashLocationStrategy,e),HashLocationStrategy.prototype.onPopState=function(e){this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e)},HashLocationStrategy.prototype.getBaseHref=function(){return this._baseHref},HashLocationStrategy.prototype.path=function(e){void 0===e&&(e=!1);var t=this._platformLocation.hash;return n.i(r.a)(t)||(t="#"),t.length>0?t.substring(1):t},HashLocationStrategy.prototype.prepareExternalUrl=function(e){var t=i.a.joinWithSlash(this._baseHref,e);return t.length>0?"#"+t:t},HashLocationStrategy.prototype.pushState=function(e,t,n,o){var r=this.prepareExternalUrl(n+i.a.normalizeQueryParams(o));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.pushState(e,t,r)},HashLocationStrategy.prototype.replaceState=function(e,t,n,o){var r=this.prepareExternalUrl(n+i.a.normalizeQueryParams(o));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.replaceState(e,t,r)},HashLocationStrategy.prototype.forward=function(){this._platformLocation.forward()},HashLocationStrategy.prototype.back=function(){this._platformLocation.back()},HashLocationStrategy.decorators=[{type:o.Injectable}],HashLocationStrategy.ctorParameters=function(){return[{type:s.a},{type:void 0,decorators:[{type:o.Optional},{type:o.Inject,args:[a.b]}]}]},HashLocationStrategy}(a.a)},function(e,t,n){"use strict";var o=n(238),r=n(163),i=n(600),a=n(602),s=n(237);n.d(t,"g",function(){return o.b}),n.d(t,"a",function(){return o.a}),n.d(t,"b",function(){return r.a}),n.d(t,"f",function(){return r.b}),n.d(t,"d",function(){return i.a}),n.d(t,"c",function(){return a.a}),n.d(t,"e",function(){return s.a})},function(e,t,n){"use strict";var o=n(1),r=n(45),i=n(237),a=n(163),s=n(238);n.d(t,"a",function(){return l});var u=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},l=function(e){function PathLocationStrategy(t,o){if(e.call(this),this._platformLocation=t,n.i(r.b)(o)&&(o=this._platformLocation.getBaseHrefFromDOM()),n.i(r.b)(o))throw new Error("No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.");this._baseHref=o}return u(PathLocationStrategy,e),PathLocationStrategy.prototype.onPopState=function(e){this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e)},PathLocationStrategy.prototype.getBaseHref=function(){return this._baseHref},PathLocationStrategy.prototype.prepareExternalUrl=function(e){return i.a.joinWithSlash(this._baseHref,e)},PathLocationStrategy.prototype.path=function(e){void 0===e&&(e=!1);var t=this._platformLocation.pathname+i.a.normalizeQueryParams(this._platformLocation.search),n=this._platformLocation.hash;return n&&e?""+t+n:t},PathLocationStrategy.prototype.pushState=function(e,t,n,o){var r=this.prepareExternalUrl(n+i.a.normalizeQueryParams(o));this._platformLocation.pushState(e,t,r)},PathLocationStrategy.prototype.replaceState=function(e,t,n,o){var r=this.prepareExternalUrl(n+i.a.normalizeQueryParams(o));this._platformLocation.replaceState(e,t,r)},PathLocationStrategy.prototype.forward=function(){this._platformLocation.forward()},PathLocationStrategy.prototype.back=function(){this._platformLocation.back()},PathLocationStrategy.decorators=[{type:o.Injectable}],PathLocationStrategy.ctorParameters=function(){return[{type:s.a},{type:void 0,decorators:[{type:o.Optional},{type:o.Inject,args:[a.b]}]}]},PathLocationStrategy}(a.a)},function(e,t,n){"use strict";var o=n(1),r=n(612),i=n(70);n.d(t,"a",function(){return c});var a=function(){function ObservableStrategy(){}return ObservableStrategy.prototype.createSubscription=function(e,t){return e.subscribe({next:t,error:function(e){throw e}})},ObservableStrategy.prototype.dispose=function(e){e.unsubscribe()},ObservableStrategy.prototype.onDestroy=function(e){e.unsubscribe()},ObservableStrategy}(),s=function(){function PromiseStrategy(){}return PromiseStrategy.prototype.createSubscription=function(e,t){return e.then(t,function(e){throw e})},PromiseStrategy.prototype.dispose=function(e){},PromiseStrategy.prototype.onDestroy=function(e){},PromiseStrategy}(),u=new s,l=new a,c=function(){function AsyncPipe(e){this._ref=e,this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null,this._strategy=null}return AsyncPipe.prototype.ngOnDestroy=function(){this._subscription&&this._dispose()},AsyncPipe.prototype.transform=function(e){return this._obj?e!==this._obj?(this._dispose(),this.transform(e)):this._latestValue===this._latestReturnedValue?this._latestReturnedValue:(this._latestReturnedValue=this._latestValue,o.WrappedValue.wrap(this._latestValue)):(e&&this._subscribe(e),this._latestReturnedValue=this._latestValue,this._latestValue)},AsyncPipe.prototype._subscribe=function(e){var t=this;this._obj=e,this._strategy=this._selectStrategy(e),this._subscription=this._strategy.createSubscription(e,function(n){return t._updateLatestValue(e,n)})},AsyncPipe.prototype._selectStrategy=function(e){if(n.i(r.a)(e))return u;if(n.i(r.b)(e))return l;throw new i.a(AsyncPipe,e)},AsyncPipe.prototype._dispose=function(){this._strategy.dispose(this._subscription),this._latestValue=null,this._latestReturnedValue=null,this._subscription=null,this._obj=null},AsyncPipe.prototype._updateLatestValue=function(e,t){e===this._obj&&(this._latestValue=t,this._ref.markForCheck())},AsyncPipe.decorators=[{type:o.Pipe,args:[{name:"async",pure:!1}]}],AsyncPipe.ctorParameters=function(){return[{type:o.ChangeDetectorRef}]},AsyncPipe}()},function(e,t,n){"use strict";function isBlank(e){return null==e||""===e}function isDate(e){return e instanceof Date&&!isNaN(e.valueOf())}function isoStringToDate(e){var t=new Date(0),n=0,o=0,r=e[8]?t.setUTCFullYear:t.setFullYear,i=e[8]?t.setUTCHours:t.setHours;e[9]&&(n=toInt(e[9]+e[10]),o=toInt(e[9]+e[11])),r.call(t,toInt(e[1]),toInt(e[2])-1,toInt(e[3]));var a=toInt(e[4]||"0")-n,s=toInt(e[5]||"0")-o,u=toInt(e[6]||"0"),l=Math.round(1e3*parseFloat("0."+(e[7]||0)));return i.call(t,a,s,u,l),t}function toInt(e){return parseInt(e,10)}var o=n(1),r=n(45),i=n(347),a=n(70);n.d(t,"a",function(){return u});var s=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,u=function(){function DatePipe(e){this._locale=e}return DatePipe.prototype.transform=function(e,t){void 0===t&&(t="mediumDate");var n;if(isBlank(e)||e!==e)return null;if("string"==typeof e&&(e=e.trim()),isDate(e))n=e;else if(r.g.isNumeric(e))n=new Date(parseFloat(e));else if("string"==typeof e&&/^(\d{4}-\d{1,2}-\d{1,2})$/.test(e)){var o=e.split("-").map(function(e){return parseInt(e,10)}),u=o[0],l=o[1],c=o[2];n=new Date(u,l-1,c)}else n=new Date(e);if(!isDate(n)){var d=void 0;if("string"!=typeof e||!(d=e.match(s)))throw new a.a(DatePipe,e);n=isoStringToDate(d)}return i.a.format(n,this._locale,DatePipe._ALIASES[t]||t)},DatePipe._ALIASES={medium:"yMMMdjms","short":"yMdjm",fullDate:"yMMMMEEEEd",longDate:"yMMMMd",mediumDate:"yMMMd",shortDate:"yMd",mediumTime:"jms",shortTime:"jm"},DatePipe.decorators=[{type:o.Pipe,args:[{name:"date",pure:!0}]}],DatePipe.ctorParameters=function(){return[{type:void 0,decorators:[{type:o.Inject,args:[o.LOCALE_ID]}]}]},DatePipe}()},function(e,t,n){"use strict";var o=n(1),r=n(162),i=n(70);n.d(t,"a",function(){return s});var a=/#/g,s=function(){function I18nPluralPipe(e){this._localization=e}return I18nPluralPipe.prototype.transform=function(e,t){if(null==e)return"";if("object"!=typeof t||null===t)throw new i.a(I18nPluralPipe,t);var o=n.i(r.a)(e,Object.keys(t),this._localization);return t[o].replace(a,e.toString())},I18nPluralPipe.decorators=[{type:o.Pipe,args:[{name:"i18nPlural",pure:!0}]}],I18nPluralPipe.ctorParameters=function(){return[{type:r.b}]},I18nPluralPipe}()},function(e,t,n){"use strict";var o=n(1),r=n(70);n.d(t,"a",function(){return i});var i=function(){function I18nSelectPipe(){}return I18nSelectPipe.prototype.transform=function(e,t){if(null==e)return"";if("object"!=typeof t||"string"!=typeof e)throw new r.a(I18nSelectPipe,t);return t.hasOwnProperty(e)?t[e]:t.hasOwnProperty("other")?t.other:""},I18nSelectPipe.decorators=[{type:o.Pipe,args:[{name:"i18nSelect",pure:!0}]}],I18nSelectPipe.ctorParameters=function(){return[]},I18nSelectPipe}()},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r});var r=function(){function JsonPipe(){}return JsonPipe.prototype.transform=function(e){return JSON.stringify(e,null,2)},JsonPipe.decorators=[{type:o.Pipe,args:[{name:"json",pure:!1}]}],JsonPipe.ctorParameters=function(){return[]},JsonPipe}()},function(e,t,n){"use strict";var o=n(1),r=n(45),i=n(70);n.d(t,"a",function(){return a});var a=function(){function LowerCasePipe(){}return LowerCasePipe.prototype.transform=function(e){if(n.i(r.b)(e))return e;if("string"!=typeof e)throw new i.a(LowerCasePipe,e);return e.toLowerCase()},LowerCasePipe.decorators=[{type:o.Pipe,args:[{name:"lowercase"}]}],LowerCasePipe.ctorParameters=function(){return[]},LowerCasePipe}()},function(e,t,n){"use strict";function formatNumber(e,t,n,o,u,l,c){if(void 0===l&&(l=null),void 0===c&&(c=!1),null==n)return null;if(n="string"==typeof n&&r.g.isNumeric(n)?+n:n,"number"!=typeof n)throw new a.a(e,n);var d,p,g;if(o!==i.b.Currency&&(d=1,p=0,g=3),u){var f=u.match(s);if(null===f)throw new Error(u+" is not a valid digit info for number pipes");null!=f[1]&&(d=r.g.parseIntAutoRadix(f[1])),null!=f[3]&&(p=r.g.parseIntAutoRadix(f[3])),null!=f[5]&&(g=r.g.parseIntAutoRadix(f[5]))}return i.c.format(n,t,o,{minimumIntegerDigits:d,minimumFractionDigits:p,maximumFractionDigits:g,currency:l,currencyAsSymbol:c})}var o=n(1),r=n(45),i=n(347),a=n(70);n.d(t,"a",function(){return u}),n.d(t,"b",function(){return l}),n.d(t,"c",function(){return c});var s=/^(\d+)?\.((\d+)(-(\d+))?)?$/,u=function(){function DecimalPipe(e){this._locale=e}return DecimalPipe.prototype.transform=function(e,t){return void 0===t&&(t=null),formatNumber(DecimalPipe,this._locale,e,i.b.Decimal,t)},DecimalPipe.decorators=[{type:o.Pipe,args:[{name:"number"}]}],DecimalPipe.ctorParameters=function(){return[{type:void 0,decorators:[{type:o.Inject,args:[o.LOCALE_ID]}]}]},DecimalPipe}(),l=function(){function PercentPipe(e){this._locale=e}return PercentPipe.prototype.transform=function(e,t){return void 0===t&&(t=null),formatNumber(PercentPipe,this._locale,e,i.b.Percent,t)},PercentPipe.decorators=[{type:o.Pipe,args:[{name:"percent"}]}],PercentPipe.ctorParameters=function(){return[{type:void 0,decorators:[{type:o.Inject,args:[o.LOCALE_ID]}]}]},PercentPipe}(),c=function(){function CurrencyPipe(e){this._locale=e}return CurrencyPipe.prototype.transform=function(e,t,n,o){return void 0===t&&(t="USD"),void 0===n&&(n=!1),void 0===o&&(o=null),formatNumber(CurrencyPipe,this._locale,e,i.b.Currency,o,t,n)},CurrencyPipe.decorators=[{type:o.Pipe,args:[{name:"currency"}]}],CurrencyPipe.ctorParameters=function(){return[{type:void 0,decorators:[{type:o.Inject,args:[o.LOCALE_ID]}]}]},CurrencyPipe}()},function(e,t,n){"use strict";var o=n(1),r=n(70);n.d(t,"a",function(){return i});var i=function(){function SlicePipe(){}return SlicePipe.prototype.transform=function(e,t,n){if(null==e)return e;if(!this.supports(e))throw new r.a(SlicePipe,e);return e.slice(t,n)},SlicePipe.prototype.supports=function(e){return"string"==typeof e||Array.isArray(e)},SlicePipe.decorators=[{type:o.Pipe,args:[{name:"slice",pure:!1}]}],SlicePipe.ctorParameters=function(){return[]},SlicePipe}()},function(e,t,n){"use strict";var o=n(1),r=n(45),i=n(70);n.d(t,"a",function(){return a});var a=function(){function UpperCasePipe(){}return UpperCasePipe.prototype.transform=function(e){if(n.i(r.b)(e))return e;if("string"!=typeof e)throw new i.a(UpperCasePipe,e);return e.toUpperCase()},UpperCasePipe.decorators=[{type:o.Pipe,args:[{name:"uppercase"}]}],UpperCasePipe.ctorParameters=function(){return[]},UpperCasePipe}()},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r}),n.d(t,"b",function(){return i});var r=o.__core_private__.isPromise,i=o.__core_private__.isObservable},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r});var r=new o.Version("2.4.10")},function(e,t,n){"use strict";var o=n(7);n.d(t,"a",function(){return i});var r=function(){function StylesCollectionEntry(e,t){this.time=e,this.value=t}return StylesCollectionEntry.prototype.matches=function(e,t){return e==this.time&&t==this.value},StylesCollectionEntry}(),i=function(){function StylesCollection(){this.styles={}}return StylesCollection.prototype.insertAtTime=function(e,t,i){var a=new r(t,i),s=this.styles[e];n.i(o.f)(s)||(s=this.styles[e]=[]);for(var u=0,l=s.length-1;l>=0;l--)if(s[l].time<=t){u=l+1;break}s.splice(u,0,a)},StylesCollection.prototype.getByIndex=function(e,t){var r=this.styles[e];return n.i(o.f)(r)?t>=r.length?null:r[t]:null},StylesCollection.prototype.indexOfAtOrBeforeTime=function(e,t){var r=this.styles[e];if(n.i(o.f)(r))for(var i=r.length-1;i>=0;i--)if(r[i].time<=t)return i;return null},StylesCollection}()},function(e,t,n){"use strict";n(1),n(165),n(72),n(123),n(124),n(73),n(125),n(106),n(168),n(126),n(86),n(171),n(127),n(249),n(128),n(17),n(172),n(174),n(129),n(88),n(130),n(239),n(240),n(241),n(71),n(242),n(243)},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o=function(){function GeneratedFile(e,t,n){this.srcFileUrl=e,this.genFileUrl=t,this.source=n}return GeneratedFile}()},function(e,t,n){"use strict";n.d(t,"a",function(){return r});var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=function(e){function BaseError(t){e.call(this,t);var n=new Error(t);this._nativeError=n}return o(BaseError,e),Object.defineProperty(BaseError.prototype,"message",{get:function(){return this._nativeError.message},set:function(e){this._nativeError.message=e},enumerable:!0,configurable:!0}),Object.defineProperty(BaseError.prototype,"name",{get:function(){return this._nativeError.name},enumerable:!0,configurable:!0}),Object.defineProperty(BaseError.prototype,"stack",{get:function(){return this._nativeError.stack},set:function(e){this._nativeError.stack=e},enumerable:!0,configurable:!0}),BaseError.prototype.toString=function(){return this._nativeError.toString()},BaseError}(Error);(function(e){function WrappedError(t,n){e.call(this,t+" caused by: "+(n instanceof Error?n.message:n)),this.originalError=n}return o(WrappedError,e),Object.defineProperty(WrappedError.prototype,"stack",{get:function(){return(this.originalError instanceof Error?this.originalError:this._nativeError).stack},enumerable:!0,configurable:!0}),WrappedError})(r)},function(e,t,n){"use strict";var o=n(1),r=n(239),i=n(240),a=n(241),s=n(71),u=n(242),l=n(243),c=n(72),d=n(123),p=n(124),g=n(126),f=n(86),h=n(47),m=n(127),y=n(128),b=n(172),v=n(88),_=n(168),E=n(357);(function(){function Extractor(e,t,n,o){this.host=e,this.staticSymbolResolver=t,this.messageBundle=n,this.metadataResolver=o}return Extractor.prototype.extract=function(e){var t=this,o=n.i(r.b)(this.staticSymbolResolver,e,this.host),i=n.i(r.c)(o,this.host,this.metadataResolver),a=i.files,s=i.ngModules;return Promise.all(s.map(function(e){return t.metadataResolver.loadNgModuleDirectiveAndPipeMetadata(e.type.reference,!1)})).then(function(){var e=[];if(a.forEach(function(n){var o=[];n.directives.forEach(function(e){var n=t.metadataResolver.getDirectiveMetadata(e);n&&n.isComponent&&o.push(n)}),o.forEach(function(o){var r=o.template.template,i=h.b.fromArray(o.template.interpolation);e.push.apply(e,t.messageBundle.updateFromTemplate(r,n.srcUrl,i))})}),e.length)throw new Error(e.map(function(e){return e.toString()}).join("\n"));return t.messageBundle})},Extractor.create=function(e){var t=new _.a(new f.a),r=n.i(v.c)(),h=new s.b,T=new l.a(e,h),S=new u.a(e,h,T),A=new a.a(S);i.a.install(A);var M=new c.a({genDebugInfo:!1,defaultEncapsulation:o.ViewEncapsulation.Emulated,logBindingUpdate:!1,useJit:!1}),C=new d.a({get:function(t){return e.loadResource(t)}},r,t,M),k=new b.a,R=new g.a(new m.a(A),new p.a(A),new y.a(A),T,k,C,A),N=new E.a(t,[],{}),O=new Extractor(e,S,N,R);return{extractor:O,staticReflector:A}},Extractor})()},function(e,t,n){"use strict";function createI18nMessageFactory(e){var t=new c(l,e);return function(e,n,o){return t.toI18nMessage(e,n,o)}}function _extractPlaceholderName(e){return e.split(d)[1]}var o=n(125),r=n(106),i=n(74),a=n(246),s=n(167),u=n(620);t.a=createI18nMessageFactory;var l=new r.a(new o.c),c=function(){function _I18nVisitor(e,t){this._expressionParser=e,this._interpolationConfig=t}return _I18nVisitor.prototype.toI18nMessage=function(e,t,n){this._isIcu=1==e.length&&e[0]instanceof i.b,this._icuDepth=0,this._placeholderRegistry=new u.a,this._placeholderToContent={},this._placeholderToMessage={};var o=i.g(this,e,{});return new s.a(o,this._placeholderToContent,this._placeholderToMessage,t,n)},_I18nVisitor.prototype.visitElement=function(e,t){var o=i.g(this,e.children),r={};e.attrs.forEach(function(e){r[e.name]=e.value});var u=n.i(a.a)(e.name).isVoid,l=this._placeholderRegistry.getStartTagPlaceholderName(e.name,r,u);this._placeholderToContent[l]=e.sourceSpan.toString();var c="";return u||(c=this._placeholderRegistry.getCloseTagPlaceholderName(e.name),this._placeholderToContent[c]="</"+e.name+">"),new s.b(e.name,r,l,c,o,u,e.sourceSpan)},_I18nVisitor.prototype.visitAttribute=function(e,t){return this._visitTextWithInterpolation(e.value,e.sourceSpan)},_I18nVisitor.prototype.visitText=function(e,t){return this._visitTextWithInterpolation(e.value,e.sourceSpan)},_I18nVisitor.prototype.visitComment=function(e,t){
return null},_I18nVisitor.prototype.visitExpansion=function(e,t){var n=this;this._icuDepth++;var o={},r=new s.c(e.switchValue,e.type,o,e.sourceSpan);if(e.cases.forEach(function(e){o[e.value]=new s.d(e.expression.map(function(e){return e.visit(n,{})}),e.expSourceSpan)}),this._icuDepth--,this._isIcu||this._icuDepth>0){var i=this._placeholderRegistry.getUniquePlaceholder("VAR_"+e.type);return r.expressionPlaceholder=i,this._placeholderToContent[i]=e.switchValue,r}var a=this._placeholderRegistry.getPlaceholderName("ICU",e.sourceSpan.toString()),u=new _I18nVisitor(this._expressionParser,this._interpolationConfig);return this._placeholderToMessage[a]=u.toI18nMessage([e],"",""),new s.e(r,a,e.sourceSpan)},_I18nVisitor.prototype.visitExpansionCase=function(e,t){throw new Error("Unreachable code")},_I18nVisitor.prototype._visitTextWithInterpolation=function(e,t){var n=this._expressionParser.splitInterpolation(e,t.start.toString(),this._interpolationConfig);if(!n)return new s.f(e,t);for(var o=[],r=new s.d(o,t),i=this._interpolationConfig,a=i.start,u=i.end,l=0;l<n.strings.length-1;l++){var c=n.expressions[l],d=_extractPlaceholderName(c)||"INTERPOLATION",p=this._placeholderRegistry.getPlaceholderName(d,c);n.strings[l].length&&o.push(new s.f(n.strings[l],t)),o.push(new s.g(c,p,t)),this._placeholderToContent[p]=a+c+u}var g=n.strings.length-1;return n.strings[g].length&&o.push(new s.f(n.strings[g],t)),r},_I18nVisitor}(),d=/\/\/[\s\S]*i18n[\s\S]*\([\s\S]*ph[\s\S]*=[\s\S]*"([\s\S]*?)"[\s\S]*\)/g},function(e,t,n){"use strict";n.d(t,"a",function(){return r});var o={A:"LINK",B:"BOLD_TEXT",BR:"LINE_BREAK",EM:"EMPHASISED_TEXT",H1:"HEADING_LEVEL1",H2:"HEADING_LEVEL2",H3:"HEADING_LEVEL3",H4:"HEADING_LEVEL4",H5:"HEADING_LEVEL5",H6:"HEADING_LEVEL6",HR:"HORIZONTAL_RULE",I:"ITALIC_TEXT",LI:"LIST_ITEM",LINK:"MEDIA_LINK",OL:"ORDERED_LIST",P:"PARAGRAPH",Q:"QUOTATION",S:"STRIKETHROUGH_TEXT",SMALL:"SMALL_TEXT",SUB:"SUBSTRIPT",SUP:"SUPERSCRIPT",TBODY:"TABLE_BODY",TD:"TABLE_CELL",TFOOT:"TABLE_FOOTER",TH:"TABLE_HEADER_CELL",THEAD:"TABLE_HEADER",TR:"TABLE_ROW",TT:"MONOSPACED_TEXT",U:"UNDERLINED_TEXT",UL:"UNORDERED_LIST"},r=function(){function PlaceholderRegistry(){this._placeHolderNameCounts={},this._signatureToName={}}return PlaceholderRegistry.prototype.getStartTagPlaceholderName=function(e,t,n){var r=this._hashTag(e,t,n);if(this._signatureToName[r])return this._signatureToName[r];var i=e.toUpperCase(),a=o[i]||"TAG_"+i,s=this._generateUniqueName(n?a:"START_"+a);return this._signatureToName[r]=s,s},PlaceholderRegistry.prototype.getCloseTagPlaceholderName=function(e){var t=this._hashClosingTag(e);if(this._signatureToName[t])return this._signatureToName[t];var n=e.toUpperCase(),r=o[n]||"TAG_"+n,i=this._generateUniqueName("CLOSE_"+r);return this._signatureToName[t]=i,i},PlaceholderRegistry.prototype.getPlaceholderName=function(e,t){var n=e.toUpperCase(),o="PH: "+n+"="+t;if(this._signatureToName[o])return this._signatureToName[o];var r=this._generateUniqueName(n);return this._signatureToName[o]=r,r},PlaceholderRegistry.prototype.getUniquePlaceholder=function(e){return this._generateUniqueName(e.toUpperCase())},PlaceholderRegistry.prototype._hashTag=function(e,t,n){var o="<"+e,r=Object.keys(t).sort().map(function(e){return" "+e+"="+t[e]}).join(""),i=n?"/>":"></"+e+">";return o+r+i},PlaceholderRegistry.prototype._hashClosingTag=function(e){return this._hashTag("/"+e,{},!1)},PlaceholderRegistry.prototype._generateUniqueName=function(e){var t=this._placeHolderNameCounts.hasOwnProperty(e);if(!t)return this._placeHolderNameCounts[e]=1,e;var n=this._placeHolderNameCounts[e];return this._placeHolderNameCounts[e]=n+1,e+"_"+n},PlaceholderRegistry}()},function(e,t,n){"use strict";var o=n(86),r=n(169);n.d(t,"a",function(){return i});var i=function(){function TranslationBundle(e,t,n){void 0===e&&(e={}),this._i18nNodesByMsgId=e,this.digest=t,this.mapperFactory=n,this._i18nToHtml=new a(e,t,n)}return TranslationBundle.load=function(e,t,n){var o=n.load(e,t),r=function(e){return n.digest(e)},i=function(e){return n.createNameMapper(e)};return new TranslationBundle(o,r,i)},TranslationBundle.prototype.get=function(e){var t=this._i18nToHtml.convert(e);if(t.errors.length)throw new Error(t.errors.join("\n"));return t.nodes},TranslationBundle.prototype.has=function(e){return this.digest(e)in this._i18nNodesByMsgId},TranslationBundle}(),a=function(){function I18nToHtmlVisitor(e,t,n){void 0===e&&(e={}),this._i18nNodesByMsgId=e,this._digest=t,this._mapperFactory=n,this._contextStack=[],this._errors=[]}return I18nToHtmlVisitor.prototype.convert=function(e){this._contextStack.length=0,this._errors.length=0;var t=this._convertToText(e),n=e.nodes[0].sourceSpan.start.file.url,r=(new o.a).parse(t,n,!0);return{nodes:r.rootNodes,errors:this._errors.concat(r.errors)}},I18nToHtmlVisitor.prototype.visitText=function(e,t){return e.value},I18nToHtmlVisitor.prototype.visitContainer=function(e,t){var n=this;return e.children.map(function(e){return e.visit(n)}).join("")},I18nToHtmlVisitor.prototype.visitIcu=function(e,t){var n=this,o=Object.keys(e.cases).map(function(t){return t+" {"+e.cases[t].visit(n)+"}"}),r=this._srcMsg.placeholders.hasOwnProperty(e.expression)?this._srcMsg.placeholders[e.expression]:e.expression;return"{"+r+", "+e.type+", "+o.join(" ")+"}"},I18nToHtmlVisitor.prototype.visitPlaceholder=function(e,t){var n=this._mapper(e.name);return this._srcMsg.placeholders.hasOwnProperty(n)?this._srcMsg.placeholders[n]:this._srcMsg.placeholderToMessage.hasOwnProperty(n)?this._convertToText(this._srcMsg.placeholderToMessage[n]):(this._addError(e,"Unknown placeholder"),"")},I18nToHtmlVisitor.prototype.visitTagPlaceholder=function(e,t){throw"unreachable code"},I18nToHtmlVisitor.prototype.visitIcuPlaceholder=function(e,t){throw"unreachable code"},I18nToHtmlVisitor.prototype._convertToText=function(e){var t=this,n=this._digest(e),o=this._mapperFactory?this._mapperFactory(e):null;if(this._i18nNodesByMsgId.hasOwnProperty(n)){this._contextStack.push({msg:this._srcMsg,mapper:this._mapper}),this._srcMsg=e,this._mapper=function(e){return o?o.toInternalName(e):e};var r=this._i18nNodesByMsgId[n],i=r.map(function(e){return e.visit(t)}).join(""),a=this._contextStack.pop();return this._srcMsg=a.msg,this._mapper=a.mapper,i}return this._addError(e.nodes[0],"Missing translation for message "+n),""},I18nToHtmlVisitor.prototype._addError=function(e,t){this._errors.push(new r.a(e.sourceSpan,t))},I18nToHtmlVisitor}()},function(e,t,n){"use strict";function _initReflector(){b.a.reflectionCapabilities=new b.M}function _mergeOptions(e){return{useDebug:_lastDefined(e.map(function(e){return e.useDebug})),useJit:_lastDefined(e.map(function(e){return e.useJit})),defaultEncapsulation:_lastDefined(e.map(function(e){return e.defaultEncapsulation})),providers:_mergeArrays(e.map(function(e){return e.providers}))}}function _lastDefined(e){for(var t=e.length-1;t>=0;t--)if(void 0!==e[t])return e[t]}function _mergeArrays(e){var t=[];return e.forEach(function(e){return e&&t.push.apply(t,e)}),t}var o=n(1),r=n(165),i=n(72),a=n(123),s=n(124),u=n(73),l=n(125),c=n(106),d=n(356),p=n(20),g=n(126),f=n(86),h=n(171),m=n(127),y=n(128),b=n(17),v=n(250),_=n(172),E=n(75),T=n(174),S=n(251),A=n(129),M=n(88),C=n(130),k=n(361);n.d(t,"a",function(){return x});var R=this&&this.__decorate||function(e,t,n,o){var r,i=arguments.length,a=i<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},N=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},O={get:function(e){throw new Error("No ResourceLoader implementation has been provided. Can't read the url \""+e+'"')}},D=new o.OpaqueToken("HtmlParser"),w=[{provide:b.N,useValue:b.a},{provide:b.F,useExisting:b.N},{provide:v.a,useValue:O},S.a,b.C,l.c,c.a,{provide:D,useClass:f.a},{provide:d.a,useFactory:function(e,t,n){return new d.a(e,t,n)},deps:[D,[new o.Optional,new o.Inject(o.TRANSLATIONS)],[new o.Optional,new o.Inject(o.TRANSLATIONS_FORMAT)]]},{provide:f.a,useExisting:d.a},A.a,a.a,g.a,M.d,T.a,C.d,h.a,u.a,{provide:i.a,useValue:new i.a},k.a,{provide:o.Compiler,useExisting:k.a},_.a,{provide:E.a,useExisting:_.a},M.a,s.a,y.a,m.a,r.a],I=function(){function JitCompilerFactory(e){this._defaultOptions=[{useDebug:n.i(o.isDevMode)(),useJit:!0,defaultEncapsulation:o.ViewEncapsulation.Emulated}].concat(e)}return JitCompilerFactory.prototype.createCompiler=function(e){void 0===e&&(e=[]);var t=_mergeOptions(this._defaultOptions.concat(e)),n=o.ReflectiveInjector.resolveAndCreate([w,{provide:i.a,useFactory:function(){return new i.a({genDebugInfo:t.useDebug,useJit:t.useJit,defaultEncapsulation:t.defaultEncapsulation,logBindingUpdate:t.useDebug})},deps:[]},t.providers]);return n.get(o.Compiler)},JitCompilerFactory.ctorParameters=function(){return[{type:Array,decorators:[{type:o.Inject,args:[o.COMPILER_OPTIONS]}]}]},JitCompilerFactory=R([n.i(p.a)(),N("design:paramtypes",[Array])],JitCompilerFactory)}(),x=n.i(o.createPlatformFactory)(o.platformCore,"coreDynamic",[{provide:o.COMPILER_OPTIONS,useValue:{},multi:!0},{provide:o.CompilerFactory,useClass:I},{provide:o.PLATFORM_INITIALIZER,useValue:_initReflector,multi:!0}])},function(e,t,n){"use strict";function hasLifecycleHook(e,t){return o.a.hasLifecycleHook(t,getHookName(e))}function getHookName(e){switch(e){case o.H.OnInit:return"ngOnInit";case o.H.OnDestroy:return"ngOnDestroy";case o.H.DoCheck:return"ngDoCheck";case o.H.OnChanges:return"ngOnChanges";case o.H.AfterContentInit:return"ngAfterContentInit";case o.H.AfterContentChecked:return"ngAfterContentChecked";case o.H.AfterViewInit:return"ngAfterViewInit";case o.H.AfterViewChecked:return"ngAfterViewChecked"}}var o=n(17);t.a=hasLifecycleHook},function(e,t,n){"use strict";function expandNodes(e){var t=new l;return new s(r.g(t,e),t.isExpanded,t.errors)}function _expandPluralForm(e,t){var n=e.cases.map(function(e){a.indexOf(e.value)!=-1||e.value.match(/^=\d+$/)||t.push(new u(e.valueSourceSpan,'Plural cases should be "=<number>" or one of '+a.join(", ")));var n=expandNodes(e.expression);return t.push.apply(t,n.errors),new r.e("template",[new r.f("ngPluralCase",""+e.value,e.valueSourceSpan)],n.nodes,e.sourceSpan,e.sourceSpan,e.sourceSpan)}),o=new r.f("[ngPlural]",e.switchValue,e.switchValueSourceSpan);return new r.e("ng-container",[o],n,e.sourceSpan,e.sourceSpan,e.sourceSpan)}function _expandDefaultForm(e,t){var n=e.cases.map(function(e){var n=expandNodes(e.expression);return t.push.apply(t,n.errors),"other"===e.value?new r.e("template",[new r.f("ngSwitchDefault","",e.valueSourceSpan)],n.nodes,e.sourceSpan,e.sourceSpan,e.sourceSpan):new r.e("template",[new r.f("ngSwitchCase",""+e.value,e.valueSourceSpan)],n.nodes,e.sourceSpan,e.sourceSpan,e.sourceSpan)}),o=new r.f("[ngSwitch]",e.switchValue,e.switchValueSourceSpan);return new r.e("ng-container",[o],n,e.sourceSpan,e.sourceSpan,e.sourceSpan)}var o=n(40),r=n(74);t.a=expandNodes;var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=["zero","one","two","few","many","other"],s=function(){function ExpansionResult(e,t,n){this.nodes=e,this.expanded=t,this.errors=n}return ExpansionResult}(),u=function(e){function ExpansionError(t,n){e.call(this,t,n)}return i(ExpansionError,e),ExpansionError}(o.a),l=function(){function _Expander(){this.isExpanded=!1,this.errors=[]}return _Expander.prototype.visitElement=function(e,t){return new r.e(e.name,e.attrs,r.g(this,e.children),e.sourceSpan,e.startSourceSpan,e.endSourceSpan)},_Expander.prototype.visitAttribute=function(e,t){return e},_Expander.prototype.visitText=function(e,t){return e},_Expander.prototype.visitComment=function(e,t){return e},_Expander.prototype.visitExpansion=function(e,t){return this.isExpanded=!0,"plural"==e.type?_expandPluralForm(e,this.errors):_expandDefaultForm(e,this.errors)},_Expander.prototype.visitExpansionCase=function(e,t){throw new Error("Should not be reached")},_Expander}()},function(e,t,n){"use strict";function tokenize(e,t,n,o,a){return void 0===o&&(o=!1),void 0===a&&(a=i.a),new f(new r.b(e,t),n,o,a).tokenize()}function _unexpectedCharacterErrorMsg(e){var t=e===o.a?"EOF":String.fromCharCode(e);return'Unexpected character "'+t+'"'}function _unknownEntityErrorMsg(e){return'Unknown entity "'+e+'" - use the "&#<decimal>;" or  "&#x<hex>;" syntax'}function isNotWhitespace(e){return!o.E(e)||e===o.a}function isNameEnd(e){return o.E(e)||e===o.y||e===o.t||e===o.n||e===o.o||e===o.z}function isPrefixEnd(e){return(e<o.H||o.I<e)&&(e<o.J||o.K<e)&&(e<o._3||e>o._4)}function isDigitEntityEnd(e){return e==o.m||e==o.a||!o._5(e)}function isNamedEntityEnd(e){return e==o.m||e==o.a||!o.N(e)}function isExpansionFormStart(e,t,n){var r=!!n&&e.indexOf(n.start,t)==t;return e.charCodeAt(t)==o.g&&!r}function isExpansionCaseStart(e){return e===o.z||o.N(e)}function compareCharCodeCaseInsensitive(e,t){return toUpperCaseCharCode(e)==toUpperCaseCharCode(t)}function toUpperCaseCharCode(e){return e>=o.H&&e<=o.I?e-o.H+o.J:e}function mergeTextTokens(e){for(var t,n=[],o=0;o<e.length;o++){var r=e[o];t&&t.type==u.TEXT&&r.type==u.TEXT?(t.parts[0]+=r.parts[0],t.sourceSpan.end=r.sourceSpan.end):(t=r,n.push(t))}return n}var o=n(166),r=n(40),i=n(47),a=n(87);n.d(t,"b",function(){return u}),n.d(t,"c",function(){return l}),t.a=tokenize;var s=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},u={};u.TAG_OPEN_START=0,u.TAG_OPEN_END=1,u.TAG_OPEN_END_VOID=2,u.TAG_CLOSE=3,u.TEXT=4,u.ESCAPABLE_RAW_TEXT=5,u.RAW_TEXT=6,u.COMMENT_START=7,u.COMMENT_END=8,u.CDATA_START=9,u.CDATA_END=10,u.ATTR_NAME=11,u.ATTR_VALUE=12,u.DOC_TYPE=13,u.EXPANSION_FORM_START=14,u.EXPANSION_CASE_VALUE=15,u.EXPANSION_CASE_EXP_START=16,u.EXPANSION_CASE_EXP_END=17,u.EXPANSION_FORM_END=18,u.EOF=19,u[u.TAG_OPEN_START]="TAG_OPEN_START",u[u.TAG_OPEN_END]="TAG_OPEN_END",u[u.TAG_OPEN_END_VOID]="TAG_OPEN_END_VOID",u[u.TAG_CLOSE]="TAG_CLOSE",u[u.TEXT]="TEXT",u[u.ESCAPABLE_RAW_TEXT]="ESCAPABLE_RAW_TEXT",u[u.RAW_TEXT]="RAW_TEXT",u[u.COMMENT_START]="COMMENT_START",u[u.COMMENT_END]="COMMENT_END",u[u.CDATA_START]="CDATA_START",u[u.CDATA_END]="CDATA_END",u[u.ATTR_NAME]="ATTR_NAME",u[u.ATTR_VALUE]="ATTR_VALUE",u[u.DOC_TYPE]="DOC_TYPE",u[u.EXPANSION_FORM_START]="EXPANSION_FORM_START",u[u.EXPANSION_CASE_VALUE]="EXPANSION_CASE_VALUE",u[u.EXPANSION_CASE_EXP_START]="EXPANSION_CASE_EXP_START",u[u.EXPANSION_CASE_EXP_END]="EXPANSION_CASE_EXP_END",u[u.EXPANSION_FORM_END]="EXPANSION_FORM_END",u[u.EOF]="EOF";var l=function(){function Token(e,t,n){this.type=e,this.parts=t,this.sourceSpan=n}return Token}(),c=function(e){function TokenError(t,n,o){e.call(this,o,t),this.tokenType=n}return s(TokenError,e),TokenError}(r.a),d=function(){function TokenizeResult(e,t){this.tokens=e,this.errors=t}return TokenizeResult}(),p=/\r\n?/g,g=function(){function _ControlFlowError(e){this.error=e}return _ControlFlowError}(),f=function(){function _Tokenizer(e,t,n,o){void 0===o&&(o=i.a),this._file=e,this._getTagDefinition=t,this._tokenizeIcu=n,this._interpolationConfig=o,this._peek=-1,this._nextPeek=-1,this._index=-1,this._line=0,this._column=-1,this._expansionCaseStack=[],this._inInterpolation=!1,this.tokens=[],this.errors=[],this._input=e.content,this._length=e.content.length,this._advance()}return _Tokenizer.prototype._processCarriageReturns=function(e){return e.replace(p,"\n")},_Tokenizer.prototype.tokenize=function(){for(;this._peek!==o.a;){var e=this._getLocation();try{this._attemptCharCode(o.x)?this._attemptCharCode(o.A)?this._attemptCharCode(o.i)?this._consumeCdata(e):this._attemptCharCode(o.r)?this._consumeComment(e):this._consumeDocType(e):this._attemptCharCode(o.t)?this._consumeTagClose(e):this._consumeTagOpen(e):this._tokenizeIcu&&this._tokenizeExpansionForm()||this._consumeText()}catch(t){if(!(t instanceof g))throw t;this.errors.push(t.error)}}return this._beginToken(u.EOF),this._endToken([]),new d(mergeTextTokens(this.tokens),this.errors)},_Tokenizer.prototype._tokenizeExpansionForm=function(){if(isExpansionFormStart(this._input,this._index,this._interpolationConfig))return this._consumeExpansionFormStart(),!0;if(isExpansionCaseStart(this._peek)&&this._isInExpansionForm())return this._consumeExpansionCaseStart(),!0;if(this._peek===o.h){if(this._isInExpansionCase())return this._consumeExpansionCaseEnd(),!0;if(this._isInExpansionForm())return this._consumeExpansionFormEnd(),!0}return!1},_Tokenizer.prototype._getLocation=function(){return new r.c(this._file,this._index,this._line,this._column)},_Tokenizer.prototype._getSpan=function(e,t){return void 0===e&&(e=this._getLocation()),void 0===t&&(t=this._getLocation()),new r.d(e,t)},_Tokenizer.prototype._beginToken=function(e,t){void 0===t&&(t=this._getLocation()),this._currentTokenStart=t,this._currentTokenType=e},_Tokenizer.prototype._endToken=function(e,t){void 0===t&&(t=this._getLocation());var n=new l(this._currentTokenType,e,new r.d(this._currentTokenStart,t));return this.tokens.push(n),this._currentTokenStart=null,this._currentTokenType=null,n},_Tokenizer.prototype._createError=function(e,t){this._isInExpansionForm()&&(e+=' (Do you have an unescaped "{" in your template? Use "{{ \'{\' }}") to escape it.)');var n=new c(e,this._currentTokenType,t);return this._currentTokenStart=null,this._currentTokenType=null,new g(n)},_Tokenizer.prototype._advance=function(){if(this._index>=this._length)throw this._createError(_unexpectedCharacterErrorMsg(o.a),this._getSpan());this._peek===o.S?(this._line++,this._column=0):this._peek!==o.S&&this._peek!==o.W&&this._column++,this._index++,this._peek=this._index>=this._length?o.a:this._input.charCodeAt(this._index),this._nextPeek=this._index+1>=this._length?o.a:this._input.charCodeAt(this._index+1)},_Tokenizer.prototype._attemptCharCode=function(e){return this._peek===e&&(this._advance(),!0)},_Tokenizer.prototype._attemptCharCodeCaseInsensitive=function(e){return!!compareCharCodeCaseInsensitive(this._peek,e)&&(this._advance(),!0)},_Tokenizer.prototype._requireCharCode=function(e){var t=this._getLocation();if(!this._attemptCharCode(e))throw this._createError(_unexpectedCharacterErrorMsg(this._peek),this._getSpan(t,t))},_Tokenizer.prototype._attemptStr=function(e){var t=e.length;if(this._index+t>this._length)return!1;for(var n=this._savePosition(),o=0;o<t;o++)if(!this._attemptCharCode(e.charCodeAt(o)))return this._restorePosition(n),!1;return!0},_Tokenizer.prototype._attemptStrCaseInsensitive=function(e){for(var t=0;t<e.length;t++)if(!this._attemptCharCodeCaseInsensitive(e.charCodeAt(t)))return!1;return!0},_Tokenizer.prototype._requireStr=function(e){var t=this._getLocation();if(!this._attemptStr(e))throw this._createError(_unexpectedCharacterErrorMsg(this._peek),this._getSpan(t))},_Tokenizer.prototype._attemptCharCodeUntilFn=function(e){for(;!e(this._peek);)this._advance()},_Tokenizer.prototype._requireCharCodeUntilFn=function(e,t){var n=this._getLocation();if(this._attemptCharCodeUntilFn(e),this._index-n.offset<t)throw this._createError(_unexpectedCharacterErrorMsg(this._peek),this._getSpan(n,n))},_Tokenizer.prototype._attemptUntilChar=function(e){for(;this._peek!==e;)this._advance()},_Tokenizer.prototype._readChar=function(e){if(e&&this._peek===o.B)return this._decodeEntity();var t=this._index;return this._advance(),this._input[t]},_Tokenizer.prototype._decodeEntity=function(){var e=this._getLocation();if(this._advance(),!this._attemptCharCode(o.p)){var t=this._savePosition();if(this._attemptCharCodeUntilFn(isNamedEntityEnd),this._peek!=o.m)return this._restorePosition(t),"&";this._advance();var n=this._input.substring(e.offset+1,this._index-1),r=a.b[n];if(!r)throw this._createError(_unknownEntityErrorMsg(n),this._getSpan(e));return r}var i=this._attemptCharCode(o._1)||this._attemptCharCode(o._2),s=this._getLocation().offset;if(this._attemptCharCodeUntilFn(isDigitEntityEnd),this._peek!=o.m)throw this._createError(_unexpectedCharacterErrorMsg(this._peek),this._getSpan());this._advance();var u=this._input.substring(s,this._index-1);try{var l=parseInt(u,i?16:10);return String.fromCharCode(l)}catch(c){var d=this._input.substring(e.offset+1,this._index-1);throw this._createError(_unknownEntityErrorMsg(d),this._getSpan(e))}},_Tokenizer.prototype._consumeRawText=function(e,t,n){var o,r=this._getLocation();this._beginToken(e?u.ESCAPABLE_RAW_TEXT:u.RAW_TEXT,r);for(var i=[];;){if(o=this._getLocation(),this._attemptCharCode(t)&&n())break;for(this._index>o.offset&&i.push(this._input.substring(o.offset,this._index));this._peek!==t;)i.push(this._readChar(e))}return this._endToken([this._processCarriageReturns(i.join(""))],o)},_Tokenizer.prototype._consumeComment=function(e){var t=this;this._beginToken(u.COMMENT_START,e),this._requireCharCode(o.r),this._endToken([]);var n=this._consumeRawText(!1,o.r,function(){return t._attemptStr("->")});this._beginToken(u.COMMENT_END,n.sourceSpan.end),this._endToken([])},_Tokenizer.prototype._consumeCdata=function(e){var t=this;this._beginToken(u.CDATA_START,e),this._requireStr("CDATA["),this._endToken([]);var n=this._consumeRawText(!1,o.j,function(){return t._attemptStr("]>")});this._beginToken(u.CDATA_END,n.sourceSpan.end),this._endToken([])},_Tokenizer.prototype._consumeDocType=function(e){this._beginToken(u.DOC_TYPE,e),this._attemptUntilChar(o.y),this._advance(),this._endToken([this._input.substring(e.offset+2,this._index-1)])},_Tokenizer.prototype._consumePrefixAndName=function(){for(var e=this._index,t=null;this._peek!==o.l&&!isPrefixEnd(this._peek);)this._advance();var n;this._peek===o.l?(this._advance(),t=this._input.substring(e,this._index-1),n=this._index):n=e,this._requireCharCodeUntilFn(isNameEnd,this._index===n?1:0);var r=this._input.substring(n,this._index);return[t,r]},_Tokenizer.prototype._consumeTagOpen=function(e){var t,n,r=this._savePosition();try{if(!o.N(this._peek))throw this._createError(_unexpectedCharacterErrorMsg(this._peek),this._getSpan());var i=this._index;for(this._consumeTagOpenStart(e),t=this._input.substring(i,this._index),n=t.toLowerCase(),this._attemptCharCodeUntilFn(isNotWhitespace);this._peek!==o.t&&this._peek!==o.y;)this._consumeAttributeName(),this._attemptCharCodeUntilFn(isNotWhitespace),this._attemptCharCode(o.z)&&(this._attemptCharCodeUntilFn(isNotWhitespace),this._consumeAttributeValue()),this._attemptCharCodeUntilFn(isNotWhitespace);this._consumeTagOpenEnd()}catch(s){if(s instanceof g)return this._restorePosition(r),this._beginToken(u.TEXT,e),void this._endToken(["<"]);throw s}var l=this._getTagDefinition(t).contentType;l===a.a.RAW_TEXT?this._consumeRawTextWithTagClose(n,!1):l===a.a.ESCAPABLE_RAW_TEXT&&this._consumeRawTextWithTagClose(n,!0)},_Tokenizer.prototype._consumeRawTextWithTagClose=function(e,t){var n=this,r=this._consumeRawText(t,o.x,function(){return!!n._attemptCharCode(o.t)&&(n._attemptCharCodeUntilFn(isNotWhitespace),!!n._attemptStrCaseInsensitive(e)&&(n._attemptCharCodeUntilFn(isNotWhitespace),n._attemptCharCode(o.y)))});this._beginToken(u.TAG_CLOSE,r.sourceSpan.end),this._endToken([null,e])},_Tokenizer.prototype._consumeTagOpenStart=function(e){this._beginToken(u.TAG_OPEN_START,e);var t=this._consumePrefixAndName();this._endToken(t)},_Tokenizer.prototype._consumeAttributeName=function(){this._beginToken(u.ATTR_NAME);var e=this._consumePrefixAndName();this._endToken(e)},_Tokenizer.prototype._consumeAttributeValue=function(){this._beginToken(u.ATTR_VALUE);var e;if(this._peek===o.n||this._peek===o.o){var t=this._peek;this._advance();for(var n=[];this._peek!==t;)n.push(this._readChar(!0));e=n.join(""),this._advance()}else{var r=this._index;this._requireCharCodeUntilFn(isNameEnd,1),e=this._input.substring(r,this._index)}this._endToken([this._processCarriageReturns(e)])},_Tokenizer.prototype._consumeTagOpenEnd=function(){var e=this._attemptCharCode(o.t)?u.TAG_OPEN_END_VOID:u.TAG_OPEN_END;this._beginToken(e),this._requireCharCode(o.y),this._endToken([])},_Tokenizer.prototype._consumeTagClose=function(e){this._beginToken(u.TAG_CLOSE,e),this._attemptCharCodeUntilFn(isNotWhitespace);var t=this._consumePrefixAndName();this._attemptCharCodeUntilFn(isNotWhitespace),this._requireCharCode(o.y),this._endToken(t)},_Tokenizer.prototype._consumeExpansionFormStart=function(){this._beginToken(u.EXPANSION_FORM_START,this._getLocation()),this._requireCharCode(o.g),this._endToken([]),this._expansionCaseStack.push(u.EXPANSION_FORM_START),this._beginToken(u.RAW_TEXT,this._getLocation());var e=this._readUntil(o.k);this._endToken([e],this._getLocation()),this._requireCharCode(o.k),this._attemptCharCodeUntilFn(isNotWhitespace),this._beginToken(u.RAW_TEXT,this._getLocation());var t=this._readUntil(o.k);this._endToken([t],this._getLocation()),this._requireCharCode(o.k),this._attemptCharCodeUntilFn(isNotWhitespace)},_Tokenizer.prototype._consumeExpansionCaseStart=function(){this._beginToken(u.EXPANSION_CASE_VALUE,this._getLocation());var e=this._readUntil(o.g).trim();this._endToken([e],this._getLocation()),this._attemptCharCodeUntilFn(isNotWhitespace),this._beginToken(u.EXPANSION_CASE_EXP_START,this._getLocation()),this._requireCharCode(o.g),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(isNotWhitespace),this._expansionCaseStack.push(u.EXPANSION_CASE_EXP_START)},_Tokenizer.prototype._consumeExpansionCaseEnd=function(){this._beginToken(u.EXPANSION_CASE_EXP_END,this._getLocation()),this._requireCharCode(o.h),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(isNotWhitespace),this._expansionCaseStack.pop()},_Tokenizer.prototype._consumeExpansionFormEnd=function(){this._beginToken(u.EXPANSION_FORM_END,this._getLocation()),this._requireCharCode(o.h),this._endToken([]),this._expansionCaseStack.pop()},_Tokenizer.prototype._consumeText=function(){var e=this._getLocation();this._beginToken(u.TEXT,e);var t=[];do this._interpolationConfig&&this._attemptStr(this._interpolationConfig.start)?(t.push(this._interpolationConfig.start),this._inInterpolation=!0):this._interpolationConfig&&this._inInterpolation&&this._attemptStr(this._interpolationConfig.end)?(t.push(this._interpolationConfig.end),this._inInterpolation=!1):t.push(this._readChar(!0));while(!this._isTextEnd());this._endToken([this._processCarriageReturns(t.join(""))])},_Tokenizer.prototype._isTextEnd=function(){if(this._peek===o.x||this._peek===o.a)return!0;if(this._tokenizeIcu&&!this._inInterpolation){if(isExpansionFormStart(this._input,this._index,this._interpolationConfig))return!0;if(this._peek===o.h&&this._isInExpansionCase())return!0}return!1},_Tokenizer.prototype._savePosition=function(){return[this._peek,this._index,this._column,this._line,this.tokens.length]},_Tokenizer.prototype._readUntil=function(e){var t=this._index;return this._attemptUntilChar(e),this._input.substring(t,this._index)},_Tokenizer.prototype._restorePosition=function(e){this._peek=e[0],this._index=e[1],this._column=e[2],this._line=e[3];var t=e[4];t<this.tokens.length&&(this.tokens=this.tokens.slice(0,t))},_Tokenizer.prototype._isInExpansionCase=function(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===u.EXPANSION_CASE_EXP_START},_Tokenizer.prototype._isInExpansionForm=function(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===u.EXPANSION_FORM_START},_Tokenizer}()},function(e,t,n){"use strict";function getXmlTagDefinition(e){return i}var o=n(87);t.a=getXmlTagDefinition;var r=function(){function XmlTagDefinition(){this.closedByParent=!1,this.contentType=o.a.PARSABLE_DATA,this.isVoid=!1,this.ignoreFirstLf=!1,this.canSelfClose=!0}return XmlTagDefinition.prototype.requireExtraParent=function(e){return!1},XmlTagDefinition.prototype.isClosedByChild=function(e){return!1},XmlTagDefinition}(),i=new r},function(e,t,n){"use strict";var o=n(7),r=n(247),i=n(10);n.d(t,"a",function(){return s});var a=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},s=function(e){function AbstractJsEmitterVisitor(){e.call(this,!1)}return a(AbstractJsEmitterVisitor,e),AbstractJsEmitterVisitor.prototype.visitDeclareClassStmt=function(e,t){var r=this;return t.pushClass(e),this._visitClassConstructor(e,t),n.i(o.f)(e.parent)&&(t.print(e.name+".prototype = Object.create("),e.parent.visitExpression(this,t),t.println(".prototype);")),e.getters.forEach(function(n){return r._visitClassGetter(e,n,t)}),e.methods.forEach(function(n){return r._visitClassMethod(e,n,t)}),t.popClass(),null},AbstractJsEmitterVisitor.prototype._visitClassConstructor=function(e,t){t.print("function "+e.name+"("),n.i(o.f)(e.constructorMethod)&&this._visitParams(e.constructorMethod.params,t),t.println(") {"),t.incIndent(),n.i(o.f)(e.constructorMethod)&&e.constructorMethod.body.length>0&&(t.println("var self = this;"),this.visitAllStatements(e.constructorMethod.body,t)),t.decIndent(),t.println("}")},AbstractJsEmitterVisitor.prototype._visitClassGetter=function(e,t,n){n.println("Object.defineProperty("+e.name+".prototype, '"+t.name+"', { get: function() {"),n.incIndent(),t.body.length>0&&(n.println("var self = this;"),this.visitAllStatements(t.body,n)),n.decIndent(),n.println("}});")},AbstractJsEmitterVisitor.prototype._visitClassMethod=function(e,t,n){n.print(e.name+".prototype."+t.name+" = function("),this._visitParams(t.params,n),n.println(") {"),n.incIndent(),t.body.length>0&&(n.println("var self = this;"),this.visitAllStatements(t.body,n)),n.decIndent(),n.println("};")},AbstractJsEmitterVisitor.prototype.visitReadVarExpr=function(t,n){if(t.builtin===i.L.This)n.print("self");else{if(t.builtin===i.L.Super)throw new Error("'super' needs to be handled at a parent ast node, not at the variable level!");e.prototype.visitReadVarExpr.call(this,t,n)}return null},AbstractJsEmitterVisitor.prototype.visitDeclareVarStmt=function(e,t){return t.print("var "+e.name+" = "),e.value.visitExpression(this,t),t.println(";"),null},AbstractJsEmitterVisitor.prototype.visitCastExpr=function(e,t){return e.value.visitExpression(this,t),null},AbstractJsEmitterVisitor.prototype.visitInvokeFunctionExpr=function(t,n){var o=t.fn;return o instanceof i.q&&o.builtin===i.L.Super?(n.currentClass.parent.visitExpression(this,n),n.print(".call(this"),t.args.length>0&&(n.print(", "),this.visitAllExpressions(t.args,n,",")),n.print(")")):e.prototype.visitInvokeFunctionExpr.call(this,t,n),null},AbstractJsEmitterVisitor.prototype.visitFunctionExpr=function(e,t){return t.print("function("),this._visitParams(e.params,t),t.println(") {"),t.incIndent(),this.visitAllStatements(e.statements,t),t.decIndent(),t.print("}"),null},AbstractJsEmitterVisitor.prototype.visitDeclareFunctionStmt=function(e,t){return t.print("function "+e.name+"("),this._visitParams(e.params,t),t.println(") {"),t.incIndent(),this.visitAllStatements(e.statements,t),t.decIndent(),t.println("}"),null},AbstractJsEmitterVisitor.prototype.visitTryCatchStmt=function(e,t){t.println("try {"),t.incIndent(),this.visitAllStatements(e.bodyStmts,t),t.decIndent(),t.println("} catch ("+r.b.name+") {"),t.incIndent();var n=[r.c.set(r.b.prop("stack")).toDeclStmt(null,[i.b.Final])].concat(e.catchStmts);return this.visitAllStatements(n,t),t.decIndent(),t.println("}"),null},AbstractJsEmitterVisitor.prototype._visitParams=function(e,t){this.visitAllObjects(function(e){return t.print(e.name)},e,t,",")},AbstractJsEmitterVisitor.prototype.getBuiltinMethodName=function(e){var t;switch(e){case i.x.ConcatArray:t="concat";break;case i.x.SubscribeObservable:t="subscribe";break;case i.x.Bind:t="bind";break;default:throw new Error("Unknown builtin method: "+e)}return t},AbstractJsEmitterVisitor;
}(r.d)},function(e,t,n){"use strict";function interpretStatements(e,t){var i=e.concat([new r.t(r.g(t))]),s=new a(null,null,null,new Map),l=new u,c=l.visitAllStatements(i,s);return n.i(o.f)(c)?c.value:null}function _executeFunctionStatements(e,t,r,i,a){for(var s=i.createChildWihtLocalVars(),u=0;u<e.length;u++)s.vars.set(e[u],t[u]);var l=a.visitAllStatements(r,s);return n.i(o.f)(l)?l.value:null}function createDynamicClass(e,t,n){var o={};e.getters.forEach(function(r){o[r.name]={configurable:!1,get:function(){var o=new a(t,this,e.name,t.vars);return _executeFunctionStatements([],[],r.body,o,n)}}}),e.methods.forEach(function(r){var i=r.params.map(function(e){return e.name});o[r.name]={writable:!1,configurable:!1,value:function(){for(var o=[],s=0;s<arguments.length;s++)o[s-0]=arguments[s];var u=new a(t,this,e.name,t.vars);return _executeFunctionStatements(i,o,r.body,u,n)}}});var r=e.constructorMethod.params.map(function(e){return e.name}),i=function(){for(var o=this,i=[],s=0;s<arguments.length;s++)i[s-0]=arguments[s];var u=new a(t,this,e.name,t.vars);e.fields.forEach(function(e){o[e.name]=void 0}),_executeFunctionStatements(r,i,e.constructorMethod.body,u,n)},s=e.parent?e.parent.visitExpression(n,t):Object;return i.prototype=Object.create(s.prototype,o),i}function _declareFn(e,t,n,o){return function(){for(var r=[],i=0;i<arguments.length;i++)r[i-0]=arguments[i];return _executeFunctionStatements(e,r,t,n,o)}}var o=n(7),r=n(10),i=n(249);t.a=interpretStatements;var a=function(){function _ExecutionContext(e,t,n,o){this.parent=e,this.instance=t,this.className=n,this.vars=o}return _ExecutionContext.prototype.createChildWihtLocalVars=function(){return new _ExecutionContext(this,this.instance,this.className,new Map)},_ExecutionContext}(),s=function(){function ReturnValue(e){this.value=e}return ReturnValue}(),u=function(){function StatementInterpreter(){}return StatementInterpreter.prototype.debugAst=function(e){return n.i(i.b)(e)},StatementInterpreter.prototype.visitDeclareVarStmt=function(e,t){return t.vars.set(e.name,e.value.visitExpression(this,t)),null},StatementInterpreter.prototype.visitWriteVarExpr=function(e,t){for(var n=e.value.visitExpression(this,t),o=t;null!=o;){if(o.vars.has(e.name))return o.vars.set(e.name,n),n;o=o.parent}throw new Error("Not declared variable "+e.name)},StatementInterpreter.prototype.visitReadVarExpr=function(e,t){var i=e.name;if(n.i(o.f)(e.builtin))switch(e.builtin){case r.L.Super:return t.instance.__proto__;case r.L.This:return t.instance;case r.L.CatchError:i=l;break;case r.L.CatchStack:i=c;break;default:throw new Error("Unknown builtin variable "+e.builtin)}for(var a=t;null!=a;){if(a.vars.has(i))return a.vars.get(i);a=a.parent}throw new Error("Not declared variable "+i)},StatementInterpreter.prototype.visitWriteKeyExpr=function(e,t){var n=e.receiver.visitExpression(this,t),o=e.index.visitExpression(this,t),r=e.value.visitExpression(this,t);return n[o]=r,r},StatementInterpreter.prototype.visitWritePropExpr=function(e,t){var n=e.receiver.visitExpression(this,t),o=e.value.visitExpression(this,t);return n[e.name]=o,o},StatementInterpreter.prototype.visitInvokeMethodExpr=function(e,t){var i,a=e.receiver.visitExpression(this,t),s=this.visitAllExpressions(e.args,t);if(n.i(o.f)(e.builtin))switch(e.builtin){case r.x.ConcatArray:i=a.concat.apply(a,s);break;case r.x.SubscribeObservable:i=a.subscribe({next:s[0]});break;case r.x.Bind:i=a.bind.apply(a,s);break;default:throw new Error("Unknown builtin method "+e.builtin)}else i=a[e.name].apply(a,s);return i},StatementInterpreter.prototype.visitInvokeFunctionExpr=function(e,t){var n=this.visitAllExpressions(e.args,t),o=e.fn;if(o instanceof r.q&&o.builtin===r.L.Super)return t.instance.constructor.prototype.constructor.apply(t.instance,n),null;var i=e.fn.visitExpression(this,t);return i.apply(null,n)},StatementInterpreter.prototype.visitReturnStmt=function(e,t){return new s(e.value.visitExpression(this,t))},StatementInterpreter.prototype.visitDeclareClassStmt=function(e,t){var n=createDynamicClass(e,t,this);return t.vars.set(e.name,n),null},StatementInterpreter.prototype.visitExpressionStmt=function(e,t){return e.expr.visitExpression(this,t)},StatementInterpreter.prototype.visitIfStmt=function(e,t){var r=e.condition.visitExpression(this,t);return r?this.visitAllStatements(e.trueCase,t):n.i(o.f)(e.falseCase)?this.visitAllStatements(e.falseCase,t):null},StatementInterpreter.prototype.visitTryCatchStmt=function(e,t){try{return this.visitAllStatements(e.bodyStmts,t)}catch(n){var o=t.createChildWihtLocalVars();return o.vars.set(l,n),o.vars.set(c,n.stack),this.visitAllStatements(e.catchStmts,o)}},StatementInterpreter.prototype.visitThrowStmt=function(e,t){throw e.error.visitExpression(this,t)},StatementInterpreter.prototype.visitCommentStmt=function(e,t){return null},StatementInterpreter.prototype.visitInstantiateExpr=function(e,t){var n=this.visitAllExpressions(e.args,t),o=e.classExpr.visitExpression(this,t);return new(o.bind.apply(o,[void 0].concat(n)))},StatementInterpreter.prototype.visitLiteralExpr=function(e,t){return e.value},StatementInterpreter.prototype.visitExternalExpr=function(e,t){return e.value.reference},StatementInterpreter.prototype.visitConditionalExpr=function(e,t){return e.condition.visitExpression(this,t)?e.trueCase.visitExpression(this,t):n.i(o.f)(e.falseCase)?e.falseCase.visitExpression(this,t):null},StatementInterpreter.prototype.visitNotExpr=function(e,t){return!e.condition.visitExpression(this,t)},StatementInterpreter.prototype.visitCastExpr=function(e,t){return e.value.visitExpression(this,t)},StatementInterpreter.prototype.visitFunctionExpr=function(e,t){var n=e.params.map(function(e){return e.name});return _declareFn(n,e.statements,t,this)},StatementInterpreter.prototype.visitDeclareFunctionStmt=function(e,t){var n=e.params.map(function(e){return e.name});return t.vars.set(e.name,_declareFn(n,e.statements,t,this)),null},StatementInterpreter.prototype.visitBinaryOperatorExpr=function(e,t){var n=this,o=function(){return e.lhs.visitExpression(n,t)},i=function(){return e.rhs.visitExpression(n,t)};switch(e.operator){case r.l.Equals:return o()==i();case r.l.Identical:return o()===i();case r.l.NotEquals:return o()!=i();case r.l.NotIdentical:return o()!==i();case r.l.And:return o()&&i();case r.l.Or:return o()||i();case r.l.Plus:return o()+i();case r.l.Minus:return o()-i();case r.l.Divide:return o()/i();case r.l.Multiply:return o()*i();case r.l.Modulo:return o()%i();case r.l.Lower:return o()<i();case r.l.LowerEquals:return o()<=i();case r.l.Bigger:return o()>i();case r.l.BiggerEquals:return o()>=i();default:throw new Error("Unknown operator "+e.operator)}},StatementInterpreter.prototype.visitReadPropExpr=function(e,t){var n,o=e.receiver.visitExpression(this,t);return n=o[e.name]},StatementInterpreter.prototype.visitReadKeyExpr=function(e,t){var n=e.receiver.visitExpression(this,t),o=e.index.visitExpression(this,t);return n[o]},StatementInterpreter.prototype.visitLiteralArrayExpr=function(e,t){return this.visitAllExpressions(e.entries,t)},StatementInterpreter.prototype.visitLiteralMapExpr=function(e,t){var n=this,o={};return e.entries.forEach(function(e){return o[e.key]=e.value.visitExpression(n,t)}),o},StatementInterpreter.prototype.visitAllExpressions=function(e,t){var n=this;return e.map(function(e){return e.visitExpression(n,t)})},StatementInterpreter.prototype.visitAllStatements=function(e,t){for(var n=0;n<e.length;n++){var o=e[n],r=o.visitStatement(this,t);if(r instanceof s)return r}return null},StatementInterpreter}(),l="error",c="stack"},function(e,t,n){"use strict";function evalExpression(e,t,n,o){var r=n+"\nreturn "+t+"\n//# sourceURL="+e,i=[],a=[];for(var s in o)i.push(s),a.push(o[s]);return(new(Function.bind.apply(Function,[void 0].concat(i.concat(r))))).apply(void 0,a)}function jitStatements(e,t,n){var o=new s,i=r.a.createRoot([n]);return o.visitAllStatements(t,i),evalExpression(e,n,i.toSource(),o.getArgs())}var o=n(14),r=n(247),i=n(627);t.a=jitStatements;var a=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},s=function(e){function JitEmitterVisitor(){e.apply(this,arguments),this._evalArgNames=[],this._evalArgValues=[]}return a(JitEmitterVisitor,e),JitEmitterVisitor.prototype.getArgs=function(){for(var e={},t=0;t<this._evalArgNames.length;t++)e[this._evalArgNames[t]]=this._evalArgValues[t];return e},JitEmitterVisitor.prototype.visitExternalExpr=function(e,t){var r=e.value.reference,i=this._evalArgValues.indexOf(r);if(i===-1){i=this._evalArgValues.length,this._evalArgValues.push(r);var a=n.i(o.c)(e.value)||"val";this._evalArgNames.push("jit_"+a+i)}return t.print(this._evalArgNames[i]),null},JitEmitterVisitor}(i.a)},function(e,t,n){"use strict";(function(){function ImportResolver(){}return ImportResolver.prototype.fileNameToModuleName=function(e,t){},ImportResolver})()},function(e,t,n){"use strict";function registerContext(e,t){for(var n=0,o=t;n<o.length;n++){var i=o[n];r[i.toLowerCase()]=e}}var o=n(1);n.d(t,"a",function(){return r});var r={};registerContext(o.SecurityContext.HTML,["iframe|srcdoc","*|innerHTML","*|outerHTML"]),registerContext(o.SecurityContext.STYLE,["*|style"]),registerContext(o.SecurityContext.URL,["*|formAction","area|href","area|ping","audio|src","a|href","a|ping","blockquote|cite","body|background","del|cite","form|action","img|src","img|srcset","input|src","ins|cite","q|cite","source|src","source|srcset","track|src","video|poster","video|src"]),registerContext(o.SecurityContext.RESOURCE_URL,["applet|code","applet|codebase","base|href","embed|src","frame|src","head|profile","html|manifest","iframe|src","link|href","media|src","object|codebase","object|data","script|src"])},function(e,t,n){"use strict";function stripComments(e){return e.replace(E,"")}function extractSourceMappingUrl(e){var t=e.match(T);return t?t[0]:""}function processRules(e,t){var n=escapeBlocks(e),o=0;return n.escapedString.replace(S,function(){for(var e=[],r=0;r<arguments.length;r++)e[r-0]=arguments[r];var i=e[2],a="",s=e[4],u="";s&&s.startsWith("{"+k)&&(a=n.blocks[o++],s=s.substring(k.length+1),u="{");var l=t(new R(i,a));return""+e[1]+l.selector+e[3]+u+l.content+s})}function escapeBlocks(e){for(var t=e.split(A),n=[],o=[],r=0,i=[],a=0;a<t.length;a++){var s=t[a];s==C&&r--,r>0?i.push(s):(i.length>0&&(o.push(i.join("")),n.push(k),i=[]),n.push(s)),s==M&&r++}return i.length>0&&(o.push(i.join("")),n.push(k)),new N(n.join(""),o)}n.d(t,"a",function(){return o});var o=function(){function ShadowCss(){this.strictStyling=!0}return ShadowCss.prototype.shimCssText=function(e,t,n){void 0===n&&(n="");var o=extractSourceMappingUrl(e);return e=stripComments(e),e=this._insertDirectives(e),this._scopeCssText(e,t,n)+o},ShadowCss.prototype._insertDirectives=function(e){return e=this._insertPolyfillDirectivesInCssText(e),this._insertPolyfillRulesInCssText(e)},ShadowCss.prototype._insertPolyfillDirectivesInCssText=function(e){return e.replace(i,function(){for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];return e[2]+"{"})},ShadowCss.prototype._insertPolyfillRulesInCssText=function(e){return e.replace(a,function(){for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];var n=e[0].replace(e[1],"").replace(e[2],"");return e[4]+n})},ShadowCss.prototype._scopeCssText=function(e,t,n){var o=this._extractUnscopedRulesFromCssText(e);return e=this._insertPolyfillHostInCssText(e),e=this._convertColonHost(e),e=this._convertColonHostContext(e),e=this._convertShadowDOMSelectors(e),t&&(e=this._scopeSelectors(e,t,n)),e=e+"\n"+o,e.trim()},ShadowCss.prototype._extractUnscopedRulesFromCssText=function(e){var t,n="";for(s.lastIndex=0;null!==(t=s.exec(e));){var o=t[0].replace(t[2],"").replace(t[1],t[4]);n+=o+"\n\n"}return n},ShadowCss.prototype._convertColonHost=function(e){return this._convertColonRule(e,d,this._colonHostPartReplacer)},ShadowCss.prototype._convertColonHostContext=function(e){return this._convertColonRule(e,p,this._colonHostContextPartReplacer)},ShadowCss.prototype._convertColonRule=function(e,t,n){return e.replace(t,function(){for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];if(e[2]){for(var o=e[2].split(","),r=[],i=0;i<o.length;i++){var a=o[i].trim();if(!a)break;r.push(n(g,a,e[3]))}return r.join(",")}return g+e[3]})},ShadowCss.prototype._colonHostContextPartReplacer=function(e,t,n){return t.indexOf(u)>-1?this._colonHostPartReplacer(e,t,n):e+t+n+", "+t+" "+e+n},ShadowCss.prototype._colonHostPartReplacer=function(e,t,n){return e+t.replace(u,"")+n},ShadowCss.prototype._convertShadowDOMSelectors=function(e){return h.reduce(function(e,t){return e.replace(t," ")},e)},ShadowCss.prototype._scopeSelectors=function(e,t,n){var o=this;return processRules(e,function(e){var r=e.selector,i=e.content;return"@"!=e.selector[0]?r=o._scopeSelector(e.selector,t,n,o.strictStyling):(e.selector.startsWith("@media")||e.selector.startsWith("@supports")||e.selector.startsWith("@page")||e.selector.startsWith("@document"))&&(i=o._scopeSelectors(e.content,t,n)),new R(r,i)})},ShadowCss.prototype._scopeSelector=function(e,t,n,o){var r=this;return e.split(",").map(function(e){return e.trim().split(m)}).map(function(e){var i=e[0],a=e.slice(1),s=function(e){return r._selectorNeedsScoping(e,t)?o?r._applyStrictSelectorScope(e,t,n):r._applySelectorScope(e,t,n):e};return[s(i)].concat(a).join(" ")}).join(", ")},ShadowCss.prototype._selectorNeedsScoping=function(e,t){var n=this._makeScopeMatcher(t);return!n.test(e)},ShadowCss.prototype._makeScopeMatcher=function(e){var t=/\[/g,n=/\]/g;return e=e.replace(t,"\\[").replace(n,"\\]"),new RegExp("^("+e+")"+y,"m")},ShadowCss.prototype._applySelectorScope=function(e,t,n){return this._applySimpleSelectorScope(e,t,n)},ShadowCss.prototype._applySimpleSelectorScope=function(e,t,n){if(b.lastIndex=0,b.test(e)){var o=this.strictStyling?"["+n+"]":t;return e.replace(f,function(e,t){return t.replace(/([^:]*)(:*)(.*)/,function(e,t,n,r){return t+o+n+r})}).replace(b,o+" ")}return t+" "+e},ShadowCss.prototype._applyStrictSelectorScope=function(e,t,n){var o=this,i=/\[is=([^\]]*)\]/g;t=t.replace(i,function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t[0]});var a="["+t+"]",s=function(e){var r=e.trim();if(!r)return"";if(e.indexOf(g)>-1)r=o._applySimpleSelectorScope(e,t,n);else{var i=e.replace(b,"");if(i.length>0){var s=i.match(/([^:]*)(:*)(.*)/);s&&(r=s[1]+a+s[2]+s[3])}}return r},u=new r(e);e=u.content();for(var l,c="",d=0,p=/( |>|\+|~(?!=))\s*/g,f=e.indexOf(g);null!==(l=p.exec(e));){var h=l[1],m=e.slice(d,l.index).trim(),y=d>=f?s(m):m;c+=y+" "+h+" ",d=p.lastIndex}return c+=s(e.substring(d)),u.restore(c)},ShadowCss.prototype._insertPolyfillHostInCssText=function(e){return e.replace(_,l).replace(v,u)},ShadowCss}(),r=function(){function SafeSelector(e){var t=this;this.placeholders=[],this.index=0,e=e.replace(/(\[[^\]]*\])/g,function(e,n){var o="__ph-"+t.index+"__";return t.placeholders.push(n),t.index++,o}),this._content=e.replace(/(:nth-[-\w]+)(\([^)]+\))/g,function(e,n,o){var r="__ph-"+t.index+"__";return t.placeholders.push(o),t.index++,n+r})}return SafeSelector.prototype.restore=function(e){var t=this;return e.replace(/__ph-(\d+)__/g,function(e,n){return t.placeholders[+n]})},SafeSelector.prototype.content=function(){return this._content},SafeSelector}(),i=/polyfill-next-selector[^}]*content:[\s]*?(['"])(.*?)\1[;\s]*}([^{]*?){/gim,a=/(polyfill-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim,s=/(polyfill-unscoped-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim,u="-shadowcsshost",l="-shadowcsscontext",c=")(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))?([^,{]*)",d=new RegExp("("+u+c,"gim"),p=new RegExp("("+l+c,"gim"),g=u+"-no-combinator",f=/-shadowcsshost-no-combinator([^\s]*)/,h=[/::shadow/g,/::content/g,/\/shadow-deep\//g,/\/shadow\//g],m=/(?:>>>)|(?:\/deep\/)/g,y="([>\\s~+[.,{:][\\s\\S]*)?$",b=/-shadowcsshost/gim,v=/:host/gim,_=/:host-context/gim,E=/\/\*\s*[\s\S]*?\*\//g,T=/\/\*\s*#\s*sourceMappingURL=[\s\S]+?\*\//,S=/(\s*)([^;\{\}]+?)(\s*)((?:{%BLOCK%}?\s*;?)|(?:\s*;))/g,A=/([{}])/g,M="{",C="}",k="%BLOCK%",R=function(){function CssRule(e,t){this.selector=e,this.content=t}return CssRule}(),N=function(){function StringWithEscapedBlocks(e,t){this.escapedString=e,this.blocks=t}return StringWithEscapedBlocks}()},function(e,t,n){"use strict";var o=n(1);new o.Version("2.4.10")},function(e,t,n){"use strict";function _findPipeMeta(e,t){for(var n=null,o=e.pipeMetas.length-1;o>=0;o--){var r=e.pipeMetas[o];if(r.name==t){n=r;break}}if(!n)throw new Error("Illegal state: Could not find pipe "+t+" although the parser should have detected this error!");return n}var o=n(14),r=n(46),i=n(19),a=n(10),s=n(89);n.d(t,"a",function(){return u});var u=function(){function CompilePipe(e,t){var r=this;this.view=e,this.meta=t,this._purePipeProxyCount=0,this.instance=a.c.prop("_pipe_"+t.name+"_"+e.pipeCount++);var u=this.meta.type.diDeps.map(function(t){return n.i(o.a)(t.token)===n.i(i.a)(i.b.ChangeDetectorRef)?n.i(s.a)(a.c.prop("ref"),r.view,r.view.componentView):n.i(s.b)(e,t.token,!1)});this.view.fields.push(new a.a(this.instance.name,a.B(this.meta.type))),this.view.createMethod.resetDebugInfo(null,null),this.view.createMethod.addStmt(a.c.prop(this.instance.name).set(a.d(this.meta.type).instantiate(u)).toStmt())}return CompilePipe.call=function(e,t,n){var o,r=e.componentView,i=_findPipeMeta(r,t);return i.pure?(o=r.purePipes.get(t),o||(o=new CompilePipe(r,i),r.purePipes.set(t,o),r.pipes.push(o))):(o=new CompilePipe(e,i),e.pipes.push(o)),o._call(e,n)},Object.defineProperty(CompilePipe.prototype,"pure",{get:function(){return this.meta.pure},enumerable:!0,configurable:!0}),CompilePipe.prototype._call=function(e,t){if(this.meta.pure){var o=a.c.prop(this.instance.name+"_"+this._purePipeProxyCount++),u=n.i(s.a)(this.instance,e,this.view);return n.i(r.a)(u.prop("transform").callMethod(a.x.Bind,[u]),t.length,o,{fields:e.fields,ctorStmts:e.createMethod}),a.d(n.i(i.e)(i.b.castByValue)).callFn([o,u.prop("transform")]).callFn(t)}return n.i(s.a)(this.instance,e,this.view).callMethod("transform",t)},CompilePipe}()},function(e,t,n){"use strict";function bindOutputs(e,t,n,o){var r=collectEvents(e,t);return!!r.size&&(o&&subscribeToRenderEvents(r,n),subscribeToDirectiveEvents(r,t,n),generateHandleEventMethod(e,t,n),!0)}function collectEvents(e,t){var n=new Map;return e.forEach(function(e){n.set(e.fullName,e)}),t.forEach(function(e){e.hostEvents.forEach(function(e){n.set(e.fullName,e)})}),n}function subscribeToRenderEvents(e,t){var o=[];if(e.forEach(function(e){e.phase||o.push(s.f(e.name),s.f(e.target))}),o.length){var i=s.g("disposable_"+t.view.disposables.length);t.view.disposables.push(i),t.view.createMethod.addStmt(i.set(s.d(n.i(a.e)(a.b.subscribeToRenderElement)).callFn([s.c,t.renderNode,n.i(r.d)(o),handleEventExpr(t)])).toDeclStmt(s.C,[s.b.Private]))}}function subscribeToDirectiveEvents(e,t,n){var o=Array.from(e.keys());t.forEach(function(e){var t=n.directiveWrapperInstance.get(e.directive.type.reference);n.view.createMethod.addStmts(i.b.subscribe(e.directive,e.hostProperties,o,t,s.c,handleEventExpr(n)))})}function generateHandleEventMethod(e,t,r){var a=t.some(function(e){return e.hostEvents.some(function(t){return e.directive.isComponent})}),c=a?r.compViewExpr:s.c,d=new u.a(r.view);d.resetDebugInfo(r.nodeIndex,r.sourceAst),d.push(c.callMethod("markPathToRootAsCheckOnce",[]).toStmt());var p=s.g("eventName"),g=s.g("result");d.push(g.set(s.f(!0)).toDeclStmt(s.D)),t.forEach(function(e,t){var n=r.directiveWrapperInstance.get(e.directive.type.reference);e.hostEvents.length>0&&d.push(g.set(i.b.handleEvent(e.hostEvents,n,p,o.c.event).and(g)).toStmt())}),e.forEach(function(e,t){var i=n.i(o.b)(r.view,r.view,r.view.componentContext,e.handler,"sub_"+t),a=i.stmts;i.preventDefault&&a.push(g.set(i.preventDefault.and(g)).toStmt()),d.push(new s.e(p.equals(s.f(e.fullName)),a))}),d.push(new s.t(g)),r.view.methods.push(new s.z(n.i(l.d)(r.nodeIndex),[new s.r(p.name,s.F),new s.r(o.c.event.name,s.h)],d.finish(),s.D))}function handleEventExpr(e){var t=n.i(l.d)(e.nodeIndex);return s.c.callMethod("eventHandler",[s.c.prop(t)])}var o=n(122),r=n(46),i=n(73),a=n(19),s=n(10),u=n(252),l=n(89);t.a=bindOutputs},function(e,t,n){"use strict";function bindDirectiveAfterContentLifecycleCallbacks(e,t,n){var o=n.view,a=e.type.lifecycleHooks,s=o.afterContentLifecycleCallbacksMethod;s.resetDebugInfo(n.nodeIndex,n.sourceAst),a.indexOf(i.H.AfterContentInit)!==-1&&s.addStmt(new r.e(u,[t.callMethod("ngAfterContentInit",[]).toStmt()])),a.indexOf(i.H.AfterContentChecked)!==-1&&s.addStmt(t.callMethod("ngAfterContentChecked",[]).toStmt())}function bindDirectiveAfterViewLifecycleCallbacks(e,t,n){var o=n.view,a=e.type.lifecycleHooks,s=o.afterViewLifecycleCallbacksMethod;s.resetDebugInfo(n.nodeIndex,n.sourceAst),a.indexOf(i.H.AfterViewInit)!==-1&&s.addStmt(new r.e(u,[t.callMethod("ngAfterViewInit",[]).toStmt()])),a.indexOf(i.H.AfterViewChecked)!==-1&&s.addStmt(t.callMethod("ngAfterViewChecked",[]).toStmt())}function bindDirectiveWrapperLifecycleCallbacks(e,t,n){n.view.destroyMethod.addStmts(o.b.ngOnDestroy(e.directive,t)),n.view.detachMethod.addStmts(o.b.ngOnDetach(e.hostProperties,t,r.c,n.compViewExpr||r.c,n.renderNode))}function bindInjectableDestroyLifecycleCallbacks(e,t,n){var o=n.view.destroyMethod;o.resetDebugInfo(n.nodeIndex,n.sourceAst),e.providerType!==a.a.Directive&&e.providerType!==a.a.Component&&e.lifecycleHooks.indexOf(i.H.OnDestroy)!==-1&&o.addStmt(t.callMethod("ngOnDestroy",[]).toStmt())}function bindPipeDestroyLifecycleCallbacks(e,t,n){var o=n.destroyMethod;e.type.lifecycleHooks.indexOf(i.H.OnDestroy)!==-1&&o.addStmt(t.callMethod("ngOnDestroy",[]).toStmt())}var o=n(73),r=n(10),i=n(17),a=n(48),s=n(175);t.b=bindDirectiveAfterContentLifecycleCallbacks,t.c=bindDirectiveAfterViewLifecycleCallbacks,t.d=bindDirectiveWrapperLifecycleCallbacks,t.e=bindInjectableDestroyLifecycleCallbacks,t.a=bindPipeDestroyLifecycleCallbacks;var u=r.c.prop("numberOfChecks").identical(new r.E(0));r.p(s.b.throwOnChange)},function(e,t,n){"use strict";function bindRenderText(e,t,i){var a=n.i(o.a)(i),s=n.i(r.a)(i,i,i.componentContext,e.value,a.bindingId);return s?(i.detectChangesRenderPropertiesMethod.resetDebugInfo(t.nodeIndex,e),void i.detectChangesRenderPropertiesMethod.addStmts(n.i(o.b)(s,a.expression,p.b.throwOnChange,[l.c.prop("renderer").callMethod("setText",[t.renderNode,s.currValExpr]).toStmt()]))):null}function bindRenderInputs(e,t,i,s){var c=s.view,f=s.renderNode;e.forEach(function(e){var h=n.i(o.a)(c);c.detectChangesRenderPropertiesMethod.resetDebugInfo(s.nodeIndex,e);var m=n.i(r.a)(c,c,s.view.componentContext,e.value,h.bindingId);if(m){var y=[],b=c.detectChangesRenderPropertiesMethod;switch(e.type){case d.e.Property:case d.e.Attribute:case d.e.Class:case d.e.Style:y.push.apply(y,n.i(a.b)(l.c,e,f,m.currValExpr,c.genConfig.logBindingUpdate));break;case d.e.Animation:b=c.animationBindingsMethod;var v=n.i(a.a)(l.c,l.c,e,t,(i?l.c.prop(n.i(g.d)(s.nodeIndex)):l.d(n.i(u.e)(u.b.noop))).callMethod(l.x.Bind,[l.c]),s.renderNode,m.currValExpr,h.expression),_=v.updateStmts,E=v.detachStmts;y.push.apply(y,_),c.detachMethod.addStmts(E)}b.addStmts(n.i(o.b)(m,h.expression,p.b.throwOnChange,y))}})}function bindDirectiveHostProps(e,t,o,r,a){var c=e.hostProperties.filter(function(e){return e.needsRuntimeSecurityContext}).map(function(e){var t;switch(e.type){case d.e.Property:t=a.securityContext(r,e.name,!1);break;case d.e.Attribute:t=a.securityContext(r,e.name,!0);break;default:throw new Error("Illegal state: Only property / attribute bindings can have an unknown security context! Binding "+e.name)}return n.i(i.b)(u.b.SecurityContext,t)});o.view.detectChangesRenderPropertiesMethod.addStmts(s.b.checkHost(e.hostProperties,t,l.c,o.compViewExpr||l.c,o.renderNode,p.b.throwOnChange,c))}function bindDirectiveInputs(e,t,o,i){var a=i.view,u=a.detectChangesInInputsMethod;u.resetDebugInfo(i.nodeIndex,i.sourceAst),e.inputs.forEach(function(e,s){var c=i.nodeIndex+"_"+o+"_"+s;u.resetDebugInfo(i.nodeIndex,e);var d=n.i(r.a)(a,a,a.componentContext,e.value,c);d&&(u.addStmts(d.stmts),u.addStmt(t.callMethod("check_"+e.directiveName,[d.currValExpr,p.b.throwOnChange,d.forceUpdate||l.f(!1)]).toStmt()))});var d=e.directive.isComponent&&!n.i(c.K)(e.directive.changeDetection),g=s.b.ngDoCheck(t,l.c,i.renderNode,p.b.throwOnChange),f=d?new l.e(g,[i.compViewExpr.callMethod("markAsCheckOnce",[]).toStmt()]):g.toStmt();u.addStmt(f)}var o=n(352),r=n(122),i=n(46),a=n(353),s=n(73),u=n(19),l=n(10),c=n(17),d=n(48),p=n(175),g=n(89);t.a=bindRenderText,t.b=bindRenderInputs,t.d=bindDirectiveHostProps,t.c=bindDirectiveInputs},function(e,t,n){"use strict";function bindQueryValues(e){var t=[];e.getProviderTokens().forEach(function(n){var o=e.getQueriesFor(n);t.push.apply(t,o.map(function(e){return new r(e,n)}))}),Object.keys(e.referenceTokens).forEach(function(n){var o={value:n};t.push.apply(t,e.getQueriesFor(o).map(function(e){return new r(e,o)}))}),t.forEach(function(t){var r;if(t.read.identifier)r=e.instances.get(n.i(o.a)(t.read));else{var i=e.referenceTokens[t.read.value];r=i?e.instances.get(n.i(o.a)(i)):e.elementRef}r&&t.query.addValue(r,e.view)})}var o=n(14);t.a=bindQueryValues;var r=function(){function _QueryWithRead(e,t){this.query=e,this.read=e.meta.read||t}return _QueryWithRead}()},function(e,t,n){"use strict";function bindView(e,t,o){var i=new l(e,o);n.i(r.g)(i,t),e.pipes.forEach(function(e){n.i(a.a)(e.meta,e.instance,e.view)})}var o=n(14),r=n(48),i=n(635),a=n(636),s=n(637),u=n(638);t.a=bindView;var l=function(){function ViewBinderVisitor(e,t){this.view=e,this._schemaRegistry=t,this._nodeIndex=0}return ViewBinderVisitor.prototype.visitBoundText=function(e,t){var o=this.view.nodes[this._nodeIndex++];return n.i(s.a)(e,o,this.view),null},ViewBinderVisitor.prototype.visitText=function(e,t){return this._nodeIndex++,null},ViewBinderVisitor.prototype.visitNgContent=function(e,t){return null},ViewBinderVisitor.prototype.visitElement=function(e,t){var l=this,c=this.view.nodes[this._nodeIndex++];n.i(u.a)(c);var d=n.i(i.a)(e.outputs,e.directives,c,!0);return n.i(s.b)(e.inputs,e.outputs,d,c),e.directives.forEach(function(t,o){var r=c.directiveWrapperInstance.get(t.directive.type.reference);n.i(s.c)(t,r,o,c),n.i(s.d)(t,r,c,e.name,l._schemaRegistry)}),n.i(r.g)(this,e.children,c),e.directives.forEach(function(e){var t=c.instances.get(e.directive.type.reference),o=c.directiveWrapperInstance.get(e.directive.type.reference);n.i(a.b)(e.directive,t,c),n.i(a.c)(e.directive,t,c),n.i(a.d)(e,o,c)}),e.providers.forEach(function(e){var t=c.instances.get(n.i(o.a)(e.token));n.i(a.e)(e,t,c)}),null},ViewBinderVisitor.prototype.visitEmbeddedTemplate=function(e,t){var r=this.view.nodes[this._nodeIndex++];return n.i(u.a)(r),n.i(i.a)(e.outputs,e.directives,r,!1),e.directives.forEach(function(e,t){var o=r.instances.get(e.directive.type.reference),i=r.directiveWrapperInstance.get(e.directive.type.reference);n.i(s.c)(e,i,t,r),n.i(a.b)(e.directive,o,r),n.i(a.c)(e.directive,o,r),n.i(a.d)(e,i,r)}),e.providers.forEach(function(e){var t=r.instances.get(n.i(o.a)(e.token));n.i(a.e)(e,t,r)}),bindView(r.embeddedView,e.children,this._schemaRegistry),null},ViewBinderVisitor.prototype.visitAttr=function(e,t){return null},ViewBinderVisitor.prototype.visitDirective=function(e,t){return null},ViewBinderVisitor.prototype.visitEvent=function(e,t){return null},ViewBinderVisitor.prototype.visitReference=function(e,t){return null},ViewBinderVisitor.prototype.visitVariable=function(e,t){return null},ViewBinderVisitor.prototype.visitDirectiveProperty=function(e,t){return null},ViewBinderVisitor.prototype.visitElementProperty=function(e,t){return null},ViewBinderVisitor}()},function(e,t,n){"use strict";function buildView(e,t,o){var r=new A(e,o),i=e.declarationElement.isNull()?e.declarationElement:e.declarationElement.parent;return n.i(p.g)(r,t,i),e.viewType!==d.l.EMBEDDED&&e.viewType!==d.l.HOST||(e.lastRenderNode=r.getOrCreateLastRenderNode()),r.nestedViewCount}function finishView(e,t){e.nodes.forEach(function(e){e instanceof g.a&&(e.finish(),e.hasEmbeddedView&&finishView(e.embeddedView,t))}),e.finish(),createViewTopLevelStmts(e,t)}function _getOuterContainerOrSelf(e){for(var t=e.view;_isNgContainer(e.parent,t);)e=e.parent;return e}function _getOuterContainerParentOrSelf(e){for(var t=e.view;_isNgContainer(e,t);)e=e.parent;return e}function _isNgContainer(e,t){return!e.isNull()&&e.sourceAst.name===E&&e.view===t}function _mergeHtmlAndDirectiveAttrs(e,t){var o={};Object.keys(e).forEach(function(t){o[t]=e[t]}),t.forEach(function(e){Object.keys(e.hostAttributes).forEach(function(t){var r=e.hostAttributes[t],i=o[t];o[t]=n.i(s.f)(i)?mergeAttributeValue(t,i,r):r})});var r=[];return Object.keys(o).sort().forEach(function(e){r.push(e,o[e])}),r}function _readHtmlAttrs(e){var t={};return e.forEach(function(e){t[e.name]=e.value}),t}function mergeAttributeValue(e,t,n){return e==v||e==_?t+" "+n:n}function createViewTopLevelStmts(e,t){var o=c.k;e.genConfig.genDebugInfo&&(o=c.g("nodeDebugInfos_"+n.i(r.c)(e.component.type)+e.viewIndex),t.push(o.set(c.n(e.nodes.map(createStaticNodeDebugInfo),new c.u(c.B(n.i(u.e)(u.b.StaticNodeDebugInfo)),[c.J.Const]))).toDeclStmt(null,[c.b.Final])));var i=c.g("renderType_"+n.i(r.c)(e.component.type));if(0===e.viewIndex){var a=void 0;a=e.component.template.templateUrl==n.i(r.m)(e.component.type)?n.i(r.m)(e.component.type)+" class "+n.i(r.c)(e.component.type)+" - inline template":e.component.template.templateUrl,t.push(i.set(c.d(n.i(u.e)(u.b.createRenderComponentType)).callFn([e.genConfig.genDebugInfo?c.f(a):c.f(""),c.f(e.component.template.ngContentSelectors.length),h.d.fromValue(e.component.template.encapsulation),e.styles,c.o(e.animations.map(function(e){return[e.name,e.fnExp]}),null,!0)])).toDeclStmt(c.B(n.i(u.e)(u.b.RenderComponentType))))}var s=createViewClass(e,i,o);t.push(s)}function createStaticNodeDebugInfo(e){var t=e instanceof g.a?e:null,o=[],r=c.k,i=[];return n.i(s.f)(t)&&(o=t.getProviderTokens().map(function(e){return n.i(a.c)(e)}),n.i(s.f)(t.component)&&(r=n.i(a.c)(n.i(u.c)(t.component.type))),Object.keys(t.referenceTokens).forEach(function(e){var o=t.referenceTokens[e];i.push([e,n.i(s.f)(o)?n.i(a.c)(o):c.k])})),c.d(n.i(u.e)(u.b.StaticNodeDebugInfo)).instantiate([c.n(o,new c.u(c.h,[c.J.Const])),r,c.o(i,new c.v(c.h,[c.J.Const]))],c.B(n.i(u.e)(u.b.StaticNodeDebugInfo),null,[c.J.Const]))}function createViewClass(e,t,o){var r=[new c.r(h.e.viewUtils.name,c.B(n.i(u.e)(u.b.ViewUtils))),new c.r(h.e.parentView.name,c.B(n.i(u.e)(u.b.AppView),[c.h])),new c.r(h.e.parentIndex.name,c.U),new c.r(h.e.parentElement.name,c.h)],i=[c.g(e.className),t,h.f.fromValue(e.viewType),h.e.viewUtils,h.e.parentView,h.e.parentIndex,h.e.parentElement,h.g.fromValue(getChangeDetectionMode(e))];e.genConfig.genDebugInfo&&i.push(o),e.viewType===d.l.EMBEDDED&&(r.push(new c.r("declaredViewContainer",c.B(n.i(u.e)(u.b.ViewContainer)))),i.push(c.g("declaredViewContainer")));var a=[new c.z("createInternal",[new c.r(S.name,c.F)],generateCreateMethod(e),c.B(n.i(u.e)(u.b.ComponentRef),[c.h])),new c.z("injectorGetInternal",[new c.r(h.a.token.name,c.h),new c.r(h.a.requestNodeIndex.name,c.U),new c.r(h.a.notFoundResult.name,c.h)],addReturnValuefNotEmpty(e.injectorGetMethod.finish(),h.a.notFoundResult),c.h),new c.z("detectChangesInternal",[new c.r(h.b.throwOnChange.name,c.D)],generateDetectChangesMethod(e)),new c.z("dirtyParentQueriesInternal",[],e.dirtyParentQueriesMethod.finish()),new c.z("destroyInternal",[],generateDestroyMethod(e)),new c.z("detachInternal",[],e.detachMethod.finish()),generateVisitRootNodesMethod(e),generateVisitProjectableNodesMethod(e),generateCreateEmbeddedViewsMethod(e)].filter(function(e){return e.body.length>0}),s=e.genConfig.genDebugInfo?u.b.DebugAppView:u.b.AppView,p=n.i(l.a)({name:e.className,parent:c.d(n.i(u.e)(s),[getContextType(e)]),parentArgs:i,ctorParams:r,builders:[{methods:a},e]});return p}function generateDestroyMethod(e){var t=[];return e.viewContainers.forEach(function(e){
t.push(e.callMethod("destroyNestedViews",[]).toStmt())}),e.viewChildren.forEach(function(e){t.push(e.callMethod("destroy",[]).toStmt())}),t.push.apply(t,e.destroyMethod.finish()),t}function generateCreateMethod(e){var t=c.k,o=[];e.viewType===d.l.COMPONENT&&(t=h.c.renderer.callMethod("createViewRoot",[c.c.prop("parentElement")]),o=[T.set(t).toDeclStmt(c.B(e.genConfig.renderTypes.renderNode),[c.b.Final])]);var r;if(e.viewType===d.l.HOST){var i=e.nodes[0];r=c.d(n.i(u.e)(u.b.ComponentRef_),[c.h]).instantiate([c.f(i.nodeIndex),c.c,i.renderNode,i.getComponent()])}else r=c.k;var a=h.c.renderer.cast(c.h).prop("directRenderer").conditional(c.k,c.n(e.nodes.map(function(e){return e.renderNode})));return o.concat(e.createMethod.finish(),[c.c.callMethod("init",[e.lastRenderNode,a,e.disposables.length?c.n(e.disposables):c.k]).toStmt(),new c.t(r)])}function generateDetectChangesMethod(e){var t=[];if(e.animationBindingsMethod.isEmpty()&&e.detectChangesInInputsMethod.isEmpty()&&e.updateContentQueriesMethod.isEmpty()&&e.afterContentLifecycleCallbacksMethod.isEmpty()&&e.detectChangesRenderPropertiesMethod.isEmpty()&&e.updateViewQueriesMethod.isEmpty()&&e.afterViewLifecycleCallbacksMethod.isEmpty()&&0===e.viewContainers.length&&0===e.viewChildren.length)return t;t.push.apply(t,e.animationBindingsMethod.finish()),t.push.apply(t,e.detectChangesInInputsMethod.finish()),e.viewContainers.forEach(function(e){t.push(e.callMethod("detectChangesInNestedViews",[h.b.throwOnChange]).toStmt())});var o=e.updateContentQueriesMethod.finish().concat(e.afterContentLifecycleCallbacksMethod.finish());o.length>0&&t.push(new c.e(c.p(h.b.throwOnChange),o)),t.push.apply(t,e.detectChangesRenderPropertiesMethod.finish()),e.viewChildren.forEach(function(e){t.push(e.callMethod("internalDetectChanges",[h.b.throwOnChange]).toStmt())});var r=e.updateViewQueriesMethod.finish().concat(e.afterViewLifecycleCallbacksMethod.finish());r.length>0&&t.push(new c.e(c.p(h.b.throwOnChange),r));var a=[],s=c.i(t);return s.has(h.b.changed.name)&&a.push(h.b.changed.set(c.f(!0)).toDeclStmt(c.D)),s.has(h.b.changes.name)&&a.push(h.b.changes.set(c.k).toDeclStmt(new c.v(c.B(n.i(u.e)(u.b.SimpleChange))))),a.push.apply(a,n.i(i.d)(t)),a.concat(t)}function addReturnValuefNotEmpty(e,t){return e.length>0?e.concat([new c.t(t)]):e}function getContextType(e){return e.viewType===d.l.COMPONENT?c.B(e.component.type):c.h}function getChangeDetectionMode(e){var t;return t=e.viewType===d.l.COMPONENT?n.i(d.K)(e.component.changeDetection)?d.p.CheckAlways:d.p.CheckOnce:d.p.CheckAlways}function generateVisitRootNodesMethod(e){var t=c.g("cb"),n=c.g("ctx"),o=generateVisitNodesStmts(e.rootNodes,t,n);return new c.z("visitRootNodesInternal",[new c.r(t.name,c.h),new c.r(n.name,c.h)],o)}function generateVisitProjectableNodesMethod(e){var t=c.g("nodeIndex"),n=c.g("ngContentIndex"),o=c.g("cb"),r=c.g("ctx"),i=[];return e.nodes.forEach(function(e){e instanceof g.a&&e.component&&e.contentNodesByNgContentIndex.forEach(function(a,s){i.push(new c.e(t.equals(c.f(e.nodeIndex)).and(n.equals(c.f(s))),generateVisitNodesStmts(a,o,r)))})}),new c.z("visitProjectableNodesInternal",[new c.r(t.name,c.U),new c.r(n.name,c.U),new c.r(o.name,c.h),new c.r(r.name,c.h)],i)}function generateVisitNodesStmts(e,t,n){var o=[];return e.forEach(function(e){switch(e.type){case f.b.Node:o.push(t.callFn([e.expr,n]).toStmt());break;case f.b.ViewContainer:o.push(t.callFn([e.expr.prop("nativeElement"),n]).toStmt()),o.push(e.expr.callMethod("visitNestedViewRootNodes",[t,n]).toStmt());break;case f.b.NgContent:o.push(c.c.callMethod("visitProjectedNodes",[c.f(e.ngContentIndex),t,n]).toStmt())}}),o}function generateCreateEmbeddedViewsMethod(e){var t=c.g("nodeIndex"),o=[];return e.nodes.forEach(function(e){e instanceof g.a&&e.embeddedView&&o.push(new c.e(t.equals(c.f(e.nodeIndex)),[new c.t(e.embeddedView.classExpr.instantiate([h.c.viewUtils,c.c,c.f(e.nodeIndex),e.renderNode,e.viewContainer]))]))}),o.length>0&&o.push(new c.t(c.k)),new c.z("createEmbeddedViewInternal",[new c.r(t.name,c.U)],o,c.B(n.i(u.e)(u.b.AppView),[c.h]))}var o=n(1),r=n(14),i=n(122),a=n(46),s=n(7),u=n(19),l=n(248),c=n(10),d=n(17),p=n(48),g=n(368),f=n(370),h=n(175),m=n(253),y=n(89);t.a=buildView,t.b=finishView;var b="$implicit",v="class",_="style",E="ng-container",T=c.g("parentRenderNode"),S=c.g("rootSelector"),A=function(){function ViewBuilderVisitor(e,t){this.view=e,this.targetDependencies=t,this.nestedViewCount=0}return ViewBuilderVisitor.prototype._isRootNode=function(e){return e.view!==this.view},ViewBuilderVisitor.prototype._addRootNodeAndProject=function(e){var t=_getOuterContainerOrSelf(e),o=t.parent,r=t.sourceAst.ngContentIndex,i=e instanceof g.a&&e.hasViewContainer?e.viewContainer:null;this._isRootNode(o)?this.view.viewType!==d.l.COMPONENT&&this.view.rootNodes.push(new f.a(i?f.b.ViewContainer:f.b.Node,i||e.renderNode)):n.i(s.f)(o.component)&&n.i(s.f)(r)&&o.addContentNode(r,new f.a(i?f.b.ViewContainer:f.b.Node,i||e.renderNode))},ViewBuilderVisitor.prototype._getParentRenderNode=function(e){return e=_getOuterContainerParentOrSelf(e),this._isRootNode(e)?this.view.viewType===d.l.COMPONENT?T:c.k:n.i(s.f)(e.component)&&e.component.template.encapsulation!==o.ViewEncapsulation.Native?c.k:e.renderNode},ViewBuilderVisitor.prototype.getOrCreateLastRenderNode=function(){var e=this.view;if(0===e.rootNodes.length||e.rootNodes[e.rootNodes.length-1].type!==f.b.Node){var t="_el_"+e.nodes.length;e.fields.push(new c.a(t,c.B(e.genConfig.renderTypes.renderElement))),e.createMethod.addStmt(c.c.prop(t).set(h.c.renderer.callMethod("createTemplateAnchor",[c.k,c.k])).toStmt()),e.rootNodes.push(new f.a(f.b.Node,c.c.prop(t)))}return e.rootNodes[e.rootNodes.length-1].expr},ViewBuilderVisitor.prototype.visitBoundText=function(e,t){return this._visitText(e,"",t)},ViewBuilderVisitor.prototype.visitText=function(e,t){return this._visitText(e,e.value,t)},ViewBuilderVisitor.prototype._visitText=function(e,t,n){var o="_text_"+this.view.nodes.length;this.view.fields.push(new c.a(o,c.B(this.view.genConfig.renderTypes.renderText)));var r=c.c.prop(o),i=new g.b(n,this.view,this.view.nodes.length,r,e),a=c.c.prop(o).set(h.c.renderer.callMethod("createText",[this._getParentRenderNode(n),c.f(t),this.view.createMethod.resetDebugInfoExpr(this.view.nodes.length,e)])).toStmt();return this.view.nodes.push(i),this.view.createMethod.addStmt(a),this._addRootNodeAndProject(i),r},ViewBuilderVisitor.prototype.visitNgContent=function(e,t){this.view.createMethod.resetDebugInfo(null,e);var o=this._getParentRenderNode(t);return o!==c.k?this.view.createMethod.addStmt(c.c.callMethod("projectNodes",[o,c.f(e.index)]).toStmt()):this._isRootNode(t)?this.view.viewType!==d.l.COMPONENT&&this.view.rootNodes.push(new f.a(f.b.NgContent,null,e.index)):n.i(s.f)(t.component)&&n.i(s.f)(e.ngContentIndex)&&t.addContentNode(e.ngContentIndex,new f.a(f.b.NgContent,null,e.index)),null},ViewBuilderVisitor.prototype.visitElement=function(e,t){var o,r=this.view.nodes.length,i=this.view.createMethod.resetDebugInfoExpr(r,e),l=e.directives.map(function(e){return e.directive}),f=l.find(function(e){return e.isComponent});if(e.name===E)o=h.c.renderer.callMethod("createTemplateAnchor",[this._getParentRenderNode(t),i]);else{var b=_readHtmlAttrs(e.attrs),v=n.i(a.d)(_mergeHtmlAndDirectiveAttrs(b,l).map(function(e){return c.f(e)}));o=0===r&&this.view.viewType===d.l.HOST?c.d(n.i(u.e)(u.b.selectOrCreateRenderHostElement)).callFn([h.c.renderer,c.f(e.name),v,S,i]):c.d(n.i(u.e)(u.b.createRenderElement)).callFn([h.c.renderer,this._getParentRenderNode(t),c.f(e.name),v,i])}var _="_el_"+r;this.view.fields.push(new c.a(_,c.B(this.view.genConfig.renderTypes.renderElement))),this.view.createMethod.addStmt(c.c.prop(_).set(o).toStmt());var T=c.c.prop(_),A=new g.a(t,this.view,r,T,e,f,l,e.providers,e.hasViewContainer,(!1),e.references);this.view.nodes.push(A);var M=null;if(n.i(s.f)(f)){var C={reference:null};this.targetDependencies.push(new m.c(f.type,n.i(y.c)(f,0),C)),M=c.c.prop("compView_"+r),this.view.fields.push(new c.a(M.name,c.B(n.i(u.e)(u.b.AppView),[c.B(f.type)]))),this.view.viewChildren.push(M),A.setComponentView(M),this.view.createMethod.addStmt(M.set(c.d(C).instantiate([h.c.viewUtils,c.c,c.f(r),T])).toStmt())}return A.beforeChildren(),this._addRootNodeAndProject(A),n.i(p.g)(this,e.children,A),A.afterChildren(this.view.nodes.length-r-1),n.i(s.f)(M)&&this.view.createMethod.addStmt(M.callMethod("create",[A.getComponent()]).toStmt()),null},ViewBuilderVisitor.prototype.visitEmbeddedTemplate=function(e,t){var n=this.view.nodes.length,o="_anchor_"+n;this.view.fields.push(new c.a(o,c.B(this.view.genConfig.renderTypes.renderComment))),this.view.createMethod.addStmt(c.c.prop(o).set(h.c.renderer.callMethod("createTemplateAnchor",[this._getParentRenderNode(t),this.view.createMethod.resetDebugInfoExpr(n,e)])).toStmt());var r=c.c.prop(o),i=e.variables.map(function(e){return[e.value.length>0?e.value:b,e.name]}),a=e.directives.map(function(e){return e.directive}),s=new g.a(t,this.view,n,r,e,null,a,e.providers,e.hasViewContainer,(!0),e.references);this.view.nodes.push(s),this.nestedViewCount++;var u=new f.c(this.view.component,this.view.genConfig,this.view.pipeMetas,c.k,this.view.animations,this.view.viewIndex+this.nestedViewCount,s,i,this.targetDependencies);return this.nestedViewCount+=buildView(u,e.children,this.targetDependencies),s.beforeChildren(),this._addRootNodeAndProject(s),s.afterChildren(0),null},ViewBuilderVisitor.prototype.visitAttr=function(e,t){return null},ViewBuilderVisitor.prototype.visitDirective=function(e,t){return null},ViewBuilderVisitor.prototype.visitEvent=function(e,t){return null},ViewBuilderVisitor.prototype.visitReference=function(e,t){return null},ViewBuilderVisitor.prototype.visitVariable=function(e,t){return null},ViewBuilderVisitor.prototype.visitDirectiveProperty=function(e,t){return null},ViewBuilderVisitor.prototype.visitElementProperty=function(e,t){return null},ViewBuilderVisitor}()},function(e,t,n){"use strict";function prepareFinalAnimationStyles(e,t,o){void 0===o&&(o=null);var i={};return Object.keys(t).forEach(function(e){var n=t[e];i[e]=n==a.a?o:n.toString()}),Object.keys(e).forEach(function(e){n.i(r.d)(i[e])||(i[e]=o)}),i}function balanceAnimationKeyframes(e,t,i){var s=i.length-1,u=i[0],l=flattenStyles(u.styles.styles),c={},d=!1;Object.keys(e).forEach(function(t){var n=e[t];l[t]||(l[t]=n,c[t]=n,d=!0)});var p=o.e.merge({},l),g=i[s];g.styles.styles.unshift(t);var f=flattenStyles(g.styles.styles),h={},m=!1;return Object.keys(p).forEach(function(e){n.i(r.d)(f[e])||(h[e]=a.a,m=!0)}),m&&g.styles.styles.push(h),Object.keys(f).forEach(function(e){n.i(r.d)(l[e])||(c[e]=a.a,d=!0)}),d&&u.styles.styles.push(c),collectAndResolveStyles(e,[t]),i}function clearStyles(e){var t={};return Object.keys(e).forEach(function(e){t[e]=null}),t}function collectAndResolveStyles(e,t){return t.map(function(t){var o={};return Object.keys(t).forEach(function(s){var u=t[s];u==i.a&&(u=e[s],n.i(r.d)(u)||(u=a.a)),e[s]=u,o[s]=u}),o})}function renderStyles(e,t,n){Object.keys(n).forEach(function(o){t.setElementStyle(e,o,n[o])})}function flattenStyles(e){var t={};return e.forEach(function(e){Object.keys(e).forEach(function(n){t[n]=e[n]})}),t}var o=n(132),r=n(8),i=n(371),a=n(378);t.a=prepareFinalAnimationStyles,t.b=balanceAnimationKeyframes,t.d=clearStyles,t.f=collectAndResolveStyles,t.e=renderStyles,t.c=flattenStyles},function(e,t,n){"use strict";var o=n(377);n.d(t,"a",function(){return r});var r=function(){function AnimationTransition(e,t,n,o){this._player=e,this._fromState=t,this._toState=n,this._totalTime=o}return AnimationTransition.prototype._createEvent=function(e){return new o.a({fromState:this._fromState,toState:this._toState,totalTime:this._totalTime,phaseName:e})},AnimationTransition.prototype.onStart=function(e){var t=this,n=Zone.current.wrap(function(){return e(t._createEvent("start"))},"player.onStart");this._player.onStart(n)},AnimationTransition.prototype.onDone=function(e){var t=this,n=Zone.current.wrap(function(){return e(t._createEvent("done"))},"player.onDone");this._player.onDone(n)},AnimationTransition}()},function(e,t,n){"use strict";var o=n(8);n.d(t,"a",function(){return r});var r=function(){function ViewAnimationMap(){this._map=new Map,this._allPlayers=[]}return ViewAnimationMap.prototype.find=function(e,t){var r=this._map.get(e);if(n.i(o.d)(r))return r[t]},ViewAnimationMap.prototype.findAllPlayersByElement=function(e){var t=this._map.get(e);return t?Object.keys(t).map(function(e){return t[e]}):[]},ViewAnimationMap.prototype.set=function(e,t,r){var i=this._map.get(e);n.i(o.d)(i)||(i={});var a=i[t];n.i(o.d)(a)&&this.remove(e,t),i[t]=r,this._allPlayers.push(r),this._map.set(e,i)},ViewAnimationMap.prototype.getAllPlayers=function(){return this._allPlayers},ViewAnimationMap.prototype.remove=function(e,t,n){void 0===n&&(n=null);var o=this._map.get(e);if(o){var r=o[t];if(!n||r===n){delete o[t];var i=this._allPlayers.indexOf(r);this._allPlayers.splice(i,1),0===Object.keys(o).length&&this._map.delete(e)}}},ViewAnimationMap}()},function(e,t,n){"use strict";function _iterableDiffersFactory(){return s.b}function _keyValueDiffersFactory(){return s.c}function _localeFactory(e){return e||"en-US"}var o=n(374),r=n(255),i=n(256),a=n(176),s=n(177),u=n(108),l=n(386),c=n(133),d=n(184),p=n(394);n.d(t,"a",function(){return g});var g=function(){function ApplicationModule(){}return ApplicationModule.decorators=[{type:p.a,args:[{providers:[i.d,{provide:i.e,useExisting:i.d},r.a,c.b,a.c,d.ViewUtils,o.a,{provide:s.d,useFactory:_iterableDiffersFactory},{provide:s.e,useFactory:_keyValueDiffersFactory},{provide:l.a,useFactory:_localeFactory,deps:[[new u.b(l.a),new u.c,new u.e]]}]}]}],ApplicationModule.ctorParameters=function(){return[]},ApplicationModule}()},function(e,t,n){"use strict";var o=n(177);n.d(t,"a",function(){return o.g}),n.d(t,"b",function(){return o.h}),n.d(t,"g",function(){return o.k}),n.d(t,"h",function(){return o.l}),n.d(t,"d",function(){return o.d}),n.d(t,"i",function(){return o.m}),n.d(t,"e",function(){return o.e}),n.d(t,"c",function(){return o.i}),n.d(t,"f",function(){return o.j})},function(e,t,n){"use strict";var o=n(394),r=n(400),i=n(663),a=n(41),s=n(256),u=n(176),l=n(255),c=n(664),d=n(662),p=n(650),g=n(383),f=n(268),h=n(645),m=n(660),y=n(386),b=n(644),v=n(185),_=n(269),E=n(263),T=n(385),S=n(647),A=n(378),M=n(377),C=n(254),k=n(376),R=n(373),N=n(399);n.d(t,"f",function(){return o.c}),n.d(t,"Z",function(){return o.o}),n.d(t,"_0",function(){return o.p}),n.d(t,"F",function(){return o.h}),n.d(t,"_1",function(){return o.q}),n.d(t,"_2",function(){return o.r}),n.d(t,"G",function(){return o.i}),n.d(t,"H",function(){return o.j}),n.d(t,"D",function(){return o.f}),n.d(t,"E",function(){return o.g}),n.d(t,"B",function(){return o.d}),n.d(t,"C",function(){return o.e}),n.d(t,"J",function(){return o.k}),n.d(t,"_57",function(){return o.s}),n.d(t,"_58",function(){return o.t}),n.d(t,"_59",function(){return o.u}),n.d(t,"_60",function(){return o.v}),n.d(t,"_61",function(){return o.w}),n.d(t,"_62",function(){return o.x}),n.d(t,"_63",function(){return o.y}),n.d(t,"_64",function(){return o.z}),n.d(t,"Y",function(){return o.n}),n.d(t,"X",function(){return o.m}),n.d(t,"I",function(){return o.a}),n.d(t,"c",function(){return o.b}),n.d(t,"V",function(){return o.l}),n.d(t,"a",function(){return r.b}),n.d(t,"_36",function(){return r.a}),n.d(t,"_66",function(){return i.a}),n.d(t,"_67",function(){return a.k}),n.d(t,"A",function(){return a.h}),n.d(t,"q",function(){return a.g}),n.d(t,"_14",function(){return a.f}),n.d(t,"_68",function(){return a.l}),n.d(t,"_69",function(){return a.m}),n.d(t,"w",function(){return a.a}),n.d(t,"y",function(){return a.c}),n.d(t,"x",function(){return a.d}),n.d(t,"R",function(){return a.b}),n.d(t,"T",function(){return a.j}),n.d(t,"U",function(){return a.e}),n.d(t,"S",function(){return a.i}),n.d(t,"_65",function(){return s.l}),n.d(t,"_39",function(){return s.j}),n.d(t,"_38",function(){return s.i}),n.d(t,"_40",function(){return s.b}),n.d(t,"_28",function(){return s.e}),n.d(t,"_41",function(){return s.k}),n.d(t,"e",function(){return s.f}),n.d(t,"_16",function(){return s.c}),n.d(t,"_31",function(){return s.g}),n.d(t,"_37",function(){return s.h}),n.d(t,"_27",function(){return u.e}),n.d(t,"z",function(){return u.d}),n.d(t,"_19",function(){return u.a}),n.d(t,"_42",function(){return u.b}),n.d(t,"_43",function(){return l.b}),n.d(t,"_44",function(){return l.a}),n.d(t,"_26",function(){return c.a}),n.d(t,"j",function(){return d.a}),n.d(t,"r",function(){return d.b}),n.d(t,"_30",function(){return d.c}),n.d(t,"_15",function(){return p.k}),n.d(t,"_12",function(){return p.j}),n.d(t,"_18",function(){return p.l}),n.d(t,"_11",function(){return p.i}),n.d(t,"n",function(){return p.f}),n.d(t,"o",function(){return p.g}),n.d(t,"m",function(){return p.e}),n.d(t,"g",function(){return p.a}),n.d(t,"p",function(){return p.h}),n.d(t,"_70",function(){return p.m}),n.d(t,"_71",function(){return p.n}),n.d(t,"_72",function(){return p.o}),n.d(t,"k",function(){return p.c}),n.d(t,"_73",function(){return p.p}),n.d(t,"_74",function(){return p.q}),n.d(t,"l",function(){return p.d}),n.d(t,"h",function(){return p.b}),n.d(t,"_75",function(){return p.r}),n.d(t,"_76",function(){return p.s}),n.d(t,"_45",function(){return g.a}),n.d(t,"_47",function(){return g.g}),n.d(t,"_29",function(){return g.c}),n.d(t,"_46",function(){return g.d}),n.d(t,"_34",function(){return f.a}),n.d(t,"_48",function(){return f.b}),n.d(t,"_25",function(){return f.c}),n.d(t,"i",function(){return h.b}),n.d(t,"_77",function(){return h.g}),n.d(t,"_78",function(){return h.h}),n.d(t,"d",function(){return h.a}),n.d(t,"_79",function(){return h.i}),n.d(t,"_22",function(){return h.e}),n.d(t,"s",function(){return h.c}),n.d(t,"_23",function(){return h.f}),n.d(t,"_21",function(){return h.d}),n.d(t,"_17",function(){return m.a}),n.d(t,"_13",function(){return y.c}),n.d(t,"u",function(){return y.a}),n.d(t,"v",function(){return y.b}),n.d(t,"_35",function(){return b.a}),n.d(t,"_49",function(){return v.b}),n.d(t,"_50",function(){return v.a}),n.d(t,"_51",function(){return v.c}),n.d(t,"_52",function(){return v.d}),n.d(t,"W",function(){return _.b}),n.d(t,"_20",function(){return E.a}),n.d(t,"_33",function(){return T.a}),n.d(t,"b",function(){return S.a}),n.d(t,"_24",function(){return A.a}),n.d(t,"_80",function(){return A.q}),n.d(t,"_81",function(){return A.r}),n.d(t,"K",function(){return A.b}),n.d(t,"L",function(){return A.c}),n.d(t,"_82",function(){return A.s}),n.d(t,"N",function(){return A.e}),n.d(t,"M",function(){return A.d}),n.d(t,"O",function(){return A.f}),n.d(t,"P",function(){return A.g}),n.d(t,"_83",function(){return A.t}),n.d(t,"Q",function(){return A.h}),n.d(t,"_7",function(){return A.m}),n.d(t,"_10",function(){return A.p}),n.d(t,"_9",function(){return A.o}),n.d(t,"_6",function(){return A.l}),n.d(t,"_4",function(){return A.j}),n.d(t,"_8",function(){return A.n}),n.d(t,"_5",function(){return A.k}),n.d(t,"_3",function(){return A.i}),n.d(t,"_53",function(){return M.a}),n.d(t,"_54",function(){return C.b}),n.d(t,"_55",function(){return k.a}),n.d(t,"_56",function(){return R.a}),n.d(t,"_32",function(){return N.a}),n.d(t,"t",function(){return N.b})},function(e,t,n){"use strict";var o=n(371),r=n(372),i=n(373),a=n(254),s=n(375),u=n(641),l=n(376),c=n(642),d=n(176),p=n(178),g=n(179),f=n(258),h=n(648),m=n(262),y=n(133),b=n(264),v=n(181),_=n(387),E=n(389),T=n(390),S=n(391),A=n(655),M=n(656),C=n(183),k=n(184),R=n(395),N=n(396),O=n(265),D=n(397),w=n(266),I=n(267),x=n(109),B=n(270);n.d(t,"a",function(){return L});var L={isDefaultChangeDetectionStrategy:g.c,ChangeDetectorStatus:g.b,constructDependencies:m.b,LifecycleHooks:R.a,LIFECYCLE_HOOKS_VALUES:R.b,ReflectorReader:w.a,CodegenComponentFactoryResolver:v.b,ComponentRef_:b.b,ViewContainer:M.a,AppView:A.a,DebugAppView:A.b,NgModuleInjector:E.a,registerModuleFactory:T.a,ViewType:C.a,view_utils:k,ViewMetadata:N.a,DebugContext:_.a,StaticNodeDebugInfo:_.b,devModeEqual:p.b,UNINITIALIZED:p.a,ValueUnwrapper:p.c,RenderDebugInfo:I.c,TemplateRef_:S.a,ReflectionCapabilities:D.a,makeDecorator:x.b,DebugDomRootRenderer:h.a,Console:f.a,reflector:O.a,Reflector:O.b,NoOpAnimationPlayer:a.a,AnimationPlayer:a.b,AnimationSequencePlayer:s.a,AnimationGroupPlayer:r.a,AnimationKeyframe:i.a,prepareFinalAnimationStyles:u.a,balanceAnimationKeyframes:u.b,flattenStyles:u.c,clearStyles:u.d,renderStyles:u.e,collectAndResolveStyles:u.f,APP_ID_RANDOM_PROVIDER:d.c,AnimationStyles:l.a,ANY_STATE:o.b,DEFAULT_STATE:o.c,EMPTY_STATE:o.d,FILL_STYLE_FLAG:o.a,ComponentStillLoadingError:y.c,isPromise:B.a,isObservable:B.b,AnimationTransition:c.a}},function(e,t,n){"use strict";var o=n(8),r=n(383);n.d(t,"a",function(){return i});var i=function(){function DebugDomRootRenderer(e){this._delegate=e}return DebugDomRootRenderer.prototype.renderComponent=function(e){return new a(this._delegate.renderComponent(e))},DebugDomRootRenderer}(),a=function(){function DebugDomRenderer(e){this._delegate=e}return DebugDomRenderer.prototype.selectRootElement=function(e,t){var o=this._delegate.selectRootElement(e,t),i=new r.a(o,null,t);return n.i(r.b)(i),o},DebugDomRenderer.prototype.createElement=function(e,t,o){var i=this._delegate.createElement(e,t,o),a=new r.a(i,n.i(r.c)(e),o);return a.name=t,n.i(r.b)(a),i},DebugDomRenderer.prototype.createViewRoot=function(e){return this._delegate.createViewRoot(e)},DebugDomRenderer.prototype.createTemplateAnchor=function(e,t){var o=this._delegate.createTemplateAnchor(e,t),i=new r.d(o,n.i(r.c)(e),t);return n.i(r.b)(i),o},DebugDomRenderer.prototype.createText=function(e,t,o){var i=this._delegate.createText(e,t,o),a=new r.d(i,n.i(r.c)(e),o);return n.i(r.b)(a),i},DebugDomRenderer.prototype.projectNodes=function(e,t){var i=n.i(r.c)(e);if(n.i(o.d)(i)&&i instanceof r.a){var a=i;t.forEach(function(e){a.addChild(n.i(r.c)(e))})}this._delegate.projectNodes(e,t)},DebugDomRenderer.prototype.attachViewAfter=function(e,t){var i=n.i(r.c)(e);if(n.i(o.d)(i)){var a=i.parent;if(t.length>0&&n.i(o.d)(a)){var s=[];t.forEach(function(e){return s.push(n.i(r.c)(e))}),a.insertChildrenAfter(i,s)}}this._delegate.attachViewAfter(e,t)},DebugDomRenderer.prototype.detachView=function(e){e.forEach(function(e){var t=n.i(r.c)(e);n.i(o.d)(t)&&n.i(o.d)(t.parent)&&t.parent.removeChild(t)}),this._delegate.detachView(e)},DebugDomRenderer.prototype.destroyView=function(e,t){t=t||[],t.forEach(function(e){n.i(r.e)(n.i(r.c)(e))}),this._delegate.destroyView(e,t)},DebugDomRenderer.prototype.listen=function(e,t,i){var a=n.i(r.c)(e);return n.i(o.d)(a)&&a.listeners.push(new r.f(t,i)),this._delegate.listen(e,t,i)},DebugDomRenderer.prototype.listenGlobal=function(e,t,n){return this._delegate.listenGlobal(e,t,n)},DebugDomRenderer.prototype.setElementProperty=function(e,t,i){var a=n.i(r.c)(e);n.i(o.d)(a)&&a instanceof r.a&&(a.properties[t]=i),this._delegate.setElementProperty(e,t,i)},DebugDomRenderer.prototype.setElementAttribute=function(e,t,i){var a=n.i(r.c)(e);n.i(o.d)(a)&&a instanceof r.a&&(a.attributes[t]=i),this._delegate.setElementAttribute(e,t,i)},DebugDomRenderer.prototype.setBindingDebugInfo=function(e,t,n){this._delegate.setBindingDebugInfo(e,t,n)},DebugDomRenderer.prototype.setElementClass=function(e,t,i){var a=n.i(r.c)(e);n.i(o.d)(a)&&a instanceof r.a&&(a.classes[t]=i),this._delegate.setElementClass(e,t,i)},DebugDomRenderer.prototype.setElementStyle=function(e,t,i){var a=n.i(r.c)(e);n.i(o.d)(a)&&a instanceof r.a&&(a.styles[t]=i),this._delegate.setElementStyle(e,t,i)},DebugDomRenderer.prototype.invokeElementMethod=function(e,t,n){this._delegate.invokeElementMethod(e,t,n)},DebugDomRenderer.prototype.setText=function(e,t){this._delegate.setText(e,t)},DebugDomRenderer.prototype.animate=function(e,t,n,o,r,i,a){return void 0===a&&(a=[]),this._delegate.animate(e,t,n,o,r,i,a)},DebugDomRenderer}()},function(e,t,n){"use strict";function _mapProviders(e,t){for(var n=new Array(e._providers.length),o=0;o<e._providers.length;++o)n[o]=t(e.getProviderAtIndex(o));return n}var o=n(131),r=n(108),i=n(384),a=n(261),s=n(262);n.d(t,"a",function(){return l});var u=new Object,l=function(){function ReflectiveInjector(){}return ReflectiveInjector.resolve=function(e){return n.i(s.a)(e)},ReflectiveInjector.resolveAndCreate=function(e,t){void 0===t&&(t=null);var n=ReflectiveInjector.resolve(e);return ReflectiveInjector.fromResolvedProviders(n,t)},ReflectiveInjector.fromResolvedProviders=function(e,t){return void 0===t&&(t=null),new c(e,t)},ReflectiveInjector.prototype.parent=function(){},ReflectiveInjector.prototype.resolveAndCreateChild=function(e){},ReflectiveInjector.prototype.createChildFromResolved=function(e){},ReflectiveInjector.prototype.resolveAndInstantiate=function(e){},ReflectiveInjector.prototype.instantiateResolved=function(e){},ReflectiveInjector.prototype.get=function(e,t){},ReflectiveInjector}(),c=function(){function ReflectiveInjector_(e,t){void 0===t&&(t=null),this._constructionCounter=0,this._providers=e,this._parent=t;var n=e.length;this.keyIds=new Array(n),this.objs=new Array(n);for(var o=0;o<n;o++)this.keyIds[o]=e[o].key.id,this.objs[o]=u}return ReflectiveInjector_.prototype.get=function(e,t){return void 0===t&&(t=o.a),this._getByKey(a.a.get(e),null,t)},Object.defineProperty(ReflectiveInjector_.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),ReflectiveInjector_.prototype.resolveAndCreateChild=function(e){var t=l.resolve(e);return this.createChildFromResolved(t)},ReflectiveInjector_.prototype.createChildFromResolved=function(e){var t=new ReflectiveInjector_(e);return t._parent=this,t},ReflectiveInjector_.prototype.resolveAndInstantiate=function(e){return this.instantiateResolved(l.resolve([e])[0])},ReflectiveInjector_.prototype.instantiateResolved=function(e){return this._instantiateProvider(e)},ReflectiveInjector_.prototype.getProviderAtIndex=function(e){if(e<0||e>=this._providers.length)throw new i.d(e);return this._providers[e]},ReflectiveInjector_.prototype._new=function(e){if(this._constructionCounter++>this._getMaxNumberOfObjects())throw new i.e(this,e.key);return this._instantiateProvider(e)},ReflectiveInjector_.prototype._getMaxNumberOfObjects=function(){return this.objs.length},ReflectiveInjector_.prototype._instantiateProvider=function(e){if(e.multiProvider){for(var t=new Array(e.resolvedFactories.length),n=0;n<e.resolvedFactories.length;++n)t[n]=this._instantiate(e,e.resolvedFactories[n]);return t}return this._instantiate(e,e.resolvedFactories[0])},ReflectiveInjector_.prototype._instantiate=function(e,t){var n,o=this,r=t.factory;try{n=t.dependencies.map(function(e){return o._getByReflectiveDependency(e)})}catch(a){throw(a instanceof i.f||a instanceof i.g)&&a.addKey(this,e.key),a}var s;try{s=r.apply(void 0,n)}catch(a){throw new i.g(this,a,a.stack,e.key)}return s},ReflectiveInjector_.prototype._getByReflectiveDependency=function(e){return this._getByKey(e.key,e.visibility,e.optional?null:o.a)},ReflectiveInjector_.prototype._getByKey=function(e,t,n){return e===d?this:t instanceof r.d?this._getByKeySelf(e,n):this._getByKeyDefault(e,n,t)},ReflectiveInjector_.prototype._getObjByKeyId=function(e){for(var t=0;t<this.keyIds.length;t++)if(this.keyIds[t]===e)return this.objs[t]===u&&(this.objs[t]=this._new(this._providers[t])),this.objs[t];return u},ReflectiveInjector_.prototype._throwOrNull=function(e,t){if(t!==o.a)return t;throw new i.h(this,e)},ReflectiveInjector_.prototype._getByKeySelf=function(e,t){var n=this._getObjByKeyId(e.id);return n!==u?n:this._throwOrNull(e,t)},ReflectiveInjector_.prototype._getByKeyDefault=function(e,t,n){var o;for(o=n instanceof r.e?this._parent:this;o instanceof ReflectiveInjector_;){var i=o,a=i._getObjByKeyId(e.id);if(a!==u)return a;o=i._parent}return null!==o?o.get(e.token,t):this._throwOrNull(e,t)},Object.defineProperty(ReflectiveInjector_.prototype,"displayName",{get:function(){var e=_mapProviders(this,function(e){return' "'+e.key.displayName+'" '}).join(", ");return"ReflectiveInjector(providers: ["+e+"])"},enumerable:!0,configurable:!0}),ReflectiveInjector_.prototype.toString=function(){return this.displayName},ReflectiveInjector_}(),d=a.a.get(o.b)},function(e,t,n){"use strict";var o=n(133),r=n(264),i=n(181),a=n(182),s=n(389),u=n(390),l=n(653),c=n(654),d=n(391),p=n(392),g=n(393);n.d(t,"k",function(){return o.e}),n.d(t,"l",function(){return o.a}),n.d(t,"i",function(){return o.d}),n.d(t,"j",function(){return o.b}),n.d(t,"f",function(){return r.a}),n.d(t,"g",function(){return r.c}),n.d(t,"e",function(){return i.a}),n.d(t,"a",function(){return a.a}),n.d(t,"h",function(){return s.b}),n.d(t,"m",function(){return s.c}),n.d(t,"n",function(){return u.b}),n.d(t,"o",function(){return u.c}),n.d(t,"c",function(){return l.a}),n.d(t,"p",function(){return c.a}),n.d(t,"q",function(){return c.b}),n.d(t,"d",function(){return d.b}),n.d(t,"b",function(){return p.b}),n.d(t,"r",function(){return g.b}),n.d(t,"s",function(){return g.c})},function(e,t,n){"use strict";function _recursePlayers(e,t){e instanceof o.a||e instanceof r.a?e.players.forEach(function(e){return _recursePlayers(e,t)}):t.push(e)}var o=n(372),r=n(375),i=n(643);n.d(t,"a",function(){return a});var a=function(){function AnimationViewContext(e){this._animationQueue=e,this._players=new i.a}return AnimationViewContext.prototype.onAllActiveAnimationsDone=function(e){var t=this._players.getAllPlayers();t.length?new o.a(t).onDone(function(){return e()}):e()},AnimationViewContext.prototype.queueAnimation=function(e,t,n){var o=this;this._animationQueue.enqueue(n),this._players.set(e,t,n),n.onDone(function(){return o._players.remove(e,t,n)})},AnimationViewContext.prototype.getAnimationPlayers=function(e,t){void 0===t&&(t=null);var n=[];if(t){var o=this._players.find(e,t);o&&_recursePlayers(o,n)}else this._players.findAllPlayersByElement(e).forEach(function(e){return _recursePlayers(e,n)});return n},AnimationViewContext}()},function(e,t,n){"use strict";var o=n(131);n.d(t,"a",function(){return i});var r=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},i=function(e){function ElementInjector(t,n){e.call(this),this._view=t,this._nodeIndex=n}return r(ElementInjector,e),ElementInjector.prototype.get=function(e,t){return void 0===t&&(t=o.a),this._view.injectorGet(e,this._nodeIndex,t)},ElementInjector}(o.b)},function(e,t,n){"use strict";var o=n(263),r=n(132),i=n(8);n.d(t,"a",function(){return a});var a=function(){function QueryList(){this._dirty=!0,this._results=[],this._emitter=new o.a}return Object.defineProperty(QueryList.prototype,"changes",{get:function(){return this._emitter},enumerable:!0,configurable:!0}),Object.defineProperty(QueryList.prototype,"length",{get:function(){return this._results.length},enumerable:!0,configurable:!0}),Object.defineProperty(QueryList.prototype,"first",{get:function(){return this._results[0]},enumerable:!0,configurable:!0}),Object.defineProperty(QueryList.prototype,"last",{get:function(){return this._results[this.length-1]},enumerable:!0,configurable:!0}),QueryList.prototype.map=function(e){return this._results.map(e)},QueryList.prototype.filter=function(e){return this._results.filter(e)},QueryList.prototype.find=function(e){return this._results.find(e)},QueryList.prototype.reduce=function(e,t){return this._results.reduce(e,t)},QueryList.prototype.forEach=function(e){this._results.forEach(e)},QueryList.prototype.some=function(e){return this._results.some(e)},QueryList.prototype.toArray=function(){return this._results.slice()},QueryList.prototype[n.i(i.f)()]=function(){return this._results[n.i(i.f)()]()},QueryList.prototype.toString=function(){return this._results.toString()},QueryList.prototype.reset=function(e){this._results=r.d.flatten(e),this._dirty=!1},QueryList.prototype.notifyOnChanges=function(){this._emitter.emit(this)},QueryList.prototype.setDirty=function(){this._dirty=!0},Object.defineProperty(QueryList.prototype,"dirty",{get:function(){return this._dirty},enumerable:!0,configurable:!0}),QueryList}()},function(e,t,n){
"use strict";function checkNotEmpty(e,t,n){if(!e)throw new Error("Cannot find '"+n+"' in '"+t+"'");return e}var o=n(41),r=n(133);n.d(t,"b",function(){return s}),n.d(t,"a",function(){return l});var i="#",a="NgFactory",s=function(){function SystemJsNgModuleLoaderConfig(){}return SystemJsNgModuleLoaderConfig}(),u={factoryPathPrefix:"",factoryPathSuffix:".ngfactory"},l=function(){function SystemJsNgModuleLoader(e,t){this._compiler=e,this._config=t||u}return SystemJsNgModuleLoader.prototype.load=function(e){var t=this._compiler instanceof r.b;return t?this.loadFactory(e):this.loadAndCompile(e)},SystemJsNgModuleLoader.prototype.loadAndCompile=function(e){var t=this,o=e.split(i),r=o[0],a=o[1];return void 0===a&&(a="default"),n(527)(r).then(function(e){return e[a]}).then(function(e){return checkNotEmpty(e,r,a)}).then(function(e){return t._compiler.compileModuleAsync(e)})},SystemJsNgModuleLoader.prototype.loadFactory=function(e){var t=e.split(i),o=t[0],r=t[1],s=a;return void 0===r&&(r="default",s=""),n(527)(this._config.factoryPathPrefix+o+this._config.factoryPathSuffix).then(function(e){return e[r+s]}).then(function(e){return checkNotEmpty(e,o,r)})},SystemJsNgModuleLoader.decorators=[{type:o.b}],SystemJsNgModuleLoader.ctorParameters=function(){return[{type:r.b},{type:s,decorators:[{type:o.d}]}]},SystemJsNgModuleLoader}()},function(e,t,n){"use strict";var o=n(177),r=n(131),i=n(8),a=n(185),s=n(651),u=n(387),l=n(652),c=n(388),d=n(393),p=n(183),g=n(184);n.d(t,"a",function(){return b}),n.d(t,"b",function(){return v});var f=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},h=n.i(a.b)("AppView#check(ascii id)"),m=new Object,y=new Object,b=function(){function AppView(e,t,n,o,r,i,a,s,u){void 0===u&&(u=null),this.clazz=e,this.componentType=t,this.type=n,this.viewUtils=o,this.parentView=r,this.parentIndex=i,this.parentElement=a,this.cdMode=s,this.declaredViewContainer=u,this.numberOfChecks=0,this.ref=new d.a(this,o.animationQueue),n===p.a.COMPONENT||n===p.a.HOST?this.renderer=o.renderComponent(t):this.renderer=r.renderer,this._directRenderer=this.renderer.directRenderer}return Object.defineProperty(AppView.prototype,"animationContext",{get:function(){return this._animationContext||(this._animationContext=new s.a(this.viewUtils.animationQueue)),this._animationContext},enumerable:!0,configurable:!0}),Object.defineProperty(AppView.prototype,"destroyed",{get:function(){return this.cdMode===o.f.Destroyed},enumerable:!0,configurable:!0}),AppView.prototype.create=function(e){return this.context=e,this.createInternal(null)},AppView.prototype.createHostView=function(e,t,o){return this.context=m,this._hasExternalHostElement=n.i(i.d)(e),this._hostInjector=t,this._hostProjectableNodes=o,this.createInternal(e)},AppView.prototype.createInternal=function(e){return null},AppView.prototype.createEmbeddedViewInternal=function(e){return null},AppView.prototype.init=function(e,t,n){this.lastRootNode=e,this.allNodes=t,this.disposables=n,this.type===p.a.COMPONENT&&this.dirtyParentQueriesInternal()},AppView.prototype.injectorGet=function(e,t,o){void 0===o&&(o=r.a);for(var a=y,s=this;a===y;)n.i(i.d)(t)&&(a=s.injectorGetInternal(e,t,y)),a===y&&s.type===p.a.HOST&&(a=s._hostInjector.get(e,o)),t=s.parentIndex,s=s.parentView;return a},AppView.prototype.injectorGetInternal=function(e,t,n){return n},AppView.prototype.injector=function(e){return new l.a(this,e)},AppView.prototype.detachAndDestroy=function(){this.viewContainer?this.viewContainer.detachView(this.viewContainer.nestedViews.indexOf(this)):this.appRef?this.appRef.detachView(this.ref):this._hasExternalHostElement&&this.detach(),this.destroy()},AppView.prototype.destroy=function(){var e=this;if(this.cdMode!==o.f.Destroyed){var t=this.type===p.a.COMPONENT?this.parentElement:null;if(this.disposables)for(var n=0;n<this.disposables.length;n++)this.disposables[n]();this.destroyInternal(),this.dirtyParentQueriesInternal(),this._animationContext?this._animationContext.onAllActiveAnimationsDone(function(){return e.renderer.destroyView(t,e.allNodes)}):this.renderer.destroyView(t,this.allNodes),this.cdMode=o.f.Destroyed}},AppView.prototype.destroyInternal=function(){},AppView.prototype.detachInternal=function(){},AppView.prototype.detach=function(){var e=this;if(this.detachInternal(),this._animationContext?this._animationContext.onAllActiveAnimationsDone(function(){return e._renderDetach()}):this._renderDetach(),this.declaredViewContainer&&this.declaredViewContainer!==this.viewContainer&&this.declaredViewContainer.projectedViews){var t=this.declaredViewContainer.projectedViews,n=t.indexOf(this);n>=t.length-1?t.pop():t.splice(n,1)}this.appRef=null,this.viewContainer=null,this.dirtyParentQueriesInternal()},AppView.prototype._renderDetach=function(){this._directRenderer?this.visitRootNodesInternal(this._directRenderer.remove,null):this.renderer.detachView(this.flatRootNodes)},AppView.prototype.attachToAppRef=function(e){if(this.viewContainer)throw new Error("This view is already attached to a ViewContainer!");this.appRef=e,this.dirtyParentQueriesInternal()},AppView.prototype.attachAfter=function(e,t){if(this.appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._renderAttach(e,t),this.viewContainer=e,this.declaredViewContainer&&this.declaredViewContainer!==e&&(this.declaredViewContainer.projectedViews||(this.declaredViewContainer.projectedViews=[]),this.declaredViewContainer.projectedViews.push(this)),this.dirtyParentQueriesInternal()},AppView.prototype.moveAfter=function(e,t){this._renderAttach(e,t),this.dirtyParentQueriesInternal()},AppView.prototype._renderAttach=function(e,t){var n=t?t.lastRootNode:e.nativeElement;if(this._directRenderer){var o=this._directRenderer.nextSibling(n);if(o)this.visitRootNodesInternal(this._directRenderer.insertBefore,o);else{var r=this._directRenderer.parentElement(n);r&&this.visitRootNodesInternal(this._directRenderer.appendChild,r)}}else this.renderer.attachViewAfter(n,this.flatRootNodes)},Object.defineProperty(AppView.prototype,"changeDetectorRef",{get:function(){return this.ref},enumerable:!0,configurable:!0}),Object.defineProperty(AppView.prototype,"flatRootNodes",{get:function(){var e=[];return this.visitRootNodesInternal(g.addToArray,e),e},enumerable:!0,configurable:!0}),AppView.prototype.projectNodes=function(e,t){if(this._directRenderer)this.visitProjectedNodes(t,this._directRenderer.appendChild,e);else{var n=[];this.visitProjectedNodes(t,g.addToArray,n),this.renderer.projectNodes(e,n)}},AppView.prototype.visitProjectedNodes=function(e,t,n){switch(this.type){case p.a.EMBEDDED:this.parentView.visitProjectedNodes(e,t,n);break;case p.a.COMPONENT:if(this.parentView.type===p.a.HOST)for(var o=this.parentView._hostProjectableNodes[e]||[],r=0;r<o.length;r++)t(o[r],n);else this.parentView.visitProjectableNodesInternal(this.parentIndex,e,t,n)}},AppView.prototype.visitRootNodesInternal=function(e,t){},AppView.prototype.visitProjectableNodesInternal=function(e,t,n,o){},AppView.prototype.dirtyParentQueriesInternal=function(){},AppView.prototype.internalDetectChanges=function(e){this.cdMode!==o.f.Detached&&this.detectChanges(e)},AppView.prototype.detectChanges=function(e){var t=h(this.clazz);this.cdMode!==o.f.Checked&&this.cdMode!==o.f.Errored&&(this.cdMode===o.f.Destroyed&&this.throwDestroyedError("detectChanges"),this.detectChangesInternal(e),this.cdMode===o.f.CheckOnce&&(this.cdMode=o.f.Checked),this.numberOfChecks++,n.i(a.a)(t))},AppView.prototype.detectChangesInternal=function(e){},AppView.prototype.markAsCheckOnce=function(){this.cdMode=o.f.CheckOnce},AppView.prototype.markPathToRootAsCheckOnce=function(){for(var e=this;n.i(i.d)(e)&&e.cdMode!==o.f.Detached;)e.cdMode===o.f.Checked&&(e.cdMode=o.f.CheckOnce),e=e.type===p.a.COMPONENT?e.parentView:e.viewContainer?e.viewContainer.parentView:null},AppView.prototype.eventHandler=function(e){return e},AppView.prototype.throwDestroyedError=function(e){throw new c.b(e)},AppView}(),v=function(e){function DebugAppView(t,n,o,r,i,a,s,u,l,c){void 0===c&&(c=null),e.call(this,t,n,o,r,i,a,s,u,c),this.staticNodeDebugInfos=l,this._currentDebugContext=null}return f(DebugAppView,e),DebugAppView.prototype.create=function(t){this._resetDebug();try{return e.prototype.create.call(this,t)}catch(n){throw this._rethrowWithContext(n),n}},DebugAppView.prototype.createHostView=function(t,n,o){void 0===o&&(o=null),this._resetDebug();try{return e.prototype.createHostView.call(this,t,n,o)}catch(r){throw this._rethrowWithContext(r),r}},DebugAppView.prototype.injectorGet=function(t,n,o){this._resetDebug();try{return e.prototype.injectorGet.call(this,t,n,o)}catch(r){throw this._rethrowWithContext(r),r}},DebugAppView.prototype.detach=function(){this._resetDebug();try{e.prototype.detach.call(this)}catch(t){throw this._rethrowWithContext(t),t}},DebugAppView.prototype.destroy=function(){this._resetDebug();try{e.prototype.destroy.call(this)}catch(t){throw this._rethrowWithContext(t),t}},DebugAppView.prototype.detectChanges=function(t){this._resetDebug();try{e.prototype.detectChanges.call(this,t)}catch(n){throw this._rethrowWithContext(n),n}},DebugAppView.prototype._resetDebug=function(){this._currentDebugContext=null},DebugAppView.prototype.debug=function(e,t,n){return this._currentDebugContext=new u.a(this,e,t,n)},DebugAppView.prototype._rethrowWithContext=function(e){if(!(e instanceof c.c)&&(e instanceof c.a||(this.cdMode=o.f.Errored),n.i(i.d)(this._currentDebugContext)))throw new c.c(e,this._currentDebugContext)},DebugAppView.prototype.eventHandler=function(t){var n=this,o=e.prototype.eventHandler.call(this,t);return function(e,t){n._resetDebug();try{return o.call(n,e,t)}catch(r){throw n._rethrowWithContext(r),r}}},DebugAppView}(b)},function(e,t,n){"use strict";var o=n(182),r=n(392),i=n(183);n.d(t,"a",function(){return a});var a=function(){function ViewContainer(e,t,n,o){this.index=e,this.parentIndex=t,this.parentView=n,this.nativeElement=o}return Object.defineProperty(ViewContainer.prototype,"elementRef",{get:function(){return new o.a(this.nativeElement)},enumerable:!0,configurable:!0}),Object.defineProperty(ViewContainer.prototype,"vcRef",{get:function(){return new r.a(this)},enumerable:!0,configurable:!0}),Object.defineProperty(ViewContainer.prototype,"parentInjector",{get:function(){return this.parentView.injector(this.parentIndex)},enumerable:!0,configurable:!0}),Object.defineProperty(ViewContainer.prototype,"injector",{get:function(){return this.parentView.injector(this.index)},enumerable:!0,configurable:!0}),ViewContainer.prototype.detectChangesInNestedViews=function(e){if(this.nestedViews)for(var t=0;t<this.nestedViews.length;t++)this.nestedViews[t].detectChanges(e)},ViewContainer.prototype.destroyNestedViews=function(){if(this.nestedViews)for(var e=0;e<this.nestedViews.length;e++)this.nestedViews[e].destroy()},ViewContainer.prototype.visitNestedViewRootNodes=function(e,t){if(this.nestedViews)for(var n=0;n<this.nestedViews.length;n++)this.nestedViews[n].visitRootNodesInternal(e,t)},ViewContainer.prototype.mapNestedViews=function(e,t){var n=[];if(this.nestedViews)for(var o=0;o<this.nestedViews.length;o++){var r=this.nestedViews[o];r.clazz===e&&n.push(t(r))}if(this.projectedViews)for(var o=0;o<this.projectedViews.length;o++){var i=this.projectedViews[o];i.clazz===e&&n.push(t(i))}return n},ViewContainer.prototype.moveView=function(e,t){var n=this.nestedViews.indexOf(e);if(e.type===i.a.COMPONENT)throw new Error("Component views can't be moved!");var o=this.nestedViews;null==o&&(o=[],this.nestedViews=o),o.splice(n,1),o.splice(t,0,e);var r=t>0?o[t-1]:null;e.moveAfter(this,r)},ViewContainer.prototype.attachView=function(e,t){if(e.type===i.a.COMPONENT)throw new Error("Component views can't be moved!");var n=this.nestedViews;null==n&&(n=[],this.nestedViews=n),t>=n.length?n.push(e):n.splice(t,0,e);var o=t>0?n[t-1]:null;e.attachAfter(this,o)},ViewContainer.prototype.detachView=function(e){var t=this.nestedViews[e];if(e>=this.nestedViews.length-1?this.nestedViews.pop():this.nestedViews.splice(e,1),t.type===i.a.COMPONENT)throw new Error("Component views can't be moved!");return t.detach(),t},ViewContainer}()},function(e,t,n){"use strict";var o=n(260),r=n(109);n.d(t,"a",function(){return i}),n.d(t,"c",function(){return a}),n.d(t,"b",function(){return s}),n.d(t,"e",function(){return u}),n.d(t,"d",function(){return l}),n.d(t,"g",function(){return c}),n.d(t,"f",function(){return d});var i=new o.a("AnalyzeForEntryComponents"),a=n.i(r.a)("Attribute",[["attributeName",void 0]]),s=function(){function Query(){}return Query}(),u=n.i(r.c)("ContentChildren",[["selector",void 0],{first:!1,isViewQuery:!1,descendants:!1,read:void 0}],s),l=n.i(r.c)("ContentChild",[["selector",void 0],{first:!0,isViewQuery:!1,descendants:!0,read:void 0}],s),c=n.i(r.c)("ViewChildren",[["selector",void 0],{first:!1,isViewQuery:!0,descendants:!0,read:void 0}],s),d=n.i(r.c)("ViewChild",[["selector",void 0],{first:!0,isViewQuery:!0,descendants:!0,read:void 0}],s)},function(e,t,n){"use strict";var o=n(179),r=n(109);n.d(t,"f",function(){return i}),n.d(t,"e",function(){return a}),n.d(t,"g",function(){return s}),n.d(t,"a",function(){return u}),n.d(t,"b",function(){return l}),n.d(t,"c",function(){return c}),n.d(t,"d",function(){return d});var i=n.i(r.b)("Directive",{selector:void 0,inputs:void 0,outputs:void 0,host:void 0,providers:void 0,exportAs:void 0,queries:void 0}),a=n.i(r.b)("Component",{selector:void 0,inputs:void 0,outputs:void 0,host:void 0,exportAs:void 0,moduleId:void 0,providers:void 0,viewProviders:void 0,changeDetection:o.a.Default,queries:void 0,templateUrl:void 0,template:void 0,styleUrls:void 0,styles:void 0,animations:void 0,encapsulation:void 0,interpolation:void 0,entryComponents:void 0},i),s=n.i(r.b)("Pipe",{name:void 0,pure:!0}),u=n.i(r.c)("Input",[["bindingPropertyName",void 0]]),l=n.i(r.c)("Output",[["bindingPropertyName",void 0]]),c=n.i(r.c)("HostBinding",[["hostPropertyName",void 0]]),d=n.i(r.c)("HostListener",[["eventName",void 0],["args",[]]])},function(e,t,n){"use strict";var o=n(109);n.d(t,"c",function(){return r}),n.d(t,"b",function(){return i}),n.d(t,"a",function(){return a});var r={name:"custom-elements"},i={name:"no-errors-schema"},a=n.i(o.b)("NgModule",{providers:void 0,declarations:void 0,imports:void 0,exports:void 0,entryComponents:void 0,bootstrap:void 0,schemas:void 0,id:void 0})},function(e,t,n){"use strict";function _reflector(){return i.a}var o=n(256),r=n(258),i=n(265),a=n(266),s=n(268);n.d(t,"a",function(){return l});var u=[o.a,{provide:o.b,useExisting:o.a},{provide:i.b,useFactory:_reflector,deps:[]},{provide:a.a,useExisting:i.b},s.b,r.a],l=n.i(o.c)(null,"core",u)},function(e,t,n){"use strict";function detectWTF(){var e=o.a.wtf;return!(!e||!(r=e.trace))&&(i=r.events,!0)}function createScope(e,t){return void 0===t&&(t=null),i.createScope(e,t)}function leave(e,t){return r.leaveScope(e,t),t}function startTimeRange(e,t){return r.beginTimeRange(e,t)}function endTimeRange(e){r.endTimeRange(e)}var o=n(8);t.a=detectWTF,t.b=createScope,t.c=leave,t.d=startTimeRange,t.e=endTimeRange;var r,i},function(e,t,n){"use strict";var o=n(267);n.d(t,"a",function(){return o.b}),n.d(t,"b",function(){return o.d}),n.d(t,"c",function(){return o.a})},function(e,t,n){"use strict";var o=n(109);n.d(t,"a",function(){return o.d})},function(e,t,n){"use strict";var o=n(186);n.d(t,"a",function(){return o.a})},function(e,t,n){"use strict";var o=n(1),r=n(187),i=n(188),a=n(272),s=n(135),u=n(273),l=n(189),c=n(274),d=n(136),p=n(275),g=n(276),f=n(277),h=n(137),m=n(138),y=n(191),b=n(192),v=n(403);n(90);n.d(t,"a",function(){return E}),n.d(t,"c",function(){return T}),n.d(t,"b",function(){return S});var _=[y.b,b.b,i.a,c.a,p.a,r.a,y.a,b.a,d.a,a.a,a.b,v.a,v.b,v.c,v.d,v.e],E=[u.a,l.a,s.a],T=[g.a,h.a,f.a,m.a,m.b],S=function(){function InternalFormsSharedModule(){}return InternalFormsSharedModule.decorators=[{type:o.NgModule,args:[{declarations:_,exports:_}]}],InternalFormsSharedModule.ctorParameters=function(){return[]},InternalFormsSharedModule}()},function(e,t,n){"use strict";function normalizeValidator(e){return e.validate?function(t){return e.validate(t)}:e}function normalizeAsyncValidator(e){return e.validate?function(t){return e.validate(t)}:e}t.a=normalizeValidator,t.b=normalizeAsyncValidator},function(e,t,n){"use strict";var o=n(1),r=n(665),i=n(136),a=n(405);n.d(t,"a",function(){return s}),n.d(t,"b",function(){return u});var s=function(){function FormsModule(){}return FormsModule.decorators=[{type:o.NgModule,args:[{declarations:r.a,providers:[i.b],exports:[r.b,r.a]}]}],FormsModule.ctorParameters=function(){return[]},FormsModule}(),u=function(){function ReactiveFormsModule(){}return ReactiveFormsModule.decorators=[{type:o.NgModule,args:[{declarations:[r.c],providers:[a.a,i.b],exports:[r.b,r.c]}]}],ReactiveFormsModule.ctorParameters=function(){return[]},ReactiveFormsModule}()},function(e,t,n){"use strict";var o=n(271),r=n(134),i=n(187),a=n(57),s=n(42),u=n(188),l=n(90),c=n(272),d=n(135),p=n(273),g=n(189),f=n(136),h=n(276),m=n(277),y=n(137),b=n(138),v=n(191),_=n(192),E=n(403),T=n(405),S=n(193),A=n(49),M=n(669),C=n(667);n.d(t,"s",function(){return o.a}),n.d(t,"b",function(){return r.a}),n.d(t,"c",function(){return i.a}),n.d(t,"d",function(){return a.a}),n.d(t,"e",function(){return s.a}),n.d(t,"f",function(){return u.a}),n.d(t,"g",function(){return l.a}),n.d(t,"h",function(){return c.a}),n.d(t,"i",function(){return c.b}),n.d(t,"j",function(){return d.a}),n.d(t,"k",function(){return p.a}),n.d(t,"l",function(){return g.a}),n.d(t,"m",function(){return f.a}),n.d(t,"n",function(){return h.a}),n.d(t,"o",function(){return m.a}),n.d(t,"p",function(){return y.a}),n.d(t,"q",function(){return b.b}),n.d(t,"r",function(){return b.a}),n.d(t,"a",function(){return v.b}),n.d(t,"t",function(){return v.a}),n.d(t,"u",function(){return _.a}),n.d(t,"w",function(){return E.c}),n.d(t,"x",function(){return E.b}),n.d(t,"y",function(){return E.d}),n.d(t,"z",function(){return E.a}),n.d(t,"v",function(){return E.e}),n.d(t,"A",function(){return T.a}),n.d(t,"C",function(){return S.c}),n.d(t,"D",function(){return S.b}),n.d(t,"E",function(){return S.a}),n.d(t,"B",function(){return S.d}),n.d(t,"F",function(){return A.c}),n.d(t,"G",function(){return A.b}),n.d(t,"H",function(){return A.a}),n.d(t,"I",function(){return M.a}),n.d(t,"J",function(){return C.a}),n.d(t,"K",function(){return C.b})},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r});var r=new o.Version("2.4.10")},function(e,t,n){"use strict";function _createDefaultCookieXSRFStrategy(){return new s.a}function httpFactory(e,t){return new c.a(e,t)}function jsonpFactory(e,t){return new c.b(e,t)}var o=n(1),r=n(407),i=n(278),a=n(408),s=n(409),u=n(279),l=n(194),c=n(411),d=n(140);n.d(t,"a",function(){return p}),n.d(t,"b",function(){return g});var p=function(){function HttpModule(){}return HttpModule.decorators=[{type:o.NgModule,args:[{providers:[{provide:c.a,useFactory:httpFactory,deps:[s.b,u.a]},i.a,{provide:u.a,useClass:u.b},{provide:l.a,useClass:l.b},s.b,{provide:d.b,useFactory:_createDefaultCookieXSRFStrategy}]}]}],HttpModule.ctorParameters=function(){return[]},HttpModule}(),g=function(){function JsonpModule(){}return JsonpModule.decorators=[{type:o.NgModule,args:[{providers:[{provide:c.b,useFactory:jsonpFactory,deps:[a.a,u.a]},r.a,{provide:u.a,useClass:u.b},{provide:l.a,useClass:l.b},{provide:a.a,useClass:a.b}]}]}],JsonpModule.ctorParameters=function(){return[]},JsonpModule}()},function(e,t,n){"use strict";var o=n(278),r=n(408),i=n(409),a=n(279),s=n(194),u=n(77),l=n(139),c=n(411),d=n(670),p=n(140),g=n(412),f=n(280),h=n(196),m=n(672);n.d(t,"n",function(){return o.a}),n.d(t,"b",function(){return r.a}),n.d(t,"c",function(){return r.c}),n.d(t,"d",function(){return i.a}),n.d(t,"e",function(){return i.b}),n.d(t,"f",function(){return i.c}),n.d(t,"g",function(){return a.b}),n.d(t,"h",function(){return a.a}),n.d(t,"i",function(){return s.b}),n.d(t,"j",function(){return s.a}),n.d(t,"k",function(){return u.c}),n.d(t,"l",function(){return u.b}),n.d(t,"m",function(){return u.d}),n.d(t,"a",function(){return u.a}),n.d(t,"o",function(){return l.a}),n.d(t,"q",function(){return c.b}),n.d(t,"p",function(){return c.a}),n.d(t,"r",function(){return d.a}),n.d(t,"s",function(){return d.b}),n.d(t,"t",function(){return p.c}),n.d(t,"u",function(){return p.a}),n.d(t,"v",function(){return p.b}),n.d(t,"w",function(){return g.a}),n.d(t,"x",function(){return f.a}),n.d(t,"y",function(){return h.b}),n.d(t,"z",function(){return h.a}),n.d(t,"A",function(){return m.a})},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r});var r=new o.Version("2.4.10")},function(e,t,n){"use strict";(function(e){n.d(t,"a",function(){return r});var o;o="undefined"==typeof window?"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:e:window;var r=o;r.assert=function(e){};Object.getPrototypeOf({}),function(){function NumberWrapper(){}return NumberWrapper.parseIntAutoRadix=function(e){var t=parseInt(e);if(isNaN(t))throw new Error("Invalid integer literal when parsing "+e);return t},NumberWrapper.isNumeric=function(e){return!isNaN(e-parseFloat(e))},NumberWrapper}()}).call(t,n(55))},function(e,t,n){"use strict";var o=n(164),r=n(1),i=n(413),a=n(677),s=n(675),u=n(678);n.d(t,"b",function(){return l}),n.d(t,"c",function(){return c}),n.d(t,"d",function(){return s.a}),n.d(t,"a",function(){return u.a});var l=[{provide:o.a,useClass:a.a}],c=n.i(r.createPlatformFactory)(o.b,"browserDynamic",i.a)},function(e,t,n){"use strict";var o=n(413),r=n(414);n.d(t,"a",function(){return i});var i={INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS:o.a,ResourceLoaderImpl:r.a}},function(e,t,n){"use strict";var o=n(103);n.d(t,"a",function(){return r});var r=o.__platform_browser_private__.INTERNAL_BROWSER_PLATFORM_PROVIDERS;o.__platform_browser_private__.getDOM},function(e,t,n){"use strict";var o=n(164),r=n(673);n.d(t,"a",function(){return a});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=function(e){function CachedResourceLoader(){if(e.call(this),this._cache=r.a.$templateCache,null==this._cache)throw new Error("CachedResourceLoader: Template cache was not found in $templateCache.")}return i(CachedResourceLoader,e),CachedResourceLoader.prototype.get=function(e){return this._cache.hasOwnProperty(e)?Promise.resolve(this._cache[e]):Promise.reject("CachedResourceLoader: Did not find cached template for "+e)},CachedResourceLoader}(o.a)},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r});var r=new o.Version("2.4.10")},function(e,t,n){"use strict";var o=n(23),r=n(50);n.d(t,"a",function(){return a});var i=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},a=function(e){function GenericBrowserDomAdapter(){var t=this;e.call(this),this._animationPrefix=null,this._transitionEnd=null;try{var o=this.createElement("div",this.defaultDoc());if(n.i(r.a)(this.getStyle(o,"animationName")))this._animationPrefix="";else for(var i=["Webkit","Moz","O","ms"],a=0;a<i.length;a++)if(n.i(r.a)(this.getStyle(o,i[a]+"AnimationName"))){this._animationPrefix="-"+i[a].toLowerCase()+"-";break}var s={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};Object.keys(s).forEach(function(e){n.i(r.a)(t.getStyle(o,e))&&(t._transitionEnd=s[e])})}catch(u){this._animationPrefix=null,this._transitionEnd=null}}return i(GenericBrowserDomAdapter,e),GenericBrowserDomAdapter.prototype.getDistributedNodes=function(e){return e.getDistributedNodes()},GenericBrowserDomAdapter.prototype.resolveAndSetHref=function(e,t,n){e.href=null==n?t:t+"/../"+n},GenericBrowserDomAdapter.prototype.supportsDOMEvents=function(){return!0},GenericBrowserDomAdapter.prototype.supportsNativeShadowDOM=function(){return"function"==typeof this.defaultDoc().body.createShadowRoot},GenericBrowserDomAdapter.prototype.getAnimationPrefix=function(){return this._animationPrefix?this._animationPrefix:""},GenericBrowserDomAdapter.prototype.getTransitionEnd=function(){return this._transitionEnd?this._transitionEnd:""},GenericBrowserDomAdapter.prototype.supportsAnimation=function(){return n.i(r.a)(this._animationPrefix)&&n.i(r.a)(this._transitionEnd)},GenericBrowserDomAdapter}(o.b)},function(e,t,n){"use strict";function supportsState(){return!!window.history.pushState}t.a=supportsState},function(e,t,n){"use strict";var o=n(1),r=n(23),i=n(685),a=n(50);n.d(t,"a",function(){return u});var s=function(){function ChangeDetectionPerfRecord(e,t){this.msPerTick=e,this.numTicks=t}return ChangeDetectionPerfRecord}(),u=function(){function AngularTools(e){this.profiler=new l(e)}return AngularTools}(),l=function(){function AngularProfiler(e){this.appRef=e.injector.get(o.ApplicationRef)}return AngularProfiler.prototype.timeChangeDetection=function(e){var t=e&&e.record,o="Change Detection",u=n.i(a.a)(i.a.console.profile);t&&u&&i.a.console.profile(o);for(var l=n.i(r.a)().performanceNow(),c=0;c<5||n.i(r.a)().performanceNow()-l<500;)this.appRef.tick(),c++;var d=n.i(r.a)().performanceNow();t&&u&&i.a.console.profileEnd(o);var p=(d-l)/c;return i.a.console.log("ran "+c+" change detection cycles"),i.a.console.log(p.toFixed(2)+" ms per check"),new s(p,c)},AngularProfiler}()},function(e,t,n){"use strict";function enableDebugTools(e){return Object.assign(i.ng,new r.a(e)),e}function disableDebugTools(){i.ng&&delete i.ng.profiler}var o=n(50),r=n(681);t.b=enableDebugTools,t.a=disableDebugTools;var i=o.d},function(e,t,n){"use strict";var o=n(23),r=n(50);n.d(t,"a",function(){return i});var i=function(){function By(){}return By.all=function(){return function(e){return!0}},By.css=function(e){return function(t){return!!n.i(r.a)(t.nativeElement)&&n.i(o.a)().elementMatches(t.nativeElement,e)}},By.directive=function(e){return function(t){return t.providerTokens.indexOf(e)!==-1}},By}()},function(e,t,n){"use strict";function _computeStyle(e,t){return n.i(i.a)().getComputedStyle(e)[t]}function _copyKeyframeStyles(e){var t={};return Object.keys(e).forEach(function(n){"offset"!=n&&(t[n]=e[n])}),t}var o=n(1),r=n(50),i=n(23);n.d(t,"a",function(){return a});var a=function(){function WebAnimationsPlayer(e,t,n,o){var r=this;void 0===o&&(o=[]),this.element=e,this.keyframes=t,this.options=n,this._onDoneFns=[],this._onStartFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this.parentPlayer=null,this._duration=n.duration,this.previousStyles={},o.forEach(function(e){var t=e._captureStyles();Object.keys(t).forEach(function(e){return r.previousStyles[e]=t[e]})})}return WebAnimationsPlayer.prototype._onFinish=function(){this._finished||(this._finished=!0,this._onDoneFns.forEach(function(e){return e()}),this._onDoneFns=[])},WebAnimationsPlayer.prototype.init=function(){var e=this;if(!this._initialized){this._initialized=!0;var t=this.keyframes.map(function(t){var n={};return Object.keys(t).forEach(function(r,i){var a=t[r];a==o.AUTO_STYLE&&(a=_computeStyle(e.element,r)),void 0!=a&&(n[r]=a)}),n}),i=Object.keys(this.previousStyles);if(i.length){var a=t[0],s=[];if(i.forEach(function(t){n.i(r.a)(a[t])||s.push(t),a[t]=e.previousStyles[t]}),s.length)for(var u=function(n){var o=t[n];s.forEach(function(t){o[t]=_computeStyle(e.element,t)})},l=1;l<t.length;l++)u(l)}this._player=this._triggerWebAnimation(this.element,t,this.options),this._finalKeyframe=_copyKeyframeStyles(t[t.length-1]),this._resetDomPlayerState(),this._player.addEventListener("finish",function(){return e._onFinish()})}},WebAnimationsPlayer.prototype._triggerWebAnimation=function(e,t,n){return e.animate(t,n)},Object.defineProperty(WebAnimationsPlayer.prototype,"domPlayer",{get:function(){return this._player},enumerable:!0,configurable:!0}),WebAnimationsPlayer.prototype.onStart=function(e){this._onStartFns.push(e)},WebAnimationsPlayer.prototype.onDone=function(e){this._onDoneFns.push(e)},WebAnimationsPlayer.prototype.play=function(){this.init(),this.hasStarted()||(this._onStartFns.forEach(function(e){return e()}),this._onStartFns=[],this._started=!0),this._player.play()},WebAnimationsPlayer.prototype.pause=function(){this.init(),this._player.pause()},WebAnimationsPlayer.prototype.finish=function(){this.init(),this._onFinish(),this._player.finish()},WebAnimationsPlayer.prototype.reset=function(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1},WebAnimationsPlayer.prototype._resetDomPlayerState=function(){this._player&&this._player.cancel()},WebAnimationsPlayer.prototype.restart=function(){this.reset(),this.play()},WebAnimationsPlayer.prototype.hasStarted=function(){return this._started},WebAnimationsPlayer.prototype.destroy=function(){this._destroyed||(this._resetDomPlayerState(),this._onFinish(),this._destroyed=!0)},Object.defineProperty(WebAnimationsPlayer.prototype,"totalTime",{get:function(){return this._duration},enumerable:!0,configurable:!0}),WebAnimationsPlayer.prototype.setPosition=function(e){this._player.currentTime=e*this.totalTime},WebAnimationsPlayer.prototype.getPosition=function(){return this._player.currentTime/this.totalTime},WebAnimationsPlayer.prototype._captureStyles=function(){var e=this,t={};return this.hasStarted()&&Object.keys(this._finalKeyframe).forEach(function(n){"offset"!=n&&(t[n]=e._finished?e._finalKeyframe[n]:_computeStyle(e.element,n))}),t},WebAnimationsPlayer}()},function(e,t,n){"use strict";n.d(t,"a",function(){return o});var o="undefined"!=typeof window&&window||{};o.document,o.location,o.gc?function(){return o.gc()}:function(){return null},o.performance?o.performance:null,o.Event,o.MouseEvent,o.KeyboardEvent,o.EventTarget,o.History,o.Location,o.EventListener},function(e,t,n){"use strict";n(50);n.d(t,"a",function(){return o});var o=function(){function StringMapWrapper(){}return StringMapWrapper.merge=function(e,t){for(var n={},o=0,r=Object.keys(e);o<r.length;o++){var i=r[o];n[i]=e[i]}for(var a=0,s=Object.keys(t);a<s.length;a++){var i=s[a];n[i]=t[i]}return n},StringMapWrapper.equals=function(e,t){var n=Object.keys(e),o=Object.keys(t);if(n.length!=o.length)return!1;for(var r=0;r<n.length;r++){var i=n[r];if(e[i]!==t[i])return!1}return!0},StringMapWrapper}();(function(){function ListWrapper(){}return ListWrapper.findLast=function(e,t){for(var n=e.length-1;n>=0;n--)if(t(e[n]))return e[n];return null},ListWrapper.removeAll=function(e,t){for(var n=0;n<t.length;++n){var o=e.indexOf(t[n]);o>-1&&e.splice(o,1)}},ListWrapper.remove=function(e,t){var n=e.indexOf(t);return n>-1&&(e.splice(n,1),!0)},ListWrapper.equals=function(e,t){if(e.length!=t.length)return!1;for(var n=0;n<e.length;++n)if(e[n]!==t[n])return!1;return!0},ListWrapper.flatten=function(e){return e.reduce(function(e,t){var n=Array.isArray(t)?ListWrapper.flatten(t):t;return e.concat(n)},[])},ListWrapper})()},function(e,t,n){"use strict";var o=n(415),r=n(419),i=n(682),a=n(281),s=n(683),u=n(282),l=n(197),c=n(112),d=n(284),p=n(423),g=n(688),f=n(691);n.d(t,"i",function(){return o.e}),n.d(t,"c",function(){return o.d}),n.d(t,"d",function(){return r.a}),n.d(t,"e",function(){return i.a}),n.d(t,"f",function(){return i.b}),n.d(t,"g",function(){return a.a}),n.d(t,"h",function(){return s.a}),n.d(t,"b",function(){return u.b}),n.d(t,"j",function(){return l.a}),n.d(t,"l",function(){return c.a}),n.d(t,"k",function(){return c.c}),n.d(t,"m",function(){return d.b}),n.d(t,"n",function(){return d.c}),n.d(t,"o",function(){return p.a}),n.d(t,"a",function(){return g.a}),n.d(t,"p",function(){return f.a})},function(e,t,n){"use strict";var o=n(415),r=n(416),i=n(417),a=n(418),s=n(282),u=n(23),l=n(283),c=n(420),d=n(284),p=n(421),g=n(285),f=n(422);n.d(t,"a",function(){return h});var h={BrowserPlatformLocation:i.a,
DomAdapter:u.b,BrowserDomAdapter:r.a,BrowserGetTestability:a.a,getDOM:u.a,setRootDomAdapter:u.c,DomRootRenderer_:l.b,DomRootRenderer:l.a,NAMESPACE_URIS:l.c,shimContentAttribute:l.d,shimHostAttribute:l.e,flattenStyles:l.f,splitNamespace:l.g,isNamespaced:l.h,DomSharedStylesHost:g.a,SharedStylesHost:g.b,ELEMENT_PROBE_PROVIDERS:s.a,DomEventsPlugin:c.a,KeyEventsPlugin:p.a,HammerGesturesPlugin:d.a,initDomAdapter:o.a,INTERNAL_BROWSER_PLATFORM_PROVIDERS:o.b,BROWSER_SANITIZATION_PROVIDERS:o.c,WebAnimationsDriver:f.a}},function(e,t,n){"use strict";function getInertElement(){if(a)return a;s=n.i(r.a)();var e=s.createElement("template");if("content"in e)return e;var t=s.createHtmlDocument();if(a=s.querySelector(t,"body"),null==a){var o=s.createElement("html",t);a=s.createElement("body",t),s.appendChild(o,a),s.appendChild(t,o)}return a}function tagSet(e){for(var t={},n=0,o=e.split(",");n<o.length;n++){var r=o[n];t[r]=!0}return t}function merge(){for(var e=[],t=0;t<arguments.length;t++)e[t-0]=arguments[t];for(var n={},o=0,r=e;o<r.length;o++){var i=r[o];for(var a in i)i.hasOwnProperty(a)&&(n[a]=!0)}return n}function encodeEntities(e){return e.replace(/&/g,"&amp;").replace(_,function(e){var t=e.charCodeAt(0),n=e.charCodeAt(1);return"&#"+(1024*(t-55296)+(n-56320)+65536)+";"}).replace(E,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function stripCustomNsAttrs(e){s.attributeMap(e).forEach(function(t,n){"xmlns:ns1"!==n&&0!==n.indexOf("ns1:")||s.removeAttribute(e,n)});for(var t=0,n=s.childNodesAsList(e);t<n.length;t++){var o=n[t];s.isElementNode(o)&&stripCustomNsAttrs(o)}}function sanitizeHtml(e){try{var t=getInertElement(),r=e?String(e):"",i=5,u=r;do{if(0===i)throw new Error("Failed to sanitize html because the input is unstable");i--,r=u,s.setInnerHTML(t,r),s.defaultDoc().documentMode&&stripCustomNsAttrs(t),u=s.getInnerHTML(t)}while(r!==u);for(var l=new v,c=l.sanitizeChildren(s.getTemplateContent(t)||t),d=s.getTemplateContent(t)||t,p=0,g=s.childNodesAsList(d);p<g.length;p++){var f=g[p];s.removeChild(d,f)}return n.i(o.isDevMode)()&&l.sanitizedSomething&&s.log("WARNING: sanitizing HTML stripped some content (see http://g.co/ng/security#xss)."),c}catch(h){throw a=null,h}}var o=n(1),r=n(23),i=n(287);t.a=sanitizeHtml;var a=null,s=null,u=tagSet("area,br,col,hr,img,wbr"),l=tagSet("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),c=tagSet("rp,rt"),d=merge(c,l),p=merge(l,tagSet("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),g=merge(c,tagSet("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),f=merge(u,p,g,d),h=tagSet("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),m=tagSet("srcset"),y=tagSet("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),b=merge(h,m,y),v=function(){function SanitizingHtmlSerializer(){this.sanitizedSomething=!1,this.buf=[]}return SanitizingHtmlSerializer.prototype.sanitizeChildren=function(e){for(var t=e.firstChild;t;)if(s.isElementNode(t)?this.startElement(t):s.isTextNode(t)?this.chars(s.nodeValue(t)):this.sanitizedSomething=!0,s.firstChild(t))t=s.firstChild(t);else for(;t;){if(s.isElementNode(t)&&this.endElement(t),s.nextSibling(t)){t=s.nextSibling(t);break}t=s.parentElement(t)}return this.buf.join("")},SanitizingHtmlSerializer.prototype.startElement=function(e){var t=this,o=s.nodeName(e).toLowerCase();return f.hasOwnProperty(o)?(this.buf.push("<"),this.buf.push(o),s.attributeMap(e).forEach(function(e,o){var r=o.toLowerCase();return b.hasOwnProperty(r)?(h[r]&&(e=n.i(i.a)(e)),m[r]&&(e=n.i(i.b)(e)),t.buf.push(" "),t.buf.push(o),t.buf.push('="'),t.buf.push(encodeEntities(e)),void t.buf.push('"')):void(t.sanitizedSomething=!0)}),void this.buf.push(">")):void(this.sanitizedSomething=!0)},SanitizingHtmlSerializer.prototype.endElement=function(e){var t=s.nodeName(e).toLowerCase();f.hasOwnProperty(t)&&!u.hasOwnProperty(t)&&(this.buf.push("</"),this.buf.push(t),this.buf.push(">"))},SanitizingHtmlSerializer.prototype.chars=function(e){this.buf.push(encodeEntities(e))},SanitizingHtmlSerializer}(),_=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,E=/([^\#-~ |!])/g},function(e,t,n){"use strict";function hasBalancedQuotes(e){for(var t=!0,n=!0,o=0;o<e.length;o++){var r=e.charAt(o);"'"===r&&n?t=!t:'"'===r&&t&&(n=!n)}return t&&n}function sanitizeStyle(e){if(e=String(e).trim(),!e)return"";var t=e.match(g);return t&&n.i(i.a)(t[1])===t[1]||e.match(p)&&hasBalancedQuotes(e)?e:(n.i(o.isDevMode)()&&n.i(r.a)().log("WARNING: sanitizing unsafe style value "+e+" (see http://g.co/ng/security#xss)."),"unsafe")}var o=n(1),r=n(23),i=n(287);t.a=sanitizeStyle;var a="[-,.\"'%_!# a-zA-Z0-9]+",s="(?:matrix|translate|scale|rotate|skew|perspective)(?:X|Y|3d)?",u="(?:rgb|hsl)a?",l="(?:repeating-)?(?:linear|radial)-gradient",c="(?:calc|attr)",d="\\([-0-9.%, #a-zA-Z]+\\)",p=new RegExp("^("+a+"|"+("(?:"+s+"|"+u+"|"+l+"|"+c+")")+(d+")$"),"g"),g=/^url\(([^)]+)\)$/},function(e,t,n){"use strict";var o=n(1);n.d(t,"a",function(){return r});var r=new o.Version("2.4.10")},function(e,t,n){"use strict";function noMatch(e){return new o.Observable(function(t){return t.error(new m(e))})}function absoluteRedirect(e){return new o.Observable(function(t){return t.error(new y(e))})}function canLoadFails(e){return new o.Observable(function(t){return t.error(new g.b("Cannot load children because the guard of the route \"path: '"+e.path+"'\" returned false"))})}function applyRedirects(e,t,n,o){return new b(e,t,n,o).apply()}function runGuards(e,t){var o=t.canLoad;if(!o||0===o.length)return n.i(i.of)(!0);var a=l.map.call(n.i(r.from)(o),function(o){var r=e.get(o);return r.canLoad?n.i(h.b)(r.canLoad(t)):n.i(h.b)(r(t))});return n.i(h.f)(a)}function match(e,t,n){var o={matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}};if(""===t.path)return"full"===t.pathMatch&&(e.hasChildren()||n.length>0)?{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}:{matched:!0,consumedSegments:[],lastChild:0,positionalParamSegments:{}};for(var r=t.path,i=r.split("/"),a={},s=[],u=0,l=0;l<i.length;++l){if(u>=n.length)return o;var c=n[u],d=i[l],p=d.startsWith(":");if(!p&&d!==c.path)return o;p&&(a[d.substring(1)]=c),s.push(c),u++}return"full"===t.pathMatch&&(e.hasChildren()||u<n.length)?{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}:{matched:!0,consumedSegments:s,lastChild:u,positionalParamSegments:a}}function applyRedirectCommands(e,t,n){var o=t.startsWith("/")?t.substring(1):t;return""===o?[]:createSegments(t,o.split("/"),e,n)}function createSegments(e,t,n,o){return t.map(function(t){return t.startsWith(":")?findPosParam(t,o,e):findOrCreateSegment(t,n)})}function findPosParam(e,t,n){var o=e.substring(1),r=t[o];if(!r)throw new Error("Cannot redirect to '"+n+"'. Cannot find '"+e+"'.");return r}function findOrCreateSegment(e,t){for(var n=0,o=0,r=t;o<r.length;o++){var i=r[o];if(i.path===e)return t.splice(n),i;n++}return new f.c(e,{})}function split(e,t,n,o){if(n.length>0&&containsEmptyPathRedirectsWithNamedOutlets(e,n,o)){var r=new f.a(t,createChildrenForEmptySegments(o,new f.a(n,e.children)));return{segmentGroup:mergeTrivialChildren(r),slicedSegments:[]}}if(0===n.length&&containsEmptyPathRedirects(e,n,o)){var r=new f.a(e.segments,addEmptySegmentsToChildrenIfNeeded(e,n,o,e.children));return{segmentGroup:mergeTrivialChildren(r),slicedSegments:n}}return{segmentGroup:e,slicedSegments:n}}function mergeTrivialChildren(e){if(1===e.numberOfChildren&&e.children[g.a]){var t=e.children[g.a];return new f.a(e.segments.concat(t.segments),t.children)}return e}function addEmptySegmentsToChildrenIfNeeded(e,t,o,r){for(var i={},a=0,s=o;a<s.length;a++){var u=s[a];emptyPathRedirect(e,t,u)&&!r[getOutlet(u)]&&(i[getOutlet(u)]=new f.a([],{}))}return n.i(h.g)(r,i)}function createChildrenForEmptySegments(e,t){var n={};n[g.a]=t;for(var o=0,r=e;o<r.length;o++){var i=r[o];""===i.path&&getOutlet(i)!==g.a&&(n[getOutlet(i)]=new f.a([],{}))}return n}function containsEmptyPathRedirectsWithNamedOutlets(e,t,n){return n.filter(function(n){return emptyPathRedirect(e,t,n)&&getOutlet(n)!==g.a}).length>0}function containsEmptyPathRedirects(e,t,n){return n.filter(function(n){return emptyPathRedirect(e,t,n)}).length>0}function emptyPathRedirect(e,t,n){return(!(e.hasChildren()||t.length>0)||"full"!==n.pathMatch)&&(""===n.path&&void 0!==n.redirectTo)}function getOutlet(e){return e.outlet?e.outlet:g.a}var o=n(0),r=(n.n(o),n(320)),i=(n.n(r),n(117)),a=(n.n(i),n(499)),s=(n.n(a),n(323)),u=(n.n(s),n(501)),l=(n.n(u),n(37)),c=(n.n(l),n(151)),d=(n.n(c),n(158)),p=(n.n(d),n(199)),g=n(58),f=n(91),h=n(59);t.a=applyRedirects;var m=function(){function NoMatch(e){void 0===e&&(e=null),this.segmentGroup=e}return NoMatch}(),y=function(){function AbsoluteRedirect(e){this.segments=e}return AbsoluteRedirect}(),b=function(){function ApplyRedirects(e,t,n,o){this.injector=e,this.configLoader=t,this.urlTree=n,this.config=o,this.allowRedirects=!0}return ApplyRedirects.prototype.apply=function(){var e=this,t=this.expandSegmentGroup(this.injector,this.config,this.urlTree.root,g.a),n=l.map.call(t,function(t){return e.createUrlTree(t)});return a._catch.call(n,function(t){if(t instanceof y){e.allowRedirects=!1;var n=new f.a([],(o={},o[g.a]=new f.a(t.segments,{}),o));return e.match(n)}throw t instanceof m?e.noMatchError(t):t;var o})},ApplyRedirects.prototype.match=function(e){var t=this,n=this.expandSegmentGroup(this.injector,this.config,e,g.a),o=l.map.call(n,function(e){return t.createUrlTree(e)});return a._catch.call(o,function(e){throw e instanceof m?t.noMatchError(e):e})},ApplyRedirects.prototype.noMatchError=function(e){return new Error("Cannot match any routes: '"+e.segmentGroup+"'")},ApplyRedirects.prototype.createUrlTree=function(e){var t=e.segments.length>0?new f.a([],(n={},n[g.a]=e,n)):e;return new f.b(t,this.urlTree.queryParams,this.urlTree.fragment);var n},ApplyRedirects.prototype.expandSegmentGroup=function(e,t,n,o){return 0===n.segments.length&&n.hasChildren()?l.map.call(this.expandChildren(e,t,n),function(e){return new f.a([],e)}):this.expandSegment(e,n,t,n.segments,o,!0)},ApplyRedirects.prototype.expandChildren=function(e,t,o){var r=this;return n.i(h.e)(o.children,function(n,o){return r.expandSegmentGroup(e,t,o,n)})},ApplyRedirects.prototype.expandSegment=function(e,t,o,r,c,p){var g=this,f=i.of.apply(void 0,o),h=l.map.call(f,function(s){var u=g.expandSegmentAgainstRoute(e,t,o,s,r,c,p);return a._catch.call(u,function(e){if(e instanceof m)return n.i(i.of)(null);throw e})}),y=s.concatAll.call(h),b=u.first.call(y,function(e){return!!e});return a._catch.call(b,function(e,n){throw e instanceof d.EmptyError?new m(t):e})},ApplyRedirects.prototype.expandSegmentAgainstRoute=function(e,t,n,o,r,i,a){return getOutlet(o)!==i?noMatch(t):void 0===o.redirectTo||a&&this.allowRedirects?void 0===o.redirectTo?this.matchSegmentAgainstRoute(e,t,o,r):this.expandSegmentAgainstRouteUsingRedirect(e,t,n,o,r,i):noMatch(t)},ApplyRedirects.prototype.expandSegmentAgainstRouteUsingRedirect=function(e,t,n,o,r,i){return"**"===o.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(o):this.expandRegularSegmentAgainstRouteUsingRedirect(e,t,n,o,r,i)},ApplyRedirects.prototype.expandWildCardWithParamsAgainstRouteUsingRedirect=function(e){var t=applyRedirectCommands([],e.redirectTo,{});return e.redirectTo.startsWith("/")?absoluteRedirect(t):n.i(i.of)(new f.a(t,{}))},ApplyRedirects.prototype.expandRegularSegmentAgainstRouteUsingRedirect=function(e,t,n,o,r,i){var a=match(t,o,r),s=a.matched,u=a.consumedSegments,l=a.lastChild,c=a.positionalParamSegments;if(!s)return noMatch(t);var d=applyRedirectCommands(u,o.redirectTo,c);return o.redirectTo.startsWith("/")?absoluteRedirect(d):this.expandSegment(e,t,n,d.concat(r.slice(l)),i,!1)},ApplyRedirects.prototype.matchSegmentAgainstRoute=function(e,t,o,r){var a=this;if("**"===o.path)return n.i(i.of)(new f.a(r,{}));var s=match(t,o,r),u=s.matched,d=s.consumedSegments,p=s.lastChild;if(!u)return noMatch(t);var h=r.slice(p),m=this.getChildConfig(e,o);return c.mergeMap.call(m,function(e){var o=e.injector,r=e.routes,s=split(t,d,h,r),u=s.segmentGroup,c=s.slicedSegments;if(0===c.length&&u.hasChildren()){var p=a.expandChildren(o,r,u);return l.map.call(p,function(e){return new f.a(d,e)})}if(0===r.length&&0===c.length)return n.i(i.of)(new f.a(d,{}));var p=a.expandSegment(o,u,r,c,g.a,!0);return l.map.call(p,function(e){return new f.a(d.concat(e.segments),e.children)})})},ApplyRedirects.prototype.getChildConfig=function(e,t){var o=this;return t.children?n.i(i.of)(new p.a(t.children,e,null)):t.loadChildren?c.mergeMap.call(runGuards(e,t),function(r){return r?t._loadedConfig?n.i(i.of)(t._loadedConfig):l.map.call(o.configLoader.load(e,t.loadChildren),function(e){return t._loadedConfig=e,e}):canLoadFails(t)}):n.i(i.of)(new p.a([],e,null))},ApplyRedirects}()},function(e,t,n){"use strict";function validateConfig(e){e.forEach(validateNode)}function validateNode(e){if(Array.isArray(e))throw new Error("Invalid route configuration: Array cannot be specified");if(e.redirectTo&&e.children)throw new Error("Invalid configuration of route '"+e.path+"': redirectTo and children cannot be used together");if(e.redirectTo&&e.loadChildren)throw new Error("Invalid configuration of route '"+e.path+"': redirectTo and loadChildren cannot be used together");if(e.children&&e.loadChildren)throw new Error("Invalid configuration of route '"+e.path+"': children and loadChildren cannot be used together");if(e.redirectTo&&e.component)throw new Error("Invalid configuration of route '"+e.path+"': redirectTo and component cannot be used together");if(void 0===e.redirectTo&&!e.component&&!e.children&&!e.loadChildren)throw new Error("Invalid configuration of route '"+e.path+"': one of the following must be provided (component or redirectTo or children or loadChildren)");if(void 0===e.path)throw new Error("Invalid route configuration: routes must have path specified");if(e.path.startsWith("/"))throw new Error("Invalid route configuration of route '"+e.path+"': path cannot start with a slash");if(""===e.path&&void 0!==e.redirectTo&&void 0===e.pathMatch){var t="The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.";throw new Error("Invalid route configuration of route '{path: \""+e.path+'", redirectTo: "'+e.redirectTo+"\"}': please provide 'pathMatch'. "+t)}if(void 0!==e.pathMatch&&"full"!==e.pathMatch&&"prefix"!==e.pathMatch)throw new Error("Invalid configuration of route '"+e.path+"': pathMatch can only be set to 'prefix' or 'full'")}t.a=validateConfig},function(e,t,n){"use strict";function createRouterState(e,t){var n=createNode(e._root,t?t._root:void 0);return new r.a(n,e)}function createNode(e,t){if(t&&equalRouteSnapshots(t.value.snapshot,e.value)){var n=t.value;n._futureSnapshot=e.value;var o=createOrReuseChildren(e,t);return new i.b(n,o)}var n=createActivatedRoute(e.value),o=e.children.map(function(e){return createNode(e)});return new i.b(n,o)}function createOrReuseChildren(e,t){return e.children.map(function(e){for(var n=0,o=t.children;n<o.length;n++){var r=o[n];if(equalRouteSnapshots(r.value.snapshot,e.value))return createNode(e,r)}return createNode(e)})}function createActivatedRoute(e){return new r.b(new o.BehaviorSubject(e.url),new o.BehaviorSubject(e.params),new o.BehaviorSubject(e.queryParams),new o.BehaviorSubject(e.fragment),new o.BehaviorSubject(e.data),e.outlet,e.component,e)}function equalRouteSnapshots(e,t){return e._routeConfig===t._routeConfig}var o=n(101),r=(n.n(o),n(113)),i=n(289);t.a=createRouterState},function(e,t,n){"use strict";function createUrlTree(e,t,n,o,i){if(0===n.length)return tree(t.root,t.root,t,o,i);var a=normalizeCommands(n);if(validateCommands(a),navigateToRoot(a))return tree(t.root,new r.a([],{}),t,o,i);var s=findStartingPosition(a,t,e),u=s.processChildren?updateSegmentGroupChildren(s.segmentGroup,s.index,a.commands):updateSegmentGroup(s.segmentGroup,s.index,a.commands);return tree(s.segmentGroup,u,t,o,i)}function validateCommands(e){if(e.isAbsolute&&e.commands.length>0&&isMatrixParams(e.commands[0]))throw new Error("Root segment cannot have matrix parameters");var t=e.commands.filter(function(e){return"object"==typeof e&&void 0!==e.outlets});if(t.length>0&&t[0]!==e.commands[e.commands.length-1])throw new Error("{outlets:{}} has to be the last command")}function isMatrixParams(e){return"object"==typeof e&&void 0===e.outlets&&void 0===e.segmentPath}function tree(e,t,n,o,i){return n.root===e?new r.b(t,stringify(o),i):new r.b(replaceSegment(n.root,e,t),stringify(o),i)}function replaceSegment(e,t,o){var a={};return n.i(i.c)(e.children,function(e,n){e===t?a[n]=o:a[n]=replaceSegment(e,t,o)}),new r.a(e.segments,a)}function navigateToRoot(e){return e.isAbsolute&&1===e.commands.length&&"/"==e.commands[0]}function normalizeCommands(e){if("string"==typeof e[0]&&1===e.length&&"/"==e[0])return new a((!0),0,e);for(var t=0,o=!1,r=[],s=function(a){var s=e[a];if("object"==typeof s&&void 0!==s.outlets){var u={};return n.i(i.c)(s.outlets,function(e,t){"string"==typeof e?u[t]=e.split("/"):u[t]=e}),r.push({outlets:u}),"continue"}if("object"==typeof s&&void 0!==s.segmentPath)return r.push(s.segmentPath),"continue";if("string"!=typeof s)return r.push(s),"continue";if(0===a)for(var l=s.split("/"),c=0;c<l.length;++c){var d=l[c];0==c&&"."==d||(0==c&&""==d?o=!0:".."==d?t++:""!=d&&r.push(d))}else r.push(s)},u=0;u<e.length;++u)s(u);return new a(o,t,r)}function findStartingPosition(e,t,n){if(e.isAbsolute)return new s(t.root,(!0),0);if(n.snapshot._lastPathIndex===-1)return new s(n.snapshot._urlSegment,(!0),0);var o=isMatrixParams(e.commands[0])?0:1,r=n.snapshot._lastPathIndex+o;return createPositionApplyingDoubleDots(n.snapshot._urlSegment,r,e.numberOfDoubleDots)}function createPositionApplyingDoubleDots(e,t,n){for(var o=e,r=t,i=n;i>r;){if(i-=r,o=o.parent,!o)throw new Error("Invalid number of '../'");r=o.segments.length}return new s(o,(!1),r-i)}function getPath(e){return""+e}function getOutlets(e){return"object"!=typeof e[0]?(t={},t[o.a]=e,t):void 0===e[0].outlets?(n={},n[o.a]=e,n):e[0].outlets;var t,n}function updateSegmentGroup(e,t,n){if(e||(e=new r.a([],{})),0===e.segments.length&&e.hasChildren())return updateSegmentGroupChildren(e,t,n);var o=prefixedWith(e,t,n),i=n.slice(o.lastIndex);return o.match&&0===i.length?new r.a(e.segments,{}):o.match&&!e.hasChildren()?createNewSegmentGroup(e,t,n):o.match?updateSegmentGroupChildren(e,0,i):createNewSegmentGroup(e,t,n)}function updateSegmentGroupChildren(e,t,o){if(0===o.length)return new r.a(e.segments,{});var a=getOutlets(o),s={};return n.i(i.c)(a,function(n,o){null!==n&&(s[o]=updateSegmentGroup(e.children[o],t,n))}),n.i(i.c)(e.children,function(e,t){void 0===a[t]&&(s[t]=e)}),new r.a(e.segments,s)}function prefixedWith(e,t,n){for(var o=0,r=t,i={match:!1,lastIndex:0};r<e.segments.length;){if(o>=n.length)return i;var a=e.segments[r],s=getPath(n[o]),u=o<n.length-1?n[o+1]:null;if(s&&u&&"object"==typeof u&&void 0===u.outlets){if(!compare(s,u,a))return i;o+=2}else{if(!compare(s,{},a))return i;o++}r++}return{match:!0,lastIndex:o}}function createNewSegmentGroup(e,t,n){for(var o=e.segments.slice(0,t),i=0;i<n.length;){if("object"==typeof n[i]&&void 0!==n[i].outlets){var a=createNewSegmentChldren(n[i].outlets);return new r.a(o,a)}if(0===i&&isMatrixParams(n[0])){var s=e.segments[t];o.push(new r.c(s.path,n[0])),i++}else{var u=getPath(n[i]),l=i<n.length-1?n[i+1]:null;u&&l&&isMatrixParams(l)?(o.push(new r.c(u,stringify(l))),i+=2):(o.push(new r.c(u,{})),i++)}}return new r.a(o,{})}function createNewSegmentChldren(e){var t={};return n.i(i.c)(e,function(e,n){null!==e&&(t[n]=createNewSegmentGroup(new r.a([],{}),0,e))}),t}function stringify(e){var t={};return n.i(i.c)(e,function(e,n){return t[n]=""+e}),t}function compare(e,t,o){return e==o.path&&n.i(i.d)(t,o.parameters)}var o=n(58),r=n(91),i=n(59);t.a=createUrlTree;var a=function(){function NormalizedNavigationCommands(e,t,n){this.isAbsolute=e,this.numberOfDoubleDots=t,this.commands=n}return NormalizedNavigationCommands}(),s=function(){function Position(e,t,n){this.segmentGroup=e,this.processChildren=t,this.index=n}return Position}()},function(e,t,n){"use strict";var o=n(288),r=n(424),i=n(425),a=n(198),s=n(426),u=n(200),l=n(113),c=n(58),d=n(91),p=n(697);n.d(t,"a",function(){return o.a}),n.d(t,"b",function(){return o.b}),n.d(t,"c",function(){return r.a}),n.d(t,"d",function(){return i.a}),n.d(t,"e",function(){return a.c}),n.d(t,"f",function(){return a.d}),n.d(t,"g",function(){return a.e}),n.d(t,"h",function(){return a.a}),n.d(t,"i",function(){return a.f}),n.d(t,"j",function(){return a.b}),n.d(t,"k",function(){return s.b}),n.d(t,"l",function(){return s.c}),n.d(t,"m",function(){return u.a}),n.d(t,"n",function(){return l.b}),n.d(t,"o",function(){return l.d}),n.d(t,"p",function(){return l.a}),n.d(t,"q",function(){return l.e}),n.d(t,"r",function(){return c.a}),n.d(t,"s",function(){return d.h}),n.d(t,"t",function(){return d.c}),n.d(t,"u",function(){return d.g}),n.d(t,"v",function(){return d.b}),n.d(t,"w",function(){return p.a})},function(e,t,n){"use strict";var o=n(199),r=n(426),i=n(59);n.d(t,"a",function(){return a});var a={ROUTER_PROVIDERS:r.a,ROUTES:o.c,flatten:i.a}},function(e,t,n){"use strict";function recognize(e,t,n,o){return new p(e,t,n,o).recognize()}function sortActivatedRouteSnapshots(e){e.sort(function(e,t){return e.value.outlet===a.a?-1:t.value.outlet===a.a?1:e.value.outlet.localeCompare(t.value.outlet)})}function getChildConfig(e){return e.children?e.children:e.loadChildren?e._loadedConfig.routes:[]}function match(e,t,o,r){if(""===t.path){if("full"===t.pathMatch&&(e.hasChildren()||o.length>0))throw new c;var i=r?r.params:{};return{consumedSegments:[],lastChild:0,parameters:i}}for(var a=t.path,s=a.split("/"),l={},d=[],p=0,g=0;g<s.length;++g){if(p>=o.length)throw new c;var f=o[p],h=s[g],m=h.startsWith(":");if(!m&&h!==f.path)throw new c;m&&(l[h.substring(1)]=f.path),d.push(f),p++}if("full"===t.pathMatch&&(e.hasChildren()||p<o.length))throw new c;var y=n.i(u.g)(l,d[d.length-1].parameters);return{consumedSegments:d,lastChild:p,parameters:y}}function checkOutletNameUniqueness(e){var t={};e.forEach(function(e){var n=t[e.value.outlet];if(n){var o=n.url.map(function(e){return e.toString()}).join("/"),r=e.value.url.map(function(e){return e.toString()}).join("/");throw new Error("Two segments cannot have the same outlet name: '"+o+"' and '"+r+"'.")}t[e.value.outlet]=e.value})}function getSourceSegmentGroup(e){for(var t=e;t._sourceSegment;)t=t._sourceSegment;return t}function getPathIndexShift(e){for(var t=e,n=t._segmentIndexShift?t._segmentIndexShift:0;t._sourceSegment;)t=t._sourceSegment,n+=t._segmentIndexShift?t._segmentIndexShift:0;return n-1}function split(e,t,n,o){if(n.length>0&&containsEmptyPathMatchesWithNamedOutlets(e,n,o)){var r=new s.a(t,createChildrenForEmptyPaths(e,t,o,new s.a(n,e.children)));return r._sourceSegment=e,r._segmentIndexShift=t.length,{segmentGroup:r,slicedSegments:[]}}if(0===n.length&&containsEmptyPathMatches(e,n,o)){var r=new s.a(e.segments,addEmptyPathsToChildrenIfNeeded(e,n,o,e.children));return r._sourceSegment=e,r._segmentIndexShift=t.length,{segmentGroup:r,slicedSegments:n}}var r=new s.a(e.segments,e.children);return r._sourceSegment=e,r._segmentIndexShift=t.length,{segmentGroup:r,slicedSegments:n}}function addEmptyPathsToChildrenIfNeeded(e,t,o,r){for(var i={},a=0,l=o;a<l.length;a++){var c=l[a];if(emptyPathMatch(e,t,c)&&!r[getOutlet(c)]){var d=new s.a([],{});d._sourceSegment=e,d._segmentIndexShift=e.segments.length,i[getOutlet(c)]=d}}return n.i(u.g)(r,i)}function createChildrenForEmptyPaths(e,t,n,o){var r={};r[a.a]=o,o._sourceSegment=e,o._segmentIndexShift=t.length;for(var i=0,u=n;i<u.length;i++){var l=u[i];if(""===l.path&&getOutlet(l)!==a.a){var c=new s.a([],{});c._sourceSegment=e,c._segmentIndexShift=t.length,r[getOutlet(l)]=c}}return r}function containsEmptyPathMatchesWithNamedOutlets(e,t,n){return n.filter(function(n){return emptyPathMatch(e,t,n)&&getOutlet(n)!==a.a}).length>0}function containsEmptyPathMatches(e,t,n){return n.filter(function(n){return emptyPathMatch(e,t,n)}).length>0}function emptyPathMatch(e,t,n){return(!(e.hasChildren()||t.length>0)||"full"!==n.pathMatch)&&(""===n.path&&void 0===n.redirectTo)}function getOutlet(e){return e.outlet?e.outlet:a.a}function getData(e){return e.data?e.data:{}}function getResolve(e){return e.resolve?e.resolve:{}}var o=n(0),r=(n.n(o),n(117)),i=(n.n(r),n(113)),a=n(58),s=n(91),u=n(59),l=n(289);t.a=recognize;var c=function(){function NoMatch(){}return NoMatch}(),d=function(){function InheritedFromParent(e,t,n,o,r){this.parent=e,this.snapshot=t,this.params=n,this.data=o,this.resolve=r}return Object.defineProperty(InheritedFromParent.prototype,"allParams",{get:function(){return this.parent?n.i(u.g)(this.parent.allParams,this.params):this.params},enumerable:!0,configurable:!0}),Object.defineProperty(InheritedFromParent.prototype,"allData",{get:function(){return this.parent?n.i(u.g)(this.parent.allData,this.data):this.data},enumerable:!0,configurable:!0}),InheritedFromParent.empty=function(e){return new InheritedFromParent(null,e,{},{},new i.c(null,{}))},InheritedFromParent}(),p=function(){function Recognizer(e,t,n,o){this.rootComponentType=e,this.config=t,this.urlTree=n,this.url=o}return Recognizer.prototype.recognize=function(){try{var e=split(this.urlTree.root,[],[],this.config).segmentGroup,t=this.processSegmentGroup(this.config,e,d.empty(null),a.a),s=new i.d([],Object.freeze({}),Object.freeze(this.urlTree.queryParams),this.urlTree.fragment,{},a.a,this.rootComponentType,null,this.urlTree.root,(-1),i.c.empty),u=new l.b(s,t);return n.i(r.of)(new i.e(this.url,u))}catch(c){return new o.Observable(function(e){return e.error(c)})}},Recognizer.prototype.processSegmentGroup=function(e,t,n,o){return 0===t.segments.length&&t.hasChildren()?this.processChildren(e,t,n):this.processSegment(e,t,0,t.segments,n,o)},Recognizer.prototype.processChildren=function(e,t,o){var r=this,i=n.i(s.d)(t,function(t,n){return r.processSegmentGroup(e,t,o,n)});return checkOutletNameUniqueness(i),sortActivatedRouteSnapshots(i),i},Recognizer.prototype.processSegment=function(e,t,n,o,r,i){for(var a=0,s=e;a<s.length;a++){var u=s[a];try{return this.processSegmentAgainstRoute(u,t,n,o,r,i)}catch(l){if(!(l instanceof c))throw l}}throw new c},Recognizer.prototype.processSegmentAgainstRoute=function(e,t,o,r,s,p){if(e.redirectTo)throw new c;if((e.outlet?e.outlet:a.a)!==p)throw new c;var g=new i.c(s.resolve,getResolve(e));if("**"===e.path){var f=r.length>0?n.i(u.i)(r).parameters:{},h=new i.d(r,Object.freeze(n.i(u.g)(s.allParams,f)),Object.freeze(this.urlTree.queryParams),this.urlTree.fragment,n.i(u.g)(s.allData,getData(e)),p,e.component,e,getSourceSegmentGroup(t),getPathIndexShift(t)+r.length,g);return[new l.b(h,[])]}var m=match(t,e,r,s.snapshot),y=m.consumedSegments,b=m.parameters,v=m.lastChild,_=r.slice(v),E=getChildConfig(e),T=split(t,y,_,E),S=T.segmentGroup,A=T.slicedSegments,M=new i.d(y,Object.freeze(n.i(u.g)(s.allParams,b)),Object.freeze(this.urlTree.queryParams),this.urlTree.fragment,n.i(u.g)(s.allData,getData(e)),p,e.component,e,getSourceSegmentGroup(t),getPathIndexShift(t)+y.length,g),C=e.component?d.empty(M):new d(s,M,b,getData(e),g);if(0===A.length&&S.hasChildren()){var k=this.processChildren(E,S,C);return[new l.b(M,k)]}if(0===E.length&&0===A.length)return[new l.b(M,[])];var k=this.processSegment(E,S,o+v,A,C,a.a);return[new l.b(M,k)]},Recognizer}()},function(e,t){"use strict";function bootloader(e){"complete"===document.readyState?e():document.addEventListener("DOMContentLoaded",e)}function createNewHosts(e){var t=e.map(function(e){var t=document.createElement(e.tagName),n=t.style.display;t.style.display="none";var o=e.parentNode;return o.insertBefore(t,e),{currentDisplay:n,newNode:t}});return function(){t.forEach(function(e){e.newNode.style.display=e.currentDisplay,e.newNode=null,e.currentDisplay=null})}}function removeNgStyles(){Array.prototype.slice.call(document.head.querySelectorAll("style"),0).filter(function(e){return e.innerText.indexOf("_ng")!==-1}).map(function(e){return e.remove()})}function getInputValues(){var e=document.querySelectorAll("input");return Array.prototype.slice.call(e).map(function(e){return e.value})}function setInputValues(e){var t=document.querySelectorAll("input");e&&t.length===e.length&&e.forEach(function(e,n){var o=t[n];o.value=e,o.dispatchEvent(new CustomEvent("input",{detail:o.value}))})}function createInputTransfer(){var e=getInputValues();return function(){setInputValues(e)}}t.bootloader=bootloader,t.createNewHosts=createNewHosts,t.removeNgStyles=removeNgStyles,t.getInputValues=getInputValues,t.setInputValues=setInputValues,t.createInputTransfer=createInputTransfer},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(3),i=function(e){function InnerSubscriber(t,n,o){e.call(this),this.parent=t,this.outerValue=n,this.outerIndex=o,this.index=0}return o(InnerSubscriber,e),InnerSubscriber.prototype._next=function(e){this.parent.notifyNext(this.outerValue,e,this.outerIndex,this.index++,this)},InnerSubscriber.prototype._error=function(e){this.parent.notifyError(e,this),this.unsubscribe()},InnerSubscriber.prototype._complete=function(){this.parent.notifyComplete(this),this.unsubscribe()},InnerSubscriber}(r.Subscriber);t.InnerSubscriber=i},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(0),i=n(319),a=n(84),s=function(e){function ArrayLikeObservable(t,n){e.call(this),this.arrayLike=t,this.scheduler=n,n||1!==t.length||(this._isScalar=!0,this.value=t[0])}return o(ArrayLikeObservable,e),ArrayLikeObservable.create=function(e,t){var n=e.length;return 0===n?new a.EmptyObservable:1===n?new i.ScalarObservable(e[0],t):new ArrayLikeObservable(e,t)},ArrayLikeObservable.dispatch=function(e){var t=e.arrayLike,n=e.index,o=e.length,r=e.subscriber;if(!r.closed){if(n>=o)return void r.complete();r.next(t[n]),e.index=n+1,this.schedule(e)}},ArrayLikeObservable.prototype._subscribe=function(e){var t=0,n=this,o=n.arrayLike,r=n.scheduler,i=o.length;if(r)return r.schedule(ArrayLikeObservable.dispatch,0,{arrayLike:o,index:t,length:i,subscriber:e});for(var a=0;a<i&&!e.closed;a++)e.next(o[a]);e.complete()},ArrayLikeObservable}(r.Observable);t.ArrayLikeObservable=s},,,,,,,,,,,function(e,t,n){"use strict";function getIterator(e){var t=e[a.iterator];if(!t&&"string"==typeof e)return new u(e);if(!t&&void 0!==e.length)return new l(e);if(!t)throw new TypeError("object is not iterable");return e[a.iterator]()}function toLength(e){var t=+e.length;return isNaN(t)?0:0!==t&&numberIsFinite(t)?(t=sign(t)*Math.floor(Math.abs(t)),t<=0?0:t>c?c:t):t}function numberIsFinite(e){return"number"==typeof e&&r.root.isFinite(e)}function sign(e){var t=+e;return 0===t?t:isNaN(t)?t:t<0?-1:1;
}var o=this&&this.__extends||function(e,t){function __(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)},r=n(26),i=n(0),a=n(155),s=function(e){function IteratorObservable(t,n){if(e.call(this),this.scheduler=n,null==t)throw new Error("iterator cannot be null.");this.iterator=getIterator(t)}return o(IteratorObservable,e),IteratorObservable.create=function(e,t){return new IteratorObservable(e,t)},IteratorObservable.dispatch=function(e){var t=e.index,n=e.hasError,o=e.iterator,r=e.subscriber;if(n)return void r.error(e.error);var i=o.next();return i.done?void r.complete():(r.next(i.value),e.index=t+1,r.closed?void("function"==typeof o.return&&o.return()):void this.schedule(e))},IteratorObservable.prototype._subscribe=function(e){var t=0,n=this,o=n.iterator,r=n.scheduler;if(r)return r.schedule(IteratorObservable.dispatch,0,{index:t,iterator:o,subscriber:e});for(;;){var i=o.next();if(i.done){e.complete();break}if(e.next(i.value),e.closed){"function"==typeof o.return&&o.return();break}}},IteratorObservable}(i.Observable);t.IteratorObservable=s;var u=function(){function StringIterator(e,t,n){void 0===t&&(t=0),void 0===n&&(n=e.length),this.str=e,this.idx=t,this.len=n}return StringIterator.prototype[a.iterator]=function(){return this},StringIterator.prototype.next=function(){return this.idx<this.len?{done:!1,value:this.str.charAt(this.idx++)}:{done:!0,value:void 0}},StringIterator}(),l=function(){function ArrayIterator(e,t,n){void 0===t&&(t=0),void 0===n&&(n=toLength(e)),this.arr=e,this.idx=t,this.len=n}return ArrayIterator.prototype[a.iterator]=function(){return this},ArrayIterator.prototype.next=function(){return this.idx<this.len?{done:!1,value:this.arr[this.idx++]}:{done:!0,value:void 0}},ArrayIterator}(),c=Math.pow(2,53)-1},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";function toSubscriber(e,t,n){if(e){if(e instanceof o.Subscriber)return e;if(e[r.rxSubscriber])return e[r.rxSubscriber]()}return e||t||n?new o.Subscriber(e,t,n):new o.Subscriber(i.empty)}var o=n(3),r=n(228),i=n(490);t.toSubscriber=toSubscriber},,,,,,,,function(e,t,n){"use strict";n(103),n(234),n(1),n(68),n(330),n(233),n(28),n(159),n(69),n(331),n(547),n(548),n(549),n(550),n(551)}],[1198]);