@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}');
+//# sourceMappingURL=angular.min.js.map
diff --git a/app/lib/angular/angular.min.js.map b/app/lib/angular/angular.min.js.map
new file mode 100755
index 0000000000..1f7eb76841
--- /dev/null
+++ b/app/lib/angular/angular.min.js.map
@@ -0,0 +1,8 @@
+{
+"version":3,
+"file":"angular.min.js",
+"lineCount":196,
+"mappings":"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",
+"sources":["angular.js","MINERR_ASSET"],
+"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","length","nodeType","isString","isArray","forEach","iterator","context","key","isFunction","hasOwnProperty","call","sortedKeys","keys","push","sort","forEachSorted","i","reverseParams","iteratorFn","value","nextUid","index","uid","digit","charCodeAt","join","String","fromCharCode","unshift","setHashKey","h","$$hashKey","extend","dst","arguments","int","str","parseInt","inherit","parent","extra","noop","identity","$","valueFn","isUndefined","isDefined","isObject","isNumber","isDate","toString","apply","isRegExp","location","alert","setInterval","isElement","node","nodeName","on","find","map","results","list","indexOf","array","arrayRemove","splice","copy","source","destination","$evalAsync","$watch","ngMinErr","Date","getTime","RegExp","shallowCopy","src","substr","equals","o1","o2","t1","t2","keySet","charAt","bind","self","fn","curryArgs","slice","startIndex","concat","toJsonReplacer","val","toJson","pretty","JSON","stringify","fromJson","json","parse","toBoolean","v","lowercase","startingTag","element","jqLite","clone","html","e","elemHtml","append","TEXT_NODE","match","replace","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","key_value","split","toKeyValue","parts","arrayValue","encodeUriQuery","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","angularInit","bootstrap","elements","appElement","module","names","NG_APP_CLASS_REGEXP","name","getElementById","querySelectorAll","exec","className","attributes","attr","modules","doBootstrap","injector","tag","$provide","createInjector","invoke","scope","compile","animate","$apply","data","enabled","NG_DEFER_BOOTSTRAP","test","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","constructor","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","setupModuleLoader","ensure","factory","$injectorMinErr","Object","requires","configFn","invokeLater","provider","method","insertMethod","invokeQueue","moduleInstance","runBlocks","config","run","block","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","JQLitePatchJQueryRemove","dispatchThis","filterElems","getterIfNoArguments","removePatch","param","filter","fireEvent","set","setIndex","setLength","childIndex","children","shift","triggerHandler","childLength","jQuery","originalJqFn","$original","JQLite","jqLiteMinErr","div","createElement","innerHTML","removeChild","firstChild","JQLiteAddNodes","childNodes","fragment","createDocumentFragment","JQLiteClone","cloneNode","JQLiteDealoc","JQLiteRemoveData","JQLiteOff","type","unsupported","events","JQLiteExpandoStore","handle","eventHandler","removeEventListenerFn","expandoId","jqName","expandoStore","jqCache","$destroy","jqId","JQLiteData","isSetter","keyDefined","isSimpleGetter","JQLiteHasClass","selector","getAttribute","JQLiteRemoveClass","cssClasses","setAttribute","cssClass","trim","JQLiteAddClass","existingClasses","root","JQLiteController","JQLiteInheritedData","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","createEventHandler","event","preventDefault","event.preventDefault","returnValue","stopPropagation","event.stopPropagation","cancelBubble","target","srcElement","defaultPrevented","prevent","isDefaultPrevented","event.isDefaultPrevented","msie","elem","hashKey","objType","HashMap","put","annotate","$inject","fnText","STRIP_COMMENTS","argDecl","FN_ARGS","FN_ARG_SPLIT","FN_ARG","all","underscore","last","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","$get","providerCache","providerSuffix","factoryFn","loadModules","loadedModules","get","moduleFn","angularModule","_runBlocks","_invokeQueue","ii","invokeArgs","message","stack","createInternalInjector","cache","getService","serviceName","INSTANTIATING","locals","args","Type","Constructor","returnedValue","prototype","instance","has","service","$injector","constant","instanceCache","decorator","decorFn","origProvider","orig$get","origProvider.$get","origInstance","instanceInjector","servicename","$AnchorScrollProvider","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","$window","$location","$rootScope","getFirstAnchor","result","scroll","hash","elm","scrollIntoView","getElementsByName","scrollTo","autoScrollWatch","autoScrollWatchAction","Browser","$log","$sniffer","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","startPoller","interval","setTimeout","check","pollFns","pollFn","pollTimeout","fireUrlChange","newLocation","lastBrowserUrl","url","urlChangeListeners","listener","rawDocument","history","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","addPollFn","self.addPollFn","href","baseElement","self.url","replaceState","pushState","urlChangeInit","onUrlChange","self.onUrlChange","hashchange","baseHref","self.baseHref","lastCookies","lastCookieString","cookiePath","cookies","self.cookies","cookieLength","cookie","escape","warn","cookieArray","unescape","substring","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","$BrowserProvider","$document","$CacheFactoryProvider","this.$get","cacheFactory","cacheId","options","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$TemplateCacheProvider","$cacheFactory","$CompileProvider","hasDirectives","Suffix","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","aHrefSanitizationWhitelist","imgSrcSanitizationWhitelist","EVENT_HANDLER_ATTR_REGEXP","directive","this.directive","registerDirective","directiveFactory","$exceptionHandler","directives","priority","require","controller","restrict","this.aHrefSanitizationWhitelist","regexp","this.imgSrcSanitizationWhitelist","$interpolate","$http","$templateCache","$parse","$controller","$sce","$animate","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","nodeValue","wrap","compositeLinkFn","compileNodes","publicLinkFn","cloneConnectFn","$linkNode","JQLitePrototype","eq","safeAddClass","$element","addClass","nodeList","$rootElement","boundTranscludeFn","childLinkFn","childScope","childTranscludeFn","stableNodeList","linkFns","nodeLinkFn","$new","transclude","cloneFn","transcludeScope","$$transcluded","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","terminal","attrsMap","$attr","addDirective","directiveNormalize","nodeName_","nName","nAttrs","j","jj","attrStartName","attrEndName","specified","ngAttrName","NG_ATTR_BINDING","directiveNName","addAttrInterpolateDirective","addTextInterpolateDirective","byPriority","groupScan","attrStart","attrEnd","nodes","depth","hasAttribute","$compileMinErr","nextSibling","groupElementsLinkFnWrapper","linkFn","controllers","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","getControllers","retrievalMethod","optional","$$controller","directiveName","linkNode","$$element","newIsolateScopeDirective","LOCAL_REGEXP","parentScope","$parent","definition","scopeName","attrName","mode","lastValue","parentGet","parentSet","$$isolateBindings","$observe","$$observers","$$scope","assign","parentValueWatch","parentValue","controllerDirectives","controllerInstance","controllerAs","$scope","terminalPriority","newScopeDirective","templateDirective","$compileNode","$template","transcludeDirective","$$start","$$end","directiveValue","templateUrl","assertNoDuplicate","createComment","replaceWith","replaceDirective","contents","template","denormalizeTemplate","newTemplateAttrs","mergeTemplateAttributes","compileTemplateUrl","Math","max","tDirectives","startAttrName","endAttrName","srcAttr","dstAttr","$set","tAttrs","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","getTrustedResourceUrl","success","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","response","code","headers","delayedNodeLinkFn","ignoreChildLinkFn","rootElement","a","b","diff","what","previousDirective","text","interpolateFn","textInterpolateLinkFn","bindings","interpolateFnWatchAction","getTrustedContext","attrNormalizedName","RESOURCE_URL","attrInterpolateLinkFn","$$inter","elementsToRemove","newNode","firstElementToRemove","removeCount","parentNode","j2","replaceChild","appendChild","expando","k","kk","$addClass","classVal","$removeClass","removeClass","writeAttr","tokenDifference","str1","str2","values","tokens1","tokens2","token","current","booleanKey","prop","normalizedVal","urlResolve","removeAttr","listeners","startSymbol","endSymbol","PREFIX_REGEXP","$ControllerProvider","CNTRL_REG","register","this.register","expression","identifier","$DocumentProvider","$ExceptionHandlerProvider","exception","cause","parseHeaders","parsed","line","headersGetter","headersObj","transformData","fns","$HttpProvider","JSON_START","JSON_END","PROTECTION_PREFIX","CONTENT_TYPE_APPLICATION_JSON","defaults","d","interceptorFactories","interceptors","responseInterceptorFactories","responseInterceptors","$httpBackend","$browser","$q","requestConfig","transformResponse","resp","status","reject","transformRequest","mergeHeaders","execHeaders","headerContent","headerFn","header","defHeaders","reqHeaders","defHeaderName","reqHeaderName","common","lowercaseDefHeaderName","uppercase","xsrfValue","urlIsSameOrigin","xsrfCookieName","xsrfHeaderName","chain","serverRequest","reqData","withCredentials","sendReq","then","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","promise.success","promise.error","done","headersString","resolvePromise","$$phase","deferred","resolve","removePendingReq","idx","pendingRequests","cachedResp","buildUrl","params","defaultCache","timeout","responseType","interceptorFactory","responseFn","createShortMethods","createShortMethodsWithData","$HttpBackendProvider","createHttpBackend","XHR","callbacks","protocol","$browserDefer","locationProtocol","jsonpReq","script","doneWrapper","body","onreadystatechange","script.onreadystatechange","readyState","onload","onerror","timeoutRequest","jsonpDone","xhr","abort","completeRequest","callbackId","counter","open","setRequestHeader","xhr.onreadystatechange","responseHeaders","getAllResponseHeaders","responseText","send","$InterpolateProvider","this.startSymbol","this.endSymbol","mustHaveExpression","trustedContext","endIndex","hasInterpolation","startSymbolLength","exp","endSymbolLength","$interpolateMinErr","part","getTrusted","valueOf","err","newErr","$interpolate.startSymbol","$interpolate.endSymbol","$IntervalProvider","count","invokeApply","clearInterval","iteration","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","$LocaleProvider","short","pluralCat","num","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","stripHash","stripFile","lastIndexOf","LocationHtml5Url","appBase","basePrefix","$$html5","appBaseNoFile","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$rewrite","this.$$rewrite","appUrl","prevAppUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","LocationHashbangInHtml5Url","locationGetter","property","locationGetterSetter","preprocess","$LocationProvider","html5Mode","this.hashPrefix","prefix","this.html5Mode","afterLocationChange","oldUrl","$broadcast","absUrl","initialUrl","LocationMode","ctrlKey","metaKey","which","absHref","rewrittenUrl","newUrl","$digest","changeCounter","$locationWatch","currentReplace","$$replace","$LogProvider","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","arg1","arg2","ensureSafeMemberName","fullExpression","$parseMinErr","ensureSafeObject","setter","setValue","fullExp","propertyObj","unwrapPromises","promiseWarning","$$v","cspSafeGetterFn","key0","key1","key2","key3","key4","cspSafePromiseEnabledGetter","pathVal","cspSafeGetter","getterFn","getterFnCache","pathKeys","pathKeysLength","csp","evaledFnGetter","Function","evaledFnGetter.toString","$ParseProvider","$parseOptions","this.unwrapPromises","logPromiseWarnings","this.logPromiseWarnings","$filter","promiseWarningCache","parsedExpression","lexer","Lexer","parser","Parser","$QProvider","qFactory","nextTick","exceptionHandler","defaultCallback","defaultErrback","pending","ref","progress","errback","progressback","wrappedCallback","wrappedErrback","wrappedProgressback","catch","finally","makePromise","resolved","handleCallback","isResolved","callbackOutput","promises","$RootScopeProvider","TTL","$rootScopeMinErr","digestTtl","this.digestTtl","Scope","$id","$$watchers","$$nextSibling","$$prevSibling","$$childHead","$$childTail","$root","$$destroyed","$$asyncQueue","$$postDigestQueue","$$listeners","beginPhase","phase","compileToFn","initWatchVal","isolate","child","Child","watchExp","objectEquality","watcher","listenFn","watcher.fn","newVal","oldVal","originalFn","$watchCollection","oldValue","newValue","changeDetected","objGetter","internalArray","internalObject","oldLength","$watchCollectionWatch","newLength","$watchCollectionAction","watch","watchers","asyncQueue","postDigestQueue","dirty","ttl","watchLog","logIdx","logMsg","asyncTask","$eval","isNaN","next","expr","$$postDigest","$on","namedListeners","$emit","empty","listenerArgs","array1","currentScope","adjustMatcher","matcher","$sceMinErr","adjustMatchers","matchers","adjustedMatchers","$SceDelegateProvider","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","generateHolderType","base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","HTML","CSS","URL","JS","trustAs","maybeTrusted","allowed","$SceProvider","this.enabled","$sceDelegate","documentMode","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","literal","sceParseAsTrusted","enumValue","lName","$SnifferProvider","eventSupport","android","userAgent","navigator","boxee","vendorPrefix","vendorRegex","bodyStyle","style","transitions","animations","webkitTransition","webkitAnimation","hasEvent","divElm","securityPolicy","isActive","$TimeoutProvider","deferreds","$$timeoutId","timeout.cancel","urlParsingNode","host","requestUrl","originUrl","$WindowProvider","$FilterProvider","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comperator","predicates","predicates.check","objKey","filtered","$locale","formats","NUMBER_FORMATS","amount","currencySymbol","CURRENCY_SYM","formatNumber","PATTERNS","GROUP_SEP","DECIMAL_SEP","number","fractionSize","pattern","groupSep","decimalSep","isFinite","isNegative","abs","numStr","formatedText","hasExponent","toFixed","fractionLen","min","minFrac","maxFrac","pow","round","fraction","lgroup","lgSize","group","gSize","negPre","posPre","negSuf","posSuf","padNumber","digits","neg","dateGetter","date","dateStrGetter","shortForm","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","s","ms","parseFloat","format","DATETIME_FORMATS","NUMBER_STRING","DATE_FORMATS_SPLIT","DATE_FORMATS","object","input","limit","out","sortPredicate","reverseOrder","reverseComparator","comp","descending","predicate","v1","v2","arrayCopy","comparator","ngDirective","FormController","toggleValidCss","isValid","validationErrorKey","INVALID_CLASS","VALID_CLASS","form","parentForm","nullFormCtrl","invalidCount","errors","$error","controls","$name","ngForm","$dirty","$pristine","$valid","$invalid","$addControl","PRISTINE_CLASS","form.$addControl","control","$removeControl","form.$removeControl","queue","validationToken","$setValidity","form.$setValidity","$setDirty","form.$setDirty","DIRTY_CLASS","$setPristine","form.$setPristine","textInputType","ctrl","ngTrim","$viewValue","$setViewValue","deferListener","keyCode","$render","ctrl.$render","$isEmpty","ngPattern","validate","patternValidator","patternObj","$formatters","$parsers","ngMinlength","minlength","minLengthValidator","ngMaxlength","maxlength","maxLengthValidator","classDirective","ngClassWatchAction","$index","flattenClasses","classes","old$index","mod","version","addEventListenerFn","addEventListener","attachEvent","removeEventListener","detachEvent","ready","trigger","fired","removeAttribute","css","currentStyle","lowercasedName","getNamedItem","ret","getText","textProp","NODE_TYPE_TEXT_PROPERTY","$dv","multiple","option","selected","onFn","eventFns","contains","compareDocumentPosition","adown","documentElement","bup","eventmap","related","relatedTarget","replaceNode","insertBefore","prepend","wrapNode","after","newElement","toggleClass","condition","nextElementSibling","getElementsByTagName","eventName","eventData","arg3","unbind","off","$animateMinErr","$AnimateProvider","$$selectors","$timeout","enter","afterNode","afterNextSibling","leave","move","XMLHttpRequest","ActiveXObject","e1","e2","e3","PATH_MATCH","paramValue","OPERATORS","null","true","false","+","-","*","/","%","^","===","!==","==","!=","<",">","<=",">=","&&","||","&","|","!","ESCAPE","lex","ch","lastCh","tokens","is","readString","peek","readNumber","isIdent","readIdent","was","isWhitespace","ch2","ch3","fn2","fn3","throwError","chars","isExpOperator","start","end","colStr","peekCh","ident","lastDot","peekIndex","methodName","quote","rawString","hex","rep","ZERO","Parser.ZERO","assignment","logicalOR","functionCall","fieldAccess","objectIndex","filterChain","this.filterChain","primary","statements","expect","consume","arrayDeclaration","msg","peekToken","e4","t","unaryFn","right","ternaryFn","left","middle","binaryFn","statement","argsFn","fnInvoke","ternary","logicalAND","equality","relational","additive","multiplicative","unary","field","indexFn","o","safe","contextGetter","fnPtr","elementFns","allConstant","elementFn","keyValues","ampmGetter","getHours","AMPMS","timeZoneGetter","zone","getTimezoneOffset","paddedZone","htmlAnchorDirective","ngAttributeAliasDirectives","propName","normalized","ngBooleanAttrWatchAction","formDirectiveFactory","isNgForm","formDirective","formElement","action","preventDefaultListener","parentFormCtrl","alias","ngFormDirective","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","inputType","numberInputType","minValidator","maxValidator","urlInputType","urlValidator","emailInputType","emailValidator","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","inputDirective","NgModelController","$modelValue","NaN","$viewChangeListeners","ngModelGet","ngModel","ngModelSet","this.$isEmpty","inheritedData","this.$setValidity","this.$setPristine","this.$setViewValue","ngModelWatch","formatters","ngModelDirective","ctrls","modelCtrl","formCtrl","ngChangeDirective","ngChange","requiredDirective","required","validator","ngListDirective","ngList","viewValue","CONSTANT_VALUE_REGEXP","ngValueDirective","tpl","tplAttr","ngValue","ngValueConstantLink","ngValueLink","valueWatchAction","ngBindDirective","ngBind","ngBindWatchAction","ngBindTemplateDirective","ngBindTemplate","ngBindHtmlDirective","ngBindHtml","getStringValue","ngBindHtmlWatchAction","getTrustedHtml","ngClassDirective","ngClassOddDirective","ngClassEvenDirective","ngCloakDirective","ngControllerDirective","ngCspDirective","ngEventDirectives","ngIfDirective","childElement","ngIf","ngIfWatchAction","ngIncludeDirective","$anchorScroll","$compile","transclusion","srcExp","ngInclude","onloadExp","autoScrollExp","autoscroll","currentElement","cleanupLastIncludeContent","parseAsResourceUrl","ngIncludeWatchAction","thisChangeId","newScope","ngInitDirective","ngInit","ngNonBindableDirective","ngPluralizeDirective","BRACE","numberExp","whenExp","whens","whensExpFns","isWhen","attributeName","ngPluralizeWatch","ngPluralizeWatchAction","ngRepeatDirective","getBlockElements","startNode","endNode","ngRepeatMinErr","linker","ngRepeat","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","rhs","valueIdentifier","keyIdentifier","hashFnLocals","lhs","trackByExp","lastBlockMap","ngRepeatAction","collection","previousNode","nextNode","nextBlockMap","arrayLength","collectionKeys","nextBlockOrder","trackByIdFn","trackById","id","$first","$last","$middle","$odd","$even","ngShowDirective","ngShow","ngShowWatchAction","ngHideDirective","ngHide","ngHideWatchAction","ngStyleDirective","ngStyle","ngStyleWatchAction","newStyles","oldStyles","ngSwitchDirective","ngSwitchController","cases","selectedTranscludes","selectedElements","selectedScopes","ngSwitch","ngSwitchWatchAction","change","selectedTransclude","selectedScope","caseElement","anchor","ngSwitchWhenDirective","ngSwitchWhen","ngSwitchDefaultDirective","ngTranscludeDirective","$transclude","$attrs","scriptDirective","ngOptionsMinErr","ngOptionsDirective","selectDirective","NG_OPTIONS_REGEXP","nullModelCtrl","optionsMap","ngModelCtrl","unknownOption","databound","init","self.init","ngModelCtrl_","nullOption_","unknownOption_","addOption","self.addOption","removeOption","self.removeOption","hasOption","renderUnknownOption","self.renderUnknownOption","unknownVal","self.hasOption","Single","selectElement","selectCtrl","ngModelCtrl.$render","emptyOption","Multiple","lastView","items","selectMultipleWatch","Options","render","optionGroups","optionGroupNames","optionGroupName","optionGroup","existingParent","existingOptions","modelValue","valuesFn","keyName","groupIndex","selectedSet","lastElement","trackFn","trackIndex","valueName","groupByFn","modelCast","label","displayFn","nullOption","groupLength","optionGroupsCache","optGroupTemplate","existingOption","optionTemplate","optionsExp","track","optionElement","ngOptions","ngRequired","requiredValidator","optionDirective","nullSelectCtrl","selectCtrlName","interpolateWatchAction","styleDirective","publishExternalAPI","ngModule"]
+}
diff --git a/app/lib/angular/errors.json b/app/lib/angular/errors.json
new file mode 100755
index 0000000000..ef080ae3b0
--- /dev/null
+++ b/app/lib/angular/errors.json
@@ -0,0 +1 @@
+{"id":"ng","generated":"Mon Oct 14 2013 10:37:34 GMT-0700 (PDT)","errors":{"$cacheFactory":{"iid":"CacheId '{0}' is already taken!"},"ngModel":{"nonassign":"Expression '{0}' is non-assignable. Element: {1}"},"$sce":{"iequirks":"Strict Contextual Escaping does not support Internet Explorer version < 9 in quirks mode. You can fix this by adding the text to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.","insecurl":"Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}","icontext":"Attempted to trust a value in invalid context. Context: {0}; Value: {1}","imatcher":"Matchers may only be \"self\", string patterns or RegExp objects","iwcard":"Illegal sequence *** in string matcher. String: {0}","itype":"Attempted to trust a non-string value in a content requiring a string: Context: {0}","unsafe":"Attempting to use an unsafe value in a safe context."},"$controller":{"noscp":"Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`."},"$compile":{"nodomevents":"Interpolations for HTML DOM event attributes are disallowed. Please use the ng- versions (such as ng-click instead of onclick) instead.","multidir":"Multiple directives [{0}, {1}] asking for {2} on: {3}","nonassign":"Expression '{0}' used with directive '{1}' is non-assignable!","tplrt":"Template for directive '{0}' must have exactly one root element. {1}","selmulti":"Binding to the 'multiple' attribute is not supported. Element: {0}","tpload":"Failed to load template: {0}","iscp":"Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}","ctreq":"Controller '{0}', required by directive '{1}', can't be found!","uterdir":"Unterminated attribute, found '{0}' but no matching '{1}' found."},"$injector":{"modulerr":"Failed to instantiate module {0} due to:\n{1}","unpr":"Unknown provider: {0}","itkn":"Incorrect injection token! Expected service name as string, got {0}","cdep":"Circular dependency found: {0}","nomod":"Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.","pget":"Provider '{0}' must define $get factory method."},"$rootScope":{"inprog":"{0} already in progress","infdig":"{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}"},"ngPattern":{"noregexp":"Expected {0} to be a RegExp but was {1}. Element: {2}"},"$interpolate":{"noconcat":"Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce","interr":"Can't interpolate: {0}\n{1}"},"jqLite":{"offargs":"jqLite#off() does not support the `selector` argument","onargs":"jqLite#on() does not support the `selector` or `eventData` parameters","nosel":"Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element"},"ngOptions":{"iexp":"Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}"},"ngRepeat":{"iidexp":"'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.","dupes":"Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}","iexp":"Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'."},"ng":{"areq":"Argument '{0}' is {1}","cpws":"Can't copy! Making copies of Window or Scope instances is not supported.","badname":"hasOwnProperty is not a valid {0} name","btstrpd":"App Already Bootstrapped with this Element '{0}'","cpi":"Can't copy! Source and destination are identical."},"$animate":{"notcsel":"Expecting class selector starting with '.' got '{0}'."},"ngTransclude":{"orphan":"Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}"},"$parse":{"isecfld":"Referencing \"constructor\" field in Angular expressions is disallowed! Expression: {0}","syntax":"Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].","isecdom":"Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}","lexerr":"Lexer Error: {0} at column{1} in expression [{2}].","ueoe":"Unexpected end of expression: {0}","isecwindow":"Referencing the Window in Angular expressions is disallowed! Expression: {0}","isecfn":"Referencing Function in Angular expressions is disallowed! Expression: {0}"},"$httpBackend":{"noxhr":"This browser does not support XMLHttpRequest."},"$location":{"ipthprfx":"Invalid url \"{0}\", missing path prefix \"{1}\".","isrcharg":"The first argument of the `$location#search()` call must be a string or an object.","ihshprfx":"Invalid url \"{0}\", missing hash prefix \"{1}\"."},"$resource":{"badargs":"Expected up to 4 arguments [params, data, success, error], got {0} arguments","badcfg":"Error in resource configuration. Expected response to contain an {0} but got an {1}","badname":"hasOwnProperty is not a valid parameter name."},"$sanitize":{"badparse":"The sanitizer was unable to parse the following block of html: {0}"}}}
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_af-na.js b/app/lib/angular/i18n/angular-locale_af-na.js
new file mode 100755
index 0000000000..6b7e2850c4
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_af-na.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "vm.",
+ "nm."
+ ],
+ "DAY": [
+ "Sondag",
+ "Maandag",
+ "Dinsdag",
+ "Woensdag",
+ "Donderdag",
+ "Vrydag",
+ "Saterdag"
+ ],
+ "MONTH": [
+ "Januarie",
+ "Februarie",
+ "Maart",
+ "April",
+ "Mei",
+ "Junie",
+ "Julie",
+ "Augustus",
+ "September",
+ "Oktober",
+ "November",
+ "Desember"
+ ],
+ "SHORTDAY": [
+ "So",
+ "Ma",
+ "Di",
+ "Wo",
+ "Do",
+ "Vr",
+ "Sa"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Mei",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Des"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "yyyy-MM-dd HH:mm",
+ "shortDate": "yyyy-MM-dd",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "R",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "af-na",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_af-za.js b/app/lib/angular/i18n/angular-locale_af-za.js
new file mode 100755
index 0000000000..a15813d0d0
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_af-za.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "vm.",
+ "nm."
+ ],
+ "DAY": [
+ "Sondag",
+ "Maandag",
+ "Dinsdag",
+ "Woensdag",
+ "Donderdag",
+ "Vrydag",
+ "Saterdag"
+ ],
+ "MONTH": [
+ "Januarie",
+ "Februarie",
+ "Maart",
+ "April",
+ "Mei",
+ "Junie",
+ "Julie",
+ "Augustus",
+ "September",
+ "Oktober",
+ "November",
+ "Desember"
+ ],
+ "SHORTDAY": [
+ "So",
+ "Ma",
+ "Di",
+ "Wo",
+ "Do",
+ "Vr",
+ "Sa"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Mei",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Des"
+ ],
+ "fullDate": "EEEE dd MMMM y",
+ "longDate": "dd MMMM y",
+ "medium": "dd MMM y h:mm:ss a",
+ "mediumDate": "dd MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "yyyy-MM-dd h:mm a",
+ "shortDate": "yyyy-MM-dd",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "R",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "af-za",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_af.js b/app/lib/angular/i18n/angular-locale_af.js
new file mode 100755
index 0000000000..d8f8450942
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_af.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "vm.",
+ "nm."
+ ],
+ "DAY": [
+ "Sondag",
+ "Maandag",
+ "Dinsdag",
+ "Woensdag",
+ "Donderdag",
+ "Vrydag",
+ "Saterdag"
+ ],
+ "MONTH": [
+ "Januarie",
+ "Februarie",
+ "Maart",
+ "April",
+ "Mei",
+ "Junie",
+ "Julie",
+ "Augustus",
+ "September",
+ "Oktober",
+ "November",
+ "Desember"
+ ],
+ "SHORTDAY": [
+ "So",
+ "Ma",
+ "Di",
+ "Wo",
+ "Do",
+ "Vr",
+ "Sa"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Mei",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Des"
+ ],
+ "fullDate": "EEEE dd MMMM y",
+ "longDate": "dd MMMM y",
+ "medium": "dd MMM y h:mm:ss a",
+ "mediumDate": "dd MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "yyyy-MM-dd h:mm a",
+ "shortDate": "yyyy-MM-dd",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "R",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "af",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_am-et.js b/app/lib/angular/i18n/angular-locale_am-et.js
new file mode 100755
index 0000000000..0640202455
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_am-et.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u1321\u12cb\u1275",
+ "\u12a8\u1233\u12d3\u1275"
+ ],
+ "DAY": [
+ "\u12a5\u1211\u12f5",
+ "\u1230\u129e",
+ "\u121b\u12ad\u1230\u129e",
+ "\u1228\u1261\u12d5",
+ "\u1210\u1219\u1235",
+ "\u12d3\u122d\u1265",
+ "\u1245\u12f3\u121c"
+ ],
+ "MONTH": [
+ "\u1303\u1295\u12e9\u12c8\u122a",
+ "\u134c\u1265\u1229\u12c8\u122a",
+ "\u121b\u122d\u127d",
+ "\u12a4\u1355\u1228\u120d",
+ "\u121c\u12ed",
+ "\u1301\u1295",
+ "\u1301\u120b\u12ed",
+ "\u12a6\u1308\u1235\u1275",
+ "\u1234\u1355\u1274\u121d\u1260\u122d",
+ "\u12a6\u12ad\u1270\u12cd\u1260\u122d",
+ "\u1296\u126c\u121d\u1260\u122d",
+ "\u12f2\u1234\u121d\u1260\u122d"
+ ],
+ "SHORTDAY": [
+ "\u12a5\u1211\u12f5",
+ "\u1230\u129e",
+ "\u121b\u12ad\u1230",
+ "\u1228\u1261\u12d5",
+ "\u1210\u1219\u1235",
+ "\u12d3\u122d\u1265",
+ "\u1245\u12f3\u121c"
+ ],
+ "SHORTMONTH": [
+ "\u1303\u1295\u12e9",
+ "\u134c\u1265\u1229",
+ "\u121b\u122d\u127d",
+ "\u12a4\u1355\u1228",
+ "\u121c\u12ed",
+ "\u1301\u1295",
+ "\u1301\u120b\u12ed",
+ "\u12a6\u1308\u1235",
+ "\u1234\u1355\u1274",
+ "\u12a6\u12ad\u1270",
+ "\u1296\u126c\u121d",
+ "\u12f2\u1234\u121d"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "dd/MM/yyyy h:mm a",
+ "shortDate": "dd/MM/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Birr",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "am-et",
+ "pluralCat": function (n) { if (n == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_am.js b/app/lib/angular/i18n/angular-locale_am.js
new file mode 100755
index 0000000000..26c8244ed3
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_am.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u1321\u12cb\u1275",
+ "\u12a8\u1233\u12d3\u1275"
+ ],
+ "DAY": [
+ "\u12a5\u1211\u12f5",
+ "\u1230\u129e",
+ "\u121b\u12ad\u1230\u129e",
+ "\u1228\u1261\u12d5",
+ "\u1210\u1219\u1235",
+ "\u12d3\u122d\u1265",
+ "\u1245\u12f3\u121c"
+ ],
+ "MONTH": [
+ "\u1303\u1295\u12e9\u12c8\u122a",
+ "\u134c\u1265\u1229\u12c8\u122a",
+ "\u121b\u122d\u127d",
+ "\u12a4\u1355\u1228\u120d",
+ "\u121c\u12ed",
+ "\u1301\u1295",
+ "\u1301\u120b\u12ed",
+ "\u12a6\u1308\u1235\u1275",
+ "\u1234\u1355\u1274\u121d\u1260\u122d",
+ "\u12a6\u12ad\u1270\u12cd\u1260\u122d",
+ "\u1296\u126c\u121d\u1260\u122d",
+ "\u12f2\u1234\u121d\u1260\u122d"
+ ],
+ "SHORTDAY": [
+ "\u12a5\u1211\u12f5",
+ "\u1230\u129e",
+ "\u121b\u12ad\u1230",
+ "\u1228\u1261\u12d5",
+ "\u1210\u1219\u1235",
+ "\u12d3\u122d\u1265",
+ "\u1245\u12f3\u121c"
+ ],
+ "SHORTMONTH": [
+ "\u1303\u1295\u12e9",
+ "\u134c\u1265\u1229",
+ "\u121b\u122d\u127d",
+ "\u12a4\u1355\u1228",
+ "\u121c\u12ed",
+ "\u1301\u1295",
+ "\u1301\u120b\u12ed",
+ "\u12a6\u1308\u1235",
+ "\u1234\u1355\u1274",
+ "\u12a6\u12ad\u1270",
+ "\u1296\u126c\u121d",
+ "\u12f2\u1234\u121d"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "dd/MM/yyyy h:mm a",
+ "shortDate": "dd/MM/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Birr",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "am",
+ "pluralCat": function (n) { if (n == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-001.js b/app/lib/angular/i18n/angular-locale_ar-001.js
new file mode 100755
index 0000000000..ee6aca0fa2
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-001.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-001",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-ae.js b/app/lib/angular/i18n/angular-locale_ar-ae.js
new file mode 100755
index 0000000000..6f4f501e6a
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-ae.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-ae",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-bh.js b/app/lib/angular/i18n/angular-locale_ar-bh.js
new file mode 100755
index 0000000000..1b32a5bbac
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-bh.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-bh",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-dz.js b/app/lib/angular/i18n/angular-locale_ar-dz.js
new file mode 100755
index 0000000000..b4bdf08e4c
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-dz.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "yyyy/MM/dd h:mm:ss a",
+ "mediumDate": "yyyy/MM/dd",
+ "mediumTime": "h:mm:ss a",
+ "short": "yyyy/M/d h:mm a",
+ "shortDate": "yyyy/M/d",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-dz",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-eg.js b/app/lib/angular/i18n/angular-locale_ar-eg.js
new file mode 100755
index 0000000000..2e40e63a86
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-eg.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-eg",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-iq.js b/app/lib/angular/i18n/angular-locale_ar-iq.js
new file mode 100755
index 0000000000..c8e8af85fb
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-iq.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-iq",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-jo.js b/app/lib/angular/i18n/angular-locale_ar-jo.js
new file mode 100755
index 0000000000..752de35691
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-jo.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+ "\u0634\u0628\u0627\u0637",
+ "\u0622\u0630\u0627\u0631",
+ "\u0646\u064a\u0633\u0627\u0646",
+ "\u0623\u064a\u0627\u0631",
+ "\u062d\u0632\u064a\u0631\u0627\u0646",
+ "\u062a\u0645\u0648\u0632",
+ "\u0622\u0628",
+ "\u0623\u064a\u0644\u0648\u0644",
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+ "\u0634\u0628\u0627\u0637",
+ "\u0622\u0630\u0627\u0631",
+ "\u0646\u064a\u0633\u0627\u0646",
+ "\u0623\u064a\u0627\u0631",
+ "\u062d\u0632\u064a\u0631\u0627\u0646",
+ "\u062a\u0645\u0648\u0632",
+ "\u0622\u0628",
+ "\u0623\u064a\u0644\u0648\u0644",
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-jo",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-kw.js b/app/lib/angular/i18n/angular-locale_ar-kw.js
new file mode 100755
index 0000000000..7e812721aa
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-kw.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-kw",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-lb.js b/app/lib/angular/i18n/angular-locale_ar-lb.js
new file mode 100755
index 0000000000..b1f9ce1d90
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-lb.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+ "\u0634\u0628\u0627\u0637",
+ "\u0622\u0630\u0627\u0631",
+ "\u0646\u064a\u0633\u0627\u0646",
+ "\u0623\u064a\u0627\u0631",
+ "\u062d\u0632\u064a\u0631\u0627\u0646",
+ "\u062a\u0645\u0648\u0632",
+ "\u0622\u0628",
+ "\u0623\u064a\u0644\u0648\u0644",
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+ "\u0634\u0628\u0627\u0637",
+ "\u0622\u0630\u0627\u0631",
+ "\u0646\u064a\u0633\u0627\u0646",
+ "\u0623\u064a\u0627\u0631",
+ "\u062d\u0632\u064a\u0631\u0627\u0646",
+ "\u062a\u0645\u0648\u0632",
+ "\u0622\u0628",
+ "\u0623\u064a\u0644\u0648\u0644",
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-lb",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-ly.js b/app/lib/angular/i18n/angular-locale_ar-ly.js
new file mode 100755
index 0000000000..5f09f8a312
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-ly.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-ly",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-ma.js b/app/lib/angular/i18n/angular-locale_ar-ma.js
new file mode 100755
index 0000000000..e08616bef0
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-ma.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "yyyy/MM/dd h:mm:ss a",
+ "mediumDate": "yyyy/MM/dd",
+ "mediumTime": "h:mm:ss a",
+ "short": "yyyy/M/d h:mm a",
+ "shortDate": "yyyy/M/d",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-ma",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-om.js b/app/lib/angular/i18n/angular-locale_ar-om.js
new file mode 100755
index 0000000000..343ace3c8c
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-om.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-om",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-qa.js b/app/lib/angular/i18n/angular-locale_ar-qa.js
new file mode 100755
index 0000000000..0ecd38ae3f
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-qa.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-qa",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-sa.js b/app/lib/angular/i18n/angular-locale_ar-sa.js
new file mode 100755
index 0000000000..1b880d9afc
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-sa.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-sa",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-sd.js b/app/lib/angular/i18n/angular-locale_ar-sd.js
new file mode 100755
index 0000000000..c78fdff2d9
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-sd.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-sd",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-sy.js b/app/lib/angular/i18n/angular-locale_ar-sy.js
new file mode 100755
index 0000000000..41e364a816
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-sy.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+ "\u0634\u0628\u0627\u0637",
+ "\u0622\u0630\u0627\u0631",
+ "\u0646\u064a\u0633\u0627\u0646",
+ "\u0623\u064a\u0627\u0631",
+ "\u062d\u0632\u064a\u0631\u0627\u0646",
+ "\u062a\u0645\u0648\u0632",
+ "\u0622\u0628",
+ "\u0623\u064a\u0644\u0648\u0644",
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+ "\u0634\u0628\u0627\u0637",
+ "\u0622\u0630\u0627\u0631",
+ "\u0646\u064a\u0633\u0627\u0646",
+ "\u0623\u064a\u0627\u0631",
+ "\u062d\u0632\u064a\u0631\u0627\u0646",
+ "\u062a\u0645\u0648\u0632",
+ "\u0622\u0628",
+ "\u0623\u064a\u0644\u0648\u0644",
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644",
+ "\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a",
+ "\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0644"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-sy",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-tn.js b/app/lib/angular/i18n/angular-locale_ar-tn.js
new file mode 100755
index 0000000000..fc4a8b0e09
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-tn.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "yyyy/MM/dd h:mm:ss a",
+ "mediumDate": "yyyy/MM/dd",
+ "mediumTime": "h:mm:ss a",
+ "short": "yyyy/M/d h:mm a",
+ "shortDate": "yyyy/M/d",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-tn",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar-ye.js b/app/lib/angular/i18n/angular-locale_ar-ye.js
new file mode 100755
index 0000000000..f5dc74e50a
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar-ye.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar-ye",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ar.js b/app/lib/angular/i18n/angular-locale_ar.js
new file mode 100755
index 0000000000..300498f0d3
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ar.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0635",
+ "\u0645"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE\u060c d MMMM\u060c y",
+ "longDate": "d MMMM\u060c y",
+ "medium": "dd\u200f/MM\u200f/yyyy h:mm:ss a",
+ "mediumDate": "dd\u200f/MM\u200f/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d\u200f/M\u200f/yyyy h:mm a",
+ "shortDate": "d\u200f/M\u200f/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "",
+ "negSuf": "-",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ar",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 2) { return PLURAL_CATEGORY.TWO; } if (n == (n | 0) && n % 100 >= 3 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 99) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_bg-bg.js b/app/lib/angular/i18n/angular-locale_bg-bg.js
new file mode 100755
index 0000000000..b33dc4712e
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_bg-bg.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u043f\u0440. \u043e\u0431.",
+ "\u0441\u043b. \u043e\u0431."
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u043d\u0434",
+ "\u043f\u043d",
+ "\u0432\u0442",
+ "\u0441\u0440",
+ "\u0447\u0442",
+ "\u043f\u0442",
+ "\u0441\u0431"
+ ],
+ "SHORTMONTH": [
+ "\u044f\u043d.",
+ "\u0444\u0435\u0432\u0440.",
+ "\u043c\u0430\u0440\u0442",
+ "\u0430\u043f\u0440.",
+ "\u043c\u0430\u0439",
+ "\u044e\u043d\u0438",
+ "\u044e\u043b\u0438",
+ "\u0430\u0432\u0433.",
+ "\u0441\u0435\u043f\u0442.",
+ "\u043e\u043a\u0442.",
+ "\u043d\u043e\u0435\u043c.",
+ "\u0434\u0435\u043a."
+ ],
+ "fullDate": "dd MMMM y, EEEE",
+ "longDate": "dd MMMM y",
+ "medium": "dd.MM.yyyy HH:mm:ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "lev",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "bg-bg",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_bg.js b/app/lib/angular/i18n/angular-locale_bg.js
new file mode 100755
index 0000000000..7d8a253b3d
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_bg.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u043f\u0440. \u043e\u0431.",
+ "\u0441\u043b. \u043e\u0431."
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u043d\u0434",
+ "\u043f\u043d",
+ "\u0432\u0442",
+ "\u0441\u0440",
+ "\u0447\u0442",
+ "\u043f\u0442",
+ "\u0441\u0431"
+ ],
+ "SHORTMONTH": [
+ "\u044f\u043d.",
+ "\u0444\u0435\u0432\u0440.",
+ "\u043c\u0430\u0440\u0442",
+ "\u0430\u043f\u0440.",
+ "\u043c\u0430\u0439",
+ "\u044e\u043d\u0438",
+ "\u044e\u043b\u0438",
+ "\u0430\u0432\u0433.",
+ "\u0441\u0435\u043f\u0442.",
+ "\u043e\u043a\u0442.",
+ "\u043d\u043e\u0435\u043c.",
+ "\u0434\u0435\u043a."
+ ],
+ "fullDate": "dd MMMM y, EEEE",
+ "longDate": "dd MMMM y",
+ "medium": "dd.MM.yyyy HH:mm:ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "lev",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "bg",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_bn-bd.js b/app/lib/angular/i18n/angular-locale_bn-bd.js
new file mode 100755
index 0000000000..c16bdda2f1
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_bn-bd.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE, d MMMM, y",
+ "longDate": "d MMMM, y",
+ "medium": "d MMM, y h:mm:ss a",
+ "mediumDate": "d MMM, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/M/yy h:mm a",
+ "shortDate": "d/M/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u09f3",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a4"
+ }
+ ]
+ },
+ "id": "bn-bd",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_bn-in.js b/app/lib/angular/i18n/angular-locale_bn-in.js
new file mode 100755
index 0000000000..0014314c8c
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_bn-in.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE, d MMMM, y",
+ "longDate": "d MMMM, y",
+ "medium": "d MMM, y h:mm:ss a",
+ "mediumDate": "d MMM, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/M/yy h:mm a",
+ "shortDate": "d/M/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u09f3",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a4"
+ }
+ ]
+ },
+ "id": "bn-in",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_bn.js b/app/lib/angular/i18n/angular-locale_bn.js
new file mode 100755
index 0000000000..82fbe3859d
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_bn.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE, d MMMM, y",
+ "longDate": "d MMMM, y",
+ "medium": "d MMM, y h:mm:ss a",
+ "mediumDate": "d MMM, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/M/yy h:mm a",
+ "shortDate": "d/M/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u09f3",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a4"
+ }
+ ]
+ },
+ "id": "bn",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ca-ad.js b/app/lib/angular/i18n/angular-locale_ca-ad.js
new file mode 100755
index 0000000000..f1cdab2112
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ca-ad.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "diumenge",
+ "dilluns",
+ "dimarts",
+ "dimecres",
+ "dijous",
+ "divendres",
+ "dissabte"
+ ],
+ "MONTH": [
+ "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"
+ ],
+ "SHORTDAY": [
+ "dg.",
+ "dl.",
+ "dt.",
+ "dc.",
+ "dj.",
+ "dv.",
+ "ds."
+ ],
+ "SHORTMONTH": [
+ "de gen.",
+ "de febr.",
+ "de mar\u00e7",
+ "d\u2019abr.",
+ "de maig",
+ "de juny",
+ "de jul.",
+ "d\u2019ag.",
+ "de set.",
+ "d\u2019oct.",
+ "de nov.",
+ "de des."
+ ],
+ "fullDate": "EEEE d MMMM 'de' y",
+ "longDate": "d MMMM 'de' y",
+ "medium": "dd/MM/yyyy H:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "H:mm:ss",
+ "short": "dd/MM/yy H:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ca-ad",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ca-es.js b/app/lib/angular/i18n/angular-locale_ca-es.js
new file mode 100755
index 0000000000..90662edd15
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ca-es.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "diumenge",
+ "dilluns",
+ "dimarts",
+ "dimecres",
+ "dijous",
+ "divendres",
+ "dissabte"
+ ],
+ "MONTH": [
+ "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"
+ ],
+ "SHORTDAY": [
+ "dg.",
+ "dl.",
+ "dt.",
+ "dc.",
+ "dj.",
+ "dv.",
+ "ds."
+ ],
+ "SHORTMONTH": [
+ "de gen.",
+ "de febr.",
+ "de mar\u00e7",
+ "d\u2019abr.",
+ "de maig",
+ "de juny",
+ "de jul.",
+ "d\u2019ag.",
+ "de set.",
+ "d\u2019oct.",
+ "de nov.",
+ "de des."
+ ],
+ "fullDate": "EEEE d MMMM 'de' y",
+ "longDate": "d MMMM 'de' y",
+ "medium": "dd/MM/yyyy H:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "H:mm:ss",
+ "short": "dd/MM/yy H:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ca-es",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ca.js b/app/lib/angular/i18n/angular-locale_ca.js
new file mode 100755
index 0000000000..cf881e0c4b
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ca.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "diumenge",
+ "dilluns",
+ "dimarts",
+ "dimecres",
+ "dijous",
+ "divendres",
+ "dissabte"
+ ],
+ "MONTH": [
+ "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"
+ ],
+ "SHORTDAY": [
+ "dg.",
+ "dl.",
+ "dt.",
+ "dc.",
+ "dj.",
+ "dv.",
+ "ds."
+ ],
+ "SHORTMONTH": [
+ "de gen.",
+ "de febr.",
+ "de mar\u00e7",
+ "d\u2019abr.",
+ "de maig",
+ "de juny",
+ "de jul.",
+ "d\u2019ag.",
+ "de set.",
+ "d\u2019oct.",
+ "de nov.",
+ "de des."
+ ],
+ "fullDate": "EEEE d MMMM 'de' y",
+ "longDate": "d MMMM 'de' y",
+ "medium": "dd/MM/yyyy H:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "H:mm:ss",
+ "short": "dd/MM/yy H:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ca",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_cs-cz.js b/app/lib/angular/i18n/angular-locale_cs-cz.js
new file mode 100755
index 0000000000..b0c3dfd900
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_cs-cz.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "dop.",
+ "odp."
+ ],
+ "DAY": [
+ "ned\u011ble",
+ "pond\u011bl\u00ed",
+ "\u00fater\u00fd",
+ "st\u0159eda",
+ "\u010dtvrtek",
+ "p\u00e1tek",
+ "sobota"
+ ],
+ "MONTH": [
+ "ledna",
+ "\u00fanora",
+ "b\u0159ezna",
+ "dubna",
+ "kv\u011btna",
+ "\u010dervna",
+ "\u010dervence",
+ "srpna",
+ "z\u00e1\u0159\u00ed",
+ "\u0159\u00edjna",
+ "listopadu",
+ "prosince"
+ ],
+ "SHORTDAY": [
+ "ne",
+ "po",
+ "\u00fat",
+ "st",
+ "\u010dt",
+ "p\u00e1",
+ "so"
+ ],
+ "SHORTMONTH": [
+ "Led",
+ "\u00dano",
+ "B\u0159e",
+ "Dub",
+ "Kv\u011b",
+ "\u010cer",
+ "\u010cvc",
+ "Srp",
+ "Z\u00e1\u0159",
+ "\u0158\u00edj",
+ "Lis",
+ "Pro"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "d. M. yyyy H:mm:ss",
+ "mediumDate": "d. M. yyyy",
+ "mediumTime": "H:mm:ss",
+ "short": "dd.MM.yy H:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "K\u010d",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "cs-cz",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n >= 2 && n <= 4) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_cs.js b/app/lib/angular/i18n/angular-locale_cs.js
new file mode 100755
index 0000000000..fbe92cf1b8
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_cs.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "dop.",
+ "odp."
+ ],
+ "DAY": [
+ "ned\u011ble",
+ "pond\u011bl\u00ed",
+ "\u00fater\u00fd",
+ "st\u0159eda",
+ "\u010dtvrtek",
+ "p\u00e1tek",
+ "sobota"
+ ],
+ "MONTH": [
+ "ledna",
+ "\u00fanora",
+ "b\u0159ezna",
+ "dubna",
+ "kv\u011btna",
+ "\u010dervna",
+ "\u010dervence",
+ "srpna",
+ "z\u00e1\u0159\u00ed",
+ "\u0159\u00edjna",
+ "listopadu",
+ "prosince"
+ ],
+ "SHORTDAY": [
+ "ne",
+ "po",
+ "\u00fat",
+ "st",
+ "\u010dt",
+ "p\u00e1",
+ "so"
+ ],
+ "SHORTMONTH": [
+ "Led",
+ "\u00dano",
+ "B\u0159e",
+ "Dub",
+ "Kv\u011b",
+ "\u010cer",
+ "\u010cvc",
+ "Srp",
+ "Z\u00e1\u0159",
+ "\u0158\u00edj",
+ "Lis",
+ "Pro"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "d. M. yyyy H:mm:ss",
+ "mediumDate": "d. M. yyyy",
+ "mediumTime": "H:mm:ss",
+ "short": "dd.MM.yy H:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "K\u010d",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "cs",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n >= 2 && n <= 4) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_da-dk.js b/app/lib/angular/i18n/angular-locale_da-dk.js
new file mode 100755
index 0000000000..3a7afac92f
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_da-dk.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "f.m.",
+ "e.m."
+ ],
+ "DAY": [
+ "s\u00f8ndag",
+ "mandag",
+ "tirsdag",
+ "onsdag",
+ "torsdag",
+ "fredag",
+ "l\u00f8rdag"
+ ],
+ "MONTH": [
+ "januar",
+ "februar",
+ "marts",
+ "april",
+ "maj",
+ "juni",
+ "juli",
+ "august",
+ "september",
+ "oktober",
+ "november",
+ "december"
+ ],
+ "SHORTDAY": [
+ "s\u00f8n",
+ "man",
+ "tir",
+ "ons",
+ "tor",
+ "fre",
+ "l\u00f8r"
+ ],
+ "SHORTMONTH": [
+ "jan.",
+ "feb.",
+ "mar.",
+ "apr.",
+ "maj",
+ "jun.",
+ "jul.",
+ "aug.",
+ "sep.",
+ "okt.",
+ "nov.",
+ "dec."
+ ],
+ "fullDate": "EEEE 'den' d. MMMM y",
+ "longDate": "d. MMM y",
+ "medium": "dd/MM/yyyy HH.mm.ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH.mm.ss",
+ "short": "dd/MM/yy HH.mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH.mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "kr",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "da-dk",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_da.js b/app/lib/angular/i18n/angular-locale_da.js
new file mode 100755
index 0000000000..52c97db063
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_da.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "f.m.",
+ "e.m."
+ ],
+ "DAY": [
+ "s\u00f8ndag",
+ "mandag",
+ "tirsdag",
+ "onsdag",
+ "torsdag",
+ "fredag",
+ "l\u00f8rdag"
+ ],
+ "MONTH": [
+ "januar",
+ "februar",
+ "marts",
+ "april",
+ "maj",
+ "juni",
+ "juli",
+ "august",
+ "september",
+ "oktober",
+ "november",
+ "december"
+ ],
+ "SHORTDAY": [
+ "s\u00f8n",
+ "man",
+ "tir",
+ "ons",
+ "tor",
+ "fre",
+ "l\u00f8r"
+ ],
+ "SHORTMONTH": [
+ "jan.",
+ "feb.",
+ "mar.",
+ "apr.",
+ "maj",
+ "jun.",
+ "jul.",
+ "aug.",
+ "sep.",
+ "okt.",
+ "nov.",
+ "dec."
+ ],
+ "fullDate": "EEEE 'den' d. MMMM y",
+ "longDate": "d. MMM y",
+ "medium": "dd/MM/yyyy HH.mm.ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH.mm.ss",
+ "short": "dd/MM/yy HH.mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH.mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "kr",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "da",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_de-at.js b/app/lib/angular/i18n/angular-locale_de-at.js
new file mode 100755
index 0000000000..9c7c455cfc
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_de-at.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "vorm.",
+ "nachm."
+ ],
+ "DAY": [
+ "Sonntag",
+ "Montag",
+ "Dienstag",
+ "Mittwoch",
+ "Donnerstag",
+ "Freitag",
+ "Samstag"
+ ],
+ "MONTH": [
+ "J\u00e4nner",
+ "Februar",
+ "M\u00e4rz",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember"
+ ],
+ "SHORTDAY": [
+ "So.",
+ "Mo.",
+ "Di.",
+ "Mi.",
+ "Do.",
+ "Fr.",
+ "Sa."
+ ],
+ "SHORTMONTH": [
+ "J\u00e4n",
+ "Feb",
+ "M\u00e4r",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez"
+ ],
+ "fullDate": "EEEE, dd. MMMM y",
+ "longDate": "dd. MMMM y",
+ "medium": "dd.MM.yyyy HH:mm:ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0-",
+ "negSuf": "",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "de-at",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_de-be.js b/app/lib/angular/i18n/angular-locale_de-be.js
new file mode 100755
index 0000000000..63b32dc8c5
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_de-be.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "vorm.",
+ "nachm."
+ ],
+ "DAY": [
+ "Sonntag",
+ "Montag",
+ "Dienstag",
+ "Mittwoch",
+ "Donnerstag",
+ "Freitag",
+ "Samstag"
+ ],
+ "MONTH": [
+ "Januar",
+ "Februar",
+ "M\u00e4rz",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember"
+ ],
+ "SHORTDAY": [
+ "So.",
+ "Mo.",
+ "Di.",
+ "Mi.",
+ "Do.",
+ "Fr.",
+ "Sa."
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "M\u00e4r",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "dd.MM.yyyy HH:mm:ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "de-be",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_de-ch.js b/app/lib/angular/i18n/angular-locale_de-ch.js
new file mode 100755
index 0000000000..178c463ba3
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_de-ch.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "vorm.",
+ "nachm."
+ ],
+ "DAY": [
+ "Sonntag",
+ "Montag",
+ "Dienstag",
+ "Mittwoch",
+ "Donnerstag",
+ "Freitag",
+ "Samstag"
+ ],
+ "MONTH": [
+ "Januar",
+ "Februar",
+ "M\u00e4rz",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember"
+ ],
+ "SHORTDAY": [
+ "So.",
+ "Mo.",
+ "Di.",
+ "Mi.",
+ "Do.",
+ "Fr.",
+ "Sa."
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "M\u00e4r",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "dd.MM.yyyy HH:mm:ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "CHF",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": "'",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4-",
+ "negSuf": "",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "de-ch",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_de-de.js b/app/lib/angular/i18n/angular-locale_de-de.js
new file mode 100755
index 0000000000..404715f127
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_de-de.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "vorm.",
+ "nachm."
+ ],
+ "DAY": [
+ "Sonntag",
+ "Montag",
+ "Dienstag",
+ "Mittwoch",
+ "Donnerstag",
+ "Freitag",
+ "Samstag"
+ ],
+ "MONTH": [
+ "Januar",
+ "Februar",
+ "M\u00e4rz",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember"
+ ],
+ "SHORTDAY": [
+ "So.",
+ "Mo.",
+ "Di.",
+ "Mi.",
+ "Do.",
+ "Fr.",
+ "Sa."
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "M\u00e4r",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "dd.MM.yyyy HH:mm:ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "de-de",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_de-li.js b/app/lib/angular/i18n/angular-locale_de-li.js
new file mode 100755
index 0000000000..8f3d2d21e0
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_de-li.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "vorm.",
+ "nachm."
+ ],
+ "DAY": [
+ "Sonntag",
+ "Montag",
+ "Dienstag",
+ "Mittwoch",
+ "Donnerstag",
+ "Freitag",
+ "Samstag"
+ ],
+ "MONTH": [
+ "Januar",
+ "Februar",
+ "M\u00e4rz",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember"
+ ],
+ "SHORTDAY": [
+ "So.",
+ "Mo.",
+ "Di.",
+ "Mi.",
+ "Do.",
+ "Fr.",
+ "Sa."
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "M\u00e4r",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "dd.MM.yyyy HH:mm:ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "de-li",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_de-lu.js b/app/lib/angular/i18n/angular-locale_de-lu.js
new file mode 100755
index 0000000000..70a7582043
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_de-lu.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "vorm.",
+ "nachm."
+ ],
+ "DAY": [
+ "Sonntag",
+ "Montag",
+ "Dienstag",
+ "Mittwoch",
+ "Donnerstag",
+ "Freitag",
+ "Samstag"
+ ],
+ "MONTH": [
+ "Januar",
+ "Februar",
+ "M\u00e4rz",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember"
+ ],
+ "SHORTDAY": [
+ "So.",
+ "Mo.",
+ "Di.",
+ "Mi.",
+ "Do.",
+ "Fr.",
+ "Sa."
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "M\u00e4r",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "dd.MM.yyyy HH:mm:ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "de-lu",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_de.js b/app/lib/angular/i18n/angular-locale_de.js
new file mode 100755
index 0000000000..ebb2853814
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_de.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "vorm.",
+ "nachm."
+ ],
+ "DAY": [
+ "Sonntag",
+ "Montag",
+ "Dienstag",
+ "Mittwoch",
+ "Donnerstag",
+ "Freitag",
+ "Samstag"
+ ],
+ "MONTH": [
+ "Januar",
+ "Februar",
+ "M\u00e4rz",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember"
+ ],
+ "SHORTDAY": [
+ "So.",
+ "Mo.",
+ "Di.",
+ "Mi.",
+ "Do.",
+ "Fr.",
+ "Sa."
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "M\u00e4r",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "dd.MM.yyyy HH:mm:ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "de",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_el-cy.js b/app/lib/angular/i18n/angular-locale_el-cy.js
new file mode 100755
index 0000000000..1252687014
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_el-cy.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u03c0.\u03bc.",
+ "\u03bc.\u03bc."
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u039a\u03c5\u03c1",
+ "\u0394\u03b5\u03c5",
+ "\u03a4\u03c1\u03b9",
+ "\u03a4\u03b5\u03c4",
+ "\u03a0\u03b5\u03bc",
+ "\u03a0\u03b1\u03c1",
+ "\u03a3\u03b1\u03b2"
+ ],
+ "SHORTMONTH": [
+ "\u0399\u03b1\u03bd",
+ "\u03a6\u03b5\u03b2",
+ "\u039c\u03b1\u03c1",
+ "\u0391\u03c0\u03c1",
+ "\u039c\u03b1\u03ca",
+ "\u0399\u03bf\u03c5\u03bd",
+ "\u0399\u03bf\u03c5\u03bb",
+ "\u0391\u03c5\u03b3",
+ "\u03a3\u03b5\u03c0",
+ "\u039f\u03ba\u03c4",
+ "\u039d\u03bf\u03b5",
+ "\u0394\u03b5\u03ba"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/M/yy h:mm a",
+ "shortDate": "d/M/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "el-cy",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_el-gr.js b/app/lib/angular/i18n/angular-locale_el-gr.js
new file mode 100755
index 0000000000..a6c045abef
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_el-gr.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u03c0.\u03bc.",
+ "\u03bc.\u03bc."
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u039a\u03c5\u03c1",
+ "\u0394\u03b5\u03c5",
+ "\u03a4\u03c1\u03b9",
+ "\u03a4\u03b5\u03c4",
+ "\u03a0\u03b5\u03bc",
+ "\u03a0\u03b1\u03c1",
+ "\u03a3\u03b1\u03b2"
+ ],
+ "SHORTMONTH": [
+ "\u0399\u03b1\u03bd",
+ "\u03a6\u03b5\u03b2",
+ "\u039c\u03b1\u03c1",
+ "\u0391\u03c0\u03c1",
+ "\u039c\u03b1\u03ca",
+ "\u0399\u03bf\u03c5\u03bd",
+ "\u0399\u03bf\u03c5\u03bb",
+ "\u0391\u03c5\u03b3",
+ "\u03a3\u03b5\u03c0",
+ "\u039f\u03ba\u03c4",
+ "\u039d\u03bf\u03b5",
+ "\u0394\u03b5\u03ba"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/M/yy h:mm a",
+ "shortDate": "d/M/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "el-gr",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_el.js b/app/lib/angular/i18n/angular-locale_el.js
new file mode 100755
index 0000000000..cdecf74297
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_el.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u03c0.\u03bc.",
+ "\u03bc.\u03bc."
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u039a\u03c5\u03c1",
+ "\u0394\u03b5\u03c5",
+ "\u03a4\u03c1\u03b9",
+ "\u03a4\u03b5\u03c4",
+ "\u03a0\u03b5\u03bc",
+ "\u03a0\u03b1\u03c1",
+ "\u03a3\u03b1\u03b2"
+ ],
+ "SHORTMONTH": [
+ "\u0399\u03b1\u03bd",
+ "\u03a6\u03b5\u03b2",
+ "\u039c\u03b1\u03c1",
+ "\u0391\u03c0\u03c1",
+ "\u039c\u03b1\u03ca",
+ "\u0399\u03bf\u03c5\u03bd",
+ "\u0399\u03bf\u03c5\u03bb",
+ "\u0391\u03c5\u03b3",
+ "\u03a3\u03b5\u03c0",
+ "\u039f\u03ba\u03c4",
+ "\u039d\u03bf\u03b5",
+ "\u0394\u03b5\u03ba"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/M/yy h:mm a",
+ "shortDate": "d/M/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "el",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-as.js b/app/lib/angular/i18n/angular-locale_en-as.js
new file mode 100755
index 0000000000..d1cab80884
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-as.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-as",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-au.js b/app/lib/angular/i18n/angular-locale_en-au.js
new file mode 100755
index 0000000000..a0de72b9cf
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-au.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "dd/MM/yyyy h:mm:ss a",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/MM/yy h:mm a",
+ "shortDate": "d/MM/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-au",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-bb.js b/app/lib/angular/i18n/angular-locale_en-bb.js
new file mode 100755
index 0000000000..91ee7ff9b7
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-bb.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-bb",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-be.js b/app/lib/angular/i18n/angular-locale_en-be.js
new file mode 100755
index 0000000000..7ec6b29d73
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-be.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMM y",
+ "medium": "dd MMM y HH:mm:ss",
+ "mediumDate": "dd MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-be",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-bm.js b/app/lib/angular/i18n/angular-locale_en-bm.js
new file mode 100755
index 0000000000..49f670e345
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-bm.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-bm",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-bw.js b/app/lib/angular/i18n/angular-locale_en-bw.js
new file mode 100755
index 0000000000..c7d9855fc0
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-bw.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE dd MMMM y",
+ "longDate": "dd MMMM y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "dd/MM/yy h:mm a",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-bw",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-bz.js b/app/lib/angular/i18n/angular-locale_en-bz.js
new file mode 100755
index 0000000000..e40b2d5118
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-bz.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "dd MMMM y",
+ "longDate": "dd MMMM y",
+ "medium": "dd-MMM-y HH:mm:ss",
+ "mediumDate": "dd-MMM-y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-bz",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-ca.js b/app/lib/angular/i18n/angular-locale_en-ca.js
new file mode 100755
index 0000000000..cd137fb721
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-ca.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, d MMMM, y",
+ "longDate": "d MMMM, y",
+ "medium": "yyyy-MM-dd h:mm:ss a",
+ "mediumDate": "yyyy-MM-dd",
+ "mediumTime": "h:mm:ss a",
+ "short": "yy-MM-dd h:mm a",
+ "shortDate": "yy-MM-dd",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-ca",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-dsrt-us.js b/app/lib/angular/i18n/angular-locale_en-dsrt-us.js
new file mode 100755
index 0000000000..52e9f968bb
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-dsrt-us.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\ud801\udc08\ud801\udc23",
+ "\ud801\udc11\ud801\udc23"
+ ],
+ "DAY": [
+ "\ud801\udc1d\ud801\udc32\ud801\udc4c\ud801\udc3c\ud801\udc29",
+ "\ud801\udc23\ud801\udc32\ud801\udc4c\ud801\udc3c\ud801\udc29",
+ "\ud801\udc13\ud801\udc2d\ud801\udc46\ud801\udc3c\ud801\udc29",
+ "\ud801\udc0e\ud801\udc2f\ud801\udc4c\ud801\udc46\ud801\udc3c\ud801\udc29",
+ "\ud801\udc1b\ud801\udc32\ud801\udc49\ud801\udc46\ud801\udc3c\ud801\udc29",
+ "\ud801\udc19\ud801\udc49\ud801\udc34\ud801\udc3c\ud801\udc29",
+ "\ud801\udc1d\ud801\udc30\ud801\udc3b\ud801\udc32\ud801\udc49\ud801\udc3c\ud801\udc29"
+ ],
+ "MONTH": [
+ "\ud801\udc16\ud801\udc30\ud801\udc4c\ud801\udc37\ud801\udc2d\ud801\udc2f\ud801\udc49\ud801\udc28",
+ "\ud801\udc19\ud801\udc2f\ud801\udc3a\ud801\udc49\ud801\udc2d\ud801\udc2f\ud801\udc49\ud801\udc28",
+ "\ud801\udc23\ud801\udc2a\ud801\udc49\ud801\udc3d",
+ "\ud801\udc01\ud801\udc39\ud801\udc49\ud801\udc2e\ud801\udc4a",
+ "\ud801\udc23\ud801\udc29",
+ "\ud801\udc16\ud801\udc2d\ud801\udc4c",
+ "\ud801\udc16\ud801\udc2d\ud801\udc4a\ud801\udc34",
+ "\ud801\udc02\ud801\udc40\ud801\udc32\ud801\udc45\ud801\udc3b",
+ "\ud801\udc1d\ud801\udc2f\ud801\udc39\ud801\udc3b\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49",
+ "\ud801\udc09\ud801\udc3f\ud801\udc3b\ud801\udc2c\ud801\udc3a\ud801\udc32\ud801\udc49",
+ "\ud801\udc24\ud801\udc2c\ud801\udc42\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49",
+ "\ud801\udc14\ud801\udc28\ud801\udc45\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49"
+ ],
+ "SHORTDAY": [
+ "\ud801\udc1d\ud801\udc32\ud801\udc4c",
+ "\ud801\udc23\ud801\udc32\ud801\udc4c",
+ "\ud801\udc13\ud801\udc2d\ud801\udc46",
+ "\ud801\udc0e\ud801\udc2f\ud801\udc4c",
+ "\ud801\udc1b\ud801\udc32\ud801\udc49",
+ "\ud801\udc19\ud801\udc49\ud801\udc34",
+ "\ud801\udc1d\ud801\udc30\ud801\udc3b"
+ ],
+ "SHORTMONTH": [
+ "\ud801\udc16\ud801\udc30\ud801\udc4c",
+ "\ud801\udc19\ud801\udc2f\ud801\udc3a",
+ "\ud801\udc23\ud801\udc2a\ud801\udc49",
+ "\ud801\udc01\ud801\udc39\ud801\udc49",
+ "\ud801\udc23\ud801\udc29",
+ "\ud801\udc16\ud801\udc2d\ud801\udc4c",
+ "\ud801\udc16\ud801\udc2d\ud801\udc4a",
+ "\ud801\udc02\ud801\udc40",
+ "\ud801\udc1d\ud801\udc2f\ud801\udc39",
+ "\ud801\udc09\ud801\udc3f\ud801\udc3b",
+ "\ud801\udc24\ud801\udc2c\ud801\udc42",
+ "\ud801\udc14\ud801\udc28\ud801\udc45"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-dsrt-us",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-dsrt.js b/app/lib/angular/i18n/angular-locale_en-dsrt.js
new file mode 100755
index 0000000000..24618aa545
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-dsrt.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\ud801\udc08\ud801\udc23",
+ "\ud801\udc11\ud801\udc23"
+ ],
+ "DAY": [
+ "\ud801\udc1d\ud801\udc32\ud801\udc4c\ud801\udc3c\ud801\udc29",
+ "\ud801\udc23\ud801\udc32\ud801\udc4c\ud801\udc3c\ud801\udc29",
+ "\ud801\udc13\ud801\udc2d\ud801\udc46\ud801\udc3c\ud801\udc29",
+ "\ud801\udc0e\ud801\udc2f\ud801\udc4c\ud801\udc46\ud801\udc3c\ud801\udc29",
+ "\ud801\udc1b\ud801\udc32\ud801\udc49\ud801\udc46\ud801\udc3c\ud801\udc29",
+ "\ud801\udc19\ud801\udc49\ud801\udc34\ud801\udc3c\ud801\udc29",
+ "\ud801\udc1d\ud801\udc30\ud801\udc3b\ud801\udc32\ud801\udc49\ud801\udc3c\ud801\udc29"
+ ],
+ "MONTH": [
+ "\ud801\udc16\ud801\udc30\ud801\udc4c\ud801\udc37\ud801\udc2d\ud801\udc2f\ud801\udc49\ud801\udc28",
+ "\ud801\udc19\ud801\udc2f\ud801\udc3a\ud801\udc49\ud801\udc2d\ud801\udc2f\ud801\udc49\ud801\udc28",
+ "\ud801\udc23\ud801\udc2a\ud801\udc49\ud801\udc3d",
+ "\ud801\udc01\ud801\udc39\ud801\udc49\ud801\udc2e\ud801\udc4a",
+ "\ud801\udc23\ud801\udc29",
+ "\ud801\udc16\ud801\udc2d\ud801\udc4c",
+ "\ud801\udc16\ud801\udc2d\ud801\udc4a\ud801\udc34",
+ "\ud801\udc02\ud801\udc40\ud801\udc32\ud801\udc45\ud801\udc3b",
+ "\ud801\udc1d\ud801\udc2f\ud801\udc39\ud801\udc3b\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49",
+ "\ud801\udc09\ud801\udc3f\ud801\udc3b\ud801\udc2c\ud801\udc3a\ud801\udc32\ud801\udc49",
+ "\ud801\udc24\ud801\udc2c\ud801\udc42\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49",
+ "\ud801\udc14\ud801\udc28\ud801\udc45\ud801\udc2f\ud801\udc4b\ud801\udc3a\ud801\udc32\ud801\udc49"
+ ],
+ "SHORTDAY": [
+ "\ud801\udc1d\ud801\udc32\ud801\udc4c",
+ "\ud801\udc23\ud801\udc32\ud801\udc4c",
+ "\ud801\udc13\ud801\udc2d\ud801\udc46",
+ "\ud801\udc0e\ud801\udc2f\ud801\udc4c",
+ "\ud801\udc1b\ud801\udc32\ud801\udc49",
+ "\ud801\udc19\ud801\udc49\ud801\udc34",
+ "\ud801\udc1d\ud801\udc30\ud801\udc3b"
+ ],
+ "SHORTMONTH": [
+ "\ud801\udc16\ud801\udc30\ud801\udc4c",
+ "\ud801\udc19\ud801\udc2f\ud801\udc3a",
+ "\ud801\udc23\ud801\udc2a\ud801\udc49",
+ "\ud801\udc01\ud801\udc39\ud801\udc49",
+ "\ud801\udc23\ud801\udc29",
+ "\ud801\udc16\ud801\udc2d\ud801\udc4c",
+ "\ud801\udc16\ud801\udc2d\ud801\udc4a",
+ "\ud801\udc02\ud801\udc40",
+ "\ud801\udc1d\ud801\udc2f\ud801\udc39",
+ "\ud801\udc09\ud801\udc3f\ud801\udc3b",
+ "\ud801\udc24\ud801\udc2c\ud801\udc42",
+ "\ud801\udc14\ud801\udc28\ud801\udc45"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-dsrt",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-fm.js b/app/lib/angular/i18n/angular-locale_en-fm.js
new file mode 100755
index 0000000000..565d04cff2
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-fm.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-fm",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-gb.js b/app/lib/angular/i18n/angular-locale_en-gb.js
new file mode 100755
index 0000000000..f97e342a1a
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-gb.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yyyy HH:mm",
+ "shortDate": "dd/MM/yyyy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a3",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4-",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-gb",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-gu.js b/app/lib/angular/i18n/angular-locale_en-gu.js
new file mode 100755
index 0000000000..06f5a86f04
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-gu.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-gu",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-gy.js b/app/lib/angular/i18n/angular-locale_en-gy.js
new file mode 100755
index 0000000000..b4acc0729b
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-gy.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-gy",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-hk.js b/app/lib/angular/i18n/angular-locale_en-hk.js
new file mode 100755
index 0000000000..4c2c8d3360
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-hk.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, d MMMM, y",
+ "longDate": "d MMMM, y",
+ "medium": "d MMM, y h:mm:ss a",
+ "mediumDate": "d MMM, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/M/yy h:mm a",
+ "shortDate": "d/M/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-hk",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-ie.js b/app/lib/angular/i18n/angular-locale_en-ie.js
new file mode 100755
index 0000000000..dc559f7b73
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-ie.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "dd/MM/yyyy h:mm a",
+ "shortDate": "dd/MM/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-ie",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-in.js b/app/lib/angular/i18n/angular-locale_en-in.js
new file mode 100755
index 0000000000..6be8b880ae
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-in.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "dd-MMM-y h:mm:ss a",
+ "mediumDate": "dd-MMM-y",
+ "mediumTime": "h:mm:ss a",
+ "short": "dd/MM/yy h:mm a",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0-",
+ "negSuf": "",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-in",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-iso.js b/app/lib/angular/i18n/angular-locale_en-iso.js
new file mode 100755
index 0000000000..23500ed083
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-iso.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, y MMMM dd",
+ "longDate": "y MMMM d",
+ "medium": "y MMM d HH:mm:ss",
+ "mediumDate": "y MMM d",
+ "mediumTime": "HH:mm:ss",
+ "short": "yyyy-MM-dd HH:mm",
+ "shortDate": "yyyy-MM-dd",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-iso",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-jm.js b/app/lib/angular/i18n/angular-locale_en-jm.js
new file mode 100755
index 0000000000..6845afe991
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-jm.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/M/yy h:mm a",
+ "shortDate": "d/M/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-jm",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-mh.js b/app/lib/angular/i18n/angular-locale_en-mh.js
new file mode 100755
index 0000000000..91ca264617
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-mh.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-mh",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-mp.js b/app/lib/angular/i18n/angular-locale_en-mp.js
new file mode 100755
index 0000000000..e3d0d0587f
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-mp.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-mp",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-mt.js b/app/lib/angular/i18n/angular-locale_en-mt.js
new file mode 100755
index 0000000000..0c87da0fec
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-mt.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "dd MMMM y",
+ "medium": "dd MMM y h:mm:ss a",
+ "mediumDate": "dd MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "dd/MM/yyyy h:mm a",
+ "shortDate": "dd/MM/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-mt",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-mu.js b/app/lib/angular/i18n/angular-locale_en-mu.js
new file mode 100755
index 0000000000..50352c6505
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-mu.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-mu",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-na.js b/app/lib/angular/i18n/angular-locale_en-na.js
new file mode 100755
index 0000000000..1bf61fef1b
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-na.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-na",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-nz.js b/app/lib/angular/i18n/angular-locale_en-nz.js
new file mode 100755
index 0000000000..50858e0cc7
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-nz.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d/MM/yyyy h:mm:ss a",
+ "mediumDate": "d/MM/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/MM/yy h:mm a",
+ "shortDate": "d/MM/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-nz",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-ph.js b/app/lib/angular/i18n/angular-locale_en-ph.js
new file mode 100755
index 0000000000..f1e74111e7
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-ph.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-ph",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-pk.js b/app/lib/angular/i18n/angular-locale_en-pk.js
new file mode 100755
index 0000000000..46411ec55a
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-pk.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "dd-MMM-y h:mm:ss a",
+ "mediumDate": "dd-MMM-y",
+ "mediumTime": "h:mm:ss a",
+ "short": "dd/MM/yy h:mm a",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-pk",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-pr.js b/app/lib/angular/i18n/angular-locale_en-pr.js
new file mode 100755
index 0000000000..de5ed1f397
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-pr.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-pr",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-pw.js b/app/lib/angular/i18n/angular-locale_en-pw.js
new file mode 100755
index 0000000000..4f1e259a2b
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-pw.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-pw",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-sg.js b/app/lib/angular/i18n/angular-locale_en-sg.js
new file mode 100755
index 0000000000..8e26c89a4a
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-sg.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, d MMMM, y",
+ "longDate": "d MMMM, y",
+ "medium": "d MMM, y h:mm:ss a",
+ "mediumDate": "d MMM, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/M/yy h:mm a",
+ "shortDate": "d/M/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-sg",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-tc.js b/app/lib/angular/i18n/angular-locale_en-tc.js
new file mode 100755
index 0000000000..38757ed510
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-tc.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-tc",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-tt.js b/app/lib/angular/i18n/angular-locale_en-tt.js
new file mode 100755
index 0000000000..bdfbc0e455
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-tt.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-tt",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-um.js b/app/lib/angular/i18n/angular-locale_en-um.js
new file mode 100755
index 0000000000..295795a258
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-um.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-um",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-us.js b/app/lib/angular/i18n/angular-locale_en-us.js
new file mode 100755
index 0000000000..e5e8a6d974
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-us.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-us",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-vg.js b/app/lib/angular/i18n/angular-locale_en-vg.js
new file mode 100755
index 0000000000..8dda34509b
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-vg.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-vg",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-vi.js b/app/lib/angular/i18n/angular-locale_en-vi.js
new file mode 100755
index 0000000000..d5b778bc49
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-vi.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-vi",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-za.js b/app/lib/angular/i18n/angular-locale_en-za.js
new file mode 100755
index 0000000000..a3db4c3bc1
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-za.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE dd MMMM y",
+ "longDate": "dd MMMM y",
+ "medium": "dd MMM y h:mm:ss a",
+ "mediumDate": "dd MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "yyyy/MM/dd h:mm a",
+ "shortDate": "yyyy/MM/dd",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "R",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-za",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en-zw.js b/app/lib/angular/i18n/angular-locale_en-zw.js
new file mode 100755
index 0000000000..4aabe4fadd
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en-zw.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE dd MMMM y",
+ "longDate": "dd MMMM y",
+ "medium": "dd MMM,y h:mm:ss a",
+ "mediumDate": "dd MMM,y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/M/yyyy h:mm a",
+ "shortDate": "d/M/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en-zw",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_en.js b/app/lib/angular/i18n/angular-locale_en.js
new file mode 100755
index 0000000000..60fb427616
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_en.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "MONTH": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "SHORTDAY": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE, MMMM d, y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "en",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-419.js b/app/lib/angular/i18n/angular-locale_es-419.js
new file mode 100755
index 0000000000..10d94b3394
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-419.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4-",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "es-419",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-ar.js b/app/lib/angular/i18n/angular-locale_es-ar.js
new file mode 100755
index 0000000000..7b489a9499
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-ar.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-ar",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-bo.js b/app/lib/angular/i18n/angular-locale_es-bo.js
new file mode 100755
index 0000000000..62af26762b
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-bo.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-bo",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-cl.js b/app/lib/angular/i18n/angular-locale_es-cl.js
new file mode 100755
index 0000000000..4521eea80d
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-cl.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd-MM-yyyy H:mm:ss",
+ "mediumDate": "dd-MM-yyyy",
+ "mediumTime": "H:mm:ss",
+ "short": "dd-MM-yy H:mm",
+ "shortDate": "dd-MM-yy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-cl",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-co.js b/app/lib/angular/i18n/angular-locale_es-co.js
new file mode 100755
index 0000000000..be6f56c139
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-co.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "d/MM/yyyy H:mm:ss",
+ "mediumDate": "d/MM/yyyy",
+ "mediumTime": "H:mm:ss",
+ "short": "d/MM/yy H:mm",
+ "shortDate": "d/MM/yy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-co",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-cr.js b/app/lib/angular/i18n/angular-locale_es-cr.js
new file mode 100755
index 0000000000..809701bcd6
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-cr.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-cr",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-do.js b/app/lib/angular/i18n/angular-locale_es-do.js
new file mode 100755
index 0000000000..b672a85d25
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-do.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-do",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-ea.js b/app/lib/angular/i18n/angular-locale_es-ea.js
new file mode 100755
index 0000000000..e2f9da2bf4
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-ea.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-ea",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-ec.js b/app/lib/angular/i18n/angular-locale_es-ec.js
new file mode 100755
index 0000000000..ba7a370f89
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-ec.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy H:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "H:mm:ss",
+ "short": "dd/MM/yy H:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-ec",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-es.js b/app/lib/angular/i18n/angular-locale_es-es.js
new file mode 100755
index 0000000000..99c972ea7b
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-es.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-es",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-gq.js b/app/lib/angular/i18n/angular-locale_es-gq.js
new file mode 100755
index 0000000000..837379e6a7
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-gq.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-gq",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-gt.js b/app/lib/angular/i18n/angular-locale_es-gt.js
new file mode 100755
index 0000000000..f6cc8cf43b
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-gt.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "d/MM/yyyy HH:mm:ss",
+ "mediumDate": "d/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "d/MM/yy HH:mm",
+ "shortDate": "d/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-gt",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-hn.js b/app/lib/angular/i18n/angular-locale_es-hn.js
new file mode 100755
index 0000000000..d314fcdfac
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-hn.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE dd 'de' MMMM 'de' y",
+ "longDate": "dd 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-hn",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-ic.js b/app/lib/angular/i18n/angular-locale_es-ic.js
new file mode 100755
index 0000000000..bf69156259
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-ic.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-ic",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-mx.js b/app/lib/angular/i18n/angular-locale_es-mx.js
new file mode 100755
index 0000000000..6991c5276e
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-mx.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-mx",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-ni.js b/app/lib/angular/i18n/angular-locale_es-ni.js
new file mode 100755
index 0000000000..9be77dfaee
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-ni.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-ni",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-pa.js b/app/lib/angular/i18n/angular-locale_es-pa.js
new file mode 100755
index 0000000000..64a4c1760e
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-pa.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "MM/dd/yyyy HH:mm:ss",
+ "mediumDate": "MM/dd/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "MM/dd/yy HH:mm",
+ "shortDate": "MM/dd/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-pa",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-pe.js b/app/lib/angular/i18n/angular-locale_es-pe.js
new file mode 100755
index 0000000000..174e4212c4
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-pe.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "d/MM/yy HH:mm",
+ "shortDate": "d/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-pe",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-pr.js b/app/lib/angular/i18n/angular-locale_es-pr.js
new file mode 100755
index 0000000000..e8762092b7
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-pr.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "MM/dd/yyyy HH:mm:ss",
+ "mediumDate": "MM/dd/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "MM/dd/yy HH:mm",
+ "shortDate": "MM/dd/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-pr",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-py.js b/app/lib/angular/i18n/angular-locale_es-py.js
new file mode 100755
index 0000000000..691099e994
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-py.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-py",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-sv.js b/app/lib/angular/i18n/angular-locale_es-sv.js
new file mode 100755
index 0000000000..7bbb8a5358
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-sv.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-sv",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-us.js b/app/lib/angular/i18n/angular-locale_es-us.js
new file mode 100755
index 0000000000..3b7fbce038
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-us.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "MMM d, y h:mm:ss a",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "M/d/yy h:mm a",
+ "shortDate": "M/d/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-us",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-uy.js b/app/lib/angular/i18n/angular-locale_es-uy.js
new file mode 100755
index 0000000000..c304ba838a
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-uy.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-uy",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es-ve.js b/app/lib/angular/i18n/angular-locale_es-ve.js
new file mode 100755
index 0000000000..9e46788222
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es-ve.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es-ve",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_es.js b/app/lib/angular/i18n/angular-locale_es.js
new file mode 100755
index 0000000000..95914019dc
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_es.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "domingo",
+ "lunes",
+ "martes",
+ "mi\u00e9rcoles",
+ "jueves",
+ "viernes",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "enero",
+ "febrero",
+ "marzo",
+ "abril",
+ "mayo",
+ "junio",
+ "julio",
+ "agosto",
+ "septiembre",
+ "octubre",
+ "noviembre",
+ "diciembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mi\u00e9",
+ "jue",
+ "vie",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "ene",
+ "feb",
+ "mar",
+ "abr",
+ "may",
+ "jun",
+ "jul",
+ "ago",
+ "sep",
+ "oct",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "es",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_et-ee.js b/app/lib/angular/i18n/angular-locale_et-ee.js
new file mode 100755
index 0000000000..d941b67a2f
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_et-ee.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "enne keskp\u00e4eva",
+ "p\u00e4rast keskp\u00e4eva"
+ ],
+ "DAY": [
+ "p\u00fchap\u00e4ev",
+ "esmasp\u00e4ev",
+ "teisip\u00e4ev",
+ "kolmap\u00e4ev",
+ "neljap\u00e4ev",
+ "reede",
+ "laup\u00e4ev"
+ ],
+ "MONTH": [
+ "jaanuar",
+ "veebruar",
+ "m\u00e4rts",
+ "aprill",
+ "mai",
+ "juuni",
+ "juuli",
+ "august",
+ "september",
+ "oktoober",
+ "november",
+ "detsember"
+ ],
+ "SHORTDAY": [
+ "P",
+ "E",
+ "T",
+ "K",
+ "N",
+ "R",
+ "L"
+ ],
+ "SHORTMONTH": [
+ "jaan",
+ "veebr",
+ "m\u00e4rts",
+ "apr",
+ "mai",
+ "juuni",
+ "juuli",
+ "aug",
+ "sept",
+ "okt",
+ "nov",
+ "dets"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "dd.MM.yyyy H:mm.ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "H:mm.ss",
+ "short": "dd.MM.yy H:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a4"
+ }
+ ]
+ },
+ "id": "et-ee",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_et.js b/app/lib/angular/i18n/angular-locale_et.js
new file mode 100755
index 0000000000..79ebb3e16f
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_et.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "enne keskp\u00e4eva",
+ "p\u00e4rast keskp\u00e4eva"
+ ],
+ "DAY": [
+ "p\u00fchap\u00e4ev",
+ "esmasp\u00e4ev",
+ "teisip\u00e4ev",
+ "kolmap\u00e4ev",
+ "neljap\u00e4ev",
+ "reede",
+ "laup\u00e4ev"
+ ],
+ "MONTH": [
+ "jaanuar",
+ "veebruar",
+ "m\u00e4rts",
+ "aprill",
+ "mai",
+ "juuni",
+ "juuli",
+ "august",
+ "september",
+ "oktoober",
+ "november",
+ "detsember"
+ ],
+ "SHORTDAY": [
+ "P",
+ "E",
+ "T",
+ "K",
+ "N",
+ "R",
+ "L"
+ ],
+ "SHORTMONTH": [
+ "jaan",
+ "veebr",
+ "m\u00e4rts",
+ "apr",
+ "mai",
+ "juuni",
+ "juuli",
+ "aug",
+ "sept",
+ "okt",
+ "nov",
+ "dets"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "dd.MM.yyyy H:mm.ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "H:mm.ss",
+ "short": "dd.MM.yy H:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 0,
+ "lgSize": 0,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a4"
+ }
+ ]
+ },
+ "id": "et",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_eu-es.js b/app/lib/angular/i18n/angular-locale_eu-es.js
new file mode 100755
index 0000000000..0b51823bc4
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_eu-es.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "igandea",
+ "astelehena",
+ "asteartea",
+ "asteazkena",
+ "osteguna",
+ "ostirala",
+ "larunbata"
+ ],
+ "MONTH": [
+ "urtarrila",
+ "otsaila",
+ "martxoa",
+ "apirila",
+ "maiatza",
+ "ekaina",
+ "uztaila",
+ "abuztua",
+ "iraila",
+ "urria",
+ "azaroa",
+ "abendua"
+ ],
+ "SHORTDAY": [
+ "ig",
+ "al",
+ "as",
+ "az",
+ "og",
+ "or",
+ "lr"
+ ],
+ "SHORTMONTH": [
+ "urt",
+ "ots",
+ "mar",
+ "api",
+ "mai",
+ "eka",
+ "uzt",
+ "abu",
+ "ira",
+ "urr",
+ "aza",
+ "abe"
+ ],
+ "fullDate": "EEEE, y'eko' MMMM'ren' dd'a'",
+ "longDate": "y'eko' MMM'ren' dd'a'",
+ "medium": "y MMM d HH:mm:ss",
+ "mediumDate": "y MMM d",
+ "mediumTime": "HH:mm:ss",
+ "short": "yyyy-MM-dd HH:mm",
+ "shortDate": "yyyy-MM-dd",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "eu-es",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_eu.js b/app/lib/angular/i18n/angular-locale_eu.js
new file mode 100755
index 0000000000..72400107e6
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_eu.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "igandea",
+ "astelehena",
+ "asteartea",
+ "asteazkena",
+ "osteguna",
+ "ostirala",
+ "larunbata"
+ ],
+ "MONTH": [
+ "urtarrila",
+ "otsaila",
+ "martxoa",
+ "apirila",
+ "maiatza",
+ "ekaina",
+ "uztaila",
+ "abuztua",
+ "iraila",
+ "urria",
+ "azaroa",
+ "abendua"
+ ],
+ "SHORTDAY": [
+ "ig",
+ "al",
+ "as",
+ "az",
+ "og",
+ "or",
+ "lr"
+ ],
+ "SHORTMONTH": [
+ "urt",
+ "ots",
+ "mar",
+ "api",
+ "mai",
+ "eka",
+ "uzt",
+ "abu",
+ "ira",
+ "urr",
+ "aza",
+ "abe"
+ ],
+ "fullDate": "EEEE, y'eko' MMMM'ren' dd'a'",
+ "longDate": "y'eko' MMM'ren' dd'a'",
+ "medium": "y MMM d HH:mm:ss",
+ "mediumDate": "y MMM d",
+ "mediumTime": "HH:mm:ss",
+ "short": "yyyy-MM-dd HH:mm",
+ "shortDate": "yyyy-MM-dd",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "eu",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fa-af.js b/app/lib/angular/i18n/angular-locale_fa-af.js
new file mode 100755
index 0000000000..21ec56ee62
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fa-af.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0642\u0628\u0644\u200c\u0627\u0632\u0638\u0647\u0631",
+ "\u0628\u0639\u062f\u0627\u0632\u0638\u0647\u0631"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\u062c\u0646\u0648\u0631\u06cc",
+ "\u0641\u0628\u0631\u0648\u0631\u06cc",
+ "\u0645\u0627\u0631\u0686",
+ "\u0627\u067e\u0631\u06cc\u0644",
+ "\u0645\u06cc",
+ "\u062c\u0648\u0646",
+ "\u062c\u0648\u0644\u0627\u06cc",
+ "\u0627\u06af\u0633\u062a",
+ "\u0633\u067e\u062a\u0645\u0628\u0631",
+ "\u0627\u06a9\u062a\u0648\u0628\u0631",
+ "\u0646\u0648\u0645\u0628\u0631",
+ "\u062f\u0633\u0645\u0628\u0631"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\u062c\u0646\u0648",
+ "\u0641\u0648\u0631\u06cc\u0647\u0654",
+ "\u0645\u0627\u0631\u0633",
+ "\u0622\u0648\u0631\u06cc\u0644",
+ "\u0645\u0640\u06cc",
+ "\u0698\u0648\u0626\u0646",
+ "\u062c\u0648\u0644",
+ "\u0627\u0648\u062a",
+ "\u0633\u067e\u062a\u0627\u0645\u0628\u0631",
+ "\u0627\u06a9\u062a\u0628\u0631",
+ "\u0646\u0648\u0627\u0645\u0628\u0631",
+ "\u062f\u0633\u0645"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y H:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "H:mm:ss",
+ "short": "yyyy/M/d H:mm",
+ "shortDate": "yyyy/M/d",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Rial",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u200e(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u200e\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "fa-af",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fa-ir.js b/app/lib/angular/i18n/angular-locale_fa-ir.js
new file mode 100755
index 0000000000..eaf18ef1dd
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fa-ir.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0642\u0628\u0644\u200c\u0627\u0632\u0638\u0647\u0631",
+ "\u0628\u0639\u062f\u0627\u0632\u0638\u0647\u0631"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y H:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "H:mm:ss",
+ "short": "yyyy/M/d H:mm",
+ "shortDate": "yyyy/M/d",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Rial",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u200e(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u200e\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "fa-ir",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fa.js b/app/lib/angular/i18n/angular-locale_fa.js
new file mode 100755
index 0000000000..267702763b
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fa.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0642\u0628\u0644\u200c\u0627\u0632\u0638\u0647\u0631",
+ "\u0628\u0639\u062f\u0627\u0632\u0638\u0647\u0631"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y H:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "H:mm:ss",
+ "short": "yyyy/M/d H:mm",
+ "shortDate": "yyyy/M/d",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Rial",
+ "DECIMAL_SEP": "\u066b",
+ "GROUP_SEP": "\u066c",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u200e(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u200e\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "fa",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fi-fi.js b/app/lib/angular/i18n/angular-locale_fi-fi.js
new file mode 100755
index 0000000000..b33062ff47
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fi-fi.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "ap.",
+ "ip."
+ ],
+ "DAY": [
+ "sunnuntaina",
+ "maanantaina",
+ "tiistaina",
+ "keskiviikkona",
+ "torstaina",
+ "perjantaina",
+ "lauantaina"
+ ],
+ "MONTH": [
+ "tammikuuta",
+ "helmikuuta",
+ "maaliskuuta",
+ "huhtikuuta",
+ "toukokuuta",
+ "kes\u00e4kuuta",
+ "hein\u00e4kuuta",
+ "elokuuta",
+ "syyskuuta",
+ "lokakuuta",
+ "marraskuuta",
+ "joulukuuta"
+ ],
+ "SHORTDAY": [
+ "su",
+ "ma",
+ "ti",
+ "ke",
+ "to",
+ "pe",
+ "la"
+ ],
+ "SHORTMONTH": [
+ "tammikuuta",
+ "helmikuuta",
+ "maaliskuuta",
+ "huhtikuuta",
+ "toukokuuta",
+ "kes\u00e4kuuta",
+ "hein\u00e4kuuta",
+ "elokuuta",
+ "syyskuuta",
+ "lokakuuta",
+ "marraskuuta",
+ "joulukuuta"
+ ],
+ "fullDate": "cccc, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "d.M.yyyy H.mm.ss",
+ "mediumDate": "d.M.yyyy",
+ "mediumTime": "H.mm.ss",
+ "short": "d.M.yyyy H.mm",
+ "shortDate": "d.M.yyyy",
+ "shortTime": "H.mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fi-fi",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fi.js b/app/lib/angular/i18n/angular-locale_fi.js
new file mode 100755
index 0000000000..06a42fdeab
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fi.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "ap.",
+ "ip."
+ ],
+ "DAY": [
+ "sunnuntaina",
+ "maanantaina",
+ "tiistaina",
+ "keskiviikkona",
+ "torstaina",
+ "perjantaina",
+ "lauantaina"
+ ],
+ "MONTH": [
+ "tammikuuta",
+ "helmikuuta",
+ "maaliskuuta",
+ "huhtikuuta",
+ "toukokuuta",
+ "kes\u00e4kuuta",
+ "hein\u00e4kuuta",
+ "elokuuta",
+ "syyskuuta",
+ "lokakuuta",
+ "marraskuuta",
+ "joulukuuta"
+ ],
+ "SHORTDAY": [
+ "su",
+ "ma",
+ "ti",
+ "ke",
+ "to",
+ "pe",
+ "la"
+ ],
+ "SHORTMONTH": [
+ "tammikuuta",
+ "helmikuuta",
+ "maaliskuuta",
+ "huhtikuuta",
+ "toukokuuta",
+ "kes\u00e4kuuta",
+ "hein\u00e4kuuta",
+ "elokuuta",
+ "syyskuuta",
+ "lokakuuta",
+ "marraskuuta",
+ "joulukuuta"
+ ],
+ "fullDate": "cccc, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "d.M.yyyy H.mm.ss",
+ "mediumDate": "d.M.yyyy",
+ "mediumTime": "H.mm.ss",
+ "short": "d.M.yyyy H.mm",
+ "shortDate": "d.M.yyyy",
+ "shortTime": "H.mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fi",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fil-ph.js b/app/lib/angular/i18n/angular-locale_fil-ph.js
new file mode 100755
index 0000000000..849cedea76
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fil-ph.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Linggo",
+ "Lunes",
+ "Martes",
+ "Miyerkules",
+ "Huwebes",
+ "Biyernes",
+ "Sabado"
+ ],
+ "MONTH": [
+ "Enero",
+ "Pebrero",
+ "Marso",
+ "Abril",
+ "Mayo",
+ "Hunyo",
+ "Hulyo",
+ "Agosto",
+ "Setyembre",
+ "Oktubre",
+ "Nobyembre",
+ "Disyembre"
+ ],
+ "SHORTDAY": [
+ "Lin",
+ "Lun",
+ "Mar",
+ "Mye",
+ "Huw",
+ "Bye",
+ "Sab"
+ ],
+ "SHORTMONTH": [
+ "Ene",
+ "Peb",
+ "Mar",
+ "Abr",
+ "May",
+ "Hun",
+ "Hul",
+ "Ago",
+ "Set",
+ "Okt",
+ "Nob",
+ "Dis"
+ ],
+ "fullDate": "EEEE, MMMM dd y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y HH:mm:ss",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "HH:mm:ss",
+ "short": "M/d/yy HH:mm",
+ "shortDate": "M/d/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b1",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "fil-ph",
+ "pluralCat": function (n) { if (n == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fil.js b/app/lib/angular/i18n/angular-locale_fil.js
new file mode 100755
index 0000000000..c9cb7ca9e9
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fil.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Linggo",
+ "Lunes",
+ "Martes",
+ "Miyerkules",
+ "Huwebes",
+ "Biyernes",
+ "Sabado"
+ ],
+ "MONTH": [
+ "Enero",
+ "Pebrero",
+ "Marso",
+ "Abril",
+ "Mayo",
+ "Hunyo",
+ "Hulyo",
+ "Agosto",
+ "Setyembre",
+ "Oktubre",
+ "Nobyembre",
+ "Disyembre"
+ ],
+ "SHORTDAY": [
+ "Lin",
+ "Lun",
+ "Mar",
+ "Mye",
+ "Huw",
+ "Bye",
+ "Sab"
+ ],
+ "SHORTMONTH": [
+ "Ene",
+ "Peb",
+ "Mar",
+ "Abr",
+ "May",
+ "Hun",
+ "Hul",
+ "Ago",
+ "Set",
+ "Okt",
+ "Nob",
+ "Dis"
+ ],
+ "fullDate": "EEEE, MMMM dd y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y HH:mm:ss",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "HH:mm:ss",
+ "short": "M/d/yy HH:mm",
+ "shortDate": "M/d/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b1",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "fil",
+ "pluralCat": function (n) { if (n == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-be.js b/app/lib/angular/i18n/angular-locale_fr-be.js
new file mode 100755
index 0000000000..ca7d3acc6f
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-be.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "d/MM/yy HH:mm",
+ "shortDate": "d/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-be",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-bf.js b/app/lib/angular/i18n/angular-locale_fr-bf.js
new file mode 100755
index 0000000000..6717958a25
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-bf.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-bf",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-bi.js b/app/lib/angular/i18n/angular-locale_fr-bi.js
new file mode 100755
index 0000000000..dad30c01d0
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-bi.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-bi",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-bj.js b/app/lib/angular/i18n/angular-locale_fr-bj.js
new file mode 100755
index 0000000000..b16c69a66f
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-bj.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-bj",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-bl.js b/app/lib/angular/i18n/angular-locale_fr-bl.js
new file mode 100755
index 0000000000..a963168018
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-bl.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-bl",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-ca.js b/app/lib/angular/i18n/angular-locale_fr-ca.js
new file mode 100755
index 0000000000..ff3ef40382
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-ca.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "yyyy-MM-dd HH:mm:ss",
+ "mediumDate": "yyyy-MM-dd",
+ "mediumTime": "HH:mm:ss",
+ "short": "yy-MM-dd HH:mm",
+ "shortDate": "yy-MM-dd",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-ca",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-cd.js b/app/lib/angular/i18n/angular-locale_fr-cd.js
new file mode 100755
index 0000000000..7afc95048c
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-cd.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-cd",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-cf.js b/app/lib/angular/i18n/angular-locale_fr-cf.js
new file mode 100755
index 0000000000..fe7f1f9759
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-cf.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-cf",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-cg.js b/app/lib/angular/i18n/angular-locale_fr-cg.js
new file mode 100755
index 0000000000..e5360f51bd
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-cg.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-cg",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-ch.js b/app/lib/angular/i18n/angular-locale_fr-ch.js
new file mode 100755
index 0000000000..0257ebd7f2
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-ch.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-ch",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-ci.js b/app/lib/angular/i18n/angular-locale_fr-ci.js
new file mode 100755
index 0000000000..d8d7f9a3c3
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-ci.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-ci",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-cm.js b/app/lib/angular/i18n/angular-locale_fr-cm.js
new file mode 100755
index 0000000000..1026a5076c
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-cm.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-cm",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-dj.js b/app/lib/angular/i18n/angular-locale_fr-dj.js
new file mode 100755
index 0000000000..2f9cf4c1db
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-dj.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-dj",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-fr.js b/app/lib/angular/i18n/angular-locale_fr-fr.js
new file mode 100755
index 0000000000..6a41fc0ae3
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-fr.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-fr",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-ga.js b/app/lib/angular/i18n/angular-locale_fr-ga.js
new file mode 100755
index 0000000000..5f444e0eef
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-ga.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-ga",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-gf.js b/app/lib/angular/i18n/angular-locale_fr-gf.js
new file mode 100755
index 0000000000..249ff7c9f4
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-gf.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-gf",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-gn.js b/app/lib/angular/i18n/angular-locale_fr-gn.js
new file mode 100755
index 0000000000..44786d72fd
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-gn.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-gn",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-gp.js b/app/lib/angular/i18n/angular-locale_fr-gp.js
new file mode 100755
index 0000000000..8c02ea5ed4
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-gp.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-gp",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-gq.js b/app/lib/angular/i18n/angular-locale_fr-gq.js
new file mode 100755
index 0000000000..58e6481ee1
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-gq.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-gq",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-km.js b/app/lib/angular/i18n/angular-locale_fr-km.js
new file mode 100755
index 0000000000..03766493e7
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-km.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-km",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-lu.js b/app/lib/angular/i18n/angular-locale_fr-lu.js
new file mode 100755
index 0000000000..e9aec05ec9
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-lu.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-lu",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-mc.js b/app/lib/angular/i18n/angular-locale_fr-mc.js
new file mode 100755
index 0000000000..db1150e1d8
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-mc.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-mc",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-mf.js b/app/lib/angular/i18n/angular-locale_fr-mf.js
new file mode 100755
index 0000000000..f6f48c9da7
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-mf.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-mf",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-mg.js b/app/lib/angular/i18n/angular-locale_fr-mg.js
new file mode 100755
index 0000000000..5706df2661
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-mg.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-mg",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-ml.js b/app/lib/angular/i18n/angular-locale_fr-ml.js
new file mode 100755
index 0000000000..6a8b568e87
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-ml.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-ml",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-mq.js b/app/lib/angular/i18n/angular-locale_fr-mq.js
new file mode 100755
index 0000000000..d7d41adffb
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-mq.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-mq",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-ne.js b/app/lib/angular/i18n/angular-locale_fr-ne.js
new file mode 100755
index 0000000000..ce20c08643
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-ne.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-ne",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-re.js b/app/lib/angular/i18n/angular-locale_fr-re.js
new file mode 100755
index 0000000000..442f690515
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-re.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-re",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr-yt.js b/app/lib/angular/i18n/angular-locale_fr-yt.js
new file mode 100755
index 0000000000..22240bb0a0
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr-yt.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr-yt",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_fr.js b/app/lib/angular/i18n/angular-locale_fr.js
new file mode 100755
index 0000000000..6f3a4bcc9b
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_fr.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi"
+ ],
+ "MONTH": [
+ "janvier",
+ "f\u00e9vrier",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "ao\u00fbt",
+ "septembre",
+ "octobre",
+ "novembre",
+ "d\u00e9cembre"
+ ],
+ "SHORTDAY": [
+ "dim.",
+ "lun.",
+ "mar.",
+ "mer.",
+ "jeu.",
+ "ven.",
+ "sam."
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "f\u00e9vr.",
+ "mars",
+ "avr.",
+ "mai",
+ "juin",
+ "juil.",
+ "ao\u00fbt",
+ "sept.",
+ "oct.",
+ "nov.",
+ "d\u00e9c."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "fr",
+ "pluralCat": function (n) { if (n >= 0 && n <= 2 && n != 2) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_gl-es.js b/app/lib/angular/i18n/angular-locale_gl-es.js
new file mode 100755
index 0000000000..bf456cea07
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_gl-es.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "Domingo",
+ "Luns",
+ "Martes",
+ "M\u00e9rcores",
+ "Xoves",
+ "Venres",
+ "S\u00e1bado"
+ ],
+ "MONTH": [
+ "Xaneiro",
+ "Febreiro",
+ "Marzo",
+ "Abril",
+ "Maio",
+ "Xu\u00f1o",
+ "Xullo",
+ "Agosto",
+ "Setembro",
+ "Outubro",
+ "Novembro",
+ "Decembro"
+ ],
+ "SHORTDAY": [
+ "Dom",
+ "Lun",
+ "Mar",
+ "M\u00e9r",
+ "Xov",
+ "Ven",
+ "S\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "Xan",
+ "Feb",
+ "Mar",
+ "Abr",
+ "Mai",
+ "Xu\u00f1",
+ "Xul",
+ "Ago",
+ "Set",
+ "Out",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE dd MMMM y",
+ "longDate": "dd MMMM y",
+ "medium": "d MMM, y HH:mm:ss",
+ "mediumDate": "d MMM, y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "gl-es",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_gl.js b/app/lib/angular/i18n/angular-locale_gl.js
new file mode 100755
index 0000000000..a9535295b7
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_gl.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "Domingo",
+ "Luns",
+ "Martes",
+ "M\u00e9rcores",
+ "Xoves",
+ "Venres",
+ "S\u00e1bado"
+ ],
+ "MONTH": [
+ "Xaneiro",
+ "Febreiro",
+ "Marzo",
+ "Abril",
+ "Maio",
+ "Xu\u00f1o",
+ "Xullo",
+ "Agosto",
+ "Setembro",
+ "Outubro",
+ "Novembro",
+ "Decembro"
+ ],
+ "SHORTDAY": [
+ "Dom",
+ "Lun",
+ "Mar",
+ "M\u00e9r",
+ "Xov",
+ "Ven",
+ "S\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "Xan",
+ "Feb",
+ "Mar",
+ "Abr",
+ "Mai",
+ "Xu\u00f1",
+ "Xul",
+ "Ago",
+ "Set",
+ "Out",
+ "Nov",
+ "Dec"
+ ],
+ "fullDate": "EEEE dd MMMM y",
+ "longDate": "dd MMMM y",
+ "medium": "d MMM, y HH:mm:ss",
+ "mediumDate": "d MMM, y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "gl",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_gsw-ch.js b/app/lib/angular/i18n/angular-locale_gsw-ch.js
new file mode 100755
index 0000000000..c013912d50
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_gsw-ch.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "vorm.",
+ "nam."
+ ],
+ "DAY": [
+ "Sunntig",
+ "M\u00e4\u00e4ntig",
+ "Ziischtig",
+ "Mittwuch",
+ "Dunschtig",
+ "Friitig",
+ "Samschtig"
+ ],
+ "MONTH": [
+ "Januar",
+ "Februar",
+ "M\u00e4rz",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "Auguscht",
+ "Sept\u00e4mber",
+ "Oktoober",
+ "Nov\u00e4mber",
+ "Dez\u00e4mber"
+ ],
+ "SHORTDAY": [
+ "Su.",
+ "M\u00e4.",
+ "Zi.",
+ "Mi.",
+ "Du.",
+ "Fr.",
+ "Sa."
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "M\u00e4r",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "dd.MM.yyyy HH:mm:ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "CHF",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": "\u2019",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "gsw-ch",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_gsw.js b/app/lib/angular/i18n/angular-locale_gsw.js
new file mode 100755
index 0000000000..553602c904
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_gsw.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "vorm.",
+ "nam."
+ ],
+ "DAY": [
+ "Sunntig",
+ "M\u00e4\u00e4ntig",
+ "Ziischtig",
+ "Mittwuch",
+ "Dunschtig",
+ "Friitig",
+ "Samschtig"
+ ],
+ "MONTH": [
+ "Januar",
+ "Februar",
+ "M\u00e4rz",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "Auguscht",
+ "Sept\u00e4mber",
+ "Oktoober",
+ "Nov\u00e4mber",
+ "Dez\u00e4mber"
+ ],
+ "SHORTDAY": [
+ "Su.",
+ "M\u00e4.",
+ "Zi.",
+ "Mi.",
+ "Du.",
+ "Fr.",
+ "Sa."
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "M\u00e4r",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "dd.MM.yyyy HH:mm:ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "CHF",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": "\u2019",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "gsw",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_gu-in.js b/app/lib/angular/i18n/angular-locale_gu-in.js
new file mode 100755
index 0000000000..a82bfe90e0
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_gu-in.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE, d MMMM, y",
+ "longDate": "d MMMM, y",
+ "medium": "d MMM, y hh:mm:ss a",
+ "mediumDate": "d MMM, y",
+ "mediumTime": "hh:mm:ss a",
+ "short": "d-MM-yy hh:mm a",
+ "shortDate": "d-MM-yy",
+ "shortTime": "hh:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "gu-in",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_gu.js b/app/lib/angular/i18n/angular-locale_gu.js
new file mode 100755
index 0000000000..864cc5da87
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_gu.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE, d MMMM, y",
+ "longDate": "d MMMM, y",
+ "medium": "d MMM, y hh:mm:ss a",
+ "mediumDate": "d MMM, y",
+ "mediumTime": "hh:mm:ss a",
+ "short": "d-MM-yy hh:mm a",
+ "shortDate": "d-MM-yy",
+ "shortTime": "hh:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "gu",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_he-il.js b/app/lib/angular/i18n/angular-locale_he-il.js
new file mode 100755
index 0000000000..cd59f549ef
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_he-il.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u05dc\u05e4\u05e0\u05d4\u05f4\u05e6",
+ "\u05d0\u05d7\u05d4\u05f4\u05e6"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\u05d9\u05e0\u05d5",
+ "\u05e4\u05d1\u05e8",
+ "\u05de\u05e8\u05e5",
+ "\u05d0\u05e4\u05e8",
+ "\u05de\u05d0\u05d9",
+ "\u05d9\u05d5\u05e0",
+ "\u05d9\u05d5\u05dc",
+ "\u05d0\u05d5\u05d2",
+ "\u05e1\u05e4\u05d8",
+ "\u05d0\u05d5\u05e7",
+ "\u05e0\u05d5\u05d1",
+ "\u05d3\u05e6\u05de"
+ ],
+ "fullDate": "EEEE, d \u05d1MMMM y",
+ "longDate": "d \u05d1MMMM y",
+ "medium": "d \u05d1MMM yyyy HH:mm:ss",
+ "mediumDate": "d \u05d1MMM yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20aa",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "he-il",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_he.js b/app/lib/angular/i18n/angular-locale_he.js
new file mode 100755
index 0000000000..23d1cbce88
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_he.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u05dc\u05e4\u05e0\u05d4\u05f4\u05e6",
+ "\u05d0\u05d7\u05d4\u05f4\u05e6"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\u05d9\u05e0\u05d5",
+ "\u05e4\u05d1\u05e8",
+ "\u05de\u05e8\u05e5",
+ "\u05d0\u05e4\u05e8",
+ "\u05de\u05d0\u05d9",
+ "\u05d9\u05d5\u05e0",
+ "\u05d9\u05d5\u05dc",
+ "\u05d0\u05d5\u05d2",
+ "\u05e1\u05e4\u05d8",
+ "\u05d0\u05d5\u05e7",
+ "\u05e0\u05d5\u05d1",
+ "\u05d3\u05e6\u05de"
+ ],
+ "fullDate": "EEEE, d \u05d1MMMM y",
+ "longDate": "d \u05d1MMMM y",
+ "medium": "d \u05d1MMM yyyy HH:mm:ss",
+ "mediumDate": "d \u05d1MMM yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20aa",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "he",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_hi-in.js b/app/lib/angular/i18n/angular-locale_hi-in.js
new file mode 100755
index 0000000000..d9b00291e1
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_hi-in.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\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",
+ "\u092c\u0943\u0939\u0938\u094d\u092a\u0924\u093f\u0935\u093e\u0930",
+ "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930",
+ "\u0936\u0928\u093f\u0935\u093e\u0930"
+ ],
+ "MONTH": [
+ "\u091c\u0928\u0935\u0930\u0940",
+ "\u092b\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\u092e\u094d\u092c\u0930",
+ "\u0905\u0915\u094d\u0924\u0942\u092c\u0930",
+ "\u0928\u0935\u092e\u094d\u092c\u0930",
+ "\u0926\u093f\u0938\u092e\u094d\u092c\u0930"
+ ],
+ "SHORTDAY": [
+ "\u0930\u0935\u093f.",
+ "\u0938\u094b\u092e.",
+ "\u092e\u0902\u0917\u0932.",
+ "\u092c\u0941\u0927.",
+ "\u092c\u0943\u0939.",
+ "\u0936\u0941\u0915\u094d\u0930.",
+ "\u0936\u0928\u093f."
+ ],
+ "SHORTMONTH": [
+ "\u091c\u0928\u0935\u0930\u0940",
+ "\u092b\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\u092e\u094d\u092c\u0930",
+ "\u0905\u0915\u094d\u0924\u0942\u092c\u0930",
+ "\u0928\u0935\u092e\u094d\u092c\u0930",
+ "\u0926\u093f\u0938\u092e\u094d\u092c\u0930"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "dd-MM-yyyy h:mm:ss a",
+ "mediumDate": "dd-MM-yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d-M-yy h:mm a",
+ "shortDate": "d-M-yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0-",
+ "negSuf": "",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "hi-in",
+ "pluralCat": function (n) { if (n == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_hi.js b/app/lib/angular/i18n/angular-locale_hi.js
new file mode 100755
index 0000000000..c9258b8cb1
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_hi.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\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",
+ "\u092c\u0943\u0939\u0938\u094d\u092a\u0924\u093f\u0935\u093e\u0930",
+ "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930",
+ "\u0936\u0928\u093f\u0935\u093e\u0930"
+ ],
+ "MONTH": [
+ "\u091c\u0928\u0935\u0930\u0940",
+ "\u092b\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\u092e\u094d\u092c\u0930",
+ "\u0905\u0915\u094d\u0924\u0942\u092c\u0930",
+ "\u0928\u0935\u092e\u094d\u092c\u0930",
+ "\u0926\u093f\u0938\u092e\u094d\u092c\u0930"
+ ],
+ "SHORTDAY": [
+ "\u0930\u0935\u093f.",
+ "\u0938\u094b\u092e.",
+ "\u092e\u0902\u0917\u0932.",
+ "\u092c\u0941\u0927.",
+ "\u092c\u0943\u0939.",
+ "\u0936\u0941\u0915\u094d\u0930.",
+ "\u0936\u0928\u093f."
+ ],
+ "SHORTMONTH": [
+ "\u091c\u0928\u0935\u0930\u0940",
+ "\u092b\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\u092e\u094d\u092c\u0930",
+ "\u0905\u0915\u094d\u0924\u0942\u092c\u0930",
+ "\u0928\u0935\u092e\u094d\u092c\u0930",
+ "\u0926\u093f\u0938\u092e\u094d\u092c\u0930"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "dd-MM-yyyy h:mm:ss a",
+ "mediumDate": "dd-MM-yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d-M-yy h:mm a",
+ "shortDate": "d-M-yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0-",
+ "negSuf": "",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "hi",
+ "pluralCat": function (n) { if (n == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_hr-hr.js b/app/lib/angular/i18n/angular-locale_hr-hr.js
new file mode 100755
index 0000000000..865d756724
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_hr-hr.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "nedjelja",
+ "ponedjeljak",
+ "utorak",
+ "srijeda",
+ "\u010detvrtak",
+ "petak",
+ "subota"
+ ],
+ "MONTH": [
+ "sije\u010dnja",
+ "velja\u010de",
+ "o\u017eujka",
+ "travnja",
+ "svibnja",
+ "lipnja",
+ "srpnja",
+ "kolovoza",
+ "rujna",
+ "listopada",
+ "studenoga",
+ "prosinca"
+ ],
+ "SHORTDAY": [
+ "ned",
+ "pon",
+ "uto",
+ "sri",
+ "\u010det",
+ "pet",
+ "sub"
+ ],
+ "SHORTMONTH": [
+ "sij",
+ "velj",
+ "o\u017eu",
+ "tra",
+ "svi",
+ "lip",
+ "srp",
+ "kol",
+ "ruj",
+ "lis",
+ "stu",
+ "pro"
+ ],
+ "fullDate": "EEEE, d. MMMM y.",
+ "longDate": "d. MMMM y.",
+ "medium": "d. M. y. HH:mm:ss",
+ "mediumDate": "d. M. y.",
+ "mediumTime": "HH:mm:ss",
+ "short": "d.M.y. HH:mm",
+ "shortDate": "d.M.y.",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "kn",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "hr-hr",
+ "pluralCat": function (n) { if (n % 10 == 1 && n % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_hr.js b/app/lib/angular/i18n/angular-locale_hr.js
new file mode 100755
index 0000000000..ed4223e40a
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_hr.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "nedjelja",
+ "ponedjeljak",
+ "utorak",
+ "srijeda",
+ "\u010detvrtak",
+ "petak",
+ "subota"
+ ],
+ "MONTH": [
+ "sije\u010dnja",
+ "velja\u010de",
+ "o\u017eujka",
+ "travnja",
+ "svibnja",
+ "lipnja",
+ "srpnja",
+ "kolovoza",
+ "rujna",
+ "listopada",
+ "studenoga",
+ "prosinca"
+ ],
+ "SHORTDAY": [
+ "ned",
+ "pon",
+ "uto",
+ "sri",
+ "\u010det",
+ "pet",
+ "sub"
+ ],
+ "SHORTMONTH": [
+ "sij",
+ "velj",
+ "o\u017eu",
+ "tra",
+ "svi",
+ "lip",
+ "srp",
+ "kol",
+ "ruj",
+ "lis",
+ "stu",
+ "pro"
+ ],
+ "fullDate": "EEEE, d. MMMM y.",
+ "longDate": "d. MMMM y.",
+ "medium": "d. M. y. HH:mm:ss",
+ "mediumDate": "d. M. y.",
+ "mediumTime": "HH:mm:ss",
+ "short": "d.M.y. HH:mm",
+ "shortDate": "d.M.y.",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "kn",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "hr",
+ "pluralCat": function (n) { if (n % 10 == 1 && n % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_hu-hu.js b/app/lib/angular/i18n/angular-locale_hu-hu.js
new file mode 100755
index 0000000000..ae33eb0ad0
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_hu-hu.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "de.",
+ "du."
+ ],
+ "DAY": [
+ "vas\u00e1rnap",
+ "h\u00e9tf\u0151",
+ "kedd",
+ "szerda",
+ "cs\u00fct\u00f6rt\u00f6k",
+ "p\u00e9ntek",
+ "szombat"
+ ],
+ "MONTH": [
+ "janu\u00e1r",
+ "febru\u00e1r",
+ "m\u00e1rcius",
+ "\u00e1prilis",
+ "m\u00e1jus",
+ "j\u00fanius",
+ "j\u00falius",
+ "augusztus",
+ "szeptember",
+ "okt\u00f3ber",
+ "november",
+ "december"
+ ],
+ "SHORTDAY": [
+ "V",
+ "H",
+ "K",
+ "Sze",
+ "Cs",
+ "P",
+ "Szo"
+ ],
+ "SHORTMONTH": [
+ "jan.",
+ "febr.",
+ "m\u00e1rc.",
+ "\u00e1pr.",
+ "m\u00e1j.",
+ "j\u00fan.",
+ "j\u00fal.",
+ "aug.",
+ "szept.",
+ "okt.",
+ "nov.",
+ "dec."
+ ],
+ "fullDate": "y. MMMM d., EEEE",
+ "longDate": "y. MMMM d.",
+ "medium": "yyyy.MM.dd. H:mm:ss",
+ "mediumDate": "yyyy.MM.dd.",
+ "mediumTime": "H:mm:ss",
+ "short": "yyyy.MM.dd. H:mm",
+ "shortDate": "yyyy.MM.dd.",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Ft",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "hu-hu",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_hu.js b/app/lib/angular/i18n/angular-locale_hu.js
new file mode 100755
index 0000000000..beb16198ca
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_hu.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "de.",
+ "du."
+ ],
+ "DAY": [
+ "vas\u00e1rnap",
+ "h\u00e9tf\u0151",
+ "kedd",
+ "szerda",
+ "cs\u00fct\u00f6rt\u00f6k",
+ "p\u00e9ntek",
+ "szombat"
+ ],
+ "MONTH": [
+ "janu\u00e1r",
+ "febru\u00e1r",
+ "m\u00e1rcius",
+ "\u00e1prilis",
+ "m\u00e1jus",
+ "j\u00fanius",
+ "j\u00falius",
+ "augusztus",
+ "szeptember",
+ "okt\u00f3ber",
+ "november",
+ "december"
+ ],
+ "SHORTDAY": [
+ "V",
+ "H",
+ "K",
+ "Sze",
+ "Cs",
+ "P",
+ "Szo"
+ ],
+ "SHORTMONTH": [
+ "jan.",
+ "febr.",
+ "m\u00e1rc.",
+ "\u00e1pr.",
+ "m\u00e1j.",
+ "j\u00fan.",
+ "j\u00fal.",
+ "aug.",
+ "szept.",
+ "okt.",
+ "nov.",
+ "dec."
+ ],
+ "fullDate": "y. MMMM d., EEEE",
+ "longDate": "y. MMMM d.",
+ "medium": "yyyy.MM.dd. H:mm:ss",
+ "mediumDate": "yyyy.MM.dd.",
+ "mediumTime": "H:mm:ss",
+ "short": "yyyy.MM.dd. H:mm",
+ "shortDate": "yyyy.MM.dd.",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Ft",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "hu",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_id-id.js b/app/lib/angular/i18n/angular-locale_id-id.js
new file mode 100755
index 0000000000..5d02831128
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_id-id.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Minggu",
+ "Senin",
+ "Selasa",
+ "Rabu",
+ "Kamis",
+ "Jumat",
+ "Sabtu"
+ ],
+ "MONTH": [
+ "Januari",
+ "Februari",
+ "Maret",
+ "April",
+ "Mei",
+ "Juni",
+ "Juli",
+ "Agustus",
+ "September",
+ "Oktober",
+ "November",
+ "Desember"
+ ],
+ "SHORTDAY": [
+ "Min",
+ "Sen",
+ "Sel",
+ "Rab",
+ "Kam",
+ "Jum",
+ "Sab"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Mei",
+ "Jun",
+ "Jul",
+ "Agt",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Des"
+ ],
+ "fullDate": "EEEE, dd MMMM yyyy",
+ "longDate": "d MMMM yyyy",
+ "medium": "d MMM yyyy HH:mm:ss",
+ "mediumDate": "d MMM yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Rp",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4-",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "id-id",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_id.js b/app/lib/angular/i18n/angular-locale_id.js
new file mode 100755
index 0000000000..a5aa3fcaba
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_id.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Minggu",
+ "Senin",
+ "Selasa",
+ "Rabu",
+ "Kamis",
+ "Jumat",
+ "Sabtu"
+ ],
+ "MONTH": [
+ "Januari",
+ "Februari",
+ "Maret",
+ "April",
+ "Mei",
+ "Juni",
+ "Juli",
+ "Agustus",
+ "September",
+ "Oktober",
+ "November",
+ "Desember"
+ ],
+ "SHORTDAY": [
+ "Min",
+ "Sen",
+ "Sel",
+ "Rab",
+ "Kam",
+ "Jum",
+ "Sab"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Mei",
+ "Jun",
+ "Jul",
+ "Agt",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Des"
+ ],
+ "fullDate": "EEEE, dd MMMM yyyy",
+ "longDate": "d MMMM yyyy",
+ "medium": "d MMM yyyy HH:mm:ss",
+ "mediumDate": "d MMM yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Rp",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4-",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "id",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_in.js b/app/lib/angular/i18n/angular-locale_in.js
new file mode 100755
index 0000000000..5eed1c1d1b
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_in.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Minggu",
+ "Senin",
+ "Selasa",
+ "Rabu",
+ "Kamis",
+ "Jumat",
+ "Sabtu"
+ ],
+ "MONTH": [
+ "Januari",
+ "Februari",
+ "Maret",
+ "April",
+ "Mei",
+ "Juni",
+ "Juli",
+ "Agustus",
+ "September",
+ "Oktober",
+ "November",
+ "Desember"
+ ],
+ "SHORTDAY": [
+ "Min",
+ "Sen",
+ "Sel",
+ "Rab",
+ "Kam",
+ "Jum",
+ "Sab"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "Mei",
+ "Jun",
+ "Jul",
+ "Agt",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Des"
+ ],
+ "fullDate": "EEEE, dd MMMM yyyy",
+ "longDate": "d MMMM yyyy",
+ "medium": "d MMM yyyy HH:mm:ss",
+ "mediumDate": "d MMM yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Rp",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4-",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "in",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_is-is.js b/app/lib/angular/i18n/angular-locale_is-is.js
new file mode 100755
index 0000000000..e6f8cbbb26
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_is-is.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "f.h.",
+ "e.h."
+ ],
+ "DAY": [
+ "sunnudagur",
+ "m\u00e1nudagur",
+ "\u00feri\u00f0judagur",
+ "mi\u00f0vikudagur",
+ "fimmtudagur",
+ "f\u00f6studagur",
+ "laugardagur"
+ ],
+ "MONTH": [
+ "jan\u00faar",
+ "febr\u00faar",
+ "mars",
+ "apr\u00edl",
+ "ma\u00ed",
+ "j\u00fan\u00ed",
+ "j\u00fal\u00ed",
+ "\u00e1g\u00fast",
+ "september",
+ "okt\u00f3ber",
+ "n\u00f3vember",
+ "desember"
+ ],
+ "SHORTDAY": [
+ "sun",
+ "m\u00e1n",
+ "\u00feri",
+ "mi\u00f0",
+ "fim",
+ "f\u00f6s",
+ "lau"
+ ],
+ "SHORTMONTH": [
+ "jan",
+ "feb",
+ "mar",
+ "apr",
+ "ma\u00ed",
+ "j\u00fan",
+ "j\u00fal",
+ "\u00e1g\u00fa",
+ "sep",
+ "okt",
+ "n\u00f3v",
+ "des"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "d.M.yyyy HH:mm:ss",
+ "mediumDate": "d.M.yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "d.M.yyyy HH:mm",
+ "shortDate": "d.M.yyyy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "kr",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "is-is",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_is.js b/app/lib/angular/i18n/angular-locale_is.js
new file mode 100755
index 0000000000..ea64147e40
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_is.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "f.h.",
+ "e.h."
+ ],
+ "DAY": [
+ "sunnudagur",
+ "m\u00e1nudagur",
+ "\u00feri\u00f0judagur",
+ "mi\u00f0vikudagur",
+ "fimmtudagur",
+ "f\u00f6studagur",
+ "laugardagur"
+ ],
+ "MONTH": [
+ "jan\u00faar",
+ "febr\u00faar",
+ "mars",
+ "apr\u00edl",
+ "ma\u00ed",
+ "j\u00fan\u00ed",
+ "j\u00fal\u00ed",
+ "\u00e1g\u00fast",
+ "september",
+ "okt\u00f3ber",
+ "n\u00f3vember",
+ "desember"
+ ],
+ "SHORTDAY": [
+ "sun",
+ "m\u00e1n",
+ "\u00feri",
+ "mi\u00f0",
+ "fim",
+ "f\u00f6s",
+ "lau"
+ ],
+ "SHORTMONTH": [
+ "jan",
+ "feb",
+ "mar",
+ "apr",
+ "ma\u00ed",
+ "j\u00fan",
+ "j\u00fal",
+ "\u00e1g\u00fa",
+ "sep",
+ "okt",
+ "n\u00f3v",
+ "des"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "d.M.yyyy HH:mm:ss",
+ "mediumDate": "d.M.yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "d.M.yyyy HH:mm",
+ "shortDate": "d.M.yyyy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "kr",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "is",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_it-it.js b/app/lib/angular/i18n/angular-locale_it-it.js
new file mode 100755
index 0000000000..a4997378c6
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_it-it.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "m.",
+ "p."
+ ],
+ "DAY": [
+ "domenica",
+ "luned\u00ec",
+ "marted\u00ec",
+ "mercoled\u00ec",
+ "gioved\u00ec",
+ "venerd\u00ec",
+ "sabato"
+ ],
+ "MONTH": [
+ "gennaio",
+ "febbraio",
+ "marzo",
+ "aprile",
+ "maggio",
+ "giugno",
+ "luglio",
+ "agosto",
+ "settembre",
+ "ottobre",
+ "novembre",
+ "dicembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mer",
+ "gio",
+ "ven",
+ "sab"
+ ],
+ "SHORTMONTH": [
+ "gen",
+ "feb",
+ "mar",
+ "apr",
+ "mag",
+ "giu",
+ "lug",
+ "ago",
+ "set",
+ "ott",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "dd MMMM y",
+ "medium": "dd/MMM/y HH:mm:ss",
+ "mediumDate": "dd/MMM/y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0-",
+ "negSuf": "",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "it-it",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_it-sm.js b/app/lib/angular/i18n/angular-locale_it-sm.js
new file mode 100755
index 0000000000..f431a93bfd
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_it-sm.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "m.",
+ "p."
+ ],
+ "DAY": [
+ "domenica",
+ "luned\u00ec",
+ "marted\u00ec",
+ "mercoled\u00ec",
+ "gioved\u00ec",
+ "venerd\u00ec",
+ "sabato"
+ ],
+ "MONTH": [
+ "gennaio",
+ "febbraio",
+ "marzo",
+ "aprile",
+ "maggio",
+ "giugno",
+ "luglio",
+ "agosto",
+ "settembre",
+ "ottobre",
+ "novembre",
+ "dicembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mer",
+ "gio",
+ "ven",
+ "sab"
+ ],
+ "SHORTMONTH": [
+ "gen",
+ "feb",
+ "mar",
+ "apr",
+ "mag",
+ "giu",
+ "lug",
+ "ago",
+ "set",
+ "ott",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "dd MMMM y",
+ "medium": "dd/MMM/y HH:mm:ss",
+ "mediumDate": "dd/MMM/y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0-",
+ "negSuf": "",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "it-sm",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_it.js b/app/lib/angular/i18n/angular-locale_it.js
new file mode 100755
index 0000000000..99ca2a7fda
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_it.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "m.",
+ "p."
+ ],
+ "DAY": [
+ "domenica",
+ "luned\u00ec",
+ "marted\u00ec",
+ "mercoled\u00ec",
+ "gioved\u00ec",
+ "venerd\u00ec",
+ "sabato"
+ ],
+ "MONTH": [
+ "gennaio",
+ "febbraio",
+ "marzo",
+ "aprile",
+ "maggio",
+ "giugno",
+ "luglio",
+ "agosto",
+ "settembre",
+ "ottobre",
+ "novembre",
+ "dicembre"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "lun",
+ "mar",
+ "mer",
+ "gio",
+ "ven",
+ "sab"
+ ],
+ "SHORTMONTH": [
+ "gen",
+ "feb",
+ "mar",
+ "apr",
+ "mag",
+ "giu",
+ "lug",
+ "ago",
+ "set",
+ "ott",
+ "nov",
+ "dic"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "dd MMMM y",
+ "medium": "dd/MMM/y HH:mm:ss",
+ "mediumDate": "dd/MMM/y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0-",
+ "negSuf": "",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "it",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_iw.js b/app/lib/angular/i18n/angular-locale_iw.js
new file mode 100755
index 0000000000..7f52d3a3ee
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_iw.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u05dc\u05e4\u05e0\u05d4\u05f4\u05e6",
+ "\u05d0\u05d7\u05d4\u05f4\u05e6"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\u05d9\u05e0\u05d5",
+ "\u05e4\u05d1\u05e8",
+ "\u05de\u05e8\u05e5",
+ "\u05d0\u05e4\u05e8",
+ "\u05de\u05d0\u05d9",
+ "\u05d9\u05d5\u05e0",
+ "\u05d9\u05d5\u05dc",
+ "\u05d0\u05d5\u05d2",
+ "\u05e1\u05e4\u05d8",
+ "\u05d0\u05d5\u05e7",
+ "\u05e0\u05d5\u05d1",
+ "\u05d3\u05e6\u05de"
+ ],
+ "fullDate": "EEEE, d \u05d1MMMM y",
+ "longDate": "d \u05d1MMMM y",
+ "medium": "d \u05d1MMM yyyy HH:mm:ss",
+ "mediumDate": "d \u05d1MMM yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20aa",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "iw",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ja-jp.js b/app/lib/angular/i18n/angular-locale_ja-jp.js
new file mode 100755
index 0000000000..2fc7abcdee
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ja-jp.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u5348\u524d",
+ "\u5348\u5f8c"
+ ],
+ "DAY": [
+ "\u65e5\u66dc\u65e5",
+ "\u6708\u66dc\u65e5",
+ "\u706b\u66dc\u65e5",
+ "\u6c34\u66dc\u65e5",
+ "\u6728\u66dc\u65e5",
+ "\u91d1\u66dc\u65e5",
+ "\u571f\u66dc\u65e5"
+ ],
+ "MONTH": [
+ "1\u6708",
+ "2\u6708",
+ "3\u6708",
+ "4\u6708",
+ "5\u6708",
+ "6\u6708",
+ "7\u6708",
+ "8\u6708",
+ "9\u6708",
+ "10\u6708",
+ "11\u6708",
+ "12\u6708"
+ ],
+ "SHORTDAY": [
+ "\u65e5",
+ "\u6708",
+ "\u706b",
+ "\u6c34",
+ "\u6728",
+ "\u91d1",
+ "\u571f"
+ ],
+ "SHORTMONTH": [
+ "1\u6708",
+ "2\u6708",
+ "3\u6708",
+ "4\u6708",
+ "5\u6708",
+ "6\u6708",
+ "7\u6708",
+ "8\u6708",
+ "9\u6708",
+ "10\u6708",
+ "11\u6708",
+ "12\u6708"
+ ],
+ "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
+ "longDate": "y\u5e74M\u6708d\u65e5",
+ "medium": "yyyy/MM/dd H:mm:ss",
+ "mediumDate": "yyyy/MM/dd",
+ "mediumTime": "H:mm:ss",
+ "short": "yyyy/MM/dd H:mm",
+ "shortDate": "yyyy/MM/dd",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a5",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4-",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ja-jp",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ja.js b/app/lib/angular/i18n/angular-locale_ja.js
new file mode 100755
index 0000000000..eb39e847cb
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ja.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u5348\u524d",
+ "\u5348\u5f8c"
+ ],
+ "DAY": [
+ "\u65e5\u66dc\u65e5",
+ "\u6708\u66dc\u65e5",
+ "\u706b\u66dc\u65e5",
+ "\u6c34\u66dc\u65e5",
+ "\u6728\u66dc\u65e5",
+ "\u91d1\u66dc\u65e5",
+ "\u571f\u66dc\u65e5"
+ ],
+ "MONTH": [
+ "1\u6708",
+ "2\u6708",
+ "3\u6708",
+ "4\u6708",
+ "5\u6708",
+ "6\u6708",
+ "7\u6708",
+ "8\u6708",
+ "9\u6708",
+ "10\u6708",
+ "11\u6708",
+ "12\u6708"
+ ],
+ "SHORTDAY": [
+ "\u65e5",
+ "\u6708",
+ "\u706b",
+ "\u6c34",
+ "\u6728",
+ "\u91d1",
+ "\u571f"
+ ],
+ "SHORTMONTH": [
+ "1\u6708",
+ "2\u6708",
+ "3\u6708",
+ "4\u6708",
+ "5\u6708",
+ "6\u6708",
+ "7\u6708",
+ "8\u6708",
+ "9\u6708",
+ "10\u6708",
+ "11\u6708",
+ "12\u6708"
+ ],
+ "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
+ "longDate": "y\u5e74M\u6708d\u65e5",
+ "medium": "yyyy/MM/dd H:mm:ss",
+ "mediumDate": "yyyy/MM/dd",
+ "mediumTime": "H:mm:ss",
+ "short": "yyyy/MM/dd H:mm",
+ "shortDate": "yyyy/MM/dd",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a5",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4-",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ja",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_kn-in.js b/app/lib/angular/i18n/angular-locale_kn-in.js
new file mode 100755
index 0000000000..6f7ea15c0e
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_kn-in.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\u0cb0\u0cb5\u0cbf\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"
+ ],
+ "MONTH": [
+ "\u0c9c\u0ca8\u0cb5\u0cb0\u0cc0",
+ "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cc0",
+ "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd",
+ "\u0c8e\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd",
+ "\u0cae\u0cc6",
+ "\u0c9c\u0cc2\u0ca8\u0ccd",
+ "\u0c9c\u0cc1\u0cb2\u0cc8",
+ "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd",
+ "\u0cb8\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"
+ ],
+ "SHORTDAY": [
+ "\u0cb0.",
+ "\u0cb8\u0ccb.",
+ "\u0cae\u0c82.",
+ "\u0cac\u0cc1.",
+ "\u0c97\u0cc1.",
+ "\u0cb6\u0cc1.",
+ "\u0cb6\u0ca8\u0cbf."
+ ],
+ "SHORTMONTH": [
+ "\u0c9c\u0ca8\u0cb5\u0cb0\u0cc0",
+ "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cc0",
+ "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd",
+ "\u0c8e\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd",
+ "\u0cae\u0cc6",
+ "\u0c9c\u0cc2\u0ca8\u0ccd",
+ "\u0c9c\u0cc1\u0cb2\u0cc8",
+ "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd",
+ "\u0cb8\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"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y hh:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "hh:mm:ss a",
+ "short": "d-M-yy hh:mm a",
+ "shortDate": "d-M-yy",
+ "shortTime": "hh:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "kn-in",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_kn.js b/app/lib/angular/i18n/angular-locale_kn.js
new file mode 100755
index 0000000000..3020357406
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_kn.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\u0cb0\u0cb5\u0cbf\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"
+ ],
+ "MONTH": [
+ "\u0c9c\u0ca8\u0cb5\u0cb0\u0cc0",
+ "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cc0",
+ "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd",
+ "\u0c8e\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd",
+ "\u0cae\u0cc6",
+ "\u0c9c\u0cc2\u0ca8\u0ccd",
+ "\u0c9c\u0cc1\u0cb2\u0cc8",
+ "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd",
+ "\u0cb8\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"
+ ],
+ "SHORTDAY": [
+ "\u0cb0.",
+ "\u0cb8\u0ccb.",
+ "\u0cae\u0c82.",
+ "\u0cac\u0cc1.",
+ "\u0c97\u0cc1.",
+ "\u0cb6\u0cc1.",
+ "\u0cb6\u0ca8\u0cbf."
+ ],
+ "SHORTMONTH": [
+ "\u0c9c\u0ca8\u0cb5\u0cb0\u0cc0",
+ "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cc0",
+ "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd",
+ "\u0c8e\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd",
+ "\u0cae\u0cc6",
+ "\u0c9c\u0cc2\u0ca8\u0ccd",
+ "\u0c9c\u0cc1\u0cb2\u0cc8",
+ "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd",
+ "\u0cb8\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"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y hh:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "hh:mm:ss a",
+ "short": "d-M-yy hh:mm a",
+ "shortDate": "d-M-yy",
+ "shortTime": "hh:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "kn",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ko-kr.js b/app/lib/angular/i18n/angular-locale_ko-kr.js
new file mode 100755
index 0000000000..91b39e414f
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ko-kr.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\uc624\uc804",
+ "\uc624\ud6c4"
+ ],
+ "DAY": [
+ "\uc77c\uc694\uc77c",
+ "\uc6d4\uc694\uc77c",
+ "\ud654\uc694\uc77c",
+ "\uc218\uc694\uc77c",
+ "\ubaa9\uc694\uc77c",
+ "\uae08\uc694\uc77c",
+ "\ud1a0\uc694\uc77c"
+ ],
+ "MONTH": [
+ "1\uc6d4",
+ "2\uc6d4",
+ "3\uc6d4",
+ "4\uc6d4",
+ "5\uc6d4",
+ "6\uc6d4",
+ "7\uc6d4",
+ "8\uc6d4",
+ "9\uc6d4",
+ "10\uc6d4",
+ "11\uc6d4",
+ "12\uc6d4"
+ ],
+ "SHORTDAY": [
+ "\uc77c",
+ "\uc6d4",
+ "\ud654",
+ "\uc218",
+ "\ubaa9",
+ "\uae08",
+ "\ud1a0"
+ ],
+ "SHORTMONTH": [
+ "1\uc6d4",
+ "2\uc6d4",
+ "3\uc6d4",
+ "4\uc6d4",
+ "5\uc6d4",
+ "6\uc6d4",
+ "7\uc6d4",
+ "8\uc6d4",
+ "9\uc6d4",
+ "10\uc6d4",
+ "11\uc6d4",
+ "12\uc6d4"
+ ],
+ "fullDate": "y\ub144 M\uc6d4 d\uc77c EEEE",
+ "longDate": "y\ub144 M\uc6d4 d\uc77c",
+ "medium": "yyyy. M. d. a h:mm:ss",
+ "mediumDate": "yyyy. M. d.",
+ "mediumTime": "a h:mm:ss",
+ "short": "yy. M. d. a h:mm",
+ "shortDate": "yy. M. d.",
+ "shortTime": "a h:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20a9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ko-kr",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ko.js b/app/lib/angular/i18n/angular-locale_ko.js
new file mode 100755
index 0000000000..b5a4b1bfb4
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ko.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\uc624\uc804",
+ "\uc624\ud6c4"
+ ],
+ "DAY": [
+ "\uc77c\uc694\uc77c",
+ "\uc6d4\uc694\uc77c",
+ "\ud654\uc694\uc77c",
+ "\uc218\uc694\uc77c",
+ "\ubaa9\uc694\uc77c",
+ "\uae08\uc694\uc77c",
+ "\ud1a0\uc694\uc77c"
+ ],
+ "MONTH": [
+ "1\uc6d4",
+ "2\uc6d4",
+ "3\uc6d4",
+ "4\uc6d4",
+ "5\uc6d4",
+ "6\uc6d4",
+ "7\uc6d4",
+ "8\uc6d4",
+ "9\uc6d4",
+ "10\uc6d4",
+ "11\uc6d4",
+ "12\uc6d4"
+ ],
+ "SHORTDAY": [
+ "\uc77c",
+ "\uc6d4",
+ "\ud654",
+ "\uc218",
+ "\ubaa9",
+ "\uae08",
+ "\ud1a0"
+ ],
+ "SHORTMONTH": [
+ "1\uc6d4",
+ "2\uc6d4",
+ "3\uc6d4",
+ "4\uc6d4",
+ "5\uc6d4",
+ "6\uc6d4",
+ "7\uc6d4",
+ "8\uc6d4",
+ "9\uc6d4",
+ "10\uc6d4",
+ "11\uc6d4",
+ "12\uc6d4"
+ ],
+ "fullDate": "y\ub144 M\uc6d4 d\uc77c EEEE",
+ "longDate": "y\ub144 M\uc6d4 d\uc77c",
+ "medium": "yyyy. M. d. a h:mm:ss",
+ "mediumDate": "yyyy. M. d.",
+ "mediumTime": "a h:mm:ss",
+ "short": "yy. M. d. a h:mm",
+ "shortDate": "yy. M. d.",
+ "shortTime": "a h:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20a9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ko",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ln-cd.js b/app/lib/angular/i18n/angular-locale_ln-cd.js
new file mode 100755
index 0000000000..b3470e0b38
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ln-cd.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "nt\u0254\u0301ng\u0254\u0301",
+ "mp\u00f3kwa"
+ ],
+ "DAY": [
+ "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"
+ ],
+ "MONTH": [
+ "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"
+ ],
+ "SHORTDAY": [
+ "eye",
+ "ybo",
+ "mbl",
+ "mst",
+ "min",
+ "mtn",
+ "mps"
+ ],
+ "SHORTMONTH": [
+ "yan",
+ "fbl",
+ "msi",
+ "apl",
+ "mai",
+ "yun",
+ "yul",
+ "agt",
+ "stb",
+ "\u0254tb",
+ "nvb",
+ "dsb"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "d/M/yyyy HH:mm",
+ "shortDate": "d/M/yyyy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "FrCD",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "ln-cd",
+ "pluralCat": function (n) { if (n == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ln.js b/app/lib/angular/i18n/angular-locale_ln.js
new file mode 100755
index 0000000000..9881dad9e3
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ln.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "nt\u0254\u0301ng\u0254\u0301",
+ "mp\u00f3kwa"
+ ],
+ "DAY": [
+ "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"
+ ],
+ "MONTH": [
+ "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"
+ ],
+ "SHORTDAY": [
+ "eye",
+ "ybo",
+ "mbl",
+ "mst",
+ "min",
+ "mtn",
+ "mps"
+ ],
+ "SHORTMONTH": [
+ "yan",
+ "fbl",
+ "msi",
+ "apl",
+ "mai",
+ "yun",
+ "yul",
+ "agt",
+ "stb",
+ "\u0254tb",
+ "nvb",
+ "dsb"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "d/M/yyyy HH:mm",
+ "shortDate": "d/M/yyyy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "FrCD",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "ln",
+ "pluralCat": function (n) { if (n == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_lt-lt.js b/app/lib/angular/i18n/angular-locale_lt-lt.js
new file mode 100755
index 0000000000..6a6f81f135
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_lt-lt.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "prie\u0161piet",
+ "popiet"
+ ],
+ "DAY": [
+ "sekmadienis",
+ "pirmadienis",
+ "antradienis",
+ "tre\u010diadienis",
+ "ketvirtadienis",
+ "penktadienis",
+ "\u0161e\u0161tadienis"
+ ],
+ "MONTH": [
+ "sausio",
+ "vasaris",
+ "kovas",
+ "balandis",
+ "gegu\u017e\u0117",
+ "bir\u017eelis",
+ "liepa",
+ "rugpj\u016btis",
+ "rugs\u0117jis",
+ "spalis",
+ "lapkritis",
+ "gruodis"
+ ],
+ "SHORTDAY": [
+ "Sk",
+ "Pr",
+ "An",
+ "Tr",
+ "Kt",
+ "Pn",
+ "\u0160t"
+ ],
+ "SHORTMONTH": [
+ "Saus.",
+ "Vas",
+ "Kov.",
+ "Bal.",
+ "Geg.",
+ "Bir.",
+ "Liep.",
+ "Rugp.",
+ "Rugs.",
+ "Spal.",
+ "Lapkr.",
+ "Gruod."
+ ],
+ "fullDate": "y 'm'. MMMM d 'd'., EEEE",
+ "longDate": "y 'm'. MMMM d 'd'.",
+ "medium": "y MMM d HH:mm:ss",
+ "mediumDate": "y MMM d",
+ "mediumTime": "HH:mm:ss",
+ "short": "yyyy-MM-dd HH:mm",
+ "shortDate": "yyyy-MM-dd",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Lt",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "lt-lt",
+ "pluralCat": function (n) { if (n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_lt.js b/app/lib/angular/i18n/angular-locale_lt.js
new file mode 100755
index 0000000000..fd752647d5
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_lt.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "prie\u0161piet",
+ "popiet"
+ ],
+ "DAY": [
+ "sekmadienis",
+ "pirmadienis",
+ "antradienis",
+ "tre\u010diadienis",
+ "ketvirtadienis",
+ "penktadienis",
+ "\u0161e\u0161tadienis"
+ ],
+ "MONTH": [
+ "sausio",
+ "vasaris",
+ "kovas",
+ "balandis",
+ "gegu\u017e\u0117",
+ "bir\u017eelis",
+ "liepa",
+ "rugpj\u016btis",
+ "rugs\u0117jis",
+ "spalis",
+ "lapkritis",
+ "gruodis"
+ ],
+ "SHORTDAY": [
+ "Sk",
+ "Pr",
+ "An",
+ "Tr",
+ "Kt",
+ "Pn",
+ "\u0160t"
+ ],
+ "SHORTMONTH": [
+ "Saus.",
+ "Vas",
+ "Kov.",
+ "Bal.",
+ "Geg.",
+ "Bir.",
+ "Liep.",
+ "Rugp.",
+ "Rugs.",
+ "Spal.",
+ "Lapkr.",
+ "Gruod."
+ ],
+ "fullDate": "y 'm'. MMMM d 'd'., EEEE",
+ "longDate": "y 'm'. MMMM d 'd'.",
+ "medium": "y MMM d HH:mm:ss",
+ "mediumDate": "y MMM d",
+ "mediumTime": "HH:mm:ss",
+ "short": "yyyy-MM-dd HH:mm",
+ "shortDate": "yyyy-MM-dd",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Lt",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "lt",
+ "pluralCat": function (n) { if (n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_lv-lv.js b/app/lib/angular/i18n/angular-locale_lv-lv.js
new file mode 100755
index 0000000000..4808617a68
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_lv-lv.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "priek\u0161pusdien\u0101",
+ "p\u0113cpusdien\u0101"
+ ],
+ "DAY": [
+ "sv\u0113tdiena",
+ "pirmdiena",
+ "otrdiena",
+ "tre\u0161diena",
+ "ceturtdiena",
+ "piektdiena",
+ "sestdiena"
+ ],
+ "MONTH": [
+ "janv\u0101ris",
+ "febru\u0101ris",
+ "marts",
+ "apr\u012blis",
+ "maijs",
+ "j\u016bnijs",
+ "j\u016blijs",
+ "augusts",
+ "septembris",
+ "oktobris",
+ "novembris",
+ "decembris"
+ ],
+ "SHORTDAY": [
+ "Sv",
+ "Pr",
+ "Ot",
+ "Tr",
+ "Ce",
+ "Pk",
+ "Se"
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "febr.",
+ "marts",
+ "apr.",
+ "maijs",
+ "j\u016bn.",
+ "j\u016bl.",
+ "aug.",
+ "sept.",
+ "okt.",
+ "nov.",
+ "dec."
+ ],
+ "fullDate": "EEEE, y. 'gada' d. MMMM",
+ "longDate": "y. 'gada' d. MMMM",
+ "medium": "y. 'gada' d. MMM HH:mm:ss",
+ "mediumDate": "y. 'gada' d. MMM",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Ls",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "lv-lv",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n % 10 == 1 && n % 100 != 11) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_lv.js b/app/lib/angular/i18n/angular-locale_lv.js
new file mode 100755
index 0000000000..45bdcc6d33
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_lv.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "priek\u0161pusdien\u0101",
+ "p\u0113cpusdien\u0101"
+ ],
+ "DAY": [
+ "sv\u0113tdiena",
+ "pirmdiena",
+ "otrdiena",
+ "tre\u0161diena",
+ "ceturtdiena",
+ "piektdiena",
+ "sestdiena"
+ ],
+ "MONTH": [
+ "janv\u0101ris",
+ "febru\u0101ris",
+ "marts",
+ "apr\u012blis",
+ "maijs",
+ "j\u016bnijs",
+ "j\u016blijs",
+ "augusts",
+ "septembris",
+ "oktobris",
+ "novembris",
+ "decembris"
+ ],
+ "SHORTDAY": [
+ "Sv",
+ "Pr",
+ "Ot",
+ "Tr",
+ "Ce",
+ "Pk",
+ "Se"
+ ],
+ "SHORTMONTH": [
+ "janv.",
+ "febr.",
+ "marts",
+ "apr.",
+ "maijs",
+ "j\u016bn.",
+ "j\u016bl.",
+ "aug.",
+ "sept.",
+ "okt.",
+ "nov.",
+ "dec."
+ ],
+ "fullDate": "EEEE, y. 'gada' d. MMMM",
+ "longDate": "y. 'gada' d. MMMM",
+ "medium": "y. 'gada' d. MMM HH:mm:ss",
+ "mediumDate": "y. 'gada' d. MMM",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Ls",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "lv",
+ "pluralCat": function (n) { if (n == 0) { return PLURAL_CATEGORY.ZERO; } if (n % 10 == 1 && n % 100 != 11) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ml-in.js b/app/lib/angular/i18n/angular-locale_ml-in.js
new file mode 100755
index 0000000000..044005c166
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ml-in.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a",
+ "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a",
+ "\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a",
+ "\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a",
+ "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a",
+ "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a",
+ "\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a"
+ ],
+ "MONTH": [
+ "\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f",
+ "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f",
+ "\u0d2e\u0d3e\u0d30\u0d4d\u200d\u0d1a\u0d4d\u0d1a\u0d4d",
+ "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u200d",
+ "\u0d2e\u0d47\u0d2f\u0d4d",
+ "\u0d1c\u0d42\u0d23\u0d4d\u200d",
+ "\u0d1c\u0d42\u0d32\u0d48",
+ "\u0d06\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d",
+ "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d30\u0d4d\u200d",
+ "\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d30\u0d4d\u200d",
+ "\u0d28\u0d35\u0d02\u0d2c\u0d30\u0d4d\u200d",
+ "\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d30\u0d4d\u200d"
+ ],
+ "SHORTDAY": [
+ "\u0d1e\u0d3e\u0d2f\u0d30\u0d4d\u200d",
+ "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d4d\u200d",
+ "\u0d1a\u0d4a\u0d35\u0d4d\u0d35",
+ "\u0d2c\u0d41\u0d27\u0d28\u0d4d\u200d",
+ "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02",
+ "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f",
+ "\u0d36\u0d28\u0d3f"
+ ],
+ "SHORTMONTH": [
+ "\u0d1c\u0d28\u0d41",
+ "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41",
+ "\u0d2e\u0d3e\u0d30\u0d4d\u200d",
+ "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f",
+ "\u0d2e\u0d47\u0d2f\u0d4d",
+ "\u0d1c\u0d42\u0d23\u0d4d\u200d",
+ "\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"
+ ],
+ "fullDate": "y, MMMM d, EEEE",
+ "longDate": "y, MMMM d",
+ "medium": "y, MMM d h:mm:ss a",
+ "mediumDate": "y, MMM d",
+ "mediumTime": "h:mm:ss a",
+ "short": "dd/MM/yy h:mm a",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a4"
+ }
+ ]
+ },
+ "id": "ml-in",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ml.js b/app/lib/angular/i18n/angular-locale_ml.js
new file mode 100755
index 0000000000..20074489d4
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ml.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a",
+ "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a",
+ "\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a",
+ "\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a",
+ "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a",
+ "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a",
+ "\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a"
+ ],
+ "MONTH": [
+ "\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f",
+ "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f",
+ "\u0d2e\u0d3e\u0d30\u0d4d\u200d\u0d1a\u0d4d\u0d1a\u0d4d",
+ "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u200d",
+ "\u0d2e\u0d47\u0d2f\u0d4d",
+ "\u0d1c\u0d42\u0d23\u0d4d\u200d",
+ "\u0d1c\u0d42\u0d32\u0d48",
+ "\u0d06\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d",
+ "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d30\u0d4d\u200d",
+ "\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d30\u0d4d\u200d",
+ "\u0d28\u0d35\u0d02\u0d2c\u0d30\u0d4d\u200d",
+ "\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d30\u0d4d\u200d"
+ ],
+ "SHORTDAY": [
+ "\u0d1e\u0d3e\u0d2f\u0d30\u0d4d\u200d",
+ "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d4d\u200d",
+ "\u0d1a\u0d4a\u0d35\u0d4d\u0d35",
+ "\u0d2c\u0d41\u0d27\u0d28\u0d4d\u200d",
+ "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02",
+ "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f",
+ "\u0d36\u0d28\u0d3f"
+ ],
+ "SHORTMONTH": [
+ "\u0d1c\u0d28\u0d41",
+ "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41",
+ "\u0d2e\u0d3e\u0d30\u0d4d\u200d",
+ "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f",
+ "\u0d2e\u0d47\u0d2f\u0d4d",
+ "\u0d1c\u0d42\u0d23\u0d4d\u200d",
+ "\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"
+ ],
+ "fullDate": "y, MMMM d, EEEE",
+ "longDate": "y, MMMM d",
+ "medium": "y, MMM d h:mm:ss a",
+ "mediumDate": "y, MMM d",
+ "mediumTime": "h:mm:ss a",
+ "short": "dd/MM/yy h:mm a",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a4"
+ }
+ ]
+ },
+ "id": "ml",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_mr-in.js b/app/lib/angular/i18n/angular-locale_mr-in.js
new file mode 100755
index 0000000000..f08286e4a7
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_mr-in.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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\u0947\u092a\u094d\u091f\u0947\u0902",
+ "\u0911\u0915\u094d\u091f\u094b\u092c\u0930",
+ "\u0928\u094b\u0935\u094d\u0939\u0947\u0902",
+ "\u0921\u093f\u0938\u0947\u0902"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h-mm-ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h-mm-ss a",
+ "short": "d-M-yy h-mm a",
+ "shortDate": "d-M-yy",
+ "shortTime": "h-mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "mr-in",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_mr.js b/app/lib/angular/i18n/angular-locale_mr.js
new file mode 100755
index 0000000000..71d6f792f9
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_mr.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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\u0947\u092a\u094d\u091f\u0947\u0902",
+ "\u0911\u0915\u094d\u091f\u094b\u092c\u0930",
+ "\u0928\u094b\u0935\u094d\u0939\u0947\u0902",
+ "\u0921\u093f\u0938\u0947\u0902"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h-mm-ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h-mm-ss a",
+ "short": "d-M-yy h-mm a",
+ "shortDate": "d-M-yy",
+ "shortTime": "h-mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "mr",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ms-my.js b/app/lib/angular/i18n/angular-locale_ms-my.js
new file mode 100755
index 0000000000..ade60360ce
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ms-my.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "PG",
+ "PTG"
+ ],
+ "DAY": [
+ "Ahad",
+ "Isnin",
+ "Selasa",
+ "Rabu",
+ "Khamis",
+ "Jumaat",
+ "Sabtu"
+ ],
+ "MONTH": [
+ "Januari",
+ "Februari",
+ "Mac",
+ "April",
+ "Mei",
+ "Jun",
+ "Julai",
+ "Ogos",
+ "September",
+ "Oktober",
+ "November",
+ "Disember"
+ ],
+ "SHORTDAY": [
+ "Ahd",
+ "Isn",
+ "Sel",
+ "Rab",
+ "Kha",
+ "Jum",
+ "Sab"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mac",
+ "Apr",
+ "Mei",
+ "Jun",
+ "Jul",
+ "Ogos",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dis"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "dd/MM/yyyy h:mm:ss a",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/MM/yy h:mm a",
+ "shortDate": "d/MM/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "RM",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ms-my",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ms.js b/app/lib/angular/i18n/angular-locale_ms.js
new file mode 100755
index 0000000000..528718403e
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ms.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "PG",
+ "PTG"
+ ],
+ "DAY": [
+ "Ahad",
+ "Isnin",
+ "Selasa",
+ "Rabu",
+ "Khamis",
+ "Jumaat",
+ "Sabtu"
+ ],
+ "MONTH": [
+ "Januari",
+ "Februari",
+ "Mac",
+ "April",
+ "Mei",
+ "Jun",
+ "Julai",
+ "Ogos",
+ "September",
+ "Oktober",
+ "November",
+ "Disember"
+ ],
+ "SHORTDAY": [
+ "Ahd",
+ "Isn",
+ "Sel",
+ "Rab",
+ "Kha",
+ "Jum",
+ "Sab"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mac",
+ "Apr",
+ "Mei",
+ "Jun",
+ "Jul",
+ "Ogos",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dis"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "dd/MM/yyyy h:mm:ss a",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/MM/yy h:mm a",
+ "shortDate": "d/MM/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "RM",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ms",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_mt-mt.js b/app/lib/angular/i18n/angular-locale_mt-mt.js
new file mode 100755
index 0000000000..cc4004828e
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_mt-mt.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "QN",
+ "WN"
+ ],
+ "DAY": [
+ "Il-\u0126add",
+ "It-Tnejn",
+ "It-Tlieta",
+ "L-Erbg\u0127a",
+ "Il-\u0126amis",
+ "Il-\u0120img\u0127a",
+ "Is-Sibt"
+ ],
+ "MONTH": [
+ "Jannar",
+ "Frar",
+ "Marzu",
+ "April",
+ "Mejju",
+ "\u0120unju",
+ "Lulju",
+ "Awwissu",
+ "Settembru",
+ "Ottubru",
+ "Novembru",
+ "Di\u010bembru"
+ ],
+ "SHORTDAY": [
+ "\u0126ad",
+ "Tne",
+ "Tli",
+ "Erb",
+ "\u0126am",
+ "\u0120im",
+ "Sib"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Fra",
+ "Mar",
+ "Apr",
+ "Mej",
+ "\u0120un",
+ "Lul",
+ "Aww",
+ "Set",
+ "Ott",
+ "Nov",
+ "Di\u010b"
+ ],
+ "fullDate": "EEEE, d 'ta'\u2019 MMMM y",
+ "longDate": "d 'ta'\u2019 MMMM y",
+ "medium": "dd MMM y HH:mm:ss",
+ "mediumDate": "dd MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yyyy HH:mm",
+ "shortDate": "dd/MM/yyyy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4-",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "mt-mt",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 0 || n == (n | 0) && n % 100 >= 2 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 19) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_mt.js b/app/lib/angular/i18n/angular-locale_mt.js
new file mode 100755
index 0000000000..9ba583ec92
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_mt.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "QN",
+ "WN"
+ ],
+ "DAY": [
+ "Il-\u0126add",
+ "It-Tnejn",
+ "It-Tlieta",
+ "L-Erbg\u0127a",
+ "Il-\u0126amis",
+ "Il-\u0120img\u0127a",
+ "Is-Sibt"
+ ],
+ "MONTH": [
+ "Jannar",
+ "Frar",
+ "Marzu",
+ "April",
+ "Mejju",
+ "\u0120unju",
+ "Lulju",
+ "Awwissu",
+ "Settembru",
+ "Ottubru",
+ "Novembru",
+ "Di\u010bembru"
+ ],
+ "SHORTDAY": [
+ "\u0126ad",
+ "Tne",
+ "Tli",
+ "Erb",
+ "\u0126am",
+ "\u0120im",
+ "Sib"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Fra",
+ "Mar",
+ "Apr",
+ "Mej",
+ "\u0120un",
+ "Lul",
+ "Aww",
+ "Set",
+ "Ott",
+ "Nov",
+ "Di\u010b"
+ ],
+ "fullDate": "EEEE, d 'ta'\u2019 MMMM y",
+ "longDate": "d 'ta'\u2019 MMMM y",
+ "medium": "dd MMM y HH:mm:ss",
+ "mediumDate": "dd MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yyyy HH:mm",
+ "shortDate": "dd/MM/yyyy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4-",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "mt",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 0 || n == (n | 0) && n % 100 >= 2 && n % 100 <= 10) { return PLURAL_CATEGORY.FEW; } if (n == (n | 0) && n % 100 >= 11 && n % 100 <= 19) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_nl-cw.js b/app/lib/angular/i18n/angular-locale_nl-cw.js
new file mode 100755
index 0000000000..f98fcf5fde
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_nl-cw.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "zondag",
+ "maandag",
+ "dinsdag",
+ "woensdag",
+ "donderdag",
+ "vrijdag",
+ "zaterdag"
+ ],
+ "MONTH": [
+ "januari",
+ "februari",
+ "maart",
+ "april",
+ "mei",
+ "juni",
+ "juli",
+ "augustus",
+ "september",
+ "oktober",
+ "november",
+ "december"
+ ],
+ "SHORTDAY": [
+ "zo",
+ "ma",
+ "di",
+ "wo",
+ "do",
+ "vr",
+ "za"
+ ],
+ "SHORTMONTH": [
+ "jan.",
+ "feb.",
+ "mrt.",
+ "apr.",
+ "mei",
+ "jun.",
+ "jul.",
+ "aug.",
+ "sep.",
+ "okt.",
+ "nov.",
+ "dec."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd-MM-yy HH:mm",
+ "shortDate": "dd-MM-yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "nl-cw",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_nl-nl.js b/app/lib/angular/i18n/angular-locale_nl-nl.js
new file mode 100755
index 0000000000..f24c149df7
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_nl-nl.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "zondag",
+ "maandag",
+ "dinsdag",
+ "woensdag",
+ "donderdag",
+ "vrijdag",
+ "zaterdag"
+ ],
+ "MONTH": [
+ "januari",
+ "februari",
+ "maart",
+ "april",
+ "mei",
+ "juni",
+ "juli",
+ "augustus",
+ "september",
+ "oktober",
+ "november",
+ "december"
+ ],
+ "SHORTDAY": [
+ "zo",
+ "ma",
+ "di",
+ "wo",
+ "do",
+ "vr",
+ "za"
+ ],
+ "SHORTMONTH": [
+ "jan.",
+ "feb.",
+ "mrt.",
+ "apr.",
+ "mei",
+ "jun.",
+ "jul.",
+ "aug.",
+ "sep.",
+ "okt.",
+ "nov.",
+ "dec."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd-MM-yy HH:mm",
+ "shortDate": "dd-MM-yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "nl-nl",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_nl-sx.js b/app/lib/angular/i18n/angular-locale_nl-sx.js
new file mode 100755
index 0000000000..616653cb2a
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_nl-sx.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "zondag",
+ "maandag",
+ "dinsdag",
+ "woensdag",
+ "donderdag",
+ "vrijdag",
+ "zaterdag"
+ ],
+ "MONTH": [
+ "januari",
+ "februari",
+ "maart",
+ "april",
+ "mei",
+ "juni",
+ "juli",
+ "augustus",
+ "september",
+ "oktober",
+ "november",
+ "december"
+ ],
+ "SHORTDAY": [
+ "zo",
+ "ma",
+ "di",
+ "wo",
+ "do",
+ "vr",
+ "za"
+ ],
+ "SHORTMONTH": [
+ "jan.",
+ "feb.",
+ "mrt.",
+ "apr.",
+ "mei",
+ "jun.",
+ "jul.",
+ "aug.",
+ "sep.",
+ "okt.",
+ "nov.",
+ "dec."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd-MM-yy HH:mm",
+ "shortDate": "dd-MM-yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "nl-sx",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_nl.js b/app/lib/angular/i18n/angular-locale_nl.js
new file mode 100755
index 0000000000..e5cbbd1f1e
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_nl.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "zondag",
+ "maandag",
+ "dinsdag",
+ "woensdag",
+ "donderdag",
+ "vrijdag",
+ "zaterdag"
+ ],
+ "MONTH": [
+ "januari",
+ "februari",
+ "maart",
+ "april",
+ "mei",
+ "juni",
+ "juli",
+ "augustus",
+ "september",
+ "oktober",
+ "november",
+ "december"
+ ],
+ "SHORTDAY": [
+ "zo",
+ "ma",
+ "di",
+ "wo",
+ "do",
+ "vr",
+ "za"
+ ],
+ "SHORTMONTH": [
+ "jan.",
+ "feb.",
+ "mrt.",
+ "apr.",
+ "mei",
+ "jun.",
+ "jul.",
+ "aug.",
+ "sep.",
+ "okt.",
+ "nov.",
+ "dec."
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd-MM-yy HH:mm",
+ "shortDate": "dd-MM-yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0",
+ "negSuf": "-",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "nl",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_no.js b/app/lib/angular/i18n/angular-locale_no.js
new file mode 100755
index 0000000000..07e3a790b0
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_no.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "s\u00f8ndag",
+ "mandag",
+ "tirsdag",
+ "onsdag",
+ "torsdag",
+ "fredag",
+ "l\u00f8rdag"
+ ],
+ "MONTH": [
+ "januar",
+ "februar",
+ "mars",
+ "april",
+ "mai",
+ "juni",
+ "juli",
+ "august",
+ "september",
+ "oktober",
+ "november",
+ "desember"
+ ],
+ "SHORTDAY": [
+ "s\u00f8n.",
+ "man.",
+ "tir.",
+ "ons.",
+ "tor.",
+ "fre.",
+ "l\u00f8r."
+ ],
+ "SHORTMONTH": [
+ "jan.",
+ "feb.",
+ "mars",
+ "apr.",
+ "mai",
+ "juni",
+ "juli",
+ "aug.",
+ "sep.",
+ "okt.",
+ "nov.",
+ "des."
+ ],
+ "fullDate": "EEEE d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "d. MMM y HH:mm:ss",
+ "mediumDate": "d. MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "kr",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0-",
+ "negSuf": "",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "no",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_or-in.js b/app/lib/angular/i18n/angular-locale_or-in.js
new file mode 100755
index 0000000000..6332a2f5aa
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_or-in.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40",
+ "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40",
+ "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a",
+ "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32",
+ "\u0b2e\u0b47",
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40",
+ "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40",
+ "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a",
+ "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32",
+ "\u0b2e\u0b47",
+ "\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"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d-M-yy h:mm a",
+ "shortDate": "d-M-yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0-",
+ "negSuf": "",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "or-in",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_or.js b/app/lib/angular/i18n/angular-locale_or.js
new file mode 100755
index 0000000000..aab4988f64
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_or.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40",
+ "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40",
+ "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a",
+ "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32",
+ "\u0b2e\u0b47",
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40",
+ "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40",
+ "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a",
+ "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32",
+ "\u0b2e\u0b47",
+ "\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"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d-M-yy h:mm a",
+ "shortDate": "d-M-yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0-",
+ "negSuf": "",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "or",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_pl-pl.js b/app/lib/angular/i18n/angular-locale_pl-pl.js
new file mode 100755
index 0000000000..5b2078aade
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_pl-pl.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "niedziela",
+ "poniedzia\u0142ek",
+ "wtorek",
+ "\u015broda",
+ "czwartek",
+ "pi\u0105tek",
+ "sobota"
+ ],
+ "MONTH": [
+ "stycznia",
+ "lutego",
+ "marca",
+ "kwietnia",
+ "maja",
+ "czerwca",
+ "lipca",
+ "sierpnia",
+ "wrze\u015bnia",
+ "pa\u017adziernika",
+ "listopada",
+ "grudnia"
+ ],
+ "SHORTDAY": [
+ "niedz.",
+ "pon.",
+ "wt.",
+ "\u015br.",
+ "czw.",
+ "pt.",
+ "sob."
+ ],
+ "SHORTMONTH": [
+ "sty",
+ "lut",
+ "mar",
+ "kwi",
+ "maj",
+ "cze",
+ "lip",
+ "sie",
+ "wrz",
+ "pa\u017a",
+ "lis",
+ "gru"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yyyy HH:mm",
+ "shortDate": "dd.MM.yyyy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "z\u0142",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "pl-pl",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (n != 1 && (n % 10 == 0 || n % 10 == 1) || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 12 && n % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_pl.js b/app/lib/angular/i18n/angular-locale_pl.js
new file mode 100755
index 0000000000..28859eaa13
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_pl.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "niedziela",
+ "poniedzia\u0142ek",
+ "wtorek",
+ "\u015broda",
+ "czwartek",
+ "pi\u0105tek",
+ "sobota"
+ ],
+ "MONTH": [
+ "stycznia",
+ "lutego",
+ "marca",
+ "kwietnia",
+ "maja",
+ "czerwca",
+ "lipca",
+ "sierpnia",
+ "wrze\u015bnia",
+ "pa\u017adziernika",
+ "listopada",
+ "grudnia"
+ ],
+ "SHORTDAY": [
+ "niedz.",
+ "pon.",
+ "wt.",
+ "\u015br.",
+ "czw.",
+ "pt.",
+ "sob."
+ ],
+ "SHORTMONTH": [
+ "sty",
+ "lut",
+ "mar",
+ "kwi",
+ "maj",
+ "cze",
+ "lip",
+ "sie",
+ "wrz",
+ "pa\u017a",
+ "lis",
+ "gru"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yyyy HH:mm",
+ "shortDate": "dd.MM.yyyy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "z\u0142",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "pl",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (n != 1 && (n % 10 == 0 || n % 10 == 1) || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 12 && n % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_pt-br.js b/app/lib/angular/i18n/angular-locale_pt-br.js
new file mode 100755
index 0000000000..d0e1a9edcd
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_pt-br.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "domingo",
+ "segunda-feira",
+ "ter\u00e7a-feira",
+ "quarta-feira",
+ "quinta-feira",
+ "sexta-feira",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "janeiro",
+ "fevereiro",
+ "mar\u00e7o",
+ "abril",
+ "maio",
+ "junho",
+ "julho",
+ "agosto",
+ "setembro",
+ "outubro",
+ "novembro",
+ "dezembro"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "seg",
+ "ter",
+ "qua",
+ "qui",
+ "sex",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "jan",
+ "fev",
+ "mar",
+ "abr",
+ "mai",
+ "jun",
+ "jul",
+ "ago",
+ "set",
+ "out",
+ "nov",
+ "dez"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "R$",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "pt-br",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_pt-pt.js b/app/lib/angular/i18n/angular-locale_pt-pt.js
new file mode 100755
index 0000000000..a07265301f
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_pt-pt.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "a.m.",
+ "p.m."
+ ],
+ "DAY": [
+ "Domingo",
+ "Segunda-feira",
+ "Ter\u00e7a-feira",
+ "Quarta-feira",
+ "Quinta-feira",
+ "Sexta-feira",
+ "S\u00e1bado"
+ ],
+ "MONTH": [
+ "Janeiro",
+ "Fevereiro",
+ "Mar\u00e7o",
+ "Abril",
+ "Maio",
+ "Junho",
+ "Julho",
+ "Agosto",
+ "Setembro",
+ "Outubro",
+ "Novembro",
+ "Dezembro"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "seg",
+ "ter",
+ "qua",
+ "qui",
+ "sex",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Fev",
+ "Mar",
+ "Abr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Ago",
+ "Set",
+ "Out",
+ "Nov",
+ "Dez"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "pt-pt",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_pt.js b/app/lib/angular/i18n/angular-locale_pt.js
new file mode 100755
index 0000000000..5a6bbd5642
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_pt.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "domingo",
+ "segunda-feira",
+ "ter\u00e7a-feira",
+ "quarta-feira",
+ "quinta-feira",
+ "sexta-feira",
+ "s\u00e1bado"
+ ],
+ "MONTH": [
+ "janeiro",
+ "fevereiro",
+ "mar\u00e7o",
+ "abril",
+ "maio",
+ "junho",
+ "julho",
+ "agosto",
+ "setembro",
+ "outubro",
+ "novembro",
+ "dezembro"
+ ],
+ "SHORTDAY": [
+ "dom",
+ "seg",
+ "ter",
+ "qua",
+ "qui",
+ "sex",
+ "s\u00e1b"
+ ],
+ "SHORTMONTH": [
+ "jan",
+ "fev",
+ "mar",
+ "abr",
+ "mai",
+ "jun",
+ "jul",
+ "ago",
+ "set",
+ "out",
+ "nov",
+ "dez"
+ ],
+ "fullDate": "EEEE, d 'de' MMMM 'de' y",
+ "longDate": "d 'de' MMMM 'de' y",
+ "medium": "dd/MM/yyyy HH:mm:ss",
+ "mediumDate": "dd/MM/yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yy HH:mm",
+ "shortDate": "dd/MM/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "R$",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "pt",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ro-ro.js b/app/lib/angular/i18n/angular-locale_ro-ro.js
new file mode 100755
index 0000000000..807f04fc5d
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ro-ro.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "duminic\u0103",
+ "luni",
+ "mar\u021bi",
+ "miercuri",
+ "joi",
+ "vineri",
+ "s\u00e2mb\u0103t\u0103"
+ ],
+ "MONTH": [
+ "ianuarie",
+ "februarie",
+ "martie",
+ "aprilie",
+ "mai",
+ "iunie",
+ "iulie",
+ "august",
+ "septembrie",
+ "octombrie",
+ "noiembrie",
+ "decembrie"
+ ],
+ "SHORTDAY": [
+ "Du",
+ "Lu",
+ "Ma",
+ "Mi",
+ "Jo",
+ "Vi",
+ "S\u00e2"
+ ],
+ "SHORTMONTH": [
+ "ian.",
+ "feb.",
+ "mar.",
+ "apr.",
+ "mai",
+ "iun.",
+ "iul.",
+ "aug.",
+ "sept.",
+ "oct.",
+ "nov.",
+ "dec."
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "dd.MM.yyyy HH:mm:ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yyyy HH:mm",
+ "shortDate": "dd.MM.yyyy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "RON",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "ro-ro",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 0 || n != 1 && n == (n | 0) && n % 100 >= 1 && n % 100 <= 19) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ro.js b/app/lib/angular/i18n/angular-locale_ro.js
new file mode 100755
index 0000000000..2153d67dce
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ro.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "duminic\u0103",
+ "luni",
+ "mar\u021bi",
+ "miercuri",
+ "joi",
+ "vineri",
+ "s\u00e2mb\u0103t\u0103"
+ ],
+ "MONTH": [
+ "ianuarie",
+ "februarie",
+ "martie",
+ "aprilie",
+ "mai",
+ "iunie",
+ "iulie",
+ "august",
+ "septembrie",
+ "octombrie",
+ "noiembrie",
+ "decembrie"
+ ],
+ "SHORTDAY": [
+ "Du",
+ "Lu",
+ "Ma",
+ "Mi",
+ "Jo",
+ "Vi",
+ "S\u00e2"
+ ],
+ "SHORTMONTH": [
+ "ian.",
+ "feb.",
+ "mar.",
+ "apr.",
+ "mai",
+ "iun.",
+ "iul.",
+ "aug.",
+ "sept.",
+ "oct.",
+ "nov.",
+ "dec."
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "dd.MM.yyyy HH:mm:ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yyyy HH:mm",
+ "shortDate": "dd.MM.yyyy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "RON",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "ro",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == 0 || n != 1 && n == (n | 0) && n % 100 >= 1 && n % 100 <= 19) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ru-ru.js b/app/lib/angular/i18n/angular-locale_ru-ru.js
new file mode 100755
index 0000000000..3a887f7a36
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ru-ru.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f",
+ "\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u0432\u0441",
+ "\u043f\u043d",
+ "\u0432\u0442",
+ "\u0441\u0440",
+ "\u0447\u0442",
+ "\u043f\u0442",
+ "\u0441\u0431"
+ ],
+ "SHORTMONTH": [
+ "\u044f\u043d\u0432.",
+ "\u0444\u0435\u0432\u0440.",
+ "\u043c\u0430\u0440\u0442\u0430",
+ "\u0430\u043f\u0440.",
+ "\u043c\u0430\u044f",
+ "\u0438\u044e\u043d\u044f",
+ "\u0438\u044e\u043b\u044f",
+ "\u0430\u0432\u0433.",
+ "\u0441\u0435\u043d\u0442.",
+ "\u043e\u043a\u0442.",
+ "\u043d\u043e\u044f\u0431.",
+ "\u0434\u0435\u043a."
+ ],
+ "fullDate": "EEEE, d MMMM y\u00a0'\u0433'.",
+ "longDate": "d MMMM y\u00a0'\u0433'.",
+ "medium": "dd.MM.yyyy H:mm:ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "H:mm:ss",
+ "short": "dd.MM.yy H:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u0440\u0443\u0431.",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "ru-ru",
+ "pluralCat": function (n) { if (n % 10 == 1 && n % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ru.js b/app/lib/angular/i18n/angular-locale_ru.js
new file mode 100755
index 0000000000..8f48e2d390
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ru.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f",
+ "\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u0432\u0441",
+ "\u043f\u043d",
+ "\u0432\u0442",
+ "\u0441\u0440",
+ "\u0447\u0442",
+ "\u043f\u0442",
+ "\u0441\u0431"
+ ],
+ "SHORTMONTH": [
+ "\u044f\u043d\u0432.",
+ "\u0444\u0435\u0432\u0440.",
+ "\u043c\u0430\u0440\u0442\u0430",
+ "\u0430\u043f\u0440.",
+ "\u043c\u0430\u044f",
+ "\u0438\u044e\u043d\u044f",
+ "\u0438\u044e\u043b\u044f",
+ "\u0430\u0432\u0433.",
+ "\u0441\u0435\u043d\u0442.",
+ "\u043e\u043a\u0442.",
+ "\u043d\u043e\u044f\u0431.",
+ "\u0434\u0435\u043a."
+ ],
+ "fullDate": "EEEE, d MMMM y\u00a0'\u0433'.",
+ "longDate": "d MMMM y\u00a0'\u0433'.",
+ "medium": "dd.MM.yyyy H:mm:ss",
+ "mediumDate": "dd.MM.yyyy",
+ "mediumTime": "H:mm:ss",
+ "short": "dd.MM.yy H:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u0440\u0443\u0431.",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "ru",
+ "pluralCat": function (n) { if (n % 10 == 1 && n % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_sk-sk.js b/app/lib/angular/i18n/angular-locale_sk-sk.js
new file mode 100755
index 0000000000..84cb8eea30
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_sk-sk.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "dopoludnia",
+ "popoludn\u00ed"
+ ],
+ "DAY": [
+ "nede\u013ea",
+ "pondelok",
+ "utorok",
+ "streda",
+ "\u0161tvrtok",
+ "piatok",
+ "sobota"
+ ],
+ "MONTH": [
+ "janu\u00e1ra",
+ "febru\u00e1ra",
+ "marca",
+ "apr\u00edla",
+ "m\u00e1ja",
+ "j\u00fana",
+ "j\u00fala",
+ "augusta",
+ "septembra",
+ "okt\u00f3bra",
+ "novembra",
+ "decembra"
+ ],
+ "SHORTDAY": [
+ "ne",
+ "po",
+ "ut",
+ "st",
+ "\u0161t",
+ "pi",
+ "so"
+ ],
+ "SHORTMONTH": [
+ "jan",
+ "feb",
+ "mar",
+ "apr",
+ "m\u00e1j",
+ "j\u00fan",
+ "j\u00fal",
+ "aug",
+ "sep",
+ "okt",
+ "nov",
+ "dec"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "d.M.yyyy H:mm:ss",
+ "mediumDate": "d.M.yyyy",
+ "mediumTime": "H:mm:ss",
+ "short": "d.M.yyyy H:mm",
+ "shortDate": "d.M.yyyy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "sk-sk",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n >= 2 && n <= 4) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_sk.js b/app/lib/angular/i18n/angular-locale_sk.js
new file mode 100755
index 0000000000..53faf80859
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_sk.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "dopoludnia",
+ "popoludn\u00ed"
+ ],
+ "DAY": [
+ "nede\u013ea",
+ "pondelok",
+ "utorok",
+ "streda",
+ "\u0161tvrtok",
+ "piatok",
+ "sobota"
+ ],
+ "MONTH": [
+ "janu\u00e1ra",
+ "febru\u00e1ra",
+ "marca",
+ "apr\u00edla",
+ "m\u00e1ja",
+ "j\u00fana",
+ "j\u00fala",
+ "augusta",
+ "septembra",
+ "okt\u00f3bra",
+ "novembra",
+ "decembra"
+ ],
+ "SHORTDAY": [
+ "ne",
+ "po",
+ "ut",
+ "st",
+ "\u0161t",
+ "pi",
+ "so"
+ ],
+ "SHORTMONTH": [
+ "jan",
+ "feb",
+ "mar",
+ "apr",
+ "m\u00e1j",
+ "j\u00fan",
+ "j\u00fal",
+ "aug",
+ "sep",
+ "okt",
+ "nov",
+ "dec"
+ ],
+ "fullDate": "EEEE, d. MMMM y",
+ "longDate": "d. MMMM y",
+ "medium": "d.M.yyyy H:mm:ss",
+ "mediumDate": "d.M.yyyy",
+ "mediumTime": "H:mm:ss",
+ "short": "d.M.yyyy H:mm",
+ "shortDate": "d.M.yyyy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "sk",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n >= 2 && n <= 4) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_sl-si.js b/app/lib/angular/i18n/angular-locale_sl-si.js
new file mode 100755
index 0000000000..9cc575554e
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_sl-si.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "dop.",
+ "pop."
+ ],
+ "DAY": [
+ "nedelja",
+ "ponedeljek",
+ "torek",
+ "sreda",
+ "\u010detrtek",
+ "petek",
+ "sobota"
+ ],
+ "MONTH": [
+ "januar",
+ "februar",
+ "marec",
+ "april",
+ "maj",
+ "junij",
+ "julij",
+ "avgust",
+ "september",
+ "oktober",
+ "november",
+ "december"
+ ],
+ "SHORTDAY": [
+ "ned.",
+ "pon.",
+ "tor.",
+ "sre.",
+ "\u010det.",
+ "pet.",
+ "sob."
+ ],
+ "SHORTMONTH": [
+ "jan.",
+ "feb.",
+ "mar.",
+ "apr.",
+ "maj",
+ "jun.",
+ "jul.",
+ "avg.",
+ "sep.",
+ "okt.",
+ "nov.",
+ "dec."
+ ],
+ "fullDate": "EEEE, dd. MMMM y",
+ "longDate": "dd. MMMM y",
+ "medium": "d. MMM yyyy HH:mm:ss",
+ "mediumDate": "d. MMM yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "d. MM. yy HH:mm",
+ "shortDate": "d. MM. yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "sl-si",
+ "pluralCat": function (n) { if (n % 100 == 1) { return PLURAL_CATEGORY.ONE; } if (n % 100 == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 == 3 || n % 100 == 4) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_sl.js b/app/lib/angular/i18n/angular-locale_sl.js
new file mode 100755
index 0000000000..ebe8df1a07
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_sl.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "dop.",
+ "pop."
+ ],
+ "DAY": [
+ "nedelja",
+ "ponedeljek",
+ "torek",
+ "sreda",
+ "\u010detrtek",
+ "petek",
+ "sobota"
+ ],
+ "MONTH": [
+ "januar",
+ "februar",
+ "marec",
+ "april",
+ "maj",
+ "junij",
+ "julij",
+ "avgust",
+ "september",
+ "oktober",
+ "november",
+ "december"
+ ],
+ "SHORTDAY": [
+ "ned.",
+ "pon.",
+ "tor.",
+ "sre.",
+ "\u010det.",
+ "pet.",
+ "sob."
+ ],
+ "SHORTMONTH": [
+ "jan.",
+ "feb.",
+ "mar.",
+ "apr.",
+ "maj",
+ "jun.",
+ "jul.",
+ "avg.",
+ "sep.",
+ "okt.",
+ "nov.",
+ "dec."
+ ],
+ "fullDate": "EEEE, dd. MMMM y",
+ "longDate": "dd. MMMM y",
+ "medium": "d. MMM yyyy HH:mm:ss",
+ "mediumDate": "d. MMM yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "d. MM. yy HH:mm",
+ "shortDate": "d. MM. yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ac",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "sl",
+ "pluralCat": function (n) { if (n % 100 == 1) { return PLURAL_CATEGORY.ONE; } if (n % 100 == 2) { return PLURAL_CATEGORY.TWO; } if (n % 100 == 3 || n % 100 == 4) { return PLURAL_CATEGORY.FEW; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_sq-al.js b/app/lib/angular/i18n/angular-locale_sq-al.js
new file mode 100755
index 0000000000..fad9546c1d
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_sq-al.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "PD",
+ "MD"
+ ],
+ "DAY": [
+ "e diel",
+ "e h\u00ebn\u00eb",
+ "e mart\u00eb",
+ "e m\u00ebrkur\u00eb",
+ "e enjte",
+ "e premte",
+ "e shtun\u00eb"
+ ],
+ "MONTH": [
+ "janar",
+ "shkurt",
+ "mars",
+ "prill",
+ "maj",
+ "qershor",
+ "korrik",
+ "gusht",
+ "shtator",
+ "tetor",
+ "n\u00ebntor",
+ "dhjetor"
+ ],
+ "SHORTDAY": [
+ "Die",
+ "H\u00ebn",
+ "Mar",
+ "M\u00ebr",
+ "Enj",
+ "Pre",
+ "Sht"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Shk",
+ "Mar",
+ "Pri",
+ "Maj",
+ "Qer",
+ "Kor",
+ "Gsh",
+ "Sht",
+ "Tet",
+ "N\u00ebn",
+ "Dhj"
+ ],
+ "fullDate": "EEEE, dd MMMM y",
+ "longDate": "dd MMMM y",
+ "medium": "yyyy-MM-dd h.mm.ss.a",
+ "mediumDate": "yyyy-MM-dd",
+ "mediumTime": "h.mm.ss.a",
+ "short": "yy-MM-dd h.mm.a",
+ "shortDate": "yy-MM-dd",
+ "shortTime": "h.mm.a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Lek",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4-",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "sq-al",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_sq.js b/app/lib/angular/i18n/angular-locale_sq.js
new file mode 100755
index 0000000000..1bf529adbf
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_sq.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "PD",
+ "MD"
+ ],
+ "DAY": [
+ "e diel",
+ "e h\u00ebn\u00eb",
+ "e mart\u00eb",
+ "e m\u00ebrkur\u00eb",
+ "e enjte",
+ "e premte",
+ "e shtun\u00eb"
+ ],
+ "MONTH": [
+ "janar",
+ "shkurt",
+ "mars",
+ "prill",
+ "maj",
+ "qershor",
+ "korrik",
+ "gusht",
+ "shtator",
+ "tetor",
+ "n\u00ebntor",
+ "dhjetor"
+ ],
+ "SHORTDAY": [
+ "Die",
+ "H\u00ebn",
+ "Mar",
+ "M\u00ebr",
+ "Enj",
+ "Pre",
+ "Sht"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Shk",
+ "Mar",
+ "Pri",
+ "Maj",
+ "Qer",
+ "Kor",
+ "Gsh",
+ "Sht",
+ "Tet",
+ "N\u00ebn",
+ "Dhj"
+ ],
+ "fullDate": "EEEE, dd MMMM y",
+ "longDate": "dd MMMM y",
+ "medium": "yyyy-MM-dd h.mm.ss.a",
+ "mediumDate": "yyyy-MM-dd",
+ "mediumTime": "h.mm.ss.a",
+ "short": "yy-MM-dd h.mm.a",
+ "shortDate": "yy-MM-dd",
+ "shortTime": "h.mm.a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Lek",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4-",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "sq",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_sr-cyrl-rs.js b/app/lib/angular/i18n/angular-locale_sr-cyrl-rs.js
new file mode 100755
index 0000000000..5879f7daa0
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_sr-cyrl-rs.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435",
+ "\u043f\u043e\u043f\u043e\u0434\u043d\u0435"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u043d\u0435\u0434",
+ "\u043f\u043e\u043d",
+ "\u0443\u0442\u043e",
+ "\u0441\u0440\u0435",
+ "\u0447\u0435\u0442",
+ "\u043f\u0435\u0442",
+ "\u0441\u0443\u0431"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE, dd. MMMM y.",
+ "longDate": "dd. MMMM y.",
+ "medium": "dd.MM.y. HH.mm.ss",
+ "mediumDate": "dd.MM.y.",
+ "mediumTime": "HH.mm.ss",
+ "short": "d.M.yy. HH.mm",
+ "shortDate": "d.M.yy.",
+ "shortTime": "HH.mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "din",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "sr-cyrl-rs",
+ "pluralCat": function (n) { if (n % 10 == 1 && n % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_sr-latn-rs.js b/app/lib/angular/i18n/angular-locale_sr-latn-rs.js
new file mode 100755
index 0000000000..af39666ffe
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_sr-latn-rs.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "pre podne",
+ "popodne"
+ ],
+ "DAY": [
+ "nedelja",
+ "ponedeljak",
+ "utorak",
+ "sreda",
+ "\u010detvrtak",
+ "petak",
+ "subota"
+ ],
+ "MONTH": [
+ "januar",
+ "februar",
+ "mart",
+ "april",
+ "maj",
+ "jun",
+ "jul",
+ "avgust",
+ "septembar",
+ "oktobar",
+ "novembar",
+ "decembar"
+ ],
+ "SHORTDAY": [
+ "ned",
+ "pon",
+ "uto",
+ "sre",
+ "\u010det",
+ "pet",
+ "sub"
+ ],
+ "SHORTMONTH": [
+ "jan",
+ "feb",
+ "mar",
+ "apr",
+ "maj",
+ "jun",
+ "jul",
+ "avg",
+ "sep",
+ "okt",
+ "nov",
+ "dec"
+ ],
+ "fullDate": "EEEE, dd. MMMM y.",
+ "longDate": "dd. MMMM y.",
+ "medium": "dd.MM.y. HH.mm.ss",
+ "mediumDate": "dd.MM.y.",
+ "mediumTime": "HH.mm.ss",
+ "short": "d.M.yy. HH.mm",
+ "shortDate": "d.M.yy.",
+ "shortTime": "HH.mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "din",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "sr-latn-rs",
+ "pluralCat": function (n) { if (n % 10 == 1 && n % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_sr.js b/app/lib/angular/i18n/angular-locale_sr.js
new file mode 100755
index 0000000000..7c0b6130bb
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_sr.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435",
+ "\u043f\u043e\u043f\u043e\u0434\u043d\u0435"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u043d\u0435\u0434",
+ "\u043f\u043e\u043d",
+ "\u0443\u0442\u043e",
+ "\u0441\u0440\u0435",
+ "\u0447\u0435\u0442",
+ "\u043f\u0435\u0442",
+ "\u0441\u0443\u0431"
+ ],
+ "SHORTMONTH": [
+ "\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"
+ ],
+ "fullDate": "EEEE, dd. MMMM y.",
+ "longDate": "dd. MMMM y.",
+ "medium": "dd.MM.y. HH.mm.ss",
+ "mediumDate": "dd.MM.y.",
+ "mediumTime": "HH.mm.ss",
+ "short": "d.M.yy. HH.mm",
+ "shortDate": "d.M.yy.",
+ "shortTime": "HH.mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "din",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "sr",
+ "pluralCat": function (n) { if (n % 10 == 1 && n % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_sv-se.js b/app/lib/angular/i18n/angular-locale_sv-se.js
new file mode 100755
index 0000000000..79f671c410
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_sv-se.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "fm",
+ "em"
+ ],
+ "DAY": [
+ "s\u00f6ndag",
+ "m\u00e5ndag",
+ "tisdag",
+ "onsdag",
+ "torsdag",
+ "fredag",
+ "l\u00f6rdag"
+ ],
+ "MONTH": [
+ "januari",
+ "februari",
+ "mars",
+ "april",
+ "maj",
+ "juni",
+ "juli",
+ "augusti",
+ "september",
+ "oktober",
+ "november",
+ "december"
+ ],
+ "SHORTDAY": [
+ "s\u00f6n",
+ "m\u00e5n",
+ "tis",
+ "ons",
+ "tors",
+ "fre",
+ "l\u00f6r"
+ ],
+ "SHORTMONTH": [
+ "jan",
+ "feb",
+ "mar",
+ "apr",
+ "maj",
+ "jun",
+ "jul",
+ "aug",
+ "sep",
+ "okt",
+ "nov",
+ "dec"
+ ],
+ "fullDate": "EEEE'en' 'den' d:'e' MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "yyyy-MM-dd HH:mm",
+ "shortDate": "yyyy-MM-dd",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "kr",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "sv-se",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_sv.js b/app/lib/angular/i18n/angular-locale_sv.js
new file mode 100755
index 0000000000..64e590b5f1
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_sv.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "fm",
+ "em"
+ ],
+ "DAY": [
+ "s\u00f6ndag",
+ "m\u00e5ndag",
+ "tisdag",
+ "onsdag",
+ "torsdag",
+ "fredag",
+ "l\u00f6rdag"
+ ],
+ "MONTH": [
+ "januari",
+ "februari",
+ "mars",
+ "april",
+ "maj",
+ "juni",
+ "juli",
+ "augusti",
+ "september",
+ "oktober",
+ "november",
+ "december"
+ ],
+ "SHORTDAY": [
+ "s\u00f6n",
+ "m\u00e5n",
+ "tis",
+ "ons",
+ "tors",
+ "fre",
+ "l\u00f6r"
+ ],
+ "SHORTMONTH": [
+ "jan",
+ "feb",
+ "mar",
+ "apr",
+ "maj",
+ "jun",
+ "jul",
+ "aug",
+ "sep",
+ "okt",
+ "nov",
+ "dec"
+ ],
+ "fullDate": "EEEE'en' 'den' d:'e' MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "yyyy-MM-dd HH:mm",
+ "shortDate": "yyyy-MM-dd",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "kr",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "sv",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_sw-tz.js b/app/lib/angular/i18n/angular-locale_sw-tz.js
new file mode 100755
index 0000000000..cd572b6f29
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_sw-tz.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "asubuhi",
+ "alasiri"
+ ],
+ "DAY": [
+ "Jumapili",
+ "Jumatatu",
+ "Jumanne",
+ "Jumatano",
+ "Alhamisi",
+ "Ijumaa",
+ "Jumamosi"
+ ],
+ "MONTH": [
+ "Januari",
+ "Februari",
+ "Machi",
+ "Aprili",
+ "Mei",
+ "Juni",
+ "Julai",
+ "Agosti",
+ "Septemba",
+ "Oktoba",
+ "Novemba",
+ "Desemba"
+ ],
+ "SHORTDAY": [
+ "J2",
+ "J3",
+ "J4",
+ "J5",
+ "Alh",
+ "Ij",
+ "J1"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mac",
+ "Apr",
+ "Mei",
+ "Jun",
+ "Jul",
+ "Ago",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Des"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "dd/MM/yyyy h:mm a",
+ "shortDate": "dd/MM/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "TSh",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "sw-tz",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_sw.js b/app/lib/angular/i18n/angular-locale_sw.js
new file mode 100755
index 0000000000..72c3abf868
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_sw.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "asubuhi",
+ "alasiri"
+ ],
+ "DAY": [
+ "Jumapili",
+ "Jumatatu",
+ "Jumanne",
+ "Jumatano",
+ "Alhamisi",
+ "Ijumaa",
+ "Jumamosi"
+ ],
+ "MONTH": [
+ "Januari",
+ "Februari",
+ "Machi",
+ "Aprili",
+ "Mei",
+ "Juni",
+ "Julai",
+ "Agosti",
+ "Septemba",
+ "Oktoba",
+ "Novemba",
+ "Desemba"
+ ],
+ "SHORTDAY": [
+ "J2",
+ "J3",
+ "J4",
+ "J5",
+ "Alh",
+ "Ij",
+ "J1"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mac",
+ "Apr",
+ "Mei",
+ "Jun",
+ "Jul",
+ "Ago",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Des"
+ ],
+ "fullDate": "EEEE, d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "dd/MM/yyyy h:mm a",
+ "shortDate": "dd/MM/yyyy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "TSh",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "sw",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ta-in.js b/app/lib/angular/i18n/angular-locale_ta-in.js
new file mode 100755
index 0000000000..01df8c4a7e
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ta-in.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u0b9e\u0bbe",
+ "\u0ba4\u0bbf",
+ "\u0b9a\u0bc6",
+ "\u0baa\u0bc1",
+ "\u0bb5\u0bbf",
+ "\u0bb5\u0bc6",
+ "\u0b9a"
+ ],
+ "SHORTMONTH": [
+ "\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."
+ ],
+ "fullDate": "EEEE, d MMMM, y",
+ "longDate": "d MMMM, y",
+ "medium": "d MMM, y h:mm:ss a",
+ "mediumDate": "d MMM, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d-M-yy h:mm a",
+ "shortDate": "d-M-yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0-",
+ "negSuf": "",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ta-in",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ta.js b/app/lib/angular/i18n/angular-locale_ta.js
new file mode 100755
index 0000000000..8a62663f27
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ta.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u0b9e\u0bbe",
+ "\u0ba4\u0bbf",
+ "\u0b9a\u0bc6",
+ "\u0baa\u0bc1",
+ "\u0bb5\u0bbf",
+ "\u0bb5\u0bc6",
+ "\u0b9a"
+ ],
+ "SHORTMONTH": [
+ "\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."
+ ],
+ "fullDate": "EEEE, d MMMM, y",
+ "longDate": "d MMMM, y",
+ "medium": "d MMM, y h:mm:ss a",
+ "mediumDate": "d MMM, y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d-M-yy h:mm a",
+ "shortDate": "d-M-yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 2,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4\u00a0-",
+ "negSuf": "",
+ "posPre": "\u00a4\u00a0",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ta",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_te-in.js b/app/lib/angular/i18n/angular-locale_te-in.js
new file mode 100755
index 0000000000..ac797b0259
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_te-in.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\u0c1c\u0c28\u0c35\u0c30\u0c3f",
+ "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f",
+ "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f",
+ "\u0c0e\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d",
+ "\u0c2e\u0c47",
+ "\u0c1c\u0c42\u0c28\u0c4d",
+ "\u0c1c\u0c42\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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\u0c42\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"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "dd-MM-yy h:mm a",
+ "shortDate": "dd-MM-yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "te-in",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_te.js b/app/lib/angular/i18n/angular-locale_te.js
new file mode 100755
index 0000000000..eaf45c458a
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_te.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "am",
+ "pm"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\u0c1c\u0c28\u0c35\u0c30\u0c3f",
+ "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f",
+ "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f",
+ "\u0c0e\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d",
+ "\u0c2e\u0c47",
+ "\u0c1c\u0c42\u0c28\u0c4d",
+ "\u0c1c\u0c42\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"
+ ],
+ "SHORTDAY": [
+ "\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"
+ ],
+ "SHORTMONTH": [
+ "\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\u0c42\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"
+ ],
+ "fullDate": "EEEE d MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "dd-MM-yy h:mm a",
+ "shortDate": "dd-MM-yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b9",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "te",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_th-th.js b/app/lib/angular/i18n/angular-locale_th-th.js
new file mode 100755
index 0000000000..ddf5525f2a
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_th-th.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07",
+ "\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u0e2d\u0e32.",
+ "\u0e08.",
+ "\u0e2d.",
+ "\u0e1e.",
+ "\u0e1e\u0e24.",
+ "\u0e28.",
+ "\u0e2a."
+ ],
+ "SHORTMONTH": [
+ "\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."
+ ],
+ "fullDate": "EEEE\u0e17\u0e35\u0e48 d MMMM G y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y H:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "H:mm:ss",
+ "short": "d/M/yyyy H:mm",
+ "shortDate": "d/M/yyyy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u0e3f",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "th-th",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_th.js b/app/lib/angular/i18n/angular-locale_th.js
new file mode 100755
index 0000000000..0d2505478e
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_th.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07",
+ "\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"
+ ],
+ "DAY": [
+ "\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"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u0e2d\u0e32.",
+ "\u0e08.",
+ "\u0e2d.",
+ "\u0e1e.",
+ "\u0e1e\u0e24.",
+ "\u0e28.",
+ "\u0e2a."
+ ],
+ "SHORTMONTH": [
+ "\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."
+ ],
+ "fullDate": "EEEE\u0e17\u0e35\u0e48 d MMMM G y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y H:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "H:mm:ss",
+ "short": "d/M/yyyy H:mm",
+ "shortDate": "d/M/yyyy",
+ "shortTime": "H:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u0e3f",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "th",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_tl.js b/app/lib/angular/i18n/angular-locale_tl.js
new file mode 100755
index 0000000000..512b34947e
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_tl.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Linggo",
+ "Lunes",
+ "Martes",
+ "Miyerkules",
+ "Huwebes",
+ "Biyernes",
+ "Sabado"
+ ],
+ "MONTH": [
+ "Enero",
+ "Pebrero",
+ "Marso",
+ "Abril",
+ "Mayo",
+ "Hunyo",
+ "Hulyo",
+ "Agosto",
+ "Setyembre",
+ "Oktubre",
+ "Nobyembre",
+ "Disyembre"
+ ],
+ "SHORTDAY": [
+ "Lin",
+ "Lun",
+ "Mar",
+ "Mye",
+ "Huw",
+ "Bye",
+ "Sab"
+ ],
+ "SHORTMONTH": [
+ "Ene",
+ "Peb",
+ "Mar",
+ "Abr",
+ "May",
+ "Hun",
+ "Hul",
+ "Ago",
+ "Set",
+ "Okt",
+ "Nob",
+ "Dis"
+ ],
+ "fullDate": "EEEE, MMMM dd y",
+ "longDate": "MMMM d, y",
+ "medium": "MMM d, y HH:mm:ss",
+ "mediumDate": "MMM d, y",
+ "mediumTime": "HH:mm:ss",
+ "short": "M/d/yy HH:mm",
+ "shortDate": "M/d/yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b1",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "tl",
+ "pluralCat": function (n) { if (n == 0 || n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_tr-tr.js b/app/lib/angular/i18n/angular-locale_tr-tr.js
new file mode 100755
index 0000000000..5999d61226
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_tr-tr.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Pazar",
+ "Pazartesi",
+ "Sal\u0131",
+ "\u00c7ar\u015famba",
+ "Per\u015fembe",
+ "Cuma",
+ "Cumartesi"
+ ],
+ "MONTH": [
+ "Ocak",
+ "\u015eubat",
+ "Mart",
+ "Nisan",
+ "May\u0131s",
+ "Haziran",
+ "Temmuz",
+ "A\u011fustos",
+ "Eyl\u00fcl",
+ "Ekim",
+ "Kas\u0131m",
+ "Aral\u0131k"
+ ],
+ "SHORTDAY": [
+ "Paz",
+ "Pzt",
+ "Sal",
+ "\u00c7ar",
+ "Per",
+ "Cum",
+ "Cmt"
+ ],
+ "SHORTMONTH": [
+ "Oca",
+ "\u015eub",
+ "Mar",
+ "Nis",
+ "May",
+ "Haz",
+ "Tem",
+ "A\u011fu",
+ "Eyl",
+ "Eki",
+ "Kas",
+ "Ara"
+ ],
+ "fullDate": "d MMMM y EEEE",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd MM yyyy HH:mm",
+ "shortDate": "dd MM yyyy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "TL",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "tr-tr",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_tr.js b/app/lib/angular/i18n/angular-locale_tr.js
new file mode 100755
index 0000000000..e0e6bad84c
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_tr.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Pazar",
+ "Pazartesi",
+ "Sal\u0131",
+ "\u00c7ar\u015famba",
+ "Per\u015fembe",
+ "Cuma",
+ "Cumartesi"
+ ],
+ "MONTH": [
+ "Ocak",
+ "\u015eubat",
+ "Mart",
+ "Nisan",
+ "May\u0131s",
+ "Haziran",
+ "Temmuz",
+ "A\u011fustos",
+ "Eyl\u00fcl",
+ "Ekim",
+ "Kas\u0131m",
+ "Aral\u0131k"
+ ],
+ "SHORTDAY": [
+ "Paz",
+ "Pzt",
+ "Sal",
+ "\u00c7ar",
+ "Per",
+ "Cum",
+ "Cmt"
+ ],
+ "SHORTMONTH": [
+ "Oca",
+ "\u015eub",
+ "Mar",
+ "Nis",
+ "May",
+ "Haz",
+ "Tem",
+ "A\u011fu",
+ "Eyl",
+ "Eki",
+ "Kas",
+ "Ara"
+ ],
+ "fullDate": "d MMMM y EEEE",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd MM yyyy HH:mm",
+ "shortDate": "dd MM yyyy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "TL",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(",
+ "negSuf": "\u00a0\u00a4)",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "tr",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_uk-ua.js b/app/lib/angular/i18n/angular-locale_uk-ua.js
new file mode 100755
index 0000000000..b90d5f4ced
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_uk-ua.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0434\u043f",
+ "\u043f\u043f"
+ ],
+ "DAY": [
+ "\u041d\u0435\u0434\u0456\u043b\u044f",
+ "\u041f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a",
+ "\u0412\u0456\u0432\u0442\u043e\u0440\u043e\u043a",
+ "\u0421\u0435\u0440\u0435\u0434\u0430",
+ "\u0427\u0435\u0442\u0432\u0435\u0440",
+ "\u041f\u02bc\u044f\u0442\u043d\u0438\u0446\u044f",
+ "\u0421\u0443\u0431\u043e\u0442\u0430"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u041d\u0434",
+ "\u041f\u043d",
+ "\u0412\u0442",
+ "\u0421\u0440",
+ "\u0427\u0442",
+ "\u041f\u0442",
+ "\u0421\u0431"
+ ],
+ "SHORTMONTH": [
+ "\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."
+ ],
+ "fullDate": "EEEE, d MMMM y '\u0440'.",
+ "longDate": "d MMMM y '\u0440'.",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b4",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "uk-ua",
+ "pluralCat": function (n) { if (n % 10 == 1 && n % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_uk.js b/app/lib/angular/i18n/angular-locale_uk.js
new file mode 100755
index 0000000000..f1f6b6e0af
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_uk.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u0434\u043f",
+ "\u043f\u043f"
+ ],
+ "DAY": [
+ "\u041d\u0435\u0434\u0456\u043b\u044f",
+ "\u041f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a",
+ "\u0412\u0456\u0432\u0442\u043e\u0440\u043e\u043a",
+ "\u0421\u0435\u0440\u0435\u0434\u0430",
+ "\u0427\u0435\u0442\u0432\u0435\u0440",
+ "\u041f\u02bc\u044f\u0442\u043d\u0438\u0446\u044f",
+ "\u0421\u0443\u0431\u043e\u0442\u0430"
+ ],
+ "MONTH": [
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u041d\u0434",
+ "\u041f\u043d",
+ "\u0412\u0442",
+ "\u0421\u0440",
+ "\u0427\u0442",
+ "\u041f\u0442",
+ "\u0421\u0431"
+ ],
+ "SHORTMONTH": [
+ "\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."
+ ],
+ "fullDate": "EEEE, d MMMM y '\u0440'.",
+ "longDate": "d MMMM y '\u0440'.",
+ "medium": "d MMM y HH:mm:ss",
+ "mediumDate": "d MMM y",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd.MM.yy HH:mm",
+ "shortDate": "dd.MM.yy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20b4",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": "\u00a0",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "uk",
+ "pluralCat": function (n) { if (n % 10 == 1 && n % 100 != 11) { return PLURAL_CATEGORY.ONE; } if (n == (n | 0) && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) { return PLURAL_CATEGORY.FEW; } if (n % 10 == 0 || n == (n | 0) && n % 10 >= 5 && n % 10 <= 9 || n == (n | 0) && n % 100 >= 11 && n % 100 <= 14) { return PLURAL_CATEGORY.MANY; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ur-pk.js b/app/lib/angular/i18n/angular-locale_ur-pk.js
new file mode 100755
index 0000000000..956534bde0
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ur-pk.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u062f\u0646",
+ "\u0631\u0627\u062a"
+ ],
+ "DAY": [
+ "\u0627\u062a\u0648\u0627\u0631",
+ "\u067e\u064a\u0631",
+ "\u0645\u0646\u06af\u0644",
+ "\u0628\u062f\u0647",
+ "\u062c\u0645\u0639\u0631\u0627\u062a",
+ "\u062c\u0645\u0639\u06c1",
+ "\u06c1\u0641\u062a\u06c1"
+ ],
+ "MONTH": [
+ "\u062c\u0646\u0648\u0631\u06cc",
+ "\u0641\u0631\u0648\u0631\u06cc",
+ "\u0645\u0627\u0631\u0686",
+ "\u0627\u067e\u0631\u064a\u0644",
+ "\u0645\u0626",
+ "\u062c\u0648\u0646",
+ "\u062c\u0648\u0644\u0627\u0626",
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u0627\u062a\u0648\u0627\u0631",
+ "\u067e\u064a\u0631",
+ "\u0645\u0646\u06af\u0644",
+ "\u0628\u062f\u0647",
+ "\u062c\u0645\u0639\u0631\u0627\u062a",
+ "\u062c\u0645\u0639\u06c1",
+ "\u06c1\u0641\u062a\u06c1"
+ ],
+ "SHORTMONTH": [
+ "\u062c\u0646\u0648\u0631\u06cc",
+ "\u0641\u0631\u0648\u0631\u06cc",
+ "\u0645\u0627\u0631\u0686",
+ "\u0627\u067e\u0631\u064a\u0644",
+ "\u0645\u0626",
+ "\u062c\u0648\u0646",
+ "\u062c\u0648\u0644\u0627\u0626",
+ "\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"
+ ],
+ "fullDate": "EEEE\u060d d\u060d MMMM y",
+ "longDate": "d\u060d MMMM y",
+ "medium": "d\u060d MMM y h:mm:ss a",
+ "mediumDate": "d\u060d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/M/yy h:mm a",
+ "shortDate": "d/M/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Rs",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4-",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ur-pk",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_ur.js b/app/lib/angular/i18n/angular-locale_ur.js
new file mode 100755
index 0000000000..6728dc1672
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_ur.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u062f\u0646",
+ "\u0631\u0627\u062a"
+ ],
+ "DAY": [
+ "\u0627\u062a\u0648\u0627\u0631",
+ "\u067e\u064a\u0631",
+ "\u0645\u0646\u06af\u0644",
+ "\u0628\u062f\u0647",
+ "\u062c\u0645\u0639\u0631\u0627\u062a",
+ "\u062c\u0645\u0639\u06c1",
+ "\u06c1\u0641\u062a\u06c1"
+ ],
+ "MONTH": [
+ "\u062c\u0646\u0648\u0631\u06cc",
+ "\u0641\u0631\u0648\u0631\u06cc",
+ "\u0645\u0627\u0631\u0686",
+ "\u0627\u067e\u0631\u064a\u0644",
+ "\u0645\u0626",
+ "\u062c\u0648\u0646",
+ "\u062c\u0648\u0644\u0627\u0626",
+ "\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"
+ ],
+ "SHORTDAY": [
+ "\u0627\u062a\u0648\u0627\u0631",
+ "\u067e\u064a\u0631",
+ "\u0645\u0646\u06af\u0644",
+ "\u0628\u062f\u0647",
+ "\u062c\u0645\u0639\u0631\u0627\u062a",
+ "\u062c\u0645\u0639\u06c1",
+ "\u06c1\u0641\u062a\u06c1"
+ ],
+ "SHORTMONTH": [
+ "\u062c\u0646\u0648\u0631\u06cc",
+ "\u0641\u0631\u0648\u0631\u06cc",
+ "\u0645\u0627\u0631\u0686",
+ "\u0627\u067e\u0631\u064a\u0644",
+ "\u0645\u0626",
+ "\u062c\u0648\u0646",
+ "\u062c\u0648\u0644\u0627\u0626",
+ "\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"
+ ],
+ "fullDate": "EEEE\u060d d\u060d MMMM y",
+ "longDate": "d\u060d MMMM y",
+ "medium": "d\u060d MMM y h:mm:ss a",
+ "mediumDate": "d\u060d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "d/M/yy h:mm a",
+ "shortDate": "d/M/yy",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "Rs",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4-",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "ur",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_vi-vn.js b/app/lib/angular/i18n/angular-locale_vi-vn.js
new file mode 100755
index 0000000000..b03ab4a24c
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_vi-vn.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "SA",
+ "CH"
+ ],
+ "DAY": [
+ "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"
+ ],
+ "MONTH": [
+ "th\u00e1ng m\u1ed9t",
+ "th\u00e1ng hai",
+ "th\u00e1ng ba",
+ "th\u00e1ng t\u01b0",
+ "th\u00e1ng n\u0103m",
+ "th\u00e1ng s\u00e1u",
+ "th\u00e1ng b\u1ea3y",
+ "th\u00e1ng t\u00e1m",
+ "th\u00e1ng ch\u00edn",
+ "th\u00e1ng m\u01b0\u1eddi",
+ "th\u00e1ng m\u01b0\u1eddi m\u1ed9t",
+ "th\u00e1ng m\u01b0\u1eddi hai"
+ ],
+ "SHORTDAY": [
+ "CN",
+ "Th 2",
+ "Th 3",
+ "Th 4",
+ "Th 5",
+ "Th 6",
+ "Th 7"
+ ],
+ "SHORTMONTH": [
+ "thg 1",
+ "thg 2",
+ "thg 3",
+ "thg 4",
+ "thg 5",
+ "thg 6",
+ "thg 7",
+ "thg 8",
+ "thg 9",
+ "thg 10",
+ "thg 11",
+ "thg 12"
+ ],
+ "fullDate": "EEEE, 'ng\u00e0y' dd MMMM 'n\u0103m' y",
+ "longDate": "'Ng\u00e0y' dd 'th\u00e1ng' M 'n\u0103m' y",
+ "medium": "dd-MM-yyyy HH:mm:ss",
+ "mediumDate": "dd-MM-yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yyyy HH:mm",
+ "shortDate": "dd/MM/yyyy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ab",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "vi-vn",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_vi.js b/app/lib/angular/i18n/angular-locale_vi.js
new file mode 100755
index 0000000000..4e1108a2aa
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_vi.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "SA",
+ "CH"
+ ],
+ "DAY": [
+ "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"
+ ],
+ "MONTH": [
+ "th\u00e1ng m\u1ed9t",
+ "th\u00e1ng hai",
+ "th\u00e1ng ba",
+ "th\u00e1ng t\u01b0",
+ "th\u00e1ng n\u0103m",
+ "th\u00e1ng s\u00e1u",
+ "th\u00e1ng b\u1ea3y",
+ "th\u00e1ng t\u00e1m",
+ "th\u00e1ng ch\u00edn",
+ "th\u00e1ng m\u01b0\u1eddi",
+ "th\u00e1ng m\u01b0\u1eddi m\u1ed9t",
+ "th\u00e1ng m\u01b0\u1eddi hai"
+ ],
+ "SHORTDAY": [
+ "CN",
+ "Th 2",
+ "Th 3",
+ "Th 4",
+ "Th 5",
+ "Th 6",
+ "Th 7"
+ ],
+ "SHORTMONTH": [
+ "thg 1",
+ "thg 2",
+ "thg 3",
+ "thg 4",
+ "thg 5",
+ "thg 6",
+ "thg 7",
+ "thg 8",
+ "thg 9",
+ "thg 10",
+ "thg 11",
+ "thg 12"
+ ],
+ "fullDate": "EEEE, 'ng\u00e0y' dd MMMM 'n\u0103m' y",
+ "longDate": "'Ng\u00e0y' dd 'th\u00e1ng' M 'n\u0103m' y",
+ "medium": "dd-MM-yyyy HH:mm:ss",
+ "mediumDate": "dd-MM-yyyy",
+ "mediumTime": "HH:mm:ss",
+ "short": "dd/MM/yyyy HH:mm",
+ "shortDate": "dd/MM/yyyy",
+ "shortTime": "HH:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u20ab",
+ "DECIMAL_SEP": ",",
+ "GROUP_SEP": ".",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "\u00a0\u00a4",
+ "posPre": "",
+ "posSuf": "\u00a0\u00a4"
+ }
+ ]
+ },
+ "id": "vi",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_zh-cn.js b/app/lib/angular/i18n/angular-locale_zh-cn.js
new file mode 100755
index 0000000000..8ec6b39c90
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_zh-cn.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u4e0a\u5348",
+ "\u4e0b\u5348"
+ ],
+ "DAY": [
+ "\u661f\u671f\u65e5",
+ "\u661f\u671f\u4e00",
+ "\u661f\u671f\u4e8c",
+ "\u661f\u671f\u4e09",
+ "\u661f\u671f\u56db",
+ "\u661f\u671f\u4e94",
+ "\u661f\u671f\u516d"
+ ],
+ "MONTH": [
+ "1\u6708",
+ "2\u6708",
+ "3\u6708",
+ "4\u6708",
+ "5\u6708",
+ "6\u6708",
+ "7\u6708",
+ "8\u6708",
+ "9\u6708",
+ "10\u6708",
+ "11\u6708",
+ "12\u6708"
+ ],
+ "SHORTDAY": [
+ "\u5468\u65e5",
+ "\u5468\u4e00",
+ "\u5468\u4e8c",
+ "\u5468\u4e09",
+ "\u5468\u56db",
+ "\u5468\u4e94",
+ "\u5468\u516d"
+ ],
+ "SHORTMONTH": [
+ "1\u6708",
+ "2\u6708",
+ "3\u6708",
+ "4\u6708",
+ "5\u6708",
+ "6\u6708",
+ "7\u6708",
+ "8\u6708",
+ "9\u6708",
+ "10\u6708",
+ "11\u6708",
+ "12\u6708"
+ ],
+ "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
+ "longDate": "y\u5e74M\u6708d\u65e5",
+ "medium": "yyyy-M-d ah:mm:ss",
+ "mediumDate": "yyyy-M-d",
+ "mediumTime": "ah:mm:ss",
+ "short": "yy-M-d ah:mm",
+ "shortDate": "yy-M-d",
+ "shortTime": "ah:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a5",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "zh-cn",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_zh-hans-cn.js b/app/lib/angular/i18n/angular-locale_zh-hans-cn.js
new file mode 100755
index 0000000000..094b44a069
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_zh-hans-cn.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u4e0a\u5348",
+ "\u4e0b\u5348"
+ ],
+ "DAY": [
+ "\u661f\u671f\u65e5",
+ "\u661f\u671f\u4e00",
+ "\u661f\u671f\u4e8c",
+ "\u661f\u671f\u4e09",
+ "\u661f\u671f\u56db",
+ "\u661f\u671f\u4e94",
+ "\u661f\u671f\u516d"
+ ],
+ "MONTH": [
+ "1\u6708",
+ "2\u6708",
+ "3\u6708",
+ "4\u6708",
+ "5\u6708",
+ "6\u6708",
+ "7\u6708",
+ "8\u6708",
+ "9\u6708",
+ "10\u6708",
+ "11\u6708",
+ "12\u6708"
+ ],
+ "SHORTDAY": [
+ "\u5468\u65e5",
+ "\u5468\u4e00",
+ "\u5468\u4e8c",
+ "\u5468\u4e09",
+ "\u5468\u56db",
+ "\u5468\u4e94",
+ "\u5468\u516d"
+ ],
+ "SHORTMONTH": [
+ "1\u6708",
+ "2\u6708",
+ "3\u6708",
+ "4\u6708",
+ "5\u6708",
+ "6\u6708",
+ "7\u6708",
+ "8\u6708",
+ "9\u6708",
+ "10\u6708",
+ "11\u6708",
+ "12\u6708"
+ ],
+ "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
+ "longDate": "y\u5e74M\u6708d\u65e5",
+ "medium": "yyyy-M-d ah:mm:ss",
+ "mediumDate": "yyyy-M-d",
+ "mediumTime": "ah:mm:ss",
+ "short": "yy-M-d ah:mm",
+ "shortDate": "yy-M-d",
+ "shortTime": "ah:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a5",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "zh-hans-cn",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_zh-hk.js b/app/lib/angular/i18n/angular-locale_zh-hk.js
new file mode 100755
index 0000000000..b9e97735b2
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_zh-hk.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u4e0a\u5348",
+ "\u4e0b\u5348"
+ ],
+ "DAY": [
+ "\u661f\u671f\u65e5",
+ "\u661f\u671f\u4e00",
+ "\u661f\u671f\u4e8c",
+ "\u661f\u671f\u4e09",
+ "\u661f\u671f\u56db",
+ "\u661f\u671f\u4e94",
+ "\u661f\u671f\u516d"
+ ],
+ "MONTH": [
+ "1\u6708",
+ "2\u6708",
+ "3\u6708",
+ "4\u6708",
+ "5\u6708",
+ "6\u6708",
+ "7\u6708",
+ "8\u6708",
+ "9\u6708",
+ "10\u6708",
+ "11\u6708",
+ "12\u6708"
+ ],
+ "SHORTDAY": [
+ "\u9031\u65e5",
+ "\u9031\u4e00",
+ "\u9031\u4e8c",
+ "\u9031\u4e09",
+ "\u9031\u56db",
+ "\u9031\u4e94",
+ "\u9031\u516d"
+ ],
+ "SHORTMONTH": [
+ "1\u6708",
+ "2\u6708",
+ "3\u6708",
+ "4\u6708",
+ "5\u6708",
+ "6\u6708",
+ "7\u6708",
+ "8\u6708",
+ "9\u6708",
+ "10\u6708",
+ "11\u6708",
+ "12\u6708"
+ ],
+ "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
+ "longDate": "y\u5e74M\u6708d\u65e5",
+ "medium": "y\u5e74M\u6708d\u65e5 ahh:mm:ss",
+ "mediumDate": "y\u5e74M\u6708d\u65e5",
+ "mediumTime": "ahh:mm:ss",
+ "short": "yy\u5e74M\u6708d\u65e5 ah:mm",
+ "shortDate": "yy\u5e74M\u6708d\u65e5",
+ "shortTime": "ah:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "zh-hk",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_zh-tw.js b/app/lib/angular/i18n/angular-locale_zh-tw.js
new file mode 100755
index 0000000000..44f5a8240f
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_zh-tw.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u4e0a\u5348",
+ "\u4e0b\u5348"
+ ],
+ "DAY": [
+ "\u661f\u671f\u65e5",
+ "\u661f\u671f\u4e00",
+ "\u661f\u671f\u4e8c",
+ "\u661f\u671f\u4e09",
+ "\u661f\u671f\u56db",
+ "\u661f\u671f\u4e94",
+ "\u661f\u671f\u516d"
+ ],
+ "MONTH": [
+ "1\u6708",
+ "2\u6708",
+ "3\u6708",
+ "4\u6708",
+ "5\u6708",
+ "6\u6708",
+ "7\u6708",
+ "8\u6708",
+ "9\u6708",
+ "10\u6708",
+ "11\u6708",
+ "12\u6708"
+ ],
+ "SHORTDAY": [
+ "\u9031\u65e5",
+ "\u9031\u4e00",
+ "\u9031\u4e8c",
+ "\u9031\u4e09",
+ "\u9031\u56db",
+ "\u9031\u4e94",
+ "\u9031\u516d"
+ ],
+ "SHORTMONTH": [
+ "1\u6708",
+ "2\u6708",
+ "3\u6708",
+ "4\u6708",
+ "5\u6708",
+ "6\u6708",
+ "7\u6708",
+ "8\u6708",
+ "9\u6708",
+ "10\u6708",
+ "11\u6708",
+ "12\u6708"
+ ],
+ "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
+ "longDate": "y\u5e74M\u6708d\u65e5",
+ "medium": "yyyy/M/d ah:mm:ss",
+ "mediumDate": "yyyy/M/d",
+ "mediumTime": "ah:mm:ss",
+ "short": "y/M/d ah:mm",
+ "shortDate": "y/M/d",
+ "shortTime": "ah:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "NT$",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "\u00a4-",
+ "negSuf": "",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "zh-tw",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_zh.js b/app/lib/angular/i18n/angular-locale_zh.js
new file mode 100755
index 0000000000..779f208e32
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_zh.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "\u4e0a\u5348",
+ "\u4e0b\u5348"
+ ],
+ "DAY": [
+ "\u661f\u671f\u65e5",
+ "\u661f\u671f\u4e00",
+ "\u661f\u671f\u4e8c",
+ "\u661f\u671f\u4e09",
+ "\u661f\u671f\u56db",
+ "\u661f\u671f\u4e94",
+ "\u661f\u671f\u516d"
+ ],
+ "MONTH": [
+ "1\u6708",
+ "2\u6708",
+ "3\u6708",
+ "4\u6708",
+ "5\u6708",
+ "6\u6708",
+ "7\u6708",
+ "8\u6708",
+ "9\u6708",
+ "10\u6708",
+ "11\u6708",
+ "12\u6708"
+ ],
+ "SHORTDAY": [
+ "\u5468\u65e5",
+ "\u5468\u4e00",
+ "\u5468\u4e8c",
+ "\u5468\u4e09",
+ "\u5468\u56db",
+ "\u5468\u4e94",
+ "\u5468\u516d"
+ ],
+ "SHORTMONTH": [
+ "1\u6708",
+ "2\u6708",
+ "3\u6708",
+ "4\u6708",
+ "5\u6708",
+ "6\u6708",
+ "7\u6708",
+ "8\u6708",
+ "9\u6708",
+ "10\u6708",
+ "11\u6708",
+ "12\u6708"
+ ],
+ "fullDate": "y\u5e74M\u6708d\u65e5EEEE",
+ "longDate": "y\u5e74M\u6708d\u65e5",
+ "medium": "yyyy-M-d ah:mm:ss",
+ "mediumDate": "yyyy-M-d",
+ "mediumTime": "ah:mm:ss",
+ "short": "yy-M-d ah:mm",
+ "shortDate": "yy-M-d",
+ "shortTime": "ah:mm"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "\u00a5",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "zh",
+ "pluralCat": function (n) { return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_zu-za.js b/app/lib/angular/i18n/angular-locale_zu-za.js
new file mode 100755
index 0000000000..49201c804f
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_zu-za.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sonto",
+ "Msombuluko",
+ "Lwesibili",
+ "Lwesithathu",
+ "uLwesine",
+ "Lwesihlanu",
+ "Mgqibelo"
+ ],
+ "MONTH": [
+ "Januwari",
+ "Februwari",
+ "Mashi",
+ "Apreli",
+ "Meyi",
+ "Juni",
+ "Julayi",
+ "Agasti",
+ "Septhemba",
+ "Okthoba",
+ "Novemba",
+ "Disemba"
+ ],
+ "SHORTDAY": [
+ "Son",
+ "Mso",
+ "Bil",
+ "Tha",
+ "Sin",
+ "Hla",
+ "Mgq"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mas",
+ "Apr",
+ "Mey",
+ "Jun",
+ "Jul",
+ "Aga",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dis"
+ ],
+ "fullDate": "EEEE dd MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "yyyy-MM-dd h:mm a",
+ "shortDate": "yyyy-MM-dd",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "R",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "zu-za",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/i18n/angular-locale_zu.js b/app/lib/angular/i18n/angular-locale_zu.js
new file mode 100755
index 0000000000..a657987ba3
--- /dev/null
+++ b/app/lib/angular/i18n/angular-locale_zu.js
@@ -0,0 +1,98 @@
+angular.module("ngLocale", [], ["$provide", function($provide) {
+var PLURAL_CATEGORY = {ZERO: "zero", ONE: "one", TWO: "two", FEW: "few", MANY: "many", OTHER: "other"};
+$provide.value("$locale", {
+ "DATETIME_FORMATS": {
+ "AMPMS": [
+ "AM",
+ "PM"
+ ],
+ "DAY": [
+ "Sonto",
+ "Msombuluko",
+ "Lwesibili",
+ "Lwesithathu",
+ "uLwesine",
+ "Lwesihlanu",
+ "Mgqibelo"
+ ],
+ "MONTH": [
+ "Januwari",
+ "Februwari",
+ "Mashi",
+ "Apreli",
+ "Meyi",
+ "Juni",
+ "Julayi",
+ "Agasti",
+ "Septhemba",
+ "Okthoba",
+ "Novemba",
+ "Disemba"
+ ],
+ "SHORTDAY": [
+ "Son",
+ "Mso",
+ "Bil",
+ "Tha",
+ "Sin",
+ "Hla",
+ "Mgq"
+ ],
+ "SHORTMONTH": [
+ "Jan",
+ "Feb",
+ "Mas",
+ "Apr",
+ "Mey",
+ "Jun",
+ "Jul",
+ "Aga",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dis"
+ ],
+ "fullDate": "EEEE dd MMMM y",
+ "longDate": "d MMMM y",
+ "medium": "d MMM y h:mm:ss a",
+ "mediumDate": "d MMM y",
+ "mediumTime": "h:mm:ss a",
+ "short": "yyyy-MM-dd h:mm a",
+ "shortDate": "yyyy-MM-dd",
+ "shortTime": "h:mm a"
+ },
+ "NUMBER_FORMATS": {
+ "CURRENCY_SYM": "R",
+ "DECIMAL_SEP": ".",
+ "GROUP_SEP": ",",
+ "PATTERNS": [
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 3,
+ "minFrac": 0,
+ "minInt": 1,
+ "negPre": "-",
+ "negSuf": "",
+ "posPre": "",
+ "posSuf": ""
+ },
+ {
+ "gSize": 3,
+ "lgSize": 3,
+ "macFrac": 0,
+ "maxFrac": 2,
+ "minFrac": 2,
+ "minInt": 1,
+ "negPre": "(\u00a4",
+ "negSuf": ")",
+ "posPre": "\u00a4",
+ "posSuf": ""
+ }
+ ]
+ },
+ "id": "zu",
+ "pluralCat": function (n) { if (n == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}
+});
+}]);
\ No newline at end of file
diff --git a/app/lib/angular/version.json b/app/lib/angular/version.json
new file mode 100755
index 0000000000..92949265ce
--- /dev/null
+++ b/app/lib/angular/version.json
@@ -0,0 +1 @@
+{"full":"1.2.0-rc.3","major":"1","minor":"2","dot":"0","codename":"ferocious-twitch","cdn":"1.2.0-rc.2"}
\ No newline at end of file
diff --git a/app/lib/angular/version.txt b/app/lib/angular/version.txt
old mode 100644
new mode 100755
index 90a27f9cea..3289940692
--- a/app/lib/angular/version.txt
+++ b/app/lib/angular/version.txt
@@ -1 +1 @@
-1.0.5
+1.2.0-rc.3
\ No newline at end of file
diff --git a/app/partials/.gitignore b/app/partials/.gitkeep
similarity index 100%
rename from app/partials/.gitignore
rename to app/partials/.gitkeep
diff --git a/config/karma-e2e.conf.js b/config/karma-e2e.conf.js
new file mode 100644
index 0000000000..f5a324fafc
--- /dev/null
+++ b/config/karma-e2e.conf.js
@@ -0,0 +1,37 @@
+module.exports = function(config){
+ config.set({
+
+
+ basePath : '../',
+
+ files : [
+ 'test/e2e/**/*.js'
+ ],
+
+ autoWatch : false,
+
+ browsers : ['Chrome'],
+
+ frameworks: ['ng-scenario'],
+
+ singleRun : true,
+
+ proxies : {
+ '/': 'http://localhost:8000/'
+ },
+
+ plugins : [
+ 'karma-junit-reporter',
+ 'karma-chrome-launcher',
+ 'karma-firefox-launcher',
+ 'karma-jasmine',
+ 'karma-ng-scenario'
+ ],
+
+ junitReporter : {
+ outputFile: 'test_out/e2e.xml',
+ suite: 'e2e'
+ }
+
+})}
+
diff --git a/config/karma.conf.js b/config/karma.conf.js
new file mode 100644
index 0000000000..b677db7489
--- /dev/null
+++ b/config/karma.conf.js
@@ -0,0 +1,31 @@
+module.exports = function(config){
+ config.set({
+ basePath : '../',
+
+ files : [
+ 'app/lib/angular/angular.js',
+ 'app/lib/angular/angular-*.js',
+ 'test/lib/angular/angular-mocks.js',
+ 'app/js/**/*.js',
+ 'test/unit/**/*.js'
+ ],
+
+ autoWatch : true,
+
+ frameworks: ['jasmine'],
+
+ browsers : ['Chrome'],
+
+ plugins : [
+ 'karma-junit-reporter',
+ 'karma-chrome-launcher',
+ 'karma-firefox-launcher',
+ 'karma-jasmine'
+ ],
+
+ junitReporter : {
+ outputFile: 'test_out/unit.xml',
+ suite: 'unit'
+ }
+
+})}
diff --git a/config/testacular-e2e.conf.js b/config/testacular-e2e.conf.js
deleted file mode 100644
index 51f51d2ee3..0000000000
--- a/config/testacular-e2e.conf.js
+++ /dev/null
@@ -1,22 +0,0 @@
-basePath = '../';
-
-files = [
- ANGULAR_SCENARIO,
- ANGULAR_SCENARIO_ADAPTER,
- 'test/e2e/**/*.js'
-];
-
-autoWatch = false;
-
-browsers = ['Chrome'];
-
-singleRun = true;
-
-proxies = {
- '/': 'http://localhost:8000/'
-};
-
-junitReporter = {
- outputFile: 'test_out/e2e.xml',
- suite: 'e2e'
-};
diff --git a/config/testacular.conf.js b/config/testacular.conf.js
deleted file mode 100644
index ad0ade4777..0000000000
--- a/config/testacular.conf.js
+++ /dev/null
@@ -1,20 +0,0 @@
-basePath = '../';
-
-files = [
- JASMINE,
- JASMINE_ADAPTER,
- 'app/lib/angular/angular.js',
- 'app/lib/angular/angular-*.js',
- 'test/lib/angular/angular-mocks.js',
- 'app/js/**/*.js',
- 'test/unit/**/*.js'
-];
-
-autoWatch = true;
-
-browsers = ['Chrome'];
-
-junitReporter = {
- outputFile: 'test_out/unit.xml',
- suite: 'unit'
-};
diff --git a/logs/.gitignore b/logs/.gitignore
deleted file mode 100644
index d6b7ef32c8..0000000000
--- a/logs/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/logs/.gitkeep b/logs/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/package.json b/package.json
new file mode 100644
index 0000000000..d3f83255d6
--- /dev/null
+++ b/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "angualrjs-seed",
+ "description": "A starter project for angular js",
+ "devDependencies": {
+ "phantomjs" : "*",
+ "karma" : "*",
+ "karma-junit-reporter" : "*",
+ "karma-jasmine" : "*",
+ "karma-ng-scenario" : "*"
+ }
+}
\ No newline at end of file
diff --git a/scripts/deploy.sh b/scripts/deploy.sh
new file mode 100755
index 0000000000..950bd6fe65
--- /dev/null
+++ b/scripts/deploy.sh
@@ -0,0 +1,80 @@
+#!/bin/bash
+#
+set -ue
+
+VERSION=$(git log -1 --pretty=format:%H)
+if [ -n "$(git status --porcelain)" ]
+then
+ VERSION="dirty-$VERSION"
+fi
+
+git status
+echo
+echo -e "Hit [ENTER] to continue: \c"
+read
+
+SCRIPTS_DIR=$( dirname $0 )
+ROOT_DIR=$( dirname $SCRIPTS_DIR )
+
+$SCRIPTS_DIR/api-python-client.sh
+
+APPCFG=$(which appcfg.py) \
+ || (echo "ERROR: appcfg.py must be in your PATH"; exit 1)
+while [ -L $APPCFG ]
+do
+ APPCFG=$(readlink $APPCFG)
+done
+
+BIN_DIR=$(dirname $APPCFG)
+
+if [ "$(basename $BIN_DIR)" == "bin" ]
+then
+ SDK_HOME=$(dirname $BIN_DIR)
+ if [ -d $SDK_HOME/platform/google_appengine ]
+ then
+ SDK_HOME=$SDK_HOME/platform/google_appengine
+ fi
+else
+ SDK_HOME=$BIN_DIR
+fi
+
+function get_app_id() {
+ local app_id
+ app_id=$( cat $ROOT_DIR/app.yaml | egrep '^application:' | sed 's/application: *\([0-9a-z][-0-9a-z]*[0-9a-z]\).*/\1/' )
+ while [ $# -gt 0 ]
+ do
+ if [ "$1" == "-A" ]
+ then
+ shift
+ app_id=$1
+ elif [ "${1/=*/}" == "--application" ]
+ then
+ app_id=${1/--application=/}
+ fi
+ shift
+ done
+ echo $app_id
+}
+
+APP_ID=$(get_app_id $*)
+echo
+echo "Using app id: $APP_ID"
+
+function deploy() {
+ echo -e "\n*** Rolling back any pending updates (just in case) ***\n"
+ appcfg.py --oauth2 $* rollback .
+
+ echo -e "\n*** DEPLOYING ***\n"
+ appcfg.py --oauth2 $* update -V $VERSION .
+
+ echo -e "\n*** SETTING DEFAULT VERSION ***\n"
+ appcfg.py --oauth2 $* set_default_version -V $VERSION .
+}
+
+
+APP_IDS=$(APPLICATION_ID=$APP_ID python -c 'import appids; appids.PrintAppIds()')
+echo -e "Using app ids:\n$APP_IDS"
+for appid in $APP_IDS
+do
+ deploy $* -A $appid
+done
diff --git a/scripts/e2e-test.bat b/scripts/e2e-test.bat
index c89a708a14..0b2aee60a3 100644
--- a/scripts/e2e-test.bat
+++ b/scripts/e2e-test.bat
@@ -5,7 +5,7 @@ REM You have to run server and capture some browser first
REM
REM Requirements:
REM - NodeJS (http://nodejs.org/)
-REM - Testacular (npm install -g testacular)
+REM - Karma (npm install -g karma)
set BASE_DIR=%~dp0
-testacular start "%BASE_DIR%\..\config\testacular-e2e.conf.js" %*
+karma start "%BASE_DIR%\..\config\karma-e2e.conf.js" %*
diff --git a/scripts/e2e-test.sh b/scripts/e2e-test.sh
index e887c34f41..5d8a335e69 100755
--- a/scripts/e2e-test.sh
+++ b/scripts/e2e-test.sh
@@ -3,7 +3,7 @@
BASE_DIR=`dirname $0`
echo ""
-echo "Starting Testacular Server (http://vojtajina.github.com/testacular)"
+echo "Starting Karma Server (http://karma-runner.github.io)"
echo "-------------------------------------------------------------------"
-testacular start $BASE_DIR/../config/testacular-e2e.conf.js $*
+karma start $BASE_DIR/../config/karma-e2e.conf.js $*
diff --git a/scripts/run.sh b/scripts/run.sh
new file mode 100755
index 0000000000..5d7fe8bcbf
--- /dev/null
+++ b/scripts/run.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+#
+set -uex
+
+dev_appserver.py \
+ --host 0.0.0.0 \
+ --admin_host 0.0.0.0 \
+ --skip_sdk_update_check yes \
+ . $*
diff --git a/scripts/test.bat b/scripts/test.bat
index 000242f53e..6571f8f2b0 100644
--- a/scripts/test.bat
+++ b/scripts/test.bat
@@ -5,7 +5,7 @@ REM You have to run server and capture some browser first
REM
REM Requirements:
REM - NodeJS (http://nodejs.org/)
-REM - Testacular (npm install -g testacular)
+REM - Karma (npm install -g karma)
set BASE_DIR=%~dp0
-testacular start "%BASE_DIR%\..\config\testacular.conf.js" %*
+karma start "%BASE_DIR%\..\config\karma.conf.js" %*
diff --git a/scripts/test.sh b/scripts/test.sh
index 4c37cde250..5fe9d02ba1 100755
--- a/scripts/test.sh
+++ b/scripts/test.sh
@@ -3,7 +3,7 @@
BASE_DIR=`dirname $0`
echo ""
-echo "Starting Testacular Server (http://vojtajina.github.com/testacular)"
+echo "Starting Karma Server (http://karma-runner.github.io)"
echo "-------------------------------------------------------------------"
-testacular start $BASE_DIR/../config/testacular.conf.js $*
+karma start $BASE_DIR/../config/karma.conf.js $*
diff --git a/test/e2e/runner.html b/test/e2e/runner.html
index a40fa0829c..859c90e3d6 100644
--- a/test/e2e/runner.html
+++ b/test/e2e/runner.html
@@ -2,6 +2,7 @@
End2end Test Runner
+
diff --git a/test/lib/angular/angular-mocks.js b/test/lib/angular/angular-mocks.js
old mode 100644
new mode 100755
index b6ecc79d13..779426cb49
--- a/test/lib/angular/angular-mocks.js
+++ b/test/lib/angular/angular-mocks.js
@@ -1,5 +1,5 @@
/**
- * @license AngularJS v1.0.5
+ * @license AngularJS v1.2.0-rc.3
* (c) 2010-2012 Google, Inc. http://angularjs.org
* License: MIT
*
@@ -29,7 +29,7 @@ angular.mock = {};
* that there are several helper methods available which can be used in tests.
*/
angular.mock.$BrowserProvider = function() {
- this.$get = function(){
+ this.$get = function() {
return new angular.mock.$Browser();
};
};
@@ -75,6 +75,13 @@ angular.mock.$Browser = function() {
};
+ /**
+ * @name ngMock.$browser#defer.now
+ * @propertyOf ngMock.$browser
+ *
+ * @description
+ * Current milliseconds mock time.
+ */
self.defer.now = 0;
@@ -118,13 +125,6 @@ angular.mock.$Browser = function() {
self.deferredFns.shift().fn();
}
};
- /**
- * @name ngMock.$browser#defer.now
- * @propertyOf ngMock.$browser
- *
- * @description
- * Current milliseconds mock time.
- */
self.$$baseHref = '';
self.baseHref = function() {
@@ -241,10 +241,10 @@ angular.mock.$ExceptionHandlerProvider = function() {
*
* @param {string} mode Mode of operation, defaults to `rethrow`.
*
- * - `rethrow`: If any errors are are passed into the handler in tests, it typically
+ * - `rethrow`: If any errors are passed into the handler in tests, it typically
* means that there is a bug in the application or test, so this mock will
* make these tests fail.
- * - `log`: Sometimes it is desirable to test that an error is throw, for this case the `log` mode stores an
+ * - `log`: Sometimes it is desirable to test that an error is thrown, for this case the `log` mode stores an
* array of errors in `$exceptionHandler.errors`, to allow later assertion of them.
* See {@link ngMock.$log#assertEmpty assertEmpty()} and
* {@link ngMock.$log#reset reset()}
@@ -293,18 +293,32 @@ angular.mock.$ExceptionHandlerProvider = function() {
*
*/
angular.mock.$LogProvider = function() {
+ var debug = true;
function concat(array1, array2, index) {
return array1.concat(Array.prototype.slice.call(array2, index));
}
+ this.debugEnabled = function(flag) {
+ if (angular.isDefined(flag)) {
+ debug = flag;
+ return this;
+ } else {
+ return debug;
+ }
+ };
this.$get = function () {
var $log = {
log: function() { $log.log.logs.push(concat([], arguments, 0)); },
warn: function() { $log.warn.logs.push(concat([], arguments, 0)); },
info: function() { $log.info.logs.push(concat([], arguments, 0)); },
- error: function() { $log.error.logs.push(concat([], arguments, 0)); }
+ error: function() { $log.error.logs.push(concat([], arguments, 0)); },
+ debug: function() {
+ if (debug) {
+ $log.debug.logs.push(concat([], arguments, 0));
+ }
+ }
};
/**
@@ -322,36 +336,75 @@ angular.mock.$LogProvider = function() {
* @propertyOf ngMock.$log
*
* @description
- * Array of logged messages.
+ * Array of messages logged using {@link ngMock.$log#log}.
+ *
+ * @example
+ *
+ * $log.log('Some Log');
+ * var first = $log.log.logs.unshift();
+ *
*/
$log.log.logs = [];
/**
* @ngdoc property
- * @name ngMock.$log#warn.logs
+ * @name ngMock.$log#info.logs
* @propertyOf ngMock.$log
*
* @description
- * Array of logged messages.
+ * Array of messages logged using {@link ngMock.$log#info}.
+ *
+ * @example
+ *
+ * $log.info('Some Info');
+ * var first = $log.info.logs.unshift();
+ *
*/
- $log.warn.logs = [];
+ $log.info.logs = [];
/**
* @ngdoc property
- * @name ngMock.$log#info.logs
+ * @name ngMock.$log#warn.logs
* @propertyOf ngMock.$log
*
* @description
- * Array of logged messages.
+ * Array of messages logged using {@link ngMock.$log#warn}.
+ *
+ * @example
+ *
+ * $log.warn('Some Warning');
+ * var first = $log.warn.logs.unshift();
+ *
*/
- $log.info.logs = [];
+ $log.warn.logs = [];
/**
* @ngdoc property
* @name ngMock.$log#error.logs
* @propertyOf ngMock.$log
*
* @description
- * Array of logged messages.
+ * Array of messages logged using {@link ngMock.$log#error}.
+ *
+ * @example
+ *
+ * $log.log('Some Error');
+ * var first = $log.error.logs.unshift();
+ *
*/
$log.error.logs = [];
+ /**
+ * @ngdoc property
+ * @name ngMock.$log#debug.logs
+ * @propertyOf ngMock.$log
+ *
+ * @description
+ * Array of messages logged using {@link ngMock.$log#debug}.
+ *
+ * @example
+ *
+ * $log.debug('Some Error');
+ * var first = $log.debug.logs.unshift();
+ *
+ */
+ $log.debug.logs = []
};
/**
@@ -364,7 +417,7 @@ angular.mock.$LogProvider = function() {
*/
$log.assertEmpty = function() {
var errors = [];
- angular.forEach(['error', 'warn', 'info', 'log'], function(logLevel) {
+ angular.forEach(['error', 'warn', 'info', 'log', 'debug'], function(logLevel) {
angular.forEach($log[logLevel].logs, function(log) {
angular.forEach(log, function (logItem) {
errors.push('MOCK $log (' + logLevel + '): ' + String(logItem) + '\n' + (logItem.stack || ''));
@@ -385,10 +438,123 @@ angular.mock.$LogProvider = function() {
};
+/**
+ * @ngdoc service
+ * @name ngMock.$interval
+ *
+ * @description
+ * Mock implementation of the $interval service.
+ *
+ * Use {@link ngMock.$interval#flush `$interval.flush(millis)`} to
+ * move forward by `millis` milliseconds and trigger any functions scheduled to run in that
+ * time.
+ *
+ * @param {function()} fn A function that should be called repeatedly.
+ * @param {number} delay Number of milliseconds between each function call.
+ * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat
+ * indefinitely.
+ * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise
+ * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block.
+ * @returns {promise} A promise which will be notified on each iteration.
+ */
+angular.mock.$IntervalProvider = function() {
+ this.$get = ['$rootScope', '$q',
+ function($rootScope, $q) {
+ var repeatFns = [],
+ nextRepeatId = 0,
+ now = 0;
+
+ var $interval = function(fn, delay, count, invokeApply) {
+ var deferred = $q.defer(),
+ promise = deferred.promise,
+ count = (angular.isDefined(count)) ? count : 0,
+ iteration = 0,
+ skipApply = (angular.isDefined(invokeApply) && !invokeApply);
+
+ promise.then(null, null, fn);
+
+ promise.$$intervalId = nextRepeatId;
+
+ function tick() {
+ deferred.notify(iteration++);
+
+ if (count > 0 && iteration >= count) {
+ var fnIndex;
+ deferred.resolve(iteration);
+
+ angular.forEach(repeatFns, function(fn, index) {
+ if (fn.id === promise.$$intervalId) fnIndex = index;
+ });
+
+ if (fnIndex !== undefined) {
+ repeatFns.splice(fnIndex, 1);
+ }
+ }
+
+ if (!skipApply) $rootScope.$apply();
+ };
+
+ repeatFns.push({
+ nextTime:(now + delay),
+ delay: delay,
+ fn: tick,
+ id: nextRepeatId,
+ deferred: deferred
+ });
+ repeatFns.sort(function(a,b){ return a.nextTime - b.nextTime;});
+
+ nextRepeatId++;
+ return promise;
+ };
+
+ $interval.cancel = function(promise) {
+ var fnIndex;
+
+ angular.forEach(repeatFns, function(fn, index) {
+ if (fn.id === promise.$$intervalId) fnIndex = index;
+ });
+
+ if (fnIndex !== undefined) {
+ repeatFns[fnIndex].deferred.reject('canceled');
+ repeatFns.splice(fnIndex, 1);
+ return true;
+ }
+
+ return false;
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngMock.$interval#flush
+ * @methodOf ngMock.$interval
+ * @description
+ *
+ * Runs interval tasks scheduled to be run in the next `millis` milliseconds.
+ *
+ * @param {number=} millis maximum timeout amount to flush up until.
+ *
+ * @return {number} The amount of time moved forward.
+ */
+ $interval.flush = function(millis) {
+ now += millis;
+ while (repeatFns.length && repeatFns[0].nextTime <= now) {
+ var task = repeatFns[0];
+ task.fn();
+ task.nextTime += task.delay;
+ repeatFns.sort(function(a,b){ return a.nextTime - b.nextTime;});
+ }
+ return millis;
+ };
+
+ return $interval;
+ }];
+};
+
+
(function() {
var R_ISO8061_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?:\:?(\d\d)(?:\:?(\d\d)(?:\.(\d{3}))?)?)?(Z|([+-])(\d\d):?(\d\d)))?$/;
- function jsonStringToDate(string){
+ function jsonStringToDate(string) {
var match;
if (match = string.match(R_ISO8061_STR)) {
var date = new Date(0),
@@ -430,7 +596,7 @@ angular.mock.$LogProvider = function() {
*
* *NOTE*: this is not an injectable instance, just a globally available mock class of `Date`.
*
- * Mock of the Date type which has its timezone specified via constroctor arg.
+ * Mock of the Date type which has its timezone specified via constructor arg.
*
* The main purpose is to create Date-like instances with timezone fixed to the specified timezone
* offset, so that we can test code that depends on local timezone settings without dependency on
@@ -456,6 +622,7 @@ angular.mock.$LogProvider = function() {
* newYearInBratislava.getDate() => 1;
* newYearInBratislava.getHours() => 0;
* newYearInBratislava.getMinutes() => 0;
+ * newYearInBratislava.getSeconds() => 0;
*
*
*/
@@ -512,6 +679,10 @@ angular.mock.$LogProvider = function() {
return self.date.getSeconds();
};
+ self.getMilliseconds = function() {
+ return self.date.getMilliseconds();
+ };
+
self.getTimezoneOffset = function() {
return offset * 60;
};
@@ -562,7 +733,7 @@ angular.mock.$LogProvider = function() {
}
//hide all methods not implemented in this mock that the Date prototype exposes
- var unimplementedMethods = ['getMilliseconds', 'getUTCDay',
+ var unimplementedMethods = ['getUTCDay',
'getYear', 'setDate', 'setFullYear', 'setHours', 'setMilliseconds',
'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', 'setUTCFullYear',
'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds',
@@ -582,6 +753,43 @@ angular.mock.$LogProvider = function() {
angular.mock.TzDate.prototype = Date.prototype;
})();
+angular.mock.animate = angular.module('mock.animate', ['ng'])
+
+ .config(['$provide', function($provide) {
+
+ $provide.decorator('$animate', function($delegate) {
+ var animate = {
+ queue : [],
+ enabled : $delegate.enabled,
+ flushNext : function(name) {
+ var tick = animate.queue.shift();
+ expect(tick.method).toBe(name);
+ tick.fn();
+ return tick;
+ }
+ };
+
+ angular.forEach(['enter','leave','move','addClass','removeClass'], function(method) {
+ animate[method] = function() {
+ var params = arguments;
+ animate.queue.push({
+ method : method,
+ params : params,
+ element : angular.isElement(params[0]) && params[0],
+ parent : angular.isElement(params[1]) && params[1],
+ after : angular.isElement(params[2]) && params[2],
+ fn : function() {
+ $delegate[method].apply($delegate, params);
+ }
+ });
+ };
+ });
+
+ return animate;
+ });
+
+ }]);
+
/**
* @ngdoc function
@@ -622,6 +830,7 @@ angular.mock.dump = function(object) {
} else if (object instanceof Error) {
out = object.stack || ('' + object.name + ': ' + object.message);
} else {
+ // TODO(i): this prevents methods to be logged, we should have a better way to serialize objects
out = angular.toJson(object, true);
}
} else {
@@ -635,7 +844,7 @@ angular.mock.dump = function(object) {
offset = offset || ' ';
var log = [offset + 'Scope(' + scope.$id + '): {'];
for ( var key in scope ) {
- if (scope.hasOwnProperty(key) && !key.match(/^(\$|this)/)) {
+ if (Object.prototype.hasOwnProperty.call(scope, key) && !key.match(/^(\$|this)/)) {
log.push(' ' + key + ': ' + angular.toJson(scope[key]));
}
}
@@ -653,10 +862,10 @@ angular.mock.dump = function(object) {
* @ngdoc object
* @name ngMock.$httpBackend
* @description
- * Fake HTTP backend implementation suitable for unit testing application that use the
+ * Fake HTTP backend implementation suitable for unit testing applications that use the
* {@link ng.$http $http service}.
*
- * *Note*: For fake http backend implementation suitable for end-to-end testing or backend-less
+ * *Note*: For fake HTTP backend implementation suitable for end-to-end testing or backend-less
* development please see {@link ngMockE2E.$httpBackend e2e $httpBackend mock}.
*
* During unit testing, we want our unit tests to run quickly and have no external dependencies so
@@ -749,79 +958,104 @@ angular.mock.dump = function(object) {
*
*
* # Unit testing with mock $httpBackend
+ * The following code shows how to setup and use the mock backend in unit testing a controller.
+ * First we create the controller under test
*
- *
- // controller
- function MyController($scope, $http) {
- $http.get('/auth.py').success(function(data) {
- $scope.user = data;
- });
-
- this.saveMessage = function(message) {
- $scope.status = 'Saving...';
- $http.post('/add-msg.py', message).success(function(response) {
- $scope.status = '';
- }).error(function() {
- $scope.status = 'ERROR!';
- });
- };
- }
+
+ // The controller code
+ function MyController($scope, $http) {
+ var authToken;
+
+ $http.get('/auth.py').success(function(data, status, headers) {
+ authToken = headers('A-Token');
+ $scope.user = data;
+ });
+
+ $scope.saveMessage = function(message) {
+ var headers = { 'Authorization': authToken };
+ $scope.status = 'Saving...';
+
+ $http.post('/add-msg.py', message, { headers: headers } ).success(function(response) {
+ $scope.status = '';
+ }).error(function() {
+ $scope.status = 'ERROR!';
+ });
+ };
+ }
+
+ *
+ * Now we setup the mock backend and create the test specs.
+ *
+
+ // testing controller
+ describe('MyController', function() {
+ var $httpBackend, $rootScope, createController;
- // testing controller
- var $httpBackend;
+ beforeEach(inject(function($injector) {
+ // Set up the mock http service responses
+ $httpBackend = $injector.get('$httpBackend');
+ // backend definition common for all tests
+ $httpBackend.when('GET', '/auth.py').respond({userId: 'userX'}, {'A-Token': 'xxx'});
- beforeEach(inject(function($injector) {
- $httpBackend = $injector.get('$httpBackend');
+ // Get hold of a scope (i.e. the root scope)
+ $rootScope = $injector.get('$rootScope');
+ // The $controller service is used to create instances of controllers
+ var $controller = $injector.get('$controller');
- // backend definition common for all tests
- $httpBackend.when('GET', '/auth.py').respond({userId: 'userX'}, {'A-Token': 'xxx'});
- }));
+ createController = function() {
+ return $controller('MyController', {'$scope' : $rootScope });
+ };
+ }));
- afterEach(function() {
- $httpBackend.verifyNoOutstandingExpectation();
- $httpBackend.verifyNoOutstandingRequest();
- });
+ afterEach(function() {
+ $httpBackend.verifyNoOutstandingExpectation();
+ $httpBackend.verifyNoOutstandingRequest();
+ });
- it('should fetch authentication token', function() {
- $httpBackend.expectGET('/auth.py');
- var controller = scope.$new(MyController);
- $httpBackend.flush();
- });
+ it('should fetch authentication token', function() {
+ $httpBackend.expectGET('/auth.py');
+ var controller = createController();
+ $httpBackend.flush();
+ });
- it('should send msg to server', function() {
- // now you don’t care about the authentication, but
- // the controller will still send the request and
- // $httpBackend will respond without you having to
- // specify the expectation and response for this request
- $httpBackend.expectPOST('/add-msg.py', 'message content').respond(201, '');
+ it('should send msg to server', function() {
+ var controller = createController();
+ $httpBackend.flush();
- var controller = scope.$new(MyController);
- $httpBackend.flush();
- controller.saveMessage('message content');
- expect(controller.status).toBe('Saving...');
- $httpBackend.flush();
- expect(controller.status).toBe('');
- });
+ // now you don’t care about the authentication, but
+ // the controller will still send the request and
+ // $httpBackend will respond without you having to
+ // specify the expectation and response for this request
+ $httpBackend.expectPOST('/add-msg.py', 'message content').respond(201, '');
+ $rootScope.saveMessage('message content');
+ expect($rootScope.status).toBe('Saving...');
+ $httpBackend.flush();
+ expect($rootScope.status).toBe('');
+ });
- it('should send auth header', function() {
- $httpBackend.expectPOST('/add-msg.py', undefined, function(headers) {
- // check if the header was send, if it wasn't the expectation won't
- // match the request and the test will fail
- return headers['Authorization'] == 'xxx';
- }).respond(201, '');
- var controller = scope.$new(MyController);
- controller.saveMessage('whatever');
- $httpBackend.flush();
- });
+ it('should send auth header', function() {
+ var controller = createController();
+ $httpBackend.flush();
+
+ $httpBackend.expectPOST('/add-msg.py', undefined, function(headers) {
+ // check if the header was send, if it wasn't the expectation won't
+ // match the request and the test will fail
+ return headers['Authorization'] == 'xxx';
+ }).respond(201, '');
+
+ $rootScope.saveMessage('whatever');
+ $httpBackend.flush();
+ });
+ });
*/
angular.mock.$HttpBackendProvider = function() {
- this.$get = [createHttpBackendMock];
+ this.$get = ['$rootScope', createHttpBackendMock];
};
/**
@@ -838,7 +1072,7 @@ angular.mock.$HttpBackendProvider = function() {
* @param {Object=} $browser Auto-flushing enabled if specified
* @return {Object} Instance of $httpBackend mock
*/
-function createHttpBackendMock($delegate, $browser) {
+function createHttpBackendMock($rootScope, $delegate, $browser) {
var definitions = [],
expectations = [],
responses = [],
@@ -855,7 +1089,7 @@ function createHttpBackendMock($delegate, $browser) {
}
// TODO(vojta): change params to: method, url, data, headers, callback
- function $httpBackend(method, url, data, callback, headers) {
+ function $httpBackend(method, url, data, callback, headers, timeout, withCredentials) {
var xhr = new MockXhr(),
expectation = expectations[0],
wasExpected = false;
@@ -866,24 +1100,41 @@ function createHttpBackendMock($delegate, $browser) {
: angular.toJson(data);
}
+ function wrapResponse(wrapped) {
+ if (!$browser && timeout && timeout.then) timeout.then(handleTimeout);
+
+ return handleResponse;
+
+ function handleResponse() {
+ var response = wrapped.response(method, url, data, headers);
+ xhr.$$respHeaders = response[2];
+ callback(response[0], response[1], xhr.getAllResponseHeaders());
+ }
+
+ function handleTimeout() {
+ for (var i = 0, ii = responses.length; i < ii; i++) {
+ if (responses[i] === handleResponse) {
+ responses.splice(i, 1);
+ callback(-1, undefined, '');
+ break;
+ }
+ }
+ }
+ }
+
if (expectation && expectation.match(method, url)) {
if (!expectation.matchData(data))
- throw Error('Expected ' + expectation + ' with different data\n' +
+ throw new Error('Expected ' + expectation + ' with different data\n' +
'EXPECTED: ' + prettyPrint(expectation.data) + '\nGOT: ' + data);
if (!expectation.matchHeaders(headers))
- throw Error('Expected ' + expectation + ' with different headers\n' +
- 'EXPECTED: ' + prettyPrint(expectation.headers) + '\nGOT: ' +
- prettyPrint(headers));
+ throw new Error('Expected ' + expectation + ' with different headers\n' +
+ 'EXPECTED: ' + prettyPrint(expectation.headers) + '\nGOT: ' + prettyPrint(headers));
expectations.shift();
if (expectation.response) {
- responses.push(function() {
- var response = expectation.response(method, url, data, headers);
- xhr.$$respHeaders = response[2];
- callback(response[0], response[1], xhr.getAllResponseHeaders());
- });
+ responses.push(wrapResponse(expectation));
return;
}
wasExpected = true;
@@ -894,21 +1145,17 @@ function createHttpBackendMock($delegate, $browser) {
if (definition.match(method, url, data, headers || {})) {
if (definition.response) {
// if $browser specified, we do auto flush all requests
- ($browser ? $browser.defer : responsesPush)(function() {
- var response = definition.response(method, url, data, headers);
- xhr.$$respHeaders = response[2];
- callback(response[0], response[1], xhr.getAllResponseHeaders());
- });
+ ($browser ? $browser.defer : responsesPush)(wrapResponse(definition));
} else if (definition.passThrough) {
- $delegate(method, url, data, callback, headers);
+ $delegate(method, url, data, callback, headers, timeout, withCredentials);
} else throw Error('No response defined !');
return;
}
}
throw wasExpected ?
- Error('No response defined !') :
- Error('Unexpected request: ' + method + ' ' + url + '\n' +
- (expectation ? 'Expected ' + expectation : 'No more request expected'));
+ new Error('No response defined !') :
+ new Error('Unexpected request: ' + method + ' ' + url + '\n' +
+ (expectation ? 'Expected ' + expectation : 'No more request expected'));
}
/**
@@ -920,7 +1167,8 @@ function createHttpBackendMock($delegate, $browser) {
*
* @param {string} method HTTP method.
* @param {string|RegExp} url HTTP url.
- * @param {(string|RegExp)=} data HTTP request body.
+ * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
+ * data string and returns true if the data is as expected.
* @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
* object and returns true if the headers match the current definition.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
@@ -996,7 +1244,8 @@ function createHttpBackendMock($delegate, $browser) {
* Creates a new backend definition for POST requests. For more info see `when()`.
*
* @param {string|RegExp} url HTTP url.
- * @param {(string|RegExp)=} data HTTP request body.
+ * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
+ * data string and returns true if the data is as expected.
* @param {(Object|function(Object))=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
@@ -1010,7 +1259,8 @@ function createHttpBackendMock($delegate, $browser) {
* Creates a new backend definition for PUT requests. For more info see `when()`.
*
* @param {string|RegExp} url HTTP url.
- * @param {(string|RegExp)=} data HTTP request body.
+ * @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
+ * data string and returns true if the data is as expected.
* @param {(Object|function(Object))=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
@@ -1039,7 +1289,9 @@ function createHttpBackendMock($delegate, $browser) {
*
* @param {string} method HTTP method.
* @param {string|RegExp} url HTTP url.
- * @param {(string|RegExp)=} data HTTP request body.
+ * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
+ * receives data string and returns true if the data is as expected, or Object if request body
+ * is in JSON format.
* @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
* object and returns true if the headers match the current expectation.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
@@ -1108,7 +1360,9 @@ function createHttpBackendMock($delegate, $browser) {
* Creates a new request expectation for POST requests. For more info see `expect()`.
*
* @param {string|RegExp} url HTTP url.
- * @param {(string|RegExp)=} data HTTP request body.
+ * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
+ * receives data string and returns true if the data is as expected, or Object if request body
+ * is in JSON format.
* @param {Object=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
@@ -1122,7 +1376,9 @@ function createHttpBackendMock($delegate, $browser) {
* Creates a new request expectation for PUT requests. For more info see `expect()`.
*
* @param {string|RegExp} url HTTP url.
- * @param {(string|RegExp)=} data HTTP request body.
+ * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
+ * receives data string and returns true if the data is as expected, or Object if request body
+ * is in JSON format.
* @param {Object=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
@@ -1136,7 +1392,9 @@ function createHttpBackendMock($delegate, $browser) {
* Creates a new request expectation for PATCH requests. For more info see `expect()`.
*
* @param {string|RegExp} url HTTP url.
- * @param {(string|RegExp)=} data HTTP request body.
+ * @param {(string|RegExp|function(string)|Object)=} data HTTP request body or function that
+ * receives data string and returns true if the data is as expected, or Object if request body
+ * is in JSON format.
* @param {Object=} headers HTTP headers.
* @returns {requestHandler} Returns an object with `respond` method that control how a matched
* request is handled.
@@ -1168,6 +1426,7 @@ function createHttpBackendMock($delegate, $browser) {
* is called an exception is thrown (as this typically a sign of programming error).
*/
$httpBackend.flush = function(count) {
+ $rootScope.$digest();
if (!responses.length) throw Error('No pending request to flush !');
if (angular.isDefined(count)) {
@@ -1196,12 +1455,13 @@ function createHttpBackendMock($delegate, $browser) {
* "afterEach" clause.
*
*
- * afterEach($httpBackend.verifyExpectations);
+ * afterEach($httpBackend.verifyNoOutstandingExpectation);
*
*/
$httpBackend.verifyNoOutstandingExpectation = function() {
+ $rootScope.$digest();
if (expectations.length) {
- throw Error('Unsatisfied requests: ' + expectations.join(', '));
+ throw new Error('Unsatisfied requests: ' + expectations.join(', '));
}
};
@@ -1287,6 +1547,7 @@ function MockHttpExpectation(method, url, data, headers) {
this.matchData = function(d) {
if (angular.isUndefined(data)) return true;
if (data && angular.isFunction(data.test)) return data.test(d);
+ if (data && angular.isFunction(data)) return data(d);
if (data && !angular.isString(data)) return angular.toJson(data) == d;
return data == d;
};
@@ -1352,17 +1613,65 @@ function MockXhr() {
* @description
*
* This service is just a simple decorator for {@link ng.$timeout $timeout} service
- * that adds a "flush" method.
+ * that adds a "flush" and "verifyNoPendingTasks" methods.
*/
-/**
- * @ngdoc method
- * @name ngMock.$timeout#flush
- * @methodOf ngMock.$timeout
- * @description
- *
- * Flushes the queue of pending tasks.
- */
+angular.mock.$TimeoutDecorator = function($delegate, $browser) {
+
+ /**
+ * @ngdoc method
+ * @name ngMock.$timeout#flush
+ * @methodOf ngMock.$timeout
+ * @description
+ *
+ * Flushes the queue of pending tasks.
+ *
+ * @param {number=} delay maximum timeout amount to flush up until
+ */
+ $delegate.flush = function(delay) {
+ $browser.defer.flush(delay);
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngMock.$timeout#flushNext
+ * @methodOf ngMock.$timeout
+ * @description
+ *
+ * Flushes the next timeout in the queue and compares it to the provided delay
+ *
+ * @param {number=} expectedDelay the delay value that will be asserted against the delay of the next timeout function
+ */
+ $delegate.flushNext = function(expectedDelay) {
+ $browser.defer.flushNext(expectedDelay);
+ };
+
+ /**
+ * @ngdoc method
+ * @name ngMock.$timeout#verifyNoPendingTasks
+ * @methodOf ngMock.$timeout
+ * @description
+ *
+ * Verifies that there are no pending tasks that need to be flushed.
+ */
+ $delegate.verifyNoPendingTasks = function() {
+ if ($browser.deferredFns.length) {
+ throw new Error('Deferred tasks to flush (' + $browser.deferredFns.length + '): ' +
+ formatPendingTasksAsString($browser.deferredFns));
+ }
+ };
+
+ function formatPendingTasksAsString(tasks) {
+ var result = [];
+ angular.forEach(tasks, function(task) {
+ result.push('{id: ' + task.id + ', ' + 'time: ' + task.time + '}');
+ });
+
+ return result.join(', ');
+ }
+
+ return $delegate;
+};
/**
*
@@ -1385,18 +1694,13 @@ angular.module('ngMock', ['ng']).provider({
$browser: angular.mock.$BrowserProvider,
$exceptionHandler: angular.mock.$ExceptionHandlerProvider,
$log: angular.mock.$LogProvider,
+ $interval: angular.mock.$IntervalProvider,
$httpBackend: angular.mock.$HttpBackendProvider,
$rootElement: angular.mock.$RootElementProvider
}).config(function($provide) {
- $provide.decorator('$timeout', function($delegate, $browser) {
- $delegate.flush = function() {
- $browser.defer.flush();
- };
- return $delegate;
- });
+ $provide.decorator('$timeout', angular.mock.$TimeoutDecorator);
});
-
/**
* @ngdoc overview
* @name ngMockE2E
@@ -1448,7 +1752,7 @@ angular.module('ngMockE2E', ['ng']).config(function($provide) {
*
* // adds a new phone to the phones array
* $httpBackend.whenPOST('/phones').respond(function(method, url, data) {
- * phones.push(angular.fromJSON(data));
+ * phones.push(angular.fromJson(data));
* });
* $httpBackend.whenGET(/^\/templates\//).passThrough();
* //...
@@ -1575,7 +1879,7 @@ angular.module('ngMockE2E', ['ng']).config(function($provide) {
* control how a matched request is handled.
*/
angular.mock.e2e = {};
-angular.mock.e2e.$httpBackendDecorator = ['$delegate', '$browser', createHttpBackendMock];
+angular.mock.e2e.$httpBackendDecorator = ['$rootScope', '$delegate', '$browser', createHttpBackendMock];
angular.mock.clearDataCache = function() {
@@ -1583,44 +1887,34 @@ angular.mock.clearDataCache = function() {
cache = angular.element.cache;
for(key in cache) {
- if (cache.hasOwnProperty(key)) {
+ if (Object.prototype.hasOwnProperty.call(cache,key)) {
var handle = cache[key].handle;
- handle && angular.element(handle.elem).unbind();
+ handle && angular.element(handle.elem).off();
delete cache[key];
}
}
};
-window.jstestdriver && (function(window) {
- /**
- * Global method to output any number of objects into JSTD console. Useful for debugging.
- */
- window.dump = function() {
- var args = [];
- angular.forEach(arguments, function(arg) {
- args.push(angular.mock.dump(arg));
- });
- jstestdriver.console.log.apply(jstestdriver.console, args);
- if (window.console) {
- window.console.log.apply(window.console, args);
- }
- };
-})(window);
+(window.jasmine || window.mocha) && (function(window) {
+
+ var currentSpec = null;
-window.jasmine && (function(window) {
+ beforeEach(function() {
+ currentSpec = this;
+ });
afterEach(function() {
- var spec = getCurrentSpec();
- var injector = spec.$injector;
+ var injector = currentSpec.$injector;
- spec.$injector = null;
- spec.$modules = null;
+ currentSpec.$injector = null;
+ currentSpec.$modules = null;
+ currentSpec = null;
if (injector) {
- injector.get('$rootElement').unbind();
+ injector.get('$rootElement').off();
injector.get('$browser').pollFns.length = 0;
}
@@ -1639,13 +1933,8 @@ window.jasmine && (function(window) {
angular.callbacks.counter = 0;
});
- function getCurrentSpec() {
- return jasmine.getEnv().currentSpec;
- }
-
function isSpecRunning() {
- var spec = getCurrentSpec();
- return spec && spec.queue.running;
+ return currentSpec && (window.mocha || currentSpec.queue.running);
}
/**
@@ -1653,30 +1942,38 @@ window.jasmine && (function(window) {
* @name angular.mock.module
* @description
*
- * *NOTE*: This is function is also published on window for easy access.
- * *NOTE*: Only available with {@link http://pivotal.github.com/jasmine/ jasmine}.
+ * *NOTE*: This function is also published on window for easy access.
*
* This function registers a module configuration code. It collects the configuration information
* which will be used when the injector is created by {@link angular.mock.inject inject}.
*
* See {@link angular.mock.inject inject} for usage example
*
- * @param {...(string|Function)} fns any number of modules which are represented as string
+ * @param {...(string|Function|Object)} fns any number of modules which are represented as string
* aliases or as anonymous module initialization functions. The modules are used to
- * configure the injector. The 'ng' and 'ngMock' modules are automatically loaded.
+ * configure the injector. The 'ng' and 'ngMock' modules are automatically loaded. If an
+ * object literal is passed they will be register as values in the module, the key being
+ * the module name and the value being what is returned.
*/
window.module = angular.mock.module = function() {
var moduleFns = Array.prototype.slice.call(arguments, 0);
return isSpecRunning() ? workFn() : workFn;
/////////////////////
function workFn() {
- var spec = getCurrentSpec();
- if (spec.$injector) {
+ if (currentSpec.$injector) {
throw Error('Injector already created, can not register a module!');
} else {
- var modules = spec.$modules || (spec.$modules = []);
+ var modules = currentSpec.$modules || (currentSpec.$modules = []);
angular.forEach(moduleFns, function(module) {
- modules.push(module);
+ if (angular.isObject(module) && !angular.isArray(module)) {
+ modules.push(function($provide) {
+ angular.forEach(module, function(value, key) {
+ $provide.value(key, value);
+ });
+ });
+ } else {
+ modules.push(module);
+ }
});
}
}
@@ -1687,15 +1984,46 @@ window.jasmine && (function(window) {
* @name angular.mock.inject
* @description
*
- * *NOTE*: This is function is also published on window for easy access.
- * *NOTE*: Only available with {@link http://pivotal.github.com/jasmine/ jasmine}.
+ * *NOTE*: This function is also published on window for easy access.
*
* The inject function wraps a function into an injectable function. The inject() creates new
* instance of {@link AUTO.$injector $injector} per test, which is then used for
* resolving references.
*
- * See also {@link angular.mock.module module}
*
+ * ## Resolving References (Underscore Wrapping)
+ * Often, we would like to inject a reference once, in a `beforeEach()` block and reuse this
+ * in multiple `it()` clauses. To be able to do this we must assign the reference to a variable
+ * that is declared in the scope of the `describe()` block. Since we would, most likely, want
+ * the variable to have the same name of the reference we have a problem, since the parameter
+ * to the `inject()` function would hide the outer variable.
+ *
+ * To help with this, the injected parameters can, optionally, be enclosed with underscores.
+ * These are ignored by the injector when the reference name is resolved.
+ *
+ * For example, the parameter `_myService_` would be resolved as the reference `myService`.
+ * Since it is available in the function body as _myService_, we can then assign it to a variable
+ * defined in an outer scope.
+ *
+ * ```
+ * // Defined out reference variable outside
+ * var myService;
+ *
+ * // Wrap the parameter in underscores
+ * beforeEach( inject( function(_myService_){
+ * myService = _myService_;
+ * }));
+ *
+ * // Use myService in a series of tests.
+ * it('makes use of myService', function() {
+ * myService.doStuff();
+ * });
+ *
+ * ```
+ *
+ * See also {@link angular.mock.module angular.mock.module}
+ *
+ * ## Example
* Example of what a typical jasmine tests looks like with the inject method.
*
*
@@ -1728,11 +2056,11 @@ window.jasmine && (function(window) {
* inject(function(version) {
* expect(version).toEqual('overridden');
* });
- * ));
+ * });
* });
*
*
- *
+ *
* @param {...Function} fns any number of functions which will be injected using the injector.
*/
window.inject = angular.mock.inject = function() {
@@ -1741,19 +2069,19 @@ window.jasmine && (function(window) {
return isSpecRunning() ? workFn() : workFn;
/////////////////////
function workFn() {
- var spec = getCurrentSpec();
- var modules = spec.$modules || [];
+ var modules = currentSpec.$modules || [];
+
modules.unshift('ngMock');
modules.unshift('ng');
- var injector = spec.$injector;
+ var injector = currentSpec.$injector;
if (!injector) {
- injector = spec.$injector = angular.injector(modules);
+ injector = currentSpec.$injector = angular.injector(modules);
}
for(var i = 0, ii = blockFns.length; i < ii; i++) {
try {
injector.invoke(blockFns[i] || angular.noop, this);
} catch (e) {
- if(e.stack) e.stack += '\n' + errorForStack.stack;
+ if(e.stack && errorForStack) e.stack += '\n' + errorForStack.stack;
throw e;
} finally {
errorForStack = null;
diff --git a/test/lib/angular/angular-scenario.js b/test/lib/angular/angular-scenario.js
old mode 100644
new mode 100755
index 538a799d12..08ba7ec02e
--- a/test/lib/angular/angular-scenario.js
+++ b/test/lib/angular/angular-scenario.js
@@ -1,32 +1,39 @@
/*!
- * jQuery JavaScript Library v1.7.2
+ * jQuery JavaScript Library v1.10.2
* http://jquery.com/
*
- * Copyright 2011, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
* Includes Sizzle.js
* http://sizzlejs.com/
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
*
- * Date: Wed Mar 21 12:46:34 2012 -0700
+ * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2013-07-03T13:48Z
*/
-(function( window, undefined ) {
-'use strict';
+(function( window, undefined ) {'use strict';
-// Use the correct document accordingly with window argument (sandbox)
-var document = window.document,
- navigator = window.navigator,
- location = window.location;
-var jQuery = (function() {
+// Can't do this because several apps including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+// Support: Firefox 18+
+//
-// Define a local copy of jQuery
-var jQuery = function( selector, context ) {
- // The jQuery object is actually just the init constructor 'enhanced'
- return new jQuery.fn.init( selector, context, rootjQuery );
- },
+var
+ // The deferred used on DOM ready
+ readyList,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // Support: IE<10
+ // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`
+ core_strundefined = typeof undefined,
+
+ // Use the correct document accordingly with window argument (sandbox)
+ location = window.location,
+ document = window.document,
+ docElem = document.documentElement,
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
@@ -34,133 +41,136 @@ var jQuery = function( selector, context ) {
// Map over the $ in case of overwrite
_$ = window.$,
- // A central reference to the root jQuery(document)
- rootjQuery,
+ // [[Class]] -> type pairs
+ class2type = {},
- // A simple way to check for HTML strings or ID strings
- // Prioritize #id over to avoid XSS via location.hash (#9521)
- quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
+ // List of deleted data cache ids, so we can reuse them
+ core_deletedIds = [],
+
+ core_version = "1.10.2",
+
+ // Save a reference to some core methods
+ core_concat = core_deletedIds.concat,
+ core_push = core_deletedIds.push,
+ core_slice = core_deletedIds.slice,
+ core_indexOf = core_deletedIds.indexOf,
+ core_toString = class2type.toString,
+ core_hasOwn = class2type.hasOwnProperty,
+ core_trim = core_version.trim,
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context, rootjQuery );
+ },
+
+ // Used for matching numbers
+ core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
+
+ // Used for splitting on whitespace
+ core_rnotwhite = /\S+/g,
- // Check if a string has a non-whitespace character in it
- rnotwhite = /\S/,
+ // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
- // Used for trimming whitespace
- trimLeft = /^\s+/,
- trimRight = /\s+$/,
+ // A simple way to check for HTML strings
+ // Prioritize #id over to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
// Match a standalone tag
- rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
// JSON RegExp
rvalidchars = /^[\],:{}\s]*$/,
- rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
- rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
-
- // Useragent RegExp
- rwebkit = /(webkit)[ \/]([\w.]+)/,
- ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
- rmsie = /(msie) ([\w.]+)/,
- rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
// Matches dashed string for camelizing
- rdashAlpha = /-([a-z]|[0-9])/ig,
rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([\da-z])/gi,
// Used by jQuery.camelCase as callback to replace()
fcamelCase = function( all, letter ) {
- return ( letter + "" ).toUpperCase();
+ return letter.toUpperCase();
},
- // Keep a UserAgent string for use with jQuery.browser
- userAgent = navigator.userAgent,
-
- // For matching the engine and version of the browser
- browserMatch,
-
- // The deferred used on DOM ready
- readyList,
-
// The ready event handler
- DOMContentLoaded,
+ completed = function( event ) {
- // Save a reference to some core methods
- toString = Object.prototype.toString,
- hasOwn = Object.prototype.hasOwnProperty,
- push = Array.prototype.push,
- slice = Array.prototype.slice,
- trim = String.prototype.trim,
- indexOf = Array.prototype.indexOf,
+ // readyState === "complete" is good enough for us to call the dom ready in oldIE
+ if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
+ detach();
+ jQuery.ready();
+ }
+ },
+ // Clean-up method for dom ready events
+ detach = function() {
+ if ( document.addEventListener ) {
+ document.removeEventListener( "DOMContentLoaded", completed, false );
+ window.removeEventListener( "load", completed, false );
- // [[Class]] -> type pairs
- class2type = {};
+ } else {
+ document.detachEvent( "onreadystatechange", completed );
+ window.detachEvent( "onload", completed );
+ }
+ };
jQuery.fn = jQuery.prototype = {
+ // The current version of jQuery being used
+ jquery: core_version,
+
constructor: jQuery,
init: function( selector, context, rootjQuery ) {
- var match, elem, ret, doc;
+ var match, elem;
- // Handle $(""), $(null), or $(undefined)
+ // HANDLE: $(""), $(null), $(undefined), $(false)
if ( !selector ) {
return this;
}
- // Handle $(DOMElement)
- if ( selector.nodeType ) {
- this.context = this[0] = selector;
- this.length = 1;
- return this;
- }
-
- // The body element only exists once, optimize finding it
- if ( selector === "body" && !context && document.body ) {
- this.context = document;
- this[0] = document.body;
- this.selector = selector;
- this.length = 1;
- return this;
- }
-
// Handle HTML strings
if ( typeof selector === "string" ) {
- // Are we dealing with HTML string or an ID?
if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
// Assume that strings that start and end with <> are HTML and skip the regex check
match = [ null, selector, null ];
} else {
- match = quickExpr.exec( selector );
+ match = rquickExpr.exec( selector );
}
- // Verify a match, and that no context was specified for #id
+ // Match html or make sure no context is specified for #id
if ( match && (match[1] || !context) ) {
// HANDLE: $(html) -> $(array)
if ( match[1] ) {
context = context instanceof jQuery ? context[0] : context;
- doc = ( context ? context.ownerDocument || context : document );
-
- // If a single string is passed in and it's a single tag
- // just do a createElement and skip the rest
- ret = rsingleTag.exec( selector );
- if ( ret ) {
- if ( jQuery.isPlainObject( context ) ) {
- selector = [ document.createElement( ret[1] ) ];
- jQuery.fn.attr.call( selector, context, true );
-
- } else {
- selector = [ doc.createElement( ret[1] ) ];
+ // scripts is true for back-compat
+ jQuery.merge( this, jQuery.parseHTML(
+ match[1],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+ // Properties of context are called as methods if possible
+ if ( jQuery.isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
}
-
- } else {
- ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
- selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
}
- return jQuery.merge( this, selector );
+ return this;
- // HANDLE: $("#id")
+ // HANDLE: $(#id)
} else {
elem = document.getElementById( match[2] );
@@ -193,6 +203,12 @@ jQuery.fn = jQuery.prototype = {
return this.constructor( context ).find( selector );
}
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+
// HANDLE: $(function)
// Shortcut for document ready
} else if ( jQuery.isFunction( selector ) ) {
@@ -210,19 +226,11 @@ jQuery.fn = jQuery.prototype = {
// Start with an empty selector
selector: "",
- // The current version of jQuery being used
- jquery: "1.7.2",
-
// The default length of a jQuery object is 0
length: 0,
- // The number of elements contained in the matched element set
- size: function() {
- return this.length;
- },
-
toArray: function() {
- return slice.call( this, 0 );
+ return core_slice.call( this );
},
// Get the Nth element in the matched element set OR
@@ -239,28 +247,15 @@ jQuery.fn = jQuery.prototype = {
// Take an array of elements and push it onto the stack
// (returning the new matched element set)
- pushStack: function( elems, name, selector ) {
- // Build a new jQuery matched element set
- var ret = this.constructor();
+ pushStack: function( elems ) {
- if ( jQuery.isArray( elems ) ) {
- push.apply( ret, elems );
-
- } else {
- jQuery.merge( ret, elems );
- }
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
// Add the old object onto the stack (as a reference)
ret.prevObject = this;
-
ret.context = this.context;
- if ( name === "find" ) {
- ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
- } else if ( name ) {
- ret.selector = this.selector + "." + name + "(" + selector + ")";
- }
-
// Return the newly-formed element set
return ret;
},
@@ -273,20 +268,14 @@ jQuery.fn = jQuery.prototype = {
},
ready: function( fn ) {
- // Attach the listeners
- jQuery.bindReady();
-
// Add the callback
- readyList.add( fn );
+ jQuery.ready.promise().done( fn );
return this;
},
- eq: function( i ) {
- i = +i;
- return i === -1 ?
- this.slice( i ) :
- this.slice( i, i + 1 );
+ slice: function() {
+ return this.pushStack( core_slice.apply( this, arguments ) );
},
first: function() {
@@ -297,9 +286,10 @@ jQuery.fn = jQuery.prototype = {
return this.eq( -1 );
},
- slice: function() {
- return this.pushStack( slice.apply( this, arguments ),
- "slice", slice.call(arguments).join(",") );
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
},
map: function( callback ) {
@@ -314,7 +304,7 @@ jQuery.fn = jQuery.prototype = {
// For internal use only.
// Behaves like an Array's method, not like a jQuery method.
- push: push,
+ push: core_push,
sort: [].sort,
splice: [].splice
};
@@ -323,7 +313,7 @@ jQuery.fn = jQuery.prototype = {
jQuery.fn.init.prototype = jQuery.fn;
jQuery.extend = jQuery.fn.extend = function() {
- var options, name, src, copy, copyIsArray, clone,
+ var src, copyIsArray, copy, name, options, clone,
target = arguments[0] || {},
i = 1,
length = arguments.length,
@@ -387,6 +377,10 @@ jQuery.extend = jQuery.fn.extend = function() {
};
jQuery.extend({
+ // Unique for each copy of jQuery on the page
+ // Non-digits removed to match rinlinejQuery
+ expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
+
noConflict: function( deep ) {
if ( window.$ === jQuery ) {
window.$ = _$;
@@ -417,73 +411,31 @@ jQuery.extend({
// Handle when the DOM is ready
ready: function( wait ) {
- // Either a released hold or an DOMready/load event and not yet ready
- if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( !document.body ) {
- return setTimeout( jQuery.ready, 1 );
- }
-
- // Remember that the DOM is ready
- jQuery.isReady = true;
-
- // If a normal DOM Ready event fired, decrement, and wait if need be
- if ( wait !== true && --jQuery.readyWait > 0 ) {
- return;
- }
-
- // If there are functions bound, to execute
- readyList.fireWith( document, [ jQuery ] );
-
- // Trigger any bound ready events
- if ( jQuery.fn.trigger ) {
- jQuery( document ).trigger( "ready" ).off( "ready" );
- }
- }
- },
- bindReady: function() {
- if ( readyList ) {
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
return;
}
- readyList = jQuery.Callbacks( "once memory" );
-
- // Catch cases where $(document).ready() is called after the
- // browser event has already occurred.
- if ( document.readyState === "complete" ) {
- // Handle it asynchronously to allow scripts the opportunity to delay ready
- return setTimeout( jQuery.ready, 1 );
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready );
}
- // Mozilla, Opera and webkit nightlies currently support this event
- if ( document.addEventListener ) {
- // Use the handy event callback
- document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-
- // A fallback to window.onload, that will always work
- window.addEventListener( "load", jQuery.ready, false );
-
- // If IE event model is used
- } else if ( document.attachEvent ) {
- // ensure firing before onload,
- // maybe late but safe also for iframes
- document.attachEvent( "onreadystatechange", DOMContentLoaded );
-
- // A fallback to window.onload, that will always work
- window.attachEvent( "onload", jQuery.ready );
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
- // If IE and not a frame
- // continually check to see if the document is ready
- var toplevel = false;
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
- try {
- toplevel = window.frameElement == null;
- } catch(e) {}
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
- if ( document.documentElement.doScroll && toplevel ) {
- doScrollCheck();
- }
+ // Trigger any bound ready events
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger("ready").off("ready");
}
},
@@ -499,6 +451,7 @@ jQuery.extend({
},
isWindow: function( obj ) {
+ /* jshint eqeqeq: false */
return obj != null && obj == obj.window;
},
@@ -507,12 +460,17 @@ jQuery.extend({
},
type: function( obj ) {
- return obj == null ?
- String( obj ) :
- class2type[ toString.call(obj) ] || "object";
+ if ( obj == null ) {
+ return String( obj );
+ }
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ core_toString.call(obj) ] || "object" :
+ typeof obj;
},
isPlainObject: function( obj ) {
+ var key;
+
// Must be an Object.
// Because of IE, we also have to check the presence of the constructor property.
// Make sure that DOM nodes and window objects don't pass through, as well
@@ -523,8 +481,8 @@ jQuery.extend({
try {
// Not own constructor property must be Object
if ( obj.constructor &&
- !hasOwn.call(obj, "constructor") &&
- !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ !core_hasOwn.call(obj, "constructor") &&
+ !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
return false;
}
} catch ( e ) {
@@ -532,17 +490,24 @@ jQuery.extend({
return false;
}
+ // Support: IE<9
+ // Handle iteration over inherited properties before own properties.
+ if ( jQuery.support.ownLast ) {
+ for ( key in obj ) {
+ return core_hasOwn.call( obj, key );
+ }
+ }
+
// Own properties are enumerated firstly, so to speed up,
// if last one is own, then all properties are own.
-
- var key;
for ( key in obj ) {}
- return key === undefined || hasOwn.call( obj, key );
+ return key === undefined || core_hasOwn.call( obj, key );
},
isEmptyObject: function( obj ) {
- for ( var name in obj ) {
+ var name;
+ for ( name in obj ) {
return false;
}
return true;
@@ -552,37 +517,70 @@ jQuery.extend({
throw new Error( msg );
},
- parseJSON: function( data ) {
- if ( typeof data !== "string" || !data ) {
+ // data: string of html
+ // context (optional): If specified, the fragment will be created in this context, defaults to document
+ // keepScripts (optional): If true, will include scripts passed in the html string
+ parseHTML: function( data, context, keepScripts ) {
+ if ( !data || typeof data !== "string" ) {
return null;
}
+ if ( typeof context === "boolean" ) {
+ keepScripts = context;
+ context = false;
+ }
+ context = context || document;
+
+ var parsed = rsingleTag.exec( data ),
+ scripts = !keepScripts && [];
+
+ // Single tag
+ if ( parsed ) {
+ return [ context.createElement( parsed[1] ) ];
+ }
- // Make sure leading/trailing whitespace is removed (IE can't handle it)
- data = jQuery.trim( data );
+ parsed = jQuery.buildFragment( [ data ], context, scripts );
+ if ( scripts ) {
+ jQuery( scripts ).remove();
+ }
+ return jQuery.merge( [], parsed.childNodes );
+ },
+ parseJSON: function( data ) {
// Attempt to parse using the native JSON parser first
if ( window.JSON && window.JSON.parse ) {
return window.JSON.parse( data );
}
- // Make sure the incoming data is actual JSON
- // Logic borrowed from http://json.org/json2.js
- if ( rvalidchars.test( data.replace( rvalidescape, "@" )
- .replace( rvalidtokens, "]" )
- .replace( rvalidbraces, "")) ) {
+ if ( data === null ) {
+ return data;
+ }
+
+ if ( typeof data === "string" ) {
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
- return ( new Function( "return " + data ) )();
+ if ( data ) {
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+ .replace( rvalidtokens, "]" )
+ .replace( rvalidbraces, "")) ) {
+ return ( new Function( "return " + data ) )();
+ }
+ }
}
+
jQuery.error( "Invalid JSON: " + data );
},
// Cross-browser xml parsing
parseXML: function( data ) {
- if ( typeof data !== "string" || !data ) {
+ var xml, tmp;
+ if ( !data || typeof data !== "string" ) {
return null;
}
- var xml, tmp;
try {
if ( window.DOMParser ) { // Standard
tmp = new DOMParser();
@@ -607,7 +605,7 @@ jQuery.extend({
// Workarounds based on findings by Jim Driscoll
// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
globalEval: function( data ) {
- if ( data && rnotwhite.test( data ) ) {
+ if ( data && jQuery.trim( data ) ) {
// We use execScript on Internet Explorer
// We use an anonymous function so that context is window
// rather than jQuery in Firefox
@@ -624,25 +622,30 @@ jQuery.extend({
},
nodeName: function( elem, name ) {
- return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
},
// args is for internal usage only
- each: function( object, callback, args ) {
- var name, i = 0,
- length = object.length,
- isObj = length === undefined || jQuery.isFunction( object );
+ each: function( obj, callback, args ) {
+ var value,
+ i = 0,
+ length = obj.length,
+ isArray = isArraylike( obj );
if ( args ) {
- if ( isObj ) {
- for ( name in object ) {
- if ( callback.apply( object[ name ], args ) === false ) {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
break;
}
}
} else {
- for ( ; i < length; ) {
- if ( callback.apply( object[ i++ ], args ) === false ) {
+ for ( i in obj ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
break;
}
}
@@ -650,72 +653,75 @@ jQuery.extend({
// A special, fast, case for the most common use of each
} else {
- if ( isObj ) {
- for ( name in object ) {
- if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
break;
}
}
} else {
- for ( ; i < length; ) {
- if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
+ for ( i in obj ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
break;
}
}
}
}
- return object;
+ return obj;
},
// Use native String.trim function wherever possible
- trim: trim ?
+ trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
function( text ) {
return text == null ?
"" :
- trim.call( text );
+ core_trim.call( text );
} :
// Otherwise use our own trimming functionality
function( text ) {
return text == null ?
"" :
- text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
+ ( text + "" ).replace( rtrim, "" );
},
// results is for internal usage only
- makeArray: function( array, results ) {
+ makeArray: function( arr, results ) {
var ret = results || [];
- if ( array != null ) {
- // The window, strings (and functions) also have 'length'
- // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
- var type = jQuery.type( array );
-
- if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
- push.call( ret, array );
+ if ( arr != null ) {
+ if ( isArraylike( Object(arr) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
} else {
- jQuery.merge( ret, array );
+ core_push.call( ret, arr );
}
}
return ret;
},
- inArray: function( elem, array, i ) {
+ inArray: function( elem, arr, i ) {
var len;
- if ( array ) {
- if ( indexOf ) {
- return indexOf.call( array, elem, i );
+ if ( arr ) {
+ if ( core_indexOf ) {
+ return core_indexOf.call( arr, elem, i );
}
- len = array.length;
+ len = arr.length;
i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
for ( ; i < len; i++ ) {
// Skip accessing in sparse arrays
- if ( i in array && array[ i ] === elem ) {
+ if ( i in arr && arr[ i ] === elem ) {
return i;
}
}
@@ -725,14 +731,14 @@ jQuery.extend({
},
merge: function( first, second ) {
- var i = first.length,
+ var l = second.length,
+ i = first.length,
j = 0;
- if ( typeof second.length === "number" ) {
- for ( var l = second.length; j < l; j++ ) {
+ if ( typeof l === "number" ) {
+ for ( ; j < l; j++ ) {
first[ i++ ] = second[ j ];
}
-
} else {
while ( second[j] !== undefined ) {
first[ i++ ] = second[ j++ ];
@@ -745,12 +751,15 @@ jQuery.extend({
},
grep: function( elems, callback, inv ) {
- var ret = [], retVal;
+ var retVal,
+ ret = [],
+ i = 0,
+ length = elems.length;
inv = !!inv;
// Go through the array, only saving the items
// that pass the validator function
- for ( var i = 0, length = elems.length; i < length; i++ ) {
+ for ( ; i < length; i++ ) {
retVal = !!callback( elems[ i ], i );
if ( inv !== retVal ) {
ret.push( elems[ i ] );
@@ -762,11 +771,11 @@ jQuery.extend({
// arg is for internal usage only
map: function( elems, callback, arg ) {
- var value, key, ret = [],
+ var value,
i = 0,
length = elems.length,
- // jquery objects are treated as arrays
- isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
+ isArray = isArraylike( elems ),
+ ret = [];
// Go through the array, translating each of the items to their
if ( isArray ) {
@@ -780,8 +789,8 @@ jQuery.extend({
// Go through every key on the object,
} else {
- for ( key in elems ) {
- value = callback( elems[ key ], key, arg );
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
if ( value != null ) {
ret[ ret.length ] = value;
@@ -790,7 +799,7 @@ jQuery.extend({
}
// Flatten any nested arrays
- return ret.concat.apply( [], ret );
+ return core_concat.apply( [], ret );
},
// A global GUID counter for objects
@@ -799,8 +808,10 @@ jQuery.extend({
// Bind a function to a context, optionally partially applying any
// arguments.
proxy: function( fn, context ) {
+ var args, proxy, tmp;
+
if ( typeof context === "string" ) {
- var tmp = fn[ context ];
+ tmp = fn[ context ];
context = fn;
fn = tmp;
}
@@ -812,59 +823,59 @@ jQuery.extend({
}
// Simulated bind
- var args = slice.call( arguments, 2 ),
- proxy = function() {
- return fn.apply( context, args.concat( slice.call( arguments ) ) );
- };
+ args = core_slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );
+ };
// Set the guid of unique handler to the same of original handler, so it can be removed
- proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
return proxy;
},
- // Mutifunctional method to get and set values to a collection
+ // Multifunctional method to get and set values of a collection
// The value/s can optionally be executed if it's a function
- access: function( elems, fn, key, value, chainable, emptyGet, pass ) {
- var exec,
- bulk = key == null,
- i = 0,
- length = elems.length;
+ access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ length = elems.length,
+ bulk = key == null;
// Sets many values
- if ( key && typeof key === "object" ) {
+ if ( jQuery.type( key ) === "object" ) {
+ chainable = true;
for ( i in key ) {
- jQuery.access( elems, fn, i, key[i], 1, emptyGet, value );
+ jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
}
- chainable = 1;
// Sets one value
} else if ( value !== undefined ) {
- // Optionally, function values get executed if exec is true
- exec = pass === undefined && jQuery.isFunction( value );
+ chainable = true;
- if ( bulk ) {
- // Bulk operations only iterate when executing function values
- if ( exec ) {
- exec = fn;
- fn = function( elem, key, value ) {
- return exec.call( jQuery( elem ), value );
- };
+ if ( !jQuery.isFunction( value ) ) {
+ raw = true;
+ }
- // Otherwise they run against the entire set
- } else {
+ if ( bulk ) {
+ // Bulk operations run against the entire set
+ if ( raw ) {
fn.call( elems, value );
fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
}
}
if ( fn ) {
- for (; i < length; i++ ) {
- fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ for ( ; i < length; i++ ) {
+ fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
}
}
-
- chainable = 1;
}
return chainable ?
@@ -880,4660 +891,4923 @@ jQuery.extend({
return ( new Date() ).getTime();
},
- // Use of jQuery.browser is frowned upon.
- // More details: http://docs.jquery.com/Utilities/jQuery.browser
- uaMatch: function( ua ) {
- ua = ua.toLowerCase();
-
- var match = rwebkit.exec( ua ) ||
- ropera.exec( ua ) ||
- rmsie.exec( ua ) ||
- ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
- [];
+ // A method for quickly swapping in/out CSS properties to get correct calculations.
+ // Note: this method belongs to the css module but it's needed here for the support module.
+ // If support gets modularized, this method should be moved back to the css module.
+ swap: function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
- return { browser: match[1] || "", version: match[2] || "0" };
- },
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
- sub: function() {
- function jQuerySub( selector, context ) {
- return new jQuerySub.fn.init( selector, context );
- }
- jQuery.extend( true, jQuerySub, this );
- jQuerySub.superclass = this;
- jQuerySub.fn = jQuerySub.prototype = this();
- jQuerySub.fn.constructor = jQuerySub;
- jQuerySub.sub = this.sub;
- jQuerySub.fn.init = function init( selector, context ) {
- if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
- context = jQuerySub( context );
- }
+ ret = callback.apply( elem, args || [] );
- return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
- };
- jQuerySub.fn.init.prototype = jQuerySub.fn;
- var rootjQuerySub = jQuerySub(document);
- return jQuerySub;
- },
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
- browser: {}
+ return ret;
+ }
});
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
- class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
+jQuery.ready.promise = function( obj ) {
+ if ( !readyList ) {
-browserMatch = jQuery.uaMatch( userAgent );
-if ( browserMatch.browser ) {
- jQuery.browser[ browserMatch.browser ] = true;
- jQuery.browser.version = browserMatch.version;
-}
+ readyList = jQuery.Deferred();
-// Deprecated, use jQuery.browser.webkit instead
-if ( jQuery.browser.webkit ) {
- jQuery.browser.safari = true;
-}
+ // Catch cases where $(document).ready() is called after the browser event has already occurred.
+ // we once tried to use readyState "interactive" here, but it caused issues like the one
+ // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ setTimeout( jQuery.ready );
-// IE doesn't match non-breaking spaces with \s
-if ( rnotwhite.test( "\xA0" ) ) {
- trimLeft = /^[\s\xA0]+/;
- trimRight = /[\s\xA0]+$/;
-}
+ // Standards-based browsers support DOMContentLoaded
+ } else if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed, false );
-// All jQuery objects should point back to these
-rootjQuery = jQuery(document);
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed, false );
-// Cleanup functions for the document ready method
-if ( document.addEventListener ) {
- DOMContentLoaded = function() {
- document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
- jQuery.ready();
- };
+ // If IE event model is used
+ } else {
+ // Ensure firing before onload, maybe late but safe also for iframes
+ document.attachEvent( "onreadystatechange", completed );
-} else if ( document.attachEvent ) {
- DOMContentLoaded = function() {
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( document.readyState === "complete" ) {
- document.detachEvent( "onreadystatechange", DOMContentLoaded );
- jQuery.ready();
- }
- };
-}
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", completed );
-// The DOM ready check for Internet Explorer
-function doScrollCheck() {
- if ( jQuery.isReady ) {
- return;
- }
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var top = false;
- try {
- // If IE is used, use the trick by Diego Perini
- // http://javascript.nwbox.com/IEContentLoaded/
- document.documentElement.doScroll("left");
- } catch(e) {
- setTimeout( doScrollCheck, 1 );
- return;
- }
+ try {
+ top = window.frameElement == null && document.documentElement;
+ } catch(e) {}
- // and execute any waiting functions
- jQuery.ready();
-}
+ if ( top && top.doScroll ) {
+ (function doScrollCheck() {
+ if ( !jQuery.isReady ) {
-return jQuery;
+ try {
+ // Use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ top.doScroll("left");
+ } catch(e) {
+ return setTimeout( doScrollCheck, 50 );
+ }
-})();
+ // detach all dom ready events
+ detach();
+ // and execute any waiting functions
+ jQuery.ready();
+ }
+ })();
+ }
+ }
+ }
+ return readyList.promise( obj );
+};
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
-// String to Object flags format cache
-var flagsCache = {};
+function isArraylike( obj ) {
+ var length = obj.length,
+ type = jQuery.type( obj );
-// Convert String-formatted flags into Object-formatted ones and store in cache
-function createFlags( flags ) {
- var object = flagsCache[ flags ] = {},
- i, length;
- flags = flags.split( /\s+/ );
- for ( i = 0, length = flags.length; i < length; i++ ) {
- object[ flags[i] ] = true;
+ if ( jQuery.isWindow( obj ) ) {
+ return false;
}
- return object;
+
+ if ( obj.nodeType === 1 && length ) {
+ return true;
+ }
+
+ return type === "array" || type !== "function" &&
+ ( length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj );
}
-/*
- * Create a callback list using the following parameters:
- *
- * flags: an optional list of space-separated flags that will change how
- * the callback list behaves
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible flags:
- *
- * once: will ensure the callback list can only be fired once (like a Deferred)
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+/*!
+ * Sizzle CSS Selector Engine v1.10.2
+ * http://sizzlejs.com/
*
- * memory: will keep track of previous values and will call any callback added
- * after the list has been fired right away with the latest "memorized"
- * values (like a Deferred)
- *
- * unique: will ensure a callback can only be added once (no duplicate in the list)
- *
- * stopOnFalse: interrupt callings when a callback returns false
+ * Copyright 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
*
+ * Date: 2013-07-03
*/
-jQuery.Callbacks = function( flags ) {
+(function( window, undefined ) {
- // Convert flags from String-formatted to Object-formatted
- // (we check in cache first)
- flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
+var i,
+ support,
+ cachedruns,
+ Expr,
+ getText,
+ isXML,
+ compile,
+ outermostContext,
+ sortInput,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + -(new Date()),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ hasDuplicate = false,
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+ return 0;
+ },
- var // Actual callback list
- list = [],
- // Stack of fire calls for repeatable lists
- stack = [],
- // Last fire value (for non-forgettable lists)
- memory,
- // Flag to know if list was already fired
- fired,
- // Flag to know if list is currently firing
- firing,
- // First callback to fire (used internally by add and fireWith)
- firingStart,
- // End of the loop when firing
- firingLength,
- // Index of currently firing callback (modified by remove if needed)
- firingIndex,
- // Add one or several callbacks to the list
- add = function( args ) {
- var i,
- length,
- elem,
- type,
- actual;
- for ( i = 0, length = args.length; i < length; i++ ) {
- elem = args[ i ];
- type = jQuery.type( elem );
- if ( type === "array" ) {
- // Inspect recursively
- add( elem );
- } else if ( type === "function" ) {
- // Add if not in unique mode and callback is not in
- if ( !flags.unique || !self.has( elem ) ) {
- list.push( elem );
- }
- }
- }
- },
- // Fire callbacks
- fire = function( context, args ) {
- args = args || [];
- memory = !flags.memory || [ context, args ];
- fired = true;
- firing = true;
- firingIndex = firingStart || 0;
- firingStart = 0;
- firingLength = list.length;
- for ( ; list && firingIndex < firingLength; firingIndex++ ) {
- if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
- memory = true; // Mark as halted
- break;
- }
- }
- firing = false;
- if ( list ) {
- if ( !flags.once ) {
- if ( stack && stack.length ) {
- memory = stack.shift();
- self.fireWith( memory[ 0 ], memory[ 1 ] );
- }
- } else if ( memory === true ) {
- self.disable();
- } else {
- list = [];
- }
- }
- },
- // Actual Callbacks object
- self = {
- // Add a callback or a collection of callbacks to the list
- add: function() {
- if ( list ) {
- var length = list.length;
- add( arguments );
- // Do we need to add the callbacks to the
- // current firing batch?
- if ( firing ) {
- firingLength = list.length;
- // With memory, if we're not firing then
- // we should call right away, unless previous
- // firing was halted (stopOnFalse)
- } else if ( memory && memory !== true ) {
- firingStart = length;
- fire( memory[ 0 ], memory[ 1 ] );
- }
- }
- return this;
- },
- // Remove a callback from the list
- remove: function() {
- if ( list ) {
- var args = arguments,
- argIndex = 0,
- argLength = args.length;
- for ( ; argIndex < argLength ; argIndex++ ) {
- for ( var i = 0; i < list.length; i++ ) {
- if ( args[ argIndex ] === list[ i ] ) {
- // Handle firingIndex and firingLength
- if ( firing ) {
- if ( i <= firingLength ) {
- firingLength--;
- if ( i <= firingIndex ) {
- firingIndex--;
- }
- }
- }
- // Remove the element
- list.splice( i--, 1 );
- // If we have some unicity property then
- // we only need to do this once
- if ( flags.unique ) {
- break;
- }
- }
- }
- }
- }
- return this;
- },
- // Control if a given callback is in the list
- has: function( fn ) {
- if ( list ) {
- var i = 0,
- length = list.length;
- for ( ; i < length; i++ ) {
- if ( fn === list[ i ] ) {
- return true;
- }
- }
- }
- return false;
- },
- // Remove all callbacks from the list
- empty: function() {
- list = [];
- return this;
- },
- // Have the list do nothing anymore
- disable: function() {
- list = stack = memory = undefined;
- return this;
- },
- // Is it disabled?
- disabled: function() {
- return !list;
- },
- // Lock the list in its current state
- lock: function() {
- stack = undefined;
- if ( !memory || memory === true ) {
- self.disable();
- }
- return this;
- },
- // Is it locked?
- locked: function() {
- return !stack;
- },
- // Call all callbacks with the given context and arguments
- fireWith: function( context, args ) {
- if ( stack ) {
- if ( firing ) {
- if ( !flags.once ) {
- stack.push( [ context, args ] );
- }
- } else if ( !( flags.once && memory ) ) {
- fire( context, args );
- }
- }
- return this;
- },
- // Call all the callbacks with the given arguments
- fire: function() {
- self.fireWith( this, arguments );
- return this;
- },
- // To know if the callbacks have already been called at least once
- fired: function() {
- return !!fired;
+ // General-purpose constants
+ strundefined = typeof undefined,
+ MAX_NEGATIVE = 1 << 31,
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf if we can't use a native one
+ indexOf = arr.indexOf || function( elem ) {
+ var i = 0,
+ len = this.length;
+ for ( ; i < len; i++ ) {
+ if ( this[i] === elem ) {
+ return i;
}
- };
+ }
+ return -1;
+ },
- return self;
-};
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+ // http://www.w3.org/TR/css3-syntax/#characters
+ characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+ // Loosely modeled on CSS identifier characters
+ // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+ // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = characterEncoding.replace( "w", "w#" ),
+
+ // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
+ "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
+
+ // Prefer arguments quoted,
+ // then not containing pseudos/brackets,
+ // then attribute selectors/non-parenthetical expressions,
+ // then anything else
+ // These preferences are here to reduce the number of selectors
+ // needing tokenize in the PSEUDO preFilter
+ pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rsibling = new RegExp( whitespace + "*[+~]" ),
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + characterEncoding + ")" ),
+ "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+ "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rescape = /'|\\/g,
+
+ // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ // BMP codepoint
+ high < 0 ?
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ };
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
-var // Static reference to slice
- sliceDeferred = [].slice;
+function Sizzle( selector, context, results, seed ) {
+ var match, elem, m, nodeType,
+ // QSA vars
+ i, groups, old, nid, newContext, newSelector;
-jQuery.extend({
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
- Deferred: function( func ) {
- var doneList = jQuery.Callbacks( "once memory" ),
- failList = jQuery.Callbacks( "once memory" ),
- progressList = jQuery.Callbacks( "memory" ),
- state = "pending",
- lists = {
- resolve: doneList,
- reject: failList,
- notify: progressList
- },
- promise = {
- done: doneList.add,
- fail: failList.add,
- progress: progressList.add,
+ context = context || document;
+ results = results || [];
- state: function() {
- return state;
- },
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
- // Deprecated
- isResolved: doneList.fired,
- isRejected: failList.fired,
+ if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+ return [];
+ }
- then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
- deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
- return this;
- },
- always: function() {
- deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
- return this;
- },
- pipe: function( fnDone, fnFail, fnProgress ) {
- return jQuery.Deferred(function( newDefer ) {
- jQuery.each( {
- done: [ fnDone, "resolve" ],
- fail: [ fnFail, "reject" ],
- progress: [ fnProgress, "notify" ]
- }, function( handler, data ) {
- var fn = data[ 0 ],
- action = data[ 1 ],
- returned;
- if ( jQuery.isFunction( fn ) ) {
- deferred[ handler ](function() {
- returned = fn.apply( this, arguments );
- if ( returned && jQuery.isFunction( returned.promise ) ) {
- returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
- } else {
- newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
- }
- });
- } else {
- deferred[ handler ]( newDefer[ action ] );
- }
- });
- }).promise();
- },
- // Get a promise for this deferred
- // If obj is provided, the promise aspect is added to the object
- promise: function( obj ) {
- if ( obj == null ) {
- obj = promise;
- } else {
- for ( var key in promise ) {
- obj[ key ] = promise[ key ];
+ if ( documentIsHTML && !seed ) {
+
+ // Shortcuts
+ if ( (match = rquickExpr.exec( selector )) ) {
+ // Speed-up: Sizzle("#ID")
+ if ( (m = match[1]) ) {
+ if ( nodeType === 9 ) {
+ elem = context.getElementById( m );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE, Opera, and Webkit return items
+ // by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
}
+ } else {
+ return results;
+ }
+ } else {
+ // Context is not a document
+ if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+ contains( context, elem ) && elem.id === m ) {
+ results.push( elem );
+ return results;
}
- return obj;
}
- },
- deferred = promise.promise({}),
- key;
-
- for ( key in lists ) {
- deferred[ key ] = lists[ key ].fire;
- deferred[ key + "With" ] = lists[ key ].fireWith;
- }
- // Handle state
- deferred.done( function() {
- state = "resolved";
- }, failList.disable, progressList.lock ).fail( function() {
- state = "rejected";
- }, doneList.disable, progressList.lock );
+ // Speed-up: Sizzle("TAG")
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
- // Call given func if any
- if ( func ) {
- func.call( deferred, deferred );
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
}
- // All done!
- return deferred;
- },
+ // QSA path
+ if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+ nid = old = expando;
+ newContext = context;
+ newSelector = nodeType === 9 && selector;
- // Deferred helper
- when: function( firstParam ) {
- var args = sliceDeferred.call( arguments, 0 ),
- i = 0,
- length = args.length,
- pValues = new Array( length ),
- count = length,
- pCount = length,
- deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
- firstParam :
- jQuery.Deferred(),
- promise = deferred.promise();
- function resolveFunc( i ) {
- return function( value ) {
- args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
- if ( !( --count ) ) {
- deferred.resolveWith( deferred, args );
- }
- };
- }
- function progressFunc( i ) {
- return function( value ) {
- pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
- deferred.notifyWith( promise, pValues );
- };
- }
- if ( length > 1 ) {
- for ( ; i < length; i++ ) {
- if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
- args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ groups = tokenize( selector );
+
+ if ( (old = context.getAttribute("id")) ) {
+ nid = old.replace( rescape, "\\$&" );
} else {
- --count;
+ context.setAttribute( "id", nid );
+ }
+ nid = "[id='" + nid + "'] ";
+
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = nid + toSelector( groups[i] );
}
+ newContext = rsibling.test( selector ) && context.parentNode || context;
+ newSelector = groups.join(",");
}
- if ( !count ) {
- deferred.resolveWith( deferred, args );
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch(qsaError) {
+ } finally {
+ if ( !old ) {
+ context.removeAttribute("id");
+ }
+ }
}
- } else if ( deferred !== firstParam ) {
- deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
}
- return promise;
}
-});
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key += " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key ] = value);
+ }
+ return cache;
+}
-jQuery.support = (function() {
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
- var support,
- all,
- a,
- select,
- opt,
- input,
- fragment,
- tds,
- events,
- eventName,
- i,
- isSupported,
- div = document.createElement( "div" ),
- documentElement = document.documentElement;
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+ var div = document.createElement("div");
- // Preliminary tests
- div.setAttribute("className", "t");
- div.innerHTML = " a ";
+ try {
+ return !!fn( div );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( div.parentNode ) {
+ div.parentNode.removeChild( div );
+ }
+ // release memory in IE
+ div = null;
+ }
+}
- all = div.getElementsByTagName( "*" );
- a = div.getElementsByTagName( "a" )[ 0 ];
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = attrs.length;
- // Can't get basic test support
- if ( !all || !all.length || !a ) {
- return {};
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
}
+}
- // First batch of supports tests
- select = document.createElement( "select" );
- opt = select.appendChild( document.createElement("option") );
- input = div.getElementsByTagName( "input" )[ 0 ];
-
- support = {
- // IE strips leading whitespace when .innerHTML is used
- leadingWhitespace: ( div.firstChild.nodeType === 3 ),
-
- // Make sure that tbody elements aren't automatically inserted
- // IE will insert them into empty tables
- tbody: !div.getElementsByTagName("tbody").length,
-
- // Make sure that link elements get serialized correctly by innerHTML
- // This requires a wrapper element in IE
- htmlSerialize: !!div.getElementsByTagName("link").length,
-
- // Get the style information from getAttribute
- // (IE uses .cssText instead)
- style: /top/.test( a.getAttribute("style") ),
-
- // Make sure that URLs aren't manipulated
- // (IE normalizes it by default)
- hrefNormalized: ( a.getAttribute("href") === "/a" ),
-
- // Make sure that element opacity exists
- // (IE uses filter instead)
- // Use a regex to work around a WebKit issue. See #5145
- opacity: /^0.55/.test( a.style.opacity ),
-
- // Verify style float existence
- // (IE uses styleFloat instead of cssFloat)
- cssFloat: !!a.style.cssFloat,
-
- // Make sure that if no value is specified for a checkbox
- // that it defaults to "on".
- // (WebKit defaults to "" instead)
- checkOn: ( input.value === "on" ),
-
- // Make sure that a selected-by-default option has a working selected property.
- // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
- optSelected: opt.selected,
-
- // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
- getSetAttribute: div.className !== "t",
-
- // Tests for enctype support on a form(#6743)
- enctype: !!document.createElement("form").enctype,
-
- // Makes sure cloning an html5 element does not cause problems
- // Where outerHTML is undefined, this still works
- html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>",
-
- // Will be defined later
- submitBubbles: true,
- changeBubbles: true,
- focusinBubbles: false,
- deleteExpando: true,
- noCloneEvent: true,
- inlineBlockNeedsLayout: false,
- shrinkWrapBlocks: false,
- reliableMarginRight: true,
- pixelMargin: true
- };
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ ( ~b.sourceIndex || MAX_NEGATIVE ) -
+ ( ~a.sourceIndex || MAX_NEGATIVE );
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
- // jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead
- jQuery.boxModel = support.boxModel = (document.compatMode === "CSS1Compat");
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
- // Make sure checked status is properly cloned
- input.checked = true;
- support.noCloneChecked = input.cloneNode( true ).checked;
+ return a ? 1 : -1;
+}
- // Make sure that the options inside disabled selects aren't marked as disabled
- // (WebKit marks them as disabled)
- select.disabled = true;
- support.optDisabled = !opt.disabled;
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
- // Test to see if it's possible to delete an expando from an element
- // Fails in Internet Explorer
- try {
- delete div.test;
- } catch( e ) {
- support.deleteExpando = false;
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Detect xml
+ * @param {Element|Object} elem An element or a document
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var doc = node ? node.ownerDocument || node : preferredDoc,
+ parent = doc.defaultView;
+
+ // If no document and documentElement is available, return
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
}
- if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
- div.attachEvent( "onclick", function() {
- // Cloning a node shouldn't copy over any
- // bound event handlers (IE does this)
- support.noCloneEvent = false;
+ // Set our document
+ document = doc;
+ docElem = doc.documentElement;
+
+ // Support tests
+ documentIsHTML = !isXML( doc );
+
+ // Support: IE>8
+ // If iframe document is assigned to "document" variable and if iframe has been reloaded,
+ // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+ // IE6-8 do not support the defaultView property so parent will be undefined
+ if ( parent && parent.attachEvent && parent !== parent.top ) {
+ parent.attachEvent( "onbeforeunload", function() {
+ setDocument();
});
- div.cloneNode( true ).fireEvent( "onclick" );
}
- // Check if a radio maintains its value
- // after being appended to the DOM
- input = document.createElement("input");
- input.value = "t";
- input.setAttribute("type", "radio");
- support.radioValue = input.value === "t";
+ /* Attributes
+ ---------------------------------------------------------------------- */
- input.setAttribute("checked", "checked");
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
+ support.attributes = assert(function( div ) {
+ div.className = "i";
+ return !div.getAttribute("className");
+ });
- // #11217 - WebKit loses check when the name is after the checked attribute
- input.setAttribute( "name", "t" );
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
- div.appendChild( input );
- fragment = document.createDocumentFragment();
- fragment.appendChild( div.lastChild );
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( div ) {
+ div.appendChild( doc.createComment("") );
+ return !div.getElementsByTagName("*").length;
+ });
- // WebKit doesn't clone checked state correctly in fragments
- support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+ // Check if getElementsByClassName can be trusted
+ support.getElementsByClassName = assert(function( div ) {
+ div.innerHTML = "
";
- // Check if a disconnected checkbox will retain its checked
- // value of true after appended to the DOM (IE6/7)
- support.appendChecked = input.checked;
+ // Support: Safari<4
+ // Catch class over-caching
+ div.firstChild.className = "i";
+ // Support: Opera<10
+ // Catch gEBCN failure to find non-leading classes
+ return div.getElementsByClassName("i").length === 2;
+ });
- fragment.removeChild( input );
- fragment.appendChild( div );
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( div ) {
+ docElem.appendChild( div ).id = expando;
+ return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+ });
- // Technique from Juriy Zaytsev
- // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
- // We only care about the case where non-standard event systems
- // are used, namely in IE. Short-circuiting here helps us to
- // avoid an eval call (in setAttribute) which can cause CSP
- // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
- if ( div.attachEvent ) {
- for ( i in {
- submit: 1,
- change: 1,
- focusin: 1
- }) {
- eventName = "on" + i;
- isSupported = ( eventName in div );
- if ( !isSupported ) {
- div.setAttribute( eventName, "return;" );
- isSupported = ( typeof div[ eventName ] === "function" );
+ // ID find and filter
+ if ( support.getById ) {
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
+ var m = context.getElementById( id );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
}
- support[ i + "Bubbles" ] = isSupported;
- }
+ };
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ } else {
+ // Support: IE6/7
+ // getElementById is not reliable as a find shortcut
+ delete Expr.find["ID"];
+
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
}
- fragment.removeChild( div );
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== strundefined ) {
+ return context.getElementsByTagName( tag );
+ }
+ } :
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ results = context.getElementsByTagName( tag );
- // Null elements to avoid leaks in IE
- fragment = select = opt = div = input = null;
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
- // Run tests that need a body at doc ready
- jQuery(function() {
- var container, outer, inner, table, td, offsetSupport,
- marginDiv, conMarginTop, style, html, positionTopLeftWidthHeight,
- paddingMarginBorderVisibility, paddingMarginBorder,
- body = document.getElementsByTagName("body")[0];
+ return tmp;
+ }
+ return results;
+ };
- if ( !body ) {
- // Return for frameset docs that don't have a body
- return;
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
+ return context.getElementsByClassName( className );
}
+ };
- conMarginTop = 1;
- paddingMarginBorder = "padding:0;margin:0;border:";
- positionTopLeftWidthHeight = "position:absolute;top:0;left:0;width:1px;height:1px;";
- paddingMarginBorderVisibility = paddingMarginBorder + "0;visibility:hidden;";
- style = "style='" + positionTopLeftWidthHeight + paddingMarginBorder + "5px solid #000;";
- html = "" +
- "";
-
- container = document.createElement("div");
- container.style.cssText = paddingMarginBorderVisibility + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";
- body.insertBefore( container, body.firstChild );
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
- // Construct the test element
- div = document.createElement("div");
- container.appendChild( div );
+ // QSA and matchesSelector support
- // Check if table cells still have offsetWidth/Height when they are set
- // to display:none and there are still other visible table cells in a
- // table row; if so, offsetWidth/Height are not reliable for use when
- // determining if an element has been hidden directly using
- // display:none (it is still safe to use offsets if a parent element is
- // hidden; don safety goggles and see bug #4512 for more information).
- // (only IE 8 fails this test)
- div.innerHTML = "";
- tds = div.getElementsByTagName( "td" );
- isSupported = ( tds[ 0 ].offsetHeight === 0 );
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
- tds[ 0 ].style.display = "";
- tds[ 1 ].style.display = "none";
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See http://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
- // Check if empty table cells still have offsetWidth/Height
- // (IE <= 8 fail this test)
- support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+ if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( div ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // http://bugs.jquery.com/ticket/12359
+ div.innerHTML = " ";
- // Check if div with explicit width and no margin-right incorrectly
- // gets computed margin-right based on width of container. For more
- // info see bug #3333
- // Fails in WebKit before Feb 2011 nightlies
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- if ( window.getComputedStyle ) {
- div.innerHTML = "";
- marginDiv = document.createElement( "div" );
- marginDiv.style.width = "0";
- marginDiv.style.marginRight = "0";
- div.style.width = "2px";
- div.appendChild( marginDiv );
- support.reliableMarginRight =
- ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
- }
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !div.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
- if ( typeof div.style.zoom !== "undefined" ) {
- // Check if natively block-level elements act like inline-block
- // elements when setting their display to 'inline' and giving
- // them layout
- // (IE < 8 does this)
- div.innerHTML = "";
- div.style.width = div.style.padding = "1px";
- div.style.border = 0;
- div.style.overflow = "hidden";
- div.style.display = "inline";
- div.style.zoom = 1;
- support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+ });
- // Check if elements with layout shrink-wrap their children
- // (IE 6 does this)
- div.style.display = "block";
- div.style.overflow = "visible";
- div.innerHTML = "
";
- support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
- }
+ assert(function( div ) {
- div.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility;
- div.innerHTML = html;
+ // Support: Opera 10-12/IE8
+ // ^= $= *= and empty values
+ // Should not select anything
+ // Support: Windows 8 Native Apps
+ // The type attribute is restricted during .innerHTML assignment
+ var input = doc.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ div.appendChild( input ).setAttribute( "t", "" );
- outer = div.firstChild;
- inner = outer.firstChild;
- td = outer.nextSibling.firstChild.firstChild;
+ if ( div.querySelectorAll("[t^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
- offsetSupport = {
- doesNotAddBorder: ( inner.offsetTop !== 5 ),
- doesAddBorderForTableAndCells: ( td.offsetTop === 5 )
- };
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":enabled").length ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
- inner.style.position = "fixed";
- inner.style.top = "20px";
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ div.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
- // safari subtracts parent border width here which is 5px
- offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );
- inner.style.position = inner.style.top = "";
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
- outer.style.overflow = "hidden";
- outer.style.position = "relative";
+ assert(function( div ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( div, "div" );
- offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );
- offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( div, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
- if ( window.getComputedStyle ) {
- div.style.marginTop = "1%";
- support.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== "1%";
- }
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+
+ // Element contains another
+ // Purposefully does not implement inclusive descendent
+ // As in, an element does not contain itself
+ contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
- if ( typeof container.style.zoom !== "undefined" ) {
- container.style.zoom = 1;
- }
+ /* Sorting
+ ---------------------------------------------------------------------- */
- body.removeChild( container );
- marginDiv = div = container = null;
+ // Document order sorting
+ sortOrder = docElem.compareDocumentPosition ?
+ function( a, b ) {
- jQuery.extend( support, offsetSupport );
- });
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
- return support;
-})();
+ var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b );
+ if ( compare ) {
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+ // Choose the first element that is related to our preferred document
+ if ( a === doc || contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === doc || contains(preferredDoc, b) ) {
+ return 1;
+ }
+ // Maintain original order
+ return sortInput ?
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ 0;
+ }
-var rbrace = /^(?:\{.*\}|\[.*\])$/,
- rmultiDash = /([A-Z])/g;
+ return compare & 4 ? -1 : 1;
+ }
-jQuery.extend({
- cache: {},
+ // Not directly comparable, sort on existence of method
+ return a.compareDocumentPosition ? -1 : 1;
+ } :
+ function( a, b ) {
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
- // Please use with caution
- uuid: 0,
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
- // Unique for each copy of jQuery on the page
- // Non-digits removed to match rinlinejQuery
- expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
+ // Parentless nodes are either documents or disconnected
+ } else if ( !aup || !bup ) {
+ return a === doc ? -1 :
+ b === doc ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ 0;
- // The following elements throw uncatchable exceptions if you
- // attempt to add expando properties to them.
- noData: {
- "embed": true,
- // Ban all objects except for Flash (which handle expandos)
- "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
- "applet": true
- },
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
- hasData: function( elem ) {
- elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
- return !!elem && !isEmptyDataObject( elem );
- },
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
- data: function( elem, name, data, pvt /* Internal Use Only */ ) {
- if ( !jQuery.acceptData( elem ) ) {
- return;
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
}
- var privateCache, thisCache, ret,
- internalKey = jQuery.expando,
- getByName = typeof name === "string",
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
- // We have to handle DOM nodes and JS objects differently because IE6-7
- // can't GC object references properly across the DOM-JS boundary
- isNode = elem.nodeType,
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
- // Only DOM nodes need the global jQuery cache; JS object data is
- // attached directly to the object so GC can occur automatically
- cache = isNode ? jQuery.cache : elem,
+ return doc;
+};
- // Only defining an ID for JS objects if its cache already exists allows
- // the code to shortcut on the same path as a DOM node with no cache
- id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,
- isEvents = name === "events";
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
- // Avoid doing any more work than we need to when trying to get data on an
- // object that has no data at all
- if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {
- return;
- }
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
- if ( !id ) {
- // Only DOM nodes need a new unique ID for each element since their data
- // ends up in the global cache
- if ( isNode ) {
- elem[ internalKey ] = id = ++jQuery.uuid;
- } else {
- id = internalKey;
- }
- }
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
- if ( !cache[ id ] ) {
- cache[ id ] = {};
+ if ( support.matchesSelector && documentIsHTML &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
- // Avoids exposing jQuery metadata on plain JS objects when the object
- // is serialized using JSON.stringify
- if ( !isNode ) {
- cache[ id ].toJSON = jQuery.noop;
- }
- }
+ try {
+ var ret = matches.call( elem, expr );
- // An object can be passed to jQuery.data instead of a key/value pair; this gets
- // shallow copied over onto the existing cache
- if ( typeof name === "object" || typeof name === "function" ) {
- if ( pvt ) {
- cache[ id ] = jQuery.extend( cache[ id ], name );
- } else {
- cache[ id ].data = jQuery.extend( cache[ id ].data, name );
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
}
- }
+ } catch(e) {}
+ }
- privateCache = thisCache = cache[ id ];
+ return Sizzle( expr, document, null, [elem] ).length > 0;
+};
- // jQuery data() is stored in a separate object inside the object's internal data
- // cache in order to avoid key collisions between internal data and user-defined
- // data.
- if ( !pvt ) {
- if ( !thisCache.data ) {
- thisCache.data = {};
- }
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
- thisCache = thisCache.data;
- }
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
- if ( data !== undefined ) {
- thisCache[ jQuery.camelCase( name ) ] = data;
- }
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
- // Users should not attempt to inspect the internal events object using jQuery.data,
- // it is undocumented and subject to change. But does anyone listen? No.
- if ( isEvents && !thisCache[ name ] ) {
- return privateCache.events;
- }
+ return val === undefined ?
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null :
+ val;
+};
- // Check for both converted-to-camel and non-converted data property names
- // If a data property was specified
- if ( getByName ) {
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
- // First Try to find as-is property data
- ret = thisCache[ name ];
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
- // Test for null|undefined property data
- if ( ret == null ) {
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
- // Try to find the camelCased property
- ret = thisCache[ jQuery.camelCase( name ) ];
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
}
- } else {
- ret = thisCache;
}
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
- return ret;
- },
+ return results;
+};
- removeData: function( elem, name, pvt /* Internal Use Only */ ) {
- if ( !jQuery.acceptData( elem ) ) {
- return;
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ for ( ; (node = elem[i]); i++ ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
}
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (see #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
- var thisCache, i, l,
+ return ret;
+};
- // Reference to internal data cache key
- internalKey = jQuery.expando,
+Expr = Sizzle.selectors = {
- isNode = elem.nodeType,
+ // Can be adjusted by the user
+ cacheLength: 50,
- // See jQuery.data for more information
- cache = isNode ? jQuery.cache : elem,
+ createPseudo: markFunction,
- // See jQuery.data for more information
- id = isNode ? elem[ internalKey ] : internalKey;
+ match: matchExpr,
- // If there is already no cache entry for this object, there is no
- // purpose in continuing
- if ( !cache[ id ] ) {
- return;
- }
+ attrHandle: {},
- if ( name ) {
+ find: {},
- thisCache = pvt ? cache[ id ] : cache[ id ].data;
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
- if ( thisCache ) {
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
- // Support array or space separated string names for data keys
- if ( !jQuery.isArray( name ) ) {
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
- // try the string as a key before any manipulation
- if ( name in thisCache ) {
- name = [ name ];
- } else {
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
- // split the camel cased version by spaces unless a key with the spaces exists
- name = jQuery.camelCase( name );
- if ( name in thisCache ) {
- name = [ name ];
- } else {
- name = name.split( " " );
- }
- }
- }
+ return match.slice( 0, 4 );
+ },
- for ( i = 0, l = name.length; i < l; i++ ) {
- delete thisCache[ name[i] ];
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
}
- // If there is no data left in the cache, we want to continue
- // and let the cache object itself get destroyed
- if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
- return;
- }
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
}
- }
- // See jQuery.data for more information
- if ( !pvt ) {
- delete cache[ id ].data;
+ return match;
+ },
- // Don't destroy the parent cache unless the internal data object
- // had been the only thing left in it
- if ( !isEmptyDataObject(cache[ id ]) ) {
- return;
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[5] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
}
- }
- // Browsers that fail expando deletion also refuse to delete expandos on
- // the window, but it will allow it on all other JS objects; other browsers
- // don't care
- // Ensure that `cache` is not a window object #10080
- if ( jQuery.support.deleteExpando || !cache.setInterval ) {
- delete cache[ id ];
- } else {
- cache[ id ] = null;
- }
+ // Accept quoted arguments as-is
+ if ( match[3] && match[4] !== undefined ) {
+ match[2] = match[4];
- // We destroyed the cache and need to eliminate the expando on the node to avoid
- // false lookups in the cache for entries that no longer exist
- if ( isNode ) {
- // IE does not allow us to delete expando properties from nodes,
- // nor does it have a removeAttribute function on Document nodes;
- // we must handle all of these cases
- if ( jQuery.support.deleteExpando ) {
- delete elem[ internalKey ];
- } else if ( elem.removeAttribute ) {
- elem.removeAttribute( internalKey );
- } else {
- elem[ internalKey ] = null;
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
}
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
}
},
- // For internal use only.
- _data: function( elem, name, data ) {
- return jQuery.data( elem, name, data, true );
- },
+ filter: {
- // A method for determining if a DOM node can handle the data expando
- acceptData: function( elem ) {
- if ( elem.nodeName ) {
- var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
- if ( match ) {
- return !(match === true || elem.getAttribute("classid") !== match);
- }
- }
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
- return true;
- }
-});
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
+ });
+ },
-jQuery.fn.extend({
- data: function( key, value ) {
- var parts, part, attr, name, l,
- elem = this[0],
- i = 0,
- data = null;
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
- // Gets all values
- if ( key === undefined ) {
- if ( this.length ) {
- data = jQuery.data( elem );
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
- if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
- attr = elem.attributes;
- for ( l = attr.length; i < l; i++ ) {
- name = attr[i].name;
+ result += "";
- if ( name.indexOf( "data-" ) === 0 ) {
- name = jQuery.camelCase( name.substring(5) );
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
- dataAttr( elem, name, data[ name ] );
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, outerCache, node, diff, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+ // Seek `elem` from a previously-cached index
+ outerCache = parent[ expando ] || (parent[ expando ] = {});
+ cache = outerCache[ type ] || [];
+ nodeIndex = cache[0] === dirruns && cache[1];
+ diff = cache[0] === dirruns && cache[2];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ // Use previously-cached element index if available
+ } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+ diff = cache[1];
+
+ // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ } else {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
}
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
}
- jQuery._data( elem, "parsedAttrs", true );
- }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf.call( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
}
- return data;
+ return fn;
}
+ },
- // Sets multiple values
- if ( typeof key === "object" ) {
- return this.each(function() {
- jQuery.data( this, key );
- });
- }
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
- parts = key.split( ".", 2 );
- parts[1] = parts[1] ? "." + parts[1] : "";
- part = parts[1] + "!";
+ "contains": markFunction(function( text ) {
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
- return jQuery.access( this, function( value ) {
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
- if ( value === undefined ) {
- data = this.triggerHandler( "getData" + part, [ parts[0] ] );
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": function( elem ) {
+ return elem.disabled === false;
+ },
+
+ "disabled": function( elem ) {
+ return elem.disabled === true;
+ },
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
- // Try to fetch any internally stored data first
- if ( data === undefined && elem ) {
- data = jQuery.data( elem, key );
- data = dataAttr( elem, key, data );
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
+ // not comment, processing instructions, or others
+ // Thanks to Diego Perini for the nodeName shortcut
+ // Greater than "@" means alpha characters (specifically not starting with "#" or "?")
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {
+ return false;
}
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
- return data === undefined && parts[1] ?
- this.data( parts[0] ) :
- data;
+ "text": function( elem ) {
+ var attr;
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
}
+ return matchIndexes;
+ }),
- parts[1] = value;
- this.each(function() {
- var self = jQuery( this );
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
- self.triggerHandler( "setData" + part, parts );
- jQuery.data( this, key, value );
- self.triggerHandler( "changeData" + part, parts );
- });
- }, null, value, arguments.length > 1, null, false );
- },
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
- removeData: function( key ) {
- return this.each(function() {
- jQuery.removeData( this, key );
- });
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
}
-});
+};
-function dataAttr( elem, key, data ) {
- // If nothing was found internally, try to fetch any
- // data from the HTML5 data-* attribute
- if ( data === undefined && elem.nodeType === 1 ) {
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
- var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
- data = elem.getAttribute( name );
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
- if ( typeof data === "string" ) {
- try {
- data = data === "true" ? true :
- data === "false" ? false :
- data === "null" ? null :
- jQuery.isNumeric( data ) ? +data :
- rbrace.test( data ) ? jQuery.parseJSON( data ) :
- data;
- } catch( e ) {}
+function tokenize( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
- // Make sure we set the data so it isn't changed later
- jQuery.data( elem, key, data );
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
- } else {
- data = undefined;
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( tokens = [] );
}
- }
- return data;
-}
+ matched = false;
-// checks a cache object for emptiness
-function isEmptyDataObject( obj ) {
- for ( var name in obj ) {
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
- // if the public data object is empty, the private is still empty
- if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
- continue;
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
}
- if ( name !== "toJSON" ) {
- return false;
+
+ if ( !matched ) {
+ break;
}
}
- return true;
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
}
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ checkNonElements = base && dir === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ } :
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var data, cache, outerCache,
+ dirkey = dirruns + " " + doneName;
-function handleQueueMarkDefer( elem, type, src ) {
- var deferDataKey = type + "defer",
- queueDataKey = type + "queue",
- markDataKey = type + "mark",
- defer = jQuery._data( elem, deferDataKey );
- if ( defer &&
- ( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
- ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
- // Give room for hard-coded callbacks to fire first
- // and eventually mark/queue something else on the element
- setTimeout( function() {
- if ( !jQuery._data( elem, queueDataKey ) &&
- !jQuery._data( elem, markDataKey ) ) {
- jQuery.removeData( elem, deferDataKey, true );
- defer.fire();
+ // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+ if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {
+ if ( (data = cache[1]) === true || data === cachedruns ) {
+ return data === true;
+ }
+ } else {
+ cache = outerCache[ dir ] = [ dirkey ];
+ cache[1] = matcher( elem, context, xml ) || cachedruns;
+ if ( cache[1] === true ) {
+ return true;
+ }
+ }
+ }
+ }
}
- }, 0 );
- }
+ };
}
-jQuery.extend({
-
- _mark: function( elem, type ) {
- if ( elem ) {
- type = ( type || "fx" ) + "mark";
- jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
- }
- },
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
- _unmark: function( force, elem, type ) {
- if ( force !== true ) {
- type = elem;
- elem = force;
- force = false;
- }
- if ( elem ) {
- type = type || "fx";
- var key = type + "mark",
- count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
- if ( count ) {
- jQuery._data( elem, key, count );
- } else {
- jQuery.removeData( elem, key, true );
- handleQueueMarkDefer( elem, type, "mark" );
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
}
}
- },
+ }
- queue: function( elem, type, data ) {
- var q;
- if ( elem ) {
- type = ( type || "fx" ) + "queue";
- q = jQuery._data( elem, type );
+ return newUnmatched;
+}
- // Speed up dequeue by getting out quickly if this is just a lookup
- if ( data ) {
- if ( !q || jQuery.isArray(data) ) {
- q = jQuery._data( elem, type, jQuery.makeArray(data) );
- } else {
- q.push( data );
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
}
}
- return q || [];
}
- },
-
- dequeue: function( elem, type ) {
- type = type || "fx";
- var queue = jQuery.queue( elem, type ),
- fn = queue.shift(),
- hooks = {};
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
- // If the fx queue is dequeued, always remove the progress sentinel
- if ( fn === "inprogress" ) {
- fn = queue.shift();
- }
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
- if ( fn ) {
- // Add a progress sentinel to prevent the fx queue from being
- // automatically dequeued
- if ( type === "fx" ) {
- queue.unshift( "inprogress" );
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
}
- jQuery._data( elem, type + ".run", hooks );
- fn.call( elem, function() {
- jQuery.dequeue( elem, type );
- }, hooks );
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
}
+ });
+}
- if ( !queue.length ) {
- jQuery.removeData( elem, type + "queue " + type + ".run", true );
- handleQueueMarkDefer( elem, type, "queue" );
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf.call( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
}
}
-});
-jQuery.fn.extend({
- queue: function( type, data ) {
- var setter = 2;
+ return elementMatcher( matchers );
+}
- if ( typeof type !== "string" ) {
- data = type;
- type = "fx";
- setter--;
- }
-
- if ( arguments.length < setter ) {
- return jQuery.queue( this[0], type );
- }
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ // A counter to specify which element is currently being matched
+ var matcherCachedRuns = 0,
+ bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, expandContext ) {
+ var elem, j, matcher,
+ setMatched = [],
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ outermost = expandContext != null,
+ contextBackup = outermostContext,
+ // We must always have either seed elements or context
+ elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
+
+ if ( outermost ) {
+ outermostContext = context !== document && context;
+ cachedruns = matcherCachedRuns;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+ for ( ; (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context, xml ) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ cachedruns = ++matcherCachedRuns;
+ }
+ }
- return data === undefined ?
- this :
- this.each(function() {
- var queue = jQuery.queue( this, type, data );
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
- if ( type === "fx" && queue[0] !== "inprogress" ) {
- jQuery.dequeue( this, type );
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
}
- });
- },
- dequeue: function( type ) {
- return this.each(function() {
- jQuery.dequeue( this, type );
- });
- },
- // Based off of the plugin by Clint Helfers, with permission.
- // http://blindsignals.com/index.php/2009/07/jquery-delay/
- delay: function( time, type ) {
- time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
- type = type || "fx";
-
- return this.queue( type, function( next, hooks ) {
- var timeout = setTimeout( next, time );
- hooks.stop = function() {
- clearTimeout( timeout );
- };
- });
- },
- clearQueue: function( type ) {
- return this.queue( type || "fx", [] );
- },
- // Get a promise resolved when queues of a certain type
- // are emptied (fx is the type by default)
- promise: function( type, object ) {
- if ( typeof type !== "string" ) {
- object = type;
- type = undefined;
- }
- type = type || "fx";
- var defer = jQuery.Deferred(),
- elements = this,
- i = elements.length,
- count = 1,
- deferDataKey = type + "defer",
- queueDataKey = type + "queue",
- markDataKey = type + "mark",
- tmp;
- function resolve() {
- if ( !( --count ) ) {
- defer.resolveWith( elements, [ elements ] );
- }
- }
- while( i-- ) {
- if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
- ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
- jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
- jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
- count++;
- tmp.add( resolve );
}
- }
- resolve();
- return defer.promise( object );
- }
-});
-
-
-
-var rclass = /[\n\t\r]/g,
- rspace = /\s+/,
- rreturn = /\r/g,
- rtype = /^(?:button|input)$/i,
- rfocusable = /^(?:button|input|object|select|textarea)$/i,
- rclickable = /^a(?:rea)?$/i,
- rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
- getSetAttribute = jQuery.support.getSetAttribute,
- nodeHook, boolHook, fixSpecified;
-
-jQuery.fn.extend({
- attr: function( name, value ) {
- return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
- },
-
- removeAttr: function( name ) {
- return this.each(function() {
- jQuery.removeAttr( this, name );
- });
- },
+ // Apply set filters to unmatched elements
+ matchedCount += i;
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
- prop: function( name, value ) {
- return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
- },
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
- removeProp: function( name ) {
- name = jQuery.propFix[ name ] || name;
- return this.each(function() {
- // try/catch handles cases where IE balks (such as removing a property on window)
- try {
- this[ name ] = undefined;
- delete this[ name ];
- } catch( e ) {}
- });
- },
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
- addClass: function( value ) {
- var classNames, i, l, elem,
- setClass, c, cl;
+ // Add matches to results
+ push.apply( results, setMatched );
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( j ) {
- jQuery( this ).addClass( value.call(this, j, this.className) );
- });
- }
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
- if ( value && typeof value === "string" ) {
- classNames = value.split( rspace );
+ Sizzle.uniqueSort( results );
+ }
+ }
- for ( i = 0, l = this.length; i < l; i++ ) {
- elem = this[ i ];
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
- if ( elem.nodeType === 1 ) {
- if ( !elem.className && classNames.length === 1 ) {
- elem.className = value;
+ return unmatched;
+ };
- } else {
- setClass = " " + elem.className + " ";
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
- for ( c = 0, cl = classNames.length; c < cl; c++ ) {
- if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
- setClass += classNames[ c ] + " ";
- }
- }
- elem.className = jQuery.trim( setClass );
- }
- }
+compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !group ) {
+ group = tokenize( selector );
+ }
+ i = group.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( group[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
}
}
- return this;
- },
-
- removeClass: function( value ) {
- var classNames, i, l, elem, className, c, cl;
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+ }
+ return cached;
+};
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( j ) {
- jQuery( this ).removeClass( value.call(this, j, this.className) );
- });
- }
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
- if ( (value && typeof value === "string") || value === undefined ) {
- classNames = ( value || "" ).split( rspace );
+function select( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ match = tokenize( selector );
- for ( i = 0, l = this.length; i < l; i++ ) {
- elem = this[ i ];
+ if ( !seed ) {
+ // Try to minimize operations if there is only one group
+ if ( match.length === 1 ) {
- if ( elem.nodeType === 1 && elem.className ) {
- if ( value ) {
- className = (" " + elem.className + " ").replace( rclass, " " );
- for ( c = 0, cl = classNames.length; c < cl; c++ ) {
- className = className.replace(" " + classNames[ c ] + " ", " ");
- }
- elem.className = jQuery.trim( className );
+ // Take a shortcut and set the context if the root selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ support.getById && context.nodeType === 9 && documentIsHTML &&
+ Expr.relative[ tokens[1].type ] ) {
- } else {
- elem.className = "";
- }
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
}
+ selector = selector.slice( tokens.shift().value.length );
}
- }
-
- return this;
- },
-
- toggleClass: function( value, stateVal ) {
- var type = typeof value,
- isBool = typeof stateVal === "boolean";
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( i ) {
- jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
- });
- }
- return this.each(function() {
- if ( type === "string" ) {
- // toggle individual class names
- var className,
- i = 0,
- self = jQuery( this ),
- state = stateVal,
- classNames = value.split( rspace );
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
- while ( (className = classNames[ i++ ]) ) {
- // check each className given, space seperated list
- state = isBool ? state : !self.hasClass( className );
- self[ state ? "addClass" : "removeClass" ]( className );
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
}
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && context.parentNode || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
- } else if ( type === "undefined" || type === "boolean" ) {
- if ( this.className ) {
- // store className if set
- jQuery._data( this, "__className__", this.className );
+ break;
+ }
}
-
- // toggle whole className
- this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
- }
- });
- },
-
- hasClass: function( selector ) {
- var className = " " + selector + " ",
- i = 0,
- l = this.length;
- for ( ; i < l; i++ ) {
- if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
- return true;
}
}
+ }
- return false;
- },
+ // Compile and execute a filtering function
+ // Provide `match` to avoid retokenization if we modified the selector above
+ compile( selector, match )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ rsibling.test( selector )
+ );
+ return results;
+}
- val: function( value ) {
- var hooks, ret, isFunction,
- elem = this[0];
+// One-time assignments
- if ( !arguments.length ) {
- if ( elem ) {
- hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
- return ret;
- }
+// Support: Chrome<14
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = hasDuplicate;
- ret = elem.value;
+// Initialize against the default document
+setDocument();
- return typeof ret === "string" ?
- // handle most common string cases
- ret.replace(rreturn, "") :
- // handle cases where value is null/undef or number
- ret == null ? "" : ret;
- }
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+ // Should return 1, but returns 4 (following)
+ return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
- return;
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+ div.innerHTML = " ";
+ return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
}
+ });
+}
- isFunction = jQuery.isFunction( value );
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+ div.innerHTML = " ";
+ div.firstChild.setAttribute( "value", "" );
+ return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
- return this.each(function( i ) {
- var self = jQuery(this), val;
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+ return div.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ elem[ name ] === true ? name.toLowerCase() : null;
+ }
+ });
+}
- if ( this.nodeType !== 1 ) {
- return;
- }
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
- if ( isFunction ) {
- val = value.call( this, i, self.val() );
- } else {
- val = value;
- }
- // Treat null/undefined as ""; convert numbers to string
- if ( val == null ) {
- val = "";
- } else if ( typeof val === "number" ) {
- val += "";
- } else if ( jQuery.isArray( val ) ) {
- val = jQuery.map(val, function ( value ) {
- return value == null ? "" : value + "";
- });
- }
+})( window );
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+ var object = optionsCache[ options ] = {};
+ jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ });
+ return object;
+}
- hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
- // If set returns undefined, fall back to normal setting
- if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
- this.value = val;
- }
- });
- }
-});
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ ( optionsCache[ options ] || createOptions( options ) ) :
+ jQuery.extend( {}, options );
-jQuery.extend({
- valHooks: {
- option: {
- get: function( elem ) {
- // attributes.value is undefined in Blackberry 4.7 but
- // uses .value. See #6932
- var val = elem.attributes.value;
- return !val || val.specified ? elem.value : elem.text;
+ var // Flag to know if list is currently firing
+ firing,
+ // Last fire value (for non-forgettable lists)
+ memory,
+ // Flag to know if list was already fired
+ fired,
+ // End of the loop when firing
+ firingLength,
+ // Index of currently firing callback (modified by remove if needed)
+ firingIndex,
+ // First callback to fire (used internally by add and fireWith)
+ firingStart,
+ // Actual callback list
+ list = [],
+ // Stack of fire calls for repeatable lists
+ stack = !options.once && [],
+ // Fire callbacks
+ fire = function( data ) {
+ memory = options.memory && data;
+ fired = true;
+ firingIndex = firingStart || 0;
+ firingStart = 0;
+ firingLength = list.length;
+ firing = true;
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+ if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+ memory = false; // To prevent further calls using add
+ break;
+ }
+ }
+ firing = false;
+ if ( list ) {
+ if ( stack ) {
+ if ( stack.length ) {
+ fire( stack.shift() );
+ }
+ } else if ( memory ) {
+ list = [];
+ } else {
+ self.disable();
+ }
}
},
- select: {
- get: function( elem ) {
- var value, i, max, option,
- index = elem.selectedIndex,
- values = [],
- options = elem.options,
- one = elem.type === "select-one";
-
- // Nothing was selected
- if ( index < 0 ) {
- return null;
+ // Actual Callbacks object
+ self = {
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+ // First, we save the current length
+ var start = list.length;
+ (function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ var type = jQuery.type( arg );
+ if ( type === "function" ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && type !== "string" ) {
+ // Inspect recursively
+ add( arg );
+ }
+ });
+ })( arguments );
+ // Do we need to add the callbacks to the
+ // current firing batch?
+ if ( firing ) {
+ firingLength = list.length;
+ // With memory, if we're not firing then
+ // we should call right away
+ } else if ( memory ) {
+ firingStart = start;
+ fire( memory );
+ }
}
-
- // Loop through all the selected options
- i = one ? index : 0;
- max = one ? index + 1 : options.length;
- for ( ; i < max; i++ ) {
- option = options[ i ];
-
- // Don't return options that are disabled or in a disabled optgroup
- if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
- (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
-
- // Get the specific value for the option
- value = jQuery( option ).val();
-
- // We don't need an array for one selects
- if ( one ) {
- return value;
+ return this;
+ },
+ // Remove a callback from the list
+ remove: function() {
+ if ( list ) {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+ // Handle firing indexes
+ if ( firing ) {
+ if ( index <= firingLength ) {
+ firingLength--;
+ }
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
}
-
- // Multi-Selects return an array
- values.push( value );
+ });
+ }
+ return this;
+ },
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
+ },
+ // Remove all callbacks from the list
+ empty: function() {
+ list = [];
+ firingLength = 0;
+ return this;
+ },
+ // Have the list do nothing anymore
+ disable: function() {
+ list = stack = memory = undefined;
+ return this;
+ },
+ // Is it disabled?
+ disabled: function() {
+ return !list;
+ },
+ // Lock the list in its current state
+ lock: function() {
+ stack = undefined;
+ if ( !memory ) {
+ self.disable();
+ }
+ return this;
+ },
+ // Is it locked?
+ locked: function() {
+ return !stack;
+ },
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( list && ( !fired || stack ) ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ if ( firing ) {
+ stack.push( args );
+ } else {
+ fire( args );
}
}
+ return this;
+ },
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
- // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
- if ( one && !values.length && options.length ) {
- return jQuery( options[ index ] ).val();
- }
+ return self;
+};
+jQuery.extend({
- return values;
+ Deferred: function( func ) {
+ var tuples = [
+ // action, add listener, listener list, final state
+ [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
+ [ "notify", "progress", jQuery.Callbacks("memory") ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ then: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+ return jQuery.Deferred(function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+ var action = tuple[ 0 ],
+ fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
+ // deferred[ done | fail | progress ] for forwarding actions to newDefer
+ deferred[ tuple[1] ](function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise()
+ .done( newDefer.resolve )
+ .fail( newDefer.reject )
+ .progress( newDefer.notify );
+ } else {
+ newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
+ }
+ });
+ });
+ fns = null;
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
},
+ deferred = {};
- set: function( elem, value ) {
- var values = jQuery.makeArray( value );
+ // Keep pipe for back-compat
+ promise.pipe = promise.then;
- jQuery(elem).find("option").each(function() {
- this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
- });
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 3 ];
- if ( !values.length ) {
- elem.selectedIndex = -1;
- }
- return values;
+ // promise[ done | fail | progress ] = list.add
+ promise[ tuple[1] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add(function() {
+ // state = [ resolved | rejected ]
+ state = stateString;
+
+ // [ reject_list | resolve_list ].disable; progress_list.lock
+ }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
}
+
+ // deferred[ resolve | reject | notify ]
+ deferred[ tuple[0] ] = function() {
+ deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
+ return this;
+ };
+ deferred[ tuple[0] + "With" ] = list.fireWith;
+ });
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
}
- },
- attrFn: {
- val: true,
- css: true,
- html: true,
- text: true,
- data: true,
- width: true,
- height: true,
- offset: true
+ // All done!
+ return deferred;
},
- attr: function( elem, name, value, pass ) {
- var ret, hooks, notxml,
- nType = elem.nodeType;
+ // Deferred helper
+ when: function( subordinate /* , ..., subordinateN */ ) {
+ var i = 0,
+ resolveValues = core_slice.call( arguments ),
+ length = resolveValues.length,
+
+ // the count of uncompleted subordinates
+ remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
+
+ // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
+ deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
+
+ // Update function for both resolve and progress values
+ updateFunc = function( i, contexts, values ) {
+ return function( value ) {
+ contexts[ i ] = this;
+ values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
+ if( values === progressValues ) {
+ deferred.notifyWith( contexts, values );
+ } else if ( !( --remaining ) ) {
+ deferred.resolveWith( contexts, values );
+ }
+ };
+ },
- // don't get/set attributes on text, comment and attribute nodes
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
- return;
- }
+ progressValues, progressContexts, resolveContexts;
- if ( pass && name in jQuery.attrFn ) {
- return jQuery( elem )[ name ]( value );
+ // add listeners to Deferred subordinates; treat others as resolved
+ if ( length > 1 ) {
+ progressValues = new Array( length );
+ progressContexts = new Array( length );
+ resolveContexts = new Array( length );
+ for ( ; i < length; i++ ) {
+ if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
+ resolveValues[ i ].promise()
+ .done( updateFunc( i, resolveContexts, resolveValues ) )
+ .fail( deferred.reject )
+ .progress( updateFunc( i, progressContexts, progressValues ) );
+ } else {
+ --remaining;
+ }
+ }
}
- // Fallback to prop when attributes are not supported
- if ( typeof elem.getAttribute === "undefined" ) {
- return jQuery.prop( elem, name, value );
+ // if we're not waiting on anything, resolve the master
+ if ( !remaining ) {
+ deferred.resolveWith( resolveContexts, resolveValues );
}
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
- // All attributes are lowercase
- // Grab necessary hook if one is defined
- if ( notxml ) {
- name = name.toLowerCase();
- hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
- }
+ return deferred.promise();
+ }
+});
+jQuery.support = (function( support ) {
- if ( value !== undefined ) {
+ var all, a, input, select, fragment, opt, eventName, isSupported, i,
+ div = document.createElement("div");
- if ( value === null ) {
- jQuery.removeAttr( elem, name );
- return;
+ // Setup
+ div.setAttribute( "className", "t" );
+ div.innerHTML = " a ";
- } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
- return ret;
+ // Finish early in limited (non-browser) environments
+ all = div.getElementsByTagName("*") || [];
+ a = div.getElementsByTagName("a")[ 0 ];
+ if ( !a || !a.style || !all.length ) {
+ return support;
+ }
- } else {
- elem.setAttribute( name, "" + value );
- return value;
- }
+ // First batch of tests
+ select = document.createElement("select");
+ opt = select.appendChild( document.createElement("option") );
+ input = div.getElementsByTagName("input")[ 0 ];
- } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
- return ret;
+ a.style.cssText = "top:1px;float:left;opacity:.5";
- } else {
+ // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+ support.getSetAttribute = div.className !== "t";
- ret = elem.getAttribute( name );
+ // IE strips leading whitespace when .innerHTML is used
+ support.leadingWhitespace = div.firstChild.nodeType === 3;
- // Non-existent attributes return null, we normalize to undefined
- return ret === null ?
- undefined :
- ret;
- }
- },
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ support.tbody = !div.getElementsByTagName("tbody").length;
- removeAttr: function( elem, value ) {
- var propName, attrNames, name, l, isBool,
- i = 0;
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ support.htmlSerialize = !!div.getElementsByTagName("link").length;
- if ( value && elem.nodeType === 1 ) {
- attrNames = value.toLowerCase().split( rspace );
- l = attrNames.length;
+ // Get the style information from getAttribute
+ // (IE uses .cssText instead)
+ support.style = /top/.test( a.getAttribute("style") );
- for ( ; i < l; i++ ) {
- name = attrNames[ i ];
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ support.hrefNormalized = a.getAttribute("href") === "/a";
- if ( name ) {
- propName = jQuery.propFix[ name ] || name;
- isBool = rboolean.test( name );
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ support.opacity = /^0.5/.test( a.style.opacity );
- // See #9699 for explanation of this approach (setting first, then removal)
- // Do not do this for boolean attributes (see #10870)
- if ( !isBool ) {
- jQuery.attr( elem, name, "" );
- }
- elem.removeAttribute( getSetAttribute ? name : propName );
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ support.cssFloat = !!a.style.cssFloat;
- // Set corresponding property to false for boolean attributes
- if ( isBool && propName in elem ) {
- elem[ propName ] = false;
- }
- }
- }
- }
- },
+ // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
+ support.checkOn = !!input.value;
- attrHooks: {
- type: {
- set: function( elem, value ) {
- // We can't allow the type property to be changed (since it causes problems in IE)
- if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
- jQuery.error( "type property can't be changed" );
- } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
- // Setting the type on a radio button after the value resets the value in IE6-9
- // Reset value to it's default in case type is set after value
- // This is for element creation
- var val = elem.value;
- elem.setAttribute( "type", value );
- if ( val ) {
- elem.value = val;
- }
- return value;
- }
- }
- },
- // Use the value property for back compat
- // Use the nodeHook for button elements in IE6/7 (#1954)
- value: {
- get: function( elem, name ) {
- if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
- return nodeHook.get( elem, name );
- }
- return name in elem ?
- elem.value :
- null;
- },
- set: function( elem, value, name ) {
- if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
- return nodeHook.set( elem, value, name );
- }
- // Does not return so that setAttribute is also used
- elem.value = value;
- }
- }
- },
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ support.optSelected = opt.selected;
- propFix: {
- tabindex: "tabIndex",
- readonly: "readOnly",
- "for": "htmlFor",
- "class": "className",
- maxlength: "maxLength",
- cellspacing: "cellSpacing",
- cellpadding: "cellPadding",
- rowspan: "rowSpan",
- colspan: "colSpan",
- usemap: "useMap",
- frameborder: "frameBorder",
- contenteditable: "contentEditable"
- },
+ // Tests for enctype support on a form (#6743)
+ support.enctype = !!document.createElement("form").enctype;
- prop: function( elem, name, value ) {
- var ret, hooks, notxml,
- nType = elem.nodeType;
+ // Makes sure cloning an html5 element does not cause problems
+ // Where outerHTML is undefined, this still works
+ support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>";
- // don't get/set properties on text, comment and attribute nodes
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
- return;
- }
+ // Will be defined later
+ support.inlineBlockNeedsLayout = false;
+ support.shrinkWrapBlocks = false;
+ support.pixelPosition = false;
+ support.deleteExpando = true;
+ support.noCloneEvent = true;
+ support.reliableMarginRight = true;
+ support.boxSizingReliable = true;
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+ // Make sure checked status is properly cloned
+ input.checked = true;
+ support.noCloneChecked = input.cloneNode( true ).checked;
- if ( notxml ) {
- // Fix name and attach hooks
- name = jQuery.propFix[ name ] || name;
- hooks = jQuery.propHooks[ name ];
- }
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as disabled)
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
- if ( value !== undefined ) {
- if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
- return ret;
+ // Support: IE<9
+ try {
+ delete div.test;
+ } catch( e ) {
+ support.deleteExpando = false;
+ }
- } else {
- return ( elem[ name ] = value );
- }
+ // Check if we can trust getAttribute("value")
+ input = document.createElement("input");
+ input.setAttribute( "value", "" );
+ support.input = input.getAttribute( "value" ) === "";
- } else {
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
- return ret;
+ // Check if an input maintains its value after becoming a radio
+ input.value = "t";
+ input.setAttribute( "type", "radio" );
+ support.radioValue = input.value === "t";
- } else {
- return elem[ name ];
- }
- }
- },
+ // #11217 - WebKit loses check when the name is after the checked attribute
+ input.setAttribute( "checked", "t" );
+ input.setAttribute( "name", "t" );
- propHooks: {
- tabIndex: {
- get: function( elem ) {
- // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
- // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
- var attributeNode = elem.getAttributeNode("tabindex");
+ fragment = document.createDocumentFragment();
+ fragment.appendChild( input );
- return attributeNode && attributeNode.specified ?
- parseInt( attributeNode.value, 10 ) :
- rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
- 0 :
- undefined;
- }
- }
- }
-});
+ // Check if a disconnected checkbox will retain its checked
+ // value of true after appended to the DOM (IE6/7)
+ support.appendChecked = input.checked;
-// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)
-jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;
+ // WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
-// Hook for boolean attributes
-boolHook = {
- get: function( elem, name ) {
- // Align boolean attributes with corresponding properties
- // Fall back to attribute presence where some booleans are not supported
- var attrNode,
- property = jQuery.prop( elem, name );
- return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
- name.toLowerCase() :
- undefined;
- },
- set: function( elem, value, name ) {
- var propName;
- if ( value === false ) {
- // Remove boolean attributes when set to false
- jQuery.removeAttr( elem, name );
- } else {
- // value is true since we know at this point it's type boolean and not false
- // Set boolean attributes to the same name and set the DOM property
- propName = jQuery.propFix[ name ] || name;
- if ( propName in elem ) {
- // Only set the IDL specifically if it already exists on the element
- elem[ propName ] = true;
- }
+ // Support: IE<9
+ // Opera does not clone events (and typeof div.attachEvent === undefined).
+ // IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
+ if ( div.attachEvent ) {
+ div.attachEvent( "onclick", function() {
+ support.noCloneEvent = false;
+ });
- elem.setAttribute( name, name.toLowerCase() );
- }
- return name;
+ div.cloneNode( true ).click();
}
-};
-// IE6/7 do not support getting/setting some attributes with get/setAttribute
-if ( !getSetAttribute ) {
+ // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)
+ // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)
+ for ( i in { submit: true, change: true, focusin: true }) {
+ div.setAttribute( eventName = "on" + i, "t" );
- fixSpecified = {
- name: true,
- id: true,
- coords: true
- };
+ support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
+ }
- // Use this for any attribute in IE6/7
- // This fixes almost every IE6/7 issue
- nodeHook = jQuery.valHooks.button = {
- get: function( elem, name ) {
- var ret;
- ret = elem.getAttributeNode( name );
- return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ?
- ret.nodeValue :
- undefined;
- },
- set: function( elem, value, name ) {
- // Set the existing or create a new attribute node
- var ret = elem.getAttributeNode( name );
- if ( !ret ) {
- ret = document.createAttribute( name );
- elem.setAttributeNode( ret );
- }
- return ( ret.nodeValue = value + "" );
- }
- };
+ div.style.backgroundClip = "content-box";
+ div.cloneNode( true ).style.backgroundClip = "";
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
- // Apply the nodeHook to tabindex
- jQuery.attrHooks.tabindex.set = nodeHook.set;
+ // Support: IE<9
+ // Iteration over object's inherited properties before its own.
+ for ( i in jQuery( support ) ) {
+ break;
+ }
+ support.ownLast = i !== "0";
- // Set width and height to auto instead of 0 on empty string( Bug #8150 )
- // This is for removals
- jQuery.each([ "width", "height" ], function( i, name ) {
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
- set: function( elem, value ) {
- if ( value === "" ) {
- elem.setAttribute( name, "auto" );
- return value;
- }
- }
- });
- });
+ // Run tests that need a body at doc ready
+ jQuery(function() {
+ var container, marginDiv, tds,
+ divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
+ body = document.getElementsByTagName("body")[0];
- // Set contenteditable to false on removals(#10429)
- // Setting to empty string throws an error as an invalid value
- jQuery.attrHooks.contenteditable = {
- get: nodeHook.get,
- set: function( elem, value, name ) {
- if ( value === "" ) {
- value = "false";
- }
- nodeHook.set( elem, value, name );
+ if ( !body ) {
+ // Return for frameset docs that don't have a body
+ return;
}
- };
-}
+ container = document.createElement("div");
+ container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
+
+ body.appendChild( container ).appendChild( div );
-// Some attributes require a special call on IE
-if ( !jQuery.support.hrefNormalized ) {
- jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
- get: function( elem ) {
- var ret = elem.getAttribute( name, 2 );
- return ret === null ? undefined : ret;
- }
+ // Support: IE8
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ div.innerHTML = "";
+ tds = div.getElementsByTagName("td");
+ tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
+ isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+ tds[ 0 ].style.display = "";
+ tds[ 1 ].style.display = "none";
+
+ // Support: IE8
+ // Check if empty table cells still have offsetWidth/Height
+ support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+
+ // Check box-sizing and margin behavior.
+ div.innerHTML = "";
+ div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
+
+ // Workaround failing boxSizing test due to offsetWidth returning wrong value
+ // with some non-1 values of body zoom, ticket #13543
+ jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() {
+ support.boxSizing = div.offsetWidth === 4;
});
- });
-}
-if ( !jQuery.support.style ) {
- jQuery.attrHooks.style = {
- get: function( elem ) {
- // Return undefined in the case of empty string
- // Normalize to lowercase since IE uppercases css property names
- return elem.style.cssText.toLowerCase() || undefined;
- },
- set: function( elem, value ) {
- return ( elem.style.cssText = "" + value );
+ // Use window.getComputedStyle because jsdom on node.js will break without it.
+ if ( window.getComputedStyle ) {
+ support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
+ support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
+
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. (#3333)
+ // Fails in WebKit before Feb 2011 nightlies
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ marginDiv = div.appendChild( document.createElement("div") );
+ marginDiv.style.cssText = div.style.cssText = divReset;
+ marginDiv.style.marginRight = marginDiv.style.width = "0";
+ div.style.width = "1px";
+
+ support.reliableMarginRight =
+ !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
}
- };
-}
-// Safari mis-reports the default selected property of an option
-// Accessing the parent's selectedIndex property fixes it
-if ( !jQuery.support.optSelected ) {
- jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
- get: function( elem ) {
- var parent = elem.parentNode;
+ if ( typeof div.style.zoom !== core_strundefined ) {
+ // Support: IE<8
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ div.innerHTML = "";
+ div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
+ support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
- if ( parent ) {
- parent.selectedIndex;
+ // Support: IE6
+ // Check if elements with layout shrink-wrap their children
+ div.style.display = "block";
+ div.innerHTML = "
";
+ div.firstChild.style.width = "5px";
+ support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
- // Make sure that it also works with optgroups, see #5701
- if ( parent.parentNode ) {
- parent.parentNode.selectedIndex;
- }
+ if ( support.inlineBlockNeedsLayout ) {
+ // Prevent IE 6 from affecting layout for positioned elements #11048
+ // Prevent IE from shrinking the body in IE 7 mode #12869
+ // Support: IE<8
+ body.style.zoom = 1;
}
- return null;
}
- });
-}
-// IE6/7 call enctype encoding
-if ( !jQuery.support.enctype ) {
- jQuery.propFix.enctype = "encoding";
-}
+ body.removeChild( container );
-// Radios and checkboxes getter/setter
-if ( !jQuery.support.checkOn ) {
- jQuery.each([ "radio", "checkbox" ], function() {
- jQuery.valHooks[ this ] = {
- get: function( elem ) {
- // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
- return elem.getAttribute("value") === null ? "on" : elem.value;
- }
- };
- });
-}
-jQuery.each([ "radio", "checkbox" ], function() {
- jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
- set: function( elem, value ) {
- if ( jQuery.isArray( value ) ) {
- return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
- }
- }
+ // Null elements to avoid leaks in IE
+ container = div = tds = marginDiv = null;
});
-});
+ // Null elements to avoid leaks in IE
+ all = select = fragment = opt = a = input = null;
+ return support;
+})({});
+var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
+ rmultiDash = /([A-Z])/g;
-var rformElems = /^(?:textarea|input|select)$/i,
- rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
- rhoverHack = /(?:^|\s)hover(\.\S+)?\b/,
- rkeyEvent = /^key/,
- rmouseEvent = /^(?:mouse|contextmenu)|click/,
- rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
- rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
- quickParse = function( selector ) {
- var quick = rquickIs.exec( selector );
- if ( quick ) {
- // 0 1 2 3
- // [ _, tag, id, class ]
- quick[1] = ( quick[1] || "" ).toLowerCase();
- quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" );
- }
- return quick;
- },
- quickIs = function( elem, m ) {
- var attrs = elem.attributes || {};
- return (
- (!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
- (!m[2] || (attrs.id || {}).value === m[2]) &&
- (!m[3] || m[3].test( (attrs[ "class" ] || {}).value ))
- );
- },
- hoverHack = function( events ) {
- return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
- };
+function internalData( elem, name, data, pvt /* Internal Use Only */ ){
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
+ var ret, thisCache,
+ internalKey = jQuery.expando,
- add: function( elem, types, handler, data, selector ) {
+ // We have to handle DOM nodes and JS objects differently because IE6-7
+ // can't GC object references properly across the DOM-JS boundary
+ isNode = elem.nodeType,
- var elemData, eventHandle, events,
- t, tns, type, namespaces, handleObj,
- handleObjIn, quick, handlers, special;
+ // Only DOM nodes need the global jQuery cache; JS object data is
+ // attached directly to the object so GC can occur automatically
+ cache = isNode ? jQuery.cache : elem,
- // Don't attach events to noData or text/comment nodes (allow plain objects tho)
- if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
- return;
- }
+ // Only defining an ID for JS objects if its cache already exists allows
+ // the code to shortcut on the same path as a DOM node with no cache
+ id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
- // Caller can pass in an object of custom data in lieu of the handler
- if ( handler.handler ) {
- handleObjIn = handler;
- handler = handleObjIn.handler;
- selector = handleObjIn.selector;
- }
+ // Avoid doing any more work than we need to when trying to get data on an
+ // object that has no data at all
+ if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) {
+ return;
+ }
- // Make sure that the handler has a unique ID, used to find/remove it later
- if ( !handler.guid ) {
- handler.guid = jQuery.guid++;
+ if ( !id ) {
+ // Only DOM nodes need a new unique ID for each element since their data
+ // ends up in the global cache
+ if ( isNode ) {
+ id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++;
+ } else {
+ id = internalKey;
}
+ }
- // Init the element's event structure and main handler, if this is the first
- events = elemData.events;
- if ( !events ) {
- elemData.events = events = {};
- }
- eventHandle = elemData.handle;
- if ( !eventHandle ) {
- elemData.handle = eventHandle = function( e ) {
- // Discard the second event of a jQuery.event.trigger() and
- // when an event is called after a page has unloaded
- return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
- jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
- undefined;
- };
- // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
- eventHandle.elem = elem;
+ if ( !cache[ id ] ) {
+ // Avoid exposing jQuery metadata on plain JS objects when the object
+ // is serialized using JSON.stringify
+ cache[ id ] = isNode ? {} : { toJSON: jQuery.noop };
+ }
+
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
+ // shallow copied over onto the existing cache
+ if ( typeof name === "object" || typeof name === "function" ) {
+ if ( pvt ) {
+ cache[ id ] = jQuery.extend( cache[ id ], name );
+ } else {
+ cache[ id ].data = jQuery.extend( cache[ id ].data, name );
}
+ }
- // Handle multiple events separated by a space
- // jQuery(...).bind("mouseover mouseout", fn);
- types = jQuery.trim( hoverHack(types) ).split( " " );
- for ( t = 0; t < types.length; t++ ) {
+ thisCache = cache[ id ];
- tns = rtypenamespace.exec( types[t] ) || [];
- type = tns[1];
- namespaces = ( tns[2] || "" ).split( "." ).sort();
+ // jQuery data() is stored in a separate object inside the object's internal data
+ // cache in order to avoid key collisions between internal data and user-defined
+ // data.
+ if ( !pvt ) {
+ if ( !thisCache.data ) {
+ thisCache.data = {};
+ }
- // If event changes its type, use the special event handlers for the changed type
- special = jQuery.event.special[ type ] || {};
+ thisCache = thisCache.data;
+ }
- // If selector defined, determine special event api type, otherwise given type
- type = ( selector ? special.delegateType : special.bindType ) || type;
+ if ( data !== undefined ) {
+ thisCache[ jQuery.camelCase( name ) ] = data;
+ }
- // Update special based on newly reset type
- special = jQuery.event.special[ type ] || {};
+ // Check for both converted-to-camel and non-converted data property names
+ // If a data property was specified
+ if ( typeof name === "string" ) {
- // handleObj is passed to all event handlers
- handleObj = jQuery.extend({
- type: type,
- origType: tns[1],
- data: data,
- handler: handler,
- guid: handler.guid,
- selector: selector,
- quick: selector && quickParse( selector ),
- namespace: namespaces.join(".")
- }, handleObjIn );
+ // First Try to find as-is property data
+ ret = thisCache[ name ];
- // Init the event handler queue if we're the first
- handlers = events[ type ];
- if ( !handlers ) {
- handlers = events[ type ] = [];
- handlers.delegateCount = 0;
+ // Test for null|undefined property data
+ if ( ret == null ) {
- // Only use addEventListener/attachEvent if the special events handler returns false
- if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
- // Bind the global event handler to the element
- if ( elem.addEventListener ) {
- elem.addEventListener( type, eventHandle, false );
+ // Try to find the camelCased property
+ ret = thisCache[ jQuery.camelCase( name ) ];
+ }
+ } else {
+ ret = thisCache;
+ }
- } else if ( elem.attachEvent ) {
- elem.attachEvent( "on" + type, eventHandle );
- }
- }
- }
-
- if ( special.add ) {
- special.add.call( elem, handleObj );
-
- if ( !handleObj.handler.guid ) {
- handleObj.handler.guid = handler.guid;
- }
- }
-
- // Add to the element's handler list, delegates in front
- if ( selector ) {
- handlers.splice( handlers.delegateCount++, 0, handleObj );
- } else {
- handlers.push( handleObj );
- }
-
- // Keep track of which events have ever been used, for event optimization
- jQuery.event.global[ type ] = true;
- }
-
- // Nullify elem to prevent memory leaks in IE
- elem = null;
- },
+ return ret;
+}
- global: {},
+function internalRemoveData( elem, name, pvt ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
- // Detach an event or set of events from an element
- remove: function( elem, types, handler, selector, mappedTypes ) {
+ var thisCache, i,
+ isNode = elem.nodeType,
- var elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
- t, tns, type, origType, namespaces, origCount,
- j, events, special, handle, eventType, handleObj;
+ // See jQuery.data for more information
+ cache = isNode ? jQuery.cache : elem,
+ id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
- if ( !elemData || !(events = elemData.events) ) {
- return;
- }
+ // If there is already no cache entry for this object, there is no
+ // purpose in continuing
+ if ( !cache[ id ] ) {
+ return;
+ }
- // Once for each type.namespace in types; type may be omitted
- types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
- for ( t = 0; t < types.length; t++ ) {
- tns = rtypenamespace.exec( types[t] ) || [];
- type = origType = tns[1];
- namespaces = tns[2];
+ if ( name ) {
- // Unbind all events (on this namespace, if provided) for the element
- if ( !type ) {
- for ( type in events ) {
- jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
- }
- continue;
- }
+ thisCache = pvt ? cache[ id ] : cache[ id ].data;
- special = jQuery.event.special[ type ] || {};
- type = ( selector? special.delegateType : special.bindType ) || type;
- eventType = events[ type ] || [];
- origCount = eventType.length;
- namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
+ if ( thisCache ) {
- // Remove matching events
- for ( j = 0; j < eventType.length; j++ ) {
- handleObj = eventType[ j ];
+ // Support array or space separated string names for data keys
+ if ( !jQuery.isArray( name ) ) {
- if ( ( mappedTypes || origType === handleObj.origType ) &&
- ( !handler || handler.guid === handleObj.guid ) &&
- ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
- ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
- eventType.splice( j--, 1 );
+ // try the string as a key before any manipulation
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
- if ( handleObj.selector ) {
- eventType.delegateCount--;
- }
- if ( special.remove ) {
- special.remove.call( elem, handleObj );
+ // split the camel cased version by spaces unless a key with the spaces exists
+ name = jQuery.camelCase( name );
+ if ( name in thisCache ) {
+ name = [ name ];
+ } else {
+ name = name.split(" ");
}
}
+ } else {
+ // If "name" is an array of keys...
+ // When data is initially created, via ("key", "val") signature,
+ // keys will be converted to camelCase.
+ // Since there is no way to tell _how_ a key was added, remove
+ // both plain key and camelCase key. #12786
+ // This will only penalize the array argument path.
+ name = name.concat( jQuery.map( name, jQuery.camelCase ) );
}
- // Remove generic event handler if we removed something and no more handlers exist
- // (avoids potential for endless recursion during removal of special event handlers)
- if ( eventType.length === 0 && origCount !== eventType.length ) {
- if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
- jQuery.removeEvent( elem, type, elemData.handle );
- }
+ i = name.length;
+ while ( i-- ) {
+ delete thisCache[ name[i] ];
+ }
- delete events[ type ];
+ // If there is no data left in the cache, we want to continue
+ // and let the cache object itself get destroyed
+ if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {
+ return;
}
}
+ }
- // Remove the expando if it's no longer used
- if ( jQuery.isEmptyObject( events ) ) {
- handle = elemData.handle;
- if ( handle ) {
- handle.elem = null;
- }
+ // See jQuery.data for more information
+ if ( !pvt ) {
+ delete cache[ id ].data;
- // removeData also checks for emptiness and clears the expando if empty
- // so use it instead of delete
- jQuery.removeData( elem, [ "events", "handle" ], true );
+ // Don't destroy the parent cache unless the internal data object
+ // had been the only thing left in it
+ if ( !isEmptyDataObject( cache[ id ] ) ) {
+ return;
}
+ }
+
+ // Destroy the cache
+ if ( isNode ) {
+ jQuery.cleanData( [ elem ], true );
+
+ // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
+ /* jshint eqeqeq: false */
+ } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
+ /* jshint eqeqeq: true */
+ delete cache[ id ];
+
+ // When all else fails, null
+ } else {
+ cache[ id ] = null;
+ }
+}
+
+jQuery.extend({
+ cache: {},
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "applet": true,
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
},
- // Events that are safe to short-circuit if no handlers are attached.
- // Native DOM events should not be added, they may have inline handlers.
- customEvent: {
- "getData": true,
- "setData": true,
- "changeData": true
+ hasData: function( elem ) {
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+ return !!elem && !isEmptyDataObject( elem );
},
- trigger: function( event, data, elem, onlyHandlers ) {
- // Don't do events on text and comment nodes
- if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
- return;
- }
+ data: function( elem, name, data ) {
+ return internalData( elem, name, data );
+ },
- // Event object or event type
- var type = event.type || event,
- namespaces = [],
- cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;
+ removeData: function( elem, name ) {
+ return internalRemoveData( elem, name );
+ },
- // focus/blur morphs to focusin/out; ensure we're not firing them right now
- if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
- return;
- }
+ // For internal use only.
+ _data: function( elem, name, data ) {
+ return internalData( elem, name, data, true );
+ },
- if ( type.indexOf( "!" ) >= 0 ) {
- // Exclusive events trigger only for the exact event (no namespaces)
- type = type.slice(0, -1);
- exclusive = true;
- }
+ _removeData: function( elem, name ) {
+ return internalRemoveData( elem, name, true );
+ },
- if ( type.indexOf( "." ) >= 0 ) {
- // Namespaced trigger; create a regexp to match event type in handle()
- namespaces = type.split(".");
- type = namespaces.shift();
- namespaces.sort();
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ // Do not set data on non-element because it will not be cleared (#8335).
+ if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
+ return false;
}
- if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
- // No jQuery handlers for this event type, and it can't have inline handlers
- return;
- }
+ var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
- // Caller can pass in an Event, Object, or just an event type string
- event = typeof event === "object" ?
- // jQuery.Event object
- event[ jQuery.expando ] ? event :
- // Object literal
- new jQuery.Event( type, event ) :
- // Just the event type (string)
- new jQuery.Event( type );
+ // nodes accept data unless otherwise specified; rejection can be conditional
+ return !noData || noData !== true && elem.getAttribute("classid") === noData;
+ }
+});
- event.type = type;
- event.isTrigger = true;
- event.exclusive = exclusive;
- event.namespace = namespaces.join( "." );
- event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
- ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var attrs, name,
+ data = null,
+ i = 0,
+ elem = this[0];
- // Handle a global trigger
- if ( !elem ) {
+ // Special expections of .data basically thwart jQuery.access,
+ // so implement the relevant behavior ourselves
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = jQuery.data( elem );
+
+ if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
+ attrs = elem.attributes;
+ for ( ; i < attrs.length; i++ ) {
+ name = attrs[i].name;
- // TODO: Stop taunting the data cache; remove global events and always attach to document
- cache = jQuery.cache;
- for ( i in cache ) {
- if ( cache[ i ].events && cache[ i ].events[ type ] ) {
- jQuery.event.trigger( event, data, cache[ i ].handle.elem, true );
+ if ( name.indexOf("data-") === 0 ) {
+ name = jQuery.camelCase( name.slice(5) );
+
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ jQuery._data( elem, "parsedAttrs", true );
}
}
- return;
+
+ return data;
}
- // Clean up the event in case it is being reused
- event.result = undefined;
- if ( !event.target ) {
- event.target = elem;
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
}
- // Clone any incoming data and prepend the event, creating the handler arg list
- data = data != null ? jQuery.makeArray( data ) : [];
- data.unshift( event );
+ return arguments.length > 1 ?
- // Allow special events to draw outside the lines
- special = jQuery.event.special[ type ] || {};
- if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
- return;
- }
+ // Sets one value
+ this.each(function() {
+ jQuery.data( this, key, value );
+ }) :
- // Determine event propagation path in advance, per W3C events spec (#9951)
- // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
- eventPath = [[ elem, special.bindType || type ]];
- if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
+ // Gets one value
+ // Try to fetch any internally stored data first
+ elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;
+ },
- bubbleType = special.delegateType || type;
- cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;
- old = null;
- for ( ; cur; cur = cur.parentNode ) {
- eventPath.push([ cur, bubbleType ]);
- old = cur;
- }
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
- // Only add window if we got to document (e.g., not plain obj or detached DOM)
- if ( old && old === elem.ownerDocument ) {
- eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
- }
- }
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
- // Fire handlers on the event path
- for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {
+ var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
- cur = eventPath[i][0];
- event.type = eventPath[i][1];
+ data = elem.getAttribute( name );
- handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
- if ( handle ) {
- handle.apply( cur, data );
- }
- // Note that this is a bare JS function and not a jQuery handler
- handle = ontype && cur[ ontype ];
- if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {
- event.preventDefault();
- }
- }
- event.type = type;
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ // Only convert to a number if it doesn't change the string
+ +data + "" === data ? +data :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
- // If nobody prevented the default action, do it now
- if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
- if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
- !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
+ } else {
+ data = undefined;
+ }
+ }
- // Call a native DOM method on the target with the same name name as the event.
- // Can't use an .isFunction() check here because IE6/7 fails that test.
- // Don't do default actions on window, that's where global variables be (#6170)
- // IE<9 dies on focus/blur to hidden element (#1486)
- if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
+ return data;
+}
- // Don't re-trigger an onFOO event when we call its FOO() method
- old = elem[ ontype ];
+// checks a cache object for emptiness
+function isEmptyDataObject( obj ) {
+ var name;
+ for ( name in obj ) {
- if ( old ) {
- elem[ ontype ] = null;
- }
+ // if the public data object is empty, the private is still empty
+ if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
+ continue;
+ }
+ if ( name !== "toJSON" ) {
+ return false;
+ }
+ }
- // Prevent re-triggering of the same event, since we already bubbled it above
- jQuery.event.triggered = type;
- elem[ type ]();
- jQuery.event.triggered = undefined;
+ return true;
+}
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ var queue;
- if ( old ) {
- elem[ ontype ] = old;
- }
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = jQuery._data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || jQuery.isArray(data) ) {
+ queue = jQuery._data( elem, type, jQuery.makeArray(data) );
+ } else {
+ queue.push( data );
}
}
+ return queue || [];
}
-
- return event.result;
},
- dispatch: function( event ) {
-
- // Make a writable jQuery.Event from the native event object
- event = jQuery.event.fix( event || window.event );
-
- var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),
- delegateCount = handlers.delegateCount,
- args = [].slice.call( arguments, 0 ),
- run_all = !event.exclusive && !event.namespace,
- special = jQuery.event.special[ event.type ] || {},
- handlerQueue = [],
- i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;
+ dequeue: function( elem, type ) {
+ type = type || "fx";
- // Use the fix-ed jQuery.Event rather than the (read-only) native event
- args[0] = event;
- event.delegateTarget = this;
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
- // Call the preDispatch hook for the mapped type, and let it bail if desired
- if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
- return;
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
}
- // Determine handlers that should run if there are delegated events
- // Avoid non-left-click bubbling in Firefox (#3861)
- if ( delegateCount && !(event.button && event.type === "click") ) {
-
- // Pregenerate a single jQuery object for reuse with .is()
- jqcur = jQuery(this);
- jqcur.context = this.ownerDocument || this;
-
- for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
-
- // Don't process events on disabled elements (#6911, #8165)
- if ( cur.disabled !== true ) {
- selMatch = {};
- matches = [];
- jqcur[0] = cur;
- for ( i = 0; i < delegateCount; i++ ) {
- handleObj = handlers[ i ];
- sel = handleObj.selector;
+ if ( fn ) {
- if ( selMatch[ sel ] === undefined ) {
- selMatch[ sel ] = (
- handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )
- );
- }
- if ( selMatch[ sel ] ) {
- matches.push( handleObj );
- }
- }
- if ( matches.length ) {
- handlerQueue.push({ elem: cur, matches: matches });
- }
- }
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
}
+
+ // clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
}
- // Add the remaining (directly-bound) handlers
- if ( handlers.length > delegateCount ) {
- handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
}
+ },
- // Run delegates first; they may want to stop propagation beneath us
- for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
- matched = handlerQueue[ i ];
- event.currentTarget = matched.elem;
+ // not intended for public consumption - generates a queueHooks object, or returns the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return jQuery._data( elem, key ) || jQuery._data( elem, key, {
+ empty: jQuery.Callbacks("once memory").add(function() {
+ jQuery._removeData( elem, type + "queue" );
+ jQuery._removeData( elem, key );
+ })
+ });
+ }
+});
- for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {
- handleObj = matched.matches[ j ];
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ var setter = 2;
- // Triggered event must either 1) be non-exclusive and have no namespace, or
- // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
- if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
- event.data = handleObj.data;
- event.handleObj = handleObj;
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[0], type );
+ }
- ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
- .apply( matched.elem, args );
+ return data === undefined ?
+ this :
+ this.each(function() {
+ var queue = jQuery.queue( this, type, data );
- if ( ret !== undefined ) {
- event.result = ret;
- if ( ret === false ) {
- event.preventDefault();
- event.stopPropagation();
- }
- }
+ // ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
}
- }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function( next, hooks ) {
+ var timeout = setTimeout( next, time );
+ hooks.stop = function() {
+ clearTimeout( timeout );
+ };
+ });
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
}
+ type = type || "fx";
- // Call the postDispatch hook for the mapped type
- if ( special.postDispatch ) {
- special.postDispatch.call( this, event );
+ while( i-- ) {
+ tmp = jQuery._data( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
}
+ resolve();
+ return defer.promise( obj );
+ }
+});
+var nodeHook, boolHook,
+ rclass = /[\t\r\n\f]/g,
+ rreturn = /\r/g,
+ rfocusable = /^(?:input|select|textarea|button|object)$/i,
+ rclickable = /^(?:a|area)$/i,
+ ruseDefault = /^(?:checked|selected)$/i,
+ getSetAttribute = jQuery.support.getSetAttribute,
+ getSetInput = jQuery.support.input;
- return event.result;
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
},
- // Includes some event props shared by KeyEvent and MouseEvent
- // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
- props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
+ removeAttr: function( name ) {
+ return this.each(function() {
+ jQuery.removeAttr( this, name );
+ });
+ },
- fixHooks: {},
+ prop: function( name, value ) {
+ return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
+ },
- keyHooks: {
- props: "char charCode key keyCode".split(" "),
- filter: function( event, original ) {
+ removeProp: function( name ) {
+ name = jQuery.propFix[ name ] || name;
+ return this.each(function() {
+ // try/catch handles cases where IE balks (such as removing a property on window)
+ try {
+ this[ name ] = undefined;
+ delete this[ name ];
+ } catch( e ) {}
+ });
+ },
- // Add which for key events
- if ( event.which == null ) {
- event.which = original.charCode != null ? original.charCode : original.keyCode;
- }
+ addClass: function( value ) {
+ var classes, elem, cur, clazz, j,
+ i = 0,
+ len = this.length,
+ proceed = typeof value === "string" && value;
- return event;
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).addClass( value.call( this, j, this.className ) );
+ });
}
- },
-
- mouseHooks: {
- props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
- filter: function( event, original ) {
- var eventDoc, doc, body,
- button = original.button,
- fromElement = original.fromElement;
- // Calculate pageX/Y if missing and clientX/Y available
- if ( event.pageX == null && original.clientX != null ) {
- eventDoc = event.target.ownerDocument || document;
- doc = eventDoc.documentElement;
- body = eventDoc.body;
+ if ( proceed ) {
+ // The disjunction here is for better compressibility (see removeClass)
+ classes = ( value || "" ).match( core_rnotwhite ) || [];
- event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
- event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
- }
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ " "
+ );
- // Add relatedTarget, if necessary
- if ( !event.relatedTarget && fromElement ) {
- event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
- }
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+ cur += clazz + " ";
+ }
+ }
+ elem.className = jQuery.trim( cur );
- // Add which for click: 1 === left; 2 === middle; 3 === right
- // Note: button is not normalized, so don't use it
- if ( !event.which && button !== undefined ) {
- event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+ }
}
-
- return event;
- }
- },
-
- fix: function( event ) {
- if ( event[ jQuery.expando ] ) {
- return event;
}
- // Create a writable copy of the event object and normalize some properties
- var i, prop,
- originalEvent = event,
- fixHook = jQuery.event.fixHooks[ event.type ] || {},
- copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
-
- event = jQuery.Event( originalEvent );
+ return this;
+ },
- for ( i = copy.length; i; ) {
- prop = copy[ --i ];
- event[ prop ] = originalEvent[ prop ];
- }
+ removeClass: function( value ) {
+ var classes, elem, cur, clazz, j,
+ i = 0,
+ len = this.length,
+ proceed = arguments.length === 0 || typeof value === "string" && value;
- // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
- if ( !event.target ) {
- event.target = originalEvent.srcElement || document;
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).removeClass( value.call( this, j, this.className ) );
+ });
}
+ if ( proceed ) {
+ classes = ( value || "" ).match( core_rnotwhite ) || [];
- // Target should not be a text node (#504, Safari)
- if ( event.target.nodeType === 3 ) {
- event.target = event.target.parentNode;
- }
+ for ( ; i < len; i++ ) {
+ elem = this[ i ];
+ // This expression is here for better compressibility (see addClass)
+ cur = elem.nodeType === 1 && ( elem.className ?
+ ( " " + elem.className + " " ).replace( rclass, " " ) :
+ ""
+ );
- // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)
- if ( event.metaKey === undefined ) {
- event.metaKey = event.ctrlKey;
+ if ( cur ) {
+ j = 0;
+ while ( (clazz = classes[j++]) ) {
+ // Remove *all* instances
+ while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
+ cur = cur.replace( " " + clazz + " ", " " );
+ }
+ }
+ elem.className = value ? jQuery.trim( cur ) : "";
+ }
+ }
}
- return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
+ return this;
},
- special: {
- ready: {
- // Make sure the ready event is setup
- setup: jQuery.bindReady
- },
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value;
- load: {
- // Prevent triggered image.load events from bubbling to window.load
- noBubble: true
- },
+ if ( typeof stateVal === "boolean" && type === "string" ) {
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
+ }
- focus: {
- delegateType: "focusin"
- },
- blur: {
- delegateType: "focusout"
- },
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+ });
+ }
- beforeunload: {
- setup: function( data, namespaces, eventHandle ) {
- // We only want to do this special case on windows
- if ( jQuery.isWindow( this ) ) {
- this.onbeforeunload = eventHandle;
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ classNames = value.match( core_rnotwhite ) || [];
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space separated list
+ if ( self.hasClass( className ) ) {
+ self.removeClass( className );
+ } else {
+ self.addClass( className );
+ }
}
- },
- teardown: function( namespaces, eventHandle ) {
- if ( this.onbeforeunload === eventHandle ) {
- this.onbeforeunload = null;
+ // Toggle whole class name
+ } else if ( type === core_strundefined || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery._data( this, "__className__", this.className );
}
+
+ // If the element has a class name or if we're passed "false",
+ // then remove the whole classname (if there was one, the above saved it).
+ // Otherwise bring back whatever was previously saved (if anything),
+ // falling back to the empty string if nothing was stored.
+ this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
}
- }
+ });
},
- simulate: function( type, elem, event, bubble ) {
- // Piggyback on a donor event to simulate a different one.
- // Fake originalEvent to avoid donor's stopPropagation, but if the
- // simulated event prevents default then we do the same on the donor.
- var e = jQuery.extend(
- new jQuery.Event(),
- event,
- { type: type,
- isSimulated: true,
- originalEvent: {}
+ hasClass: function( selector ) {
+ var className = " " + selector + " ",
+ i = 0,
+ l = this.length;
+ for ( ; i < l; i++ ) {
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
+ return true;
}
- );
- if ( bubble ) {
- jQuery.event.trigger( e, null, elem );
- } else {
- jQuery.event.dispatch.call( elem, e );
- }
- if ( e.isDefaultPrevented() ) {
- event.preventDefault();
}
- }
-};
-// Some plugins are using, but it's undocumented/deprecated and will be removed.
-// The 1.7 special event interface should provide all the hooks needed now.
-jQuery.event.handle = jQuery.event.dispatch;
+ return false;
+ },
-jQuery.removeEvent = document.removeEventListener ?
- function( elem, type, handle ) {
- if ( elem.removeEventListener ) {
- elem.removeEventListener( type, handle, false );
- }
- } :
- function( elem, type, handle ) {
- if ( elem.detachEvent ) {
- elem.detachEvent( "on" + type, handle );
+ val: function( value ) {
+ var ret, hooks, isFunction,
+ elem = this[0];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ return typeof ret === "string" ?
+ // handle most common string cases
+ ret.replace(rreturn, "") :
+ // handle cases where value is null/undef or number
+ ret == null ? "" : ret;
+ }
+
+ return;
}
- };
-jQuery.Event = function( src, props ) {
- // Allow instantiation without the 'new' keyword
- if ( !(this instanceof jQuery.Event) ) {
- return new jQuery.Event( src, props );
- }
+ isFunction = jQuery.isFunction( value );
- // Event object
- if ( src && src.type ) {
- this.originalEvent = src;
- this.type = src.type;
+ return this.each(function( i ) {
+ var val;
- // Events bubbling up the document may have been marked as prevented
- // by a handler lower down the tree; reflect the correct value.
- this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
- src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
- // Event type
- } else {
- this.type = src;
- }
+ if ( isFunction ) {
+ val = value.call( this, i, jQuery( this ).val() );
+ } else {
+ val = value;
+ }
- // Put explicitly provided properties onto the event object
- if ( props ) {
- jQuery.extend( this, props );
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map(val, function ( value ) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ });
}
+});
- // Create a timestamp if incoming event doesn't have one
- this.timeStamp = src && src.timeStamp || jQuery.now();
+jQuery.extend({
+ valHooks: {
+ option: {
+ get: function( elem ) {
+ // Use proper attribute retrieval(#6932, #12072)
+ var val = jQuery.find.attr( elem, "value" );
+ return val != null ?
+ val :
+ elem.text;
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value, option,
+ options = elem.options,
+ index = elem.selectedIndex,
+ one = elem.type === "select-one" || index < 0,
+ values = one ? null : [],
+ max = one ? index + 1 : options.length,
+ i = index < 0 ?
+ max :
+ one ? index : 0;
- // Mark it as fixed
- this[ jQuery.expando ] = true;
-};
+ // Loop through all the selected options
+ for ( ; i < max; i++ ) {
+ option = options[ i ];
-function returnFalse() {
- return false;
-}
-function returnTrue() {
- return true;
-}
+ // oldIE doesn't update selected after form reset (#2551)
+ if ( ( option.selected || i === index ) &&
+ // Don't return options that are disabled or in a disabled optgroup
+ ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
+ ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
- preventDefault: function() {
- this.isDefaultPrevented = returnTrue;
+ // Get the specific value for the option
+ value = jQuery( option ).val();
- var e = this.originalEvent;
- if ( !e ) {
- return;
- }
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
- // if preventDefault exists run it on the original event
- if ( e.preventDefault ) {
- e.preventDefault();
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
- // otherwise set the returnValue property of the original event to false (IE)
- } else {
- e.returnValue = false;
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var optionSet, option,
+ options = elem.options,
+ values = jQuery.makeArray( value ),
+ i = options.length;
+
+ while ( i-- ) {
+ option = options[ i ];
+ if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {
+ optionSet = true;
+ }
+ }
+
+ // force browsers to behave consistently when non-matching value is set
+ if ( !optionSet ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
}
},
- stopPropagation: function() {
- this.isPropagationStopped = returnTrue;
- var e = this.originalEvent;
- if ( !e ) {
+ attr: function( elem, name, value ) {
+ var hooks, ret,
+ nType = elem.nodeType;
+
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
return;
}
- // if stopPropagation exists run it on the original event
- if ( e.stopPropagation ) {
- e.stopPropagation();
+
+ // Fallback to prop when attributes are not supported
+ if ( typeof elem.getAttribute === core_strundefined ) {
+ return jQuery.prop( elem, name, value );
}
- // otherwise set the cancelBubble property of the original event to true (IE)
- e.cancelBubble = true;
- },
- stopImmediatePropagation: function() {
- this.isImmediatePropagationStopped = returnTrue;
- this.stopPropagation();
- },
- isDefaultPrevented: returnFalse,
- isPropagationStopped: returnFalse,
- isImmediatePropagationStopped: returnFalse
-};
-// Create mouseenter/leave events using mouseover/out and event-time checks
-jQuery.each({
- mouseenter: "mouseover",
- mouseleave: "mouseout"
-}, function( orig, fix ) {
- jQuery.event.special[ orig ] = {
- delegateType: fix,
- bindType: fix,
+ // All attributes are lowercase
+ // Grab necessary hook if one is defined
+ if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+ name = name.toLowerCase();
+ hooks = jQuery.attrHooks[ name ] ||
+ ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
+ }
- handle: function( event ) {
- var target = this,
- related = event.relatedTarget,
- handleObj = event.handleObj,
- selector = handleObj.selector,
- ret;
+ if ( value !== undefined ) {
- // For mousenter/leave call the handler if related is outside the target.
- // NB: No relatedTarget if the mouse left/entered the browser window
- if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
- event.type = handleObj.origType;
- ret = handleObj.handler.apply( this, arguments );
- event.type = fix;
- }
- return ret;
- }
- };
-});
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
-// IE submit delegation
-if ( !jQuery.support.submitBubbles ) {
+ } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
- jQuery.event.special.submit = {
- setup: function() {
- // Only need this for delegated form submit events
- if ( jQuery.nodeName( this, "form" ) ) {
- return false;
+ } else {
+ elem.setAttribute( name, value + "" );
+ return value;
}
- // Lazy-add a submit handler when a descendant form may potentially be submitted
- jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
- // Node name check avoids a VML-related crash in IE (#9807)
- var elem = e.target,
- form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
- if ( form && !form._submit_attached ) {
- jQuery.event.add( form, "submit._submit", function( event ) {
- event._submit_bubble = true;
- });
- form._submit_attached = true;
- }
- });
- // return undefined since we don't need an event listener
- },
-
- postDispatch: function( event ) {
- // If form was submitted by the user, bubble the event up the tree
- if ( event._submit_bubble ) {
- delete event._submit_bubble;
- if ( this.parentNode && !event.isTrigger ) {
- jQuery.event.simulate( "submit", this.parentNode, event, true );
- }
- }
- },
+ } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
- teardown: function() {
- // Only need this for delegated form submit events
- if ( jQuery.nodeName( this, "form" ) ) {
- return false;
- }
+ } else {
+ ret = jQuery.find.attr( elem, name );
- // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
- jQuery.event.remove( this, "._submit" );
+ // Non-existent attributes return null, we normalize to undefined
+ return ret == null ?
+ undefined :
+ ret;
}
- };
-}
+ },
-// IE change delegation and checkbox/radio fix
-if ( !jQuery.support.changeBubbles ) {
+ removeAttr: function( elem, value ) {
+ var name, propName,
+ i = 0,
+ attrNames = value && value.match( core_rnotwhite );
- jQuery.event.special.change = {
+ if ( attrNames && elem.nodeType === 1 ) {
+ while ( (name = attrNames[i++]) ) {
+ propName = jQuery.propFix[ name ] || name;
- setup: function() {
+ // Boolean attributes get special treatment (#10870)
+ if ( jQuery.expr.match.bool.test( name ) ) {
+ // Set corresponding property to false
+ if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
+ elem[ propName ] = false;
+ // Support: IE<9
+ // Also clear defaultChecked/defaultSelected (if appropriate)
+ } else {
+ elem[ jQuery.camelCase( "default-" + name ) ] =
+ elem[ propName ] = false;
+ }
- if ( rformElems.test( this.nodeName ) ) {
- // IE doesn't fire change on a check/radio until blur; trigger it on click
- // after a propertychange. Eat the blur-change in special.change.handle.
- // This still fires onchange a second time for check/radio after blur.
- if ( this.type === "checkbox" || this.type === "radio" ) {
- jQuery.event.add( this, "propertychange._change", function( event ) {
- if ( event.originalEvent.propertyName === "checked" ) {
- this._just_changed = true;
- }
- });
- jQuery.event.add( this, "click._change", function( event ) {
- if ( this._just_changed && !event.isTrigger ) {
- this._just_changed = false;
- jQuery.event.simulate( "change", this, event, true );
- }
- });
- }
- return false;
- }
- // Delegated event; lazy-add a change handler on descendant inputs
- jQuery.event.add( this, "beforeactivate._change", function( e ) {
- var elem = e.target;
-
- if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {
- jQuery.event.add( elem, "change._change", function( event ) {
- if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
- jQuery.event.simulate( "change", this.parentNode, event, true );
- }
- });
- elem._change_attached = true;
+ // See #9699 for explanation of this approach (setting first, then removal)
+ } else {
+ jQuery.attr( elem, name, "" );
}
- });
- },
- handle: function( event ) {
- var elem = event.target;
-
- // Swallow native change events from checkbox/radio, we already triggered them above
- if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
- return event.handleObj.handler.apply( this, arguments );
+ elem.removeAttribute( getSetAttribute ? name : propName );
}
- },
-
- teardown: function() {
- jQuery.event.remove( this, "._change" );
-
- return rformElems.test( this.nodeName );
}
- };
-}
-
-// Create "bubbling" focus and blur events
-if ( !jQuery.support.focusinBubbles ) {
- jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
-
- // Attach a single capturing handler while someone wants focusin/focusout
- var attaches = 0,
- handler = function( event ) {
- jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
- };
+ },
- jQuery.event.special[ fix ] = {
- setup: function() {
- if ( attaches++ === 0 ) {
- document.addEventListener( orig, handler, true );
- }
- },
- teardown: function() {
- if ( --attaches === 0 ) {
- document.removeEventListener( orig, handler, true );
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+ // Setting the type on a radio button after the value resets the value in IE6-9
+ // Reset value to default in case type is set after value during creation
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
}
}
- };
- });
-}
+ }
+ },
-jQuery.fn.extend({
+ propFix: {
+ "for": "htmlFor",
+ "class": "className"
+ },
- on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
- var origFn, type;
+ prop: function( elem, name, value ) {
+ var ret, hooks, notxml,
+ nType = elem.nodeType;
- // Types can be a map of types/handlers
- if ( typeof types === "object" ) {
- // ( types-Object, selector, data )
- if ( typeof selector !== "string" ) { // && selector != null
- // ( types-Object, data )
- data = data || selector;
- selector = undefined;
- }
- for ( type in types ) {
- this.on( type, selector, data, types[ type ], one );
- }
- return this;
+ // don't get/set properties on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return;
}
- if ( data == null && fn == null ) {
- // ( types, fn )
- fn = selector;
- data = selector = undefined;
- } else if ( fn == null ) {
- if ( typeof selector === "string" ) {
- // ( types, selector, fn )
- fn = data;
- data = undefined;
- } else {
- // ( types, data, fn )
- fn = data;
- data = selector;
- selector = undefined;
- }
- }
- if ( fn === false ) {
- fn = returnFalse;
- } else if ( !fn ) {
- return this;
- }
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
- if ( one === 1 ) {
- origFn = fn;
- fn = function( event ) {
- // Can use an empty set, since event contains the info
- jQuery().off( event );
- return origFn.apply( this, arguments );
- };
- // Use same guid so caller can remove using origFn
- fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
- }
- return this.each( function() {
- jQuery.event.add( this, types, fn, data, selector );
- });
- },
- one: function( types, selector, data, fn ) {
- return this.on( types, selector, data, fn, 1 );
- },
- off: function( types, selector, fn ) {
- if ( types && types.preventDefault && types.handleObj ) {
- // ( event ) dispatched jQuery.Event
- var handleObj = types.handleObj;
- jQuery( types.delegateTarget ).off(
- handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
- handleObj.selector,
- handleObj.handler
- );
- return this;
- }
- if ( typeof types === "object" ) {
- // ( types-object [, selector] )
- for ( var type in types ) {
- this.off( type, selector, types[ type ] );
- }
- return this;
- }
- if ( selector === false || typeof selector === "function" ) {
- // ( types [, fn] )
- fn = selector;
- selector = undefined;
- }
- if ( fn === false ) {
- fn = returnFalse;
+ if ( notxml ) {
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
}
- return this.each(function() {
- jQuery.event.remove( this, types, fn, selector );
- });
- },
-
- bind: function( types, data, fn ) {
- return this.on( types, null, data, fn );
- },
- unbind: function( types, fn ) {
- return this.off( types, null, fn );
- },
-
- live: function( types, data, fn ) {
- jQuery( this.context ).on( types, this.selector, data, fn );
- return this;
- },
- die: function( types, fn ) {
- jQuery( this.context ).off( types, this.selector || "**", fn );
- return this;
- },
- delegate: function( selector, types, data, fn ) {
- return this.on( types, selector, data, fn );
- },
- undelegate: function( selector, types, fn ) {
- // ( namespace ) or ( selector, types [, fn] )
- return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );
- },
+ if ( value !== undefined ) {
+ return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+ ret :
+ ( elem[ name ] = value );
- trigger: function( type, data ) {
- return this.each(function() {
- jQuery.event.trigger( type, data, this );
- });
- },
- triggerHandler: function( type, data ) {
- if ( this[0] ) {
- return jQuery.event.trigger( type, data, this[0], true );
+ } else {
+ return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+ ret :
+ elem[ name ];
}
},
- toggle: function( fn ) {
- // Save reference to arguments for access in closure
- var args = arguments,
- guid = fn.guid || jQuery.guid++,
- i = 0,
- toggler = function( event ) {
- // Figure out which function to execute
- var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
- jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ // Use proper attribute retrieval(#12072)
+ var tabindex = jQuery.find.attr( elem, "tabindex" );
- // Make sure that clicks stop
- event.preventDefault();
+ return tabindex ?
+ parseInt( tabindex, 10 ) :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ -1;
+ }
+ }
+ }
+});
- // and execute the function
- return args[ lastToggle ].apply( this, arguments ) || false;
- };
+// Hooks for boolean attributes
+boolHook = {
+ set: function( elem, value, name ) {
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
+ // IE<8 needs the *property* name
+ elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
- // link all the functions, so any of them can unbind this click handler
- toggler.guid = guid;
- while ( i < args.length ) {
- args[ i++ ].guid = guid;
+ // Use defaultChecked and defaultSelected for oldIE
+ } else {
+ elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
}
- return this.click( toggler );
- },
-
- hover: function( fnOver, fnOut ) {
- return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ return name;
}
+};
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+ var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr;
+
+ jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?
+ function( elem, name, isXML ) {
+ var fn = jQuery.expr.attrHandle[ name ],
+ ret = isXML ?
+ undefined :
+ /* jshint eqeqeq: false */
+ (jQuery.expr.attrHandle[ name ] = undefined) !=
+ getter( elem, name, isXML ) ?
+
+ name.toLowerCase() :
+ null;
+ jQuery.expr.attrHandle[ name ] = fn;
+ return ret;
+ } :
+ function( elem, name, isXML ) {
+ return isXML ?
+ undefined :
+ elem[ jQuery.camelCase( "default-" + name ) ] ?
+ name.toLowerCase() :
+ null;
+ };
});
-jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
- "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
- "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
-
- // Handle event binding
- jQuery.fn[ name ] = function( data, fn ) {
- if ( fn == null ) {
- fn = data;
- data = null;
+// fix oldIE attroperties
+if ( !getSetInput || !getSetAttribute ) {
+ jQuery.attrHooks.value = {
+ set: function( elem, value, name ) {
+ if ( jQuery.nodeName( elem, "input" ) ) {
+ // Does not return so that setAttribute is also used
+ elem.defaultValue = value;
+ } else {
+ // Use nodeHook if defined (#1954); otherwise setAttribute is fine
+ return nodeHook && nodeHook.set( elem, value, name );
+ }
}
-
- return arguments.length > 0 ?
- this.on( name, null, data, fn ) :
- this.trigger( name );
};
+}
- if ( jQuery.attrFn ) {
- jQuery.attrFn[ name ] = true;
- }
-
- if ( rkeyEvent.test( name ) ) {
- jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
- }
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !getSetAttribute ) {
- if ( rmouseEvent.test( name ) ) {
- jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
- }
-});
+ // Use this for any attribute in IE6/7
+ // This fixes almost every IE6/7 issue
+ nodeHook = {
+ set: function( elem, value, name ) {
+ // Set the existing or create a new attribute node
+ var ret = elem.getAttributeNode( name );
+ if ( !ret ) {
+ elem.setAttributeNode(
+ (ret = elem.ownerDocument.createAttribute( name ))
+ );
+ }
+ ret.value = value += "";
+ // Break association with cloned elements by also using setAttribute (#9646)
+ return name === "value" || value === elem.getAttribute( name ) ?
+ value :
+ undefined;
+ }
+ };
+ jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords =
+ // Some attributes are constructed with empty-string values when not defined
+ function( elem, name, isXML ) {
+ var ret;
+ return isXML ?
+ undefined :
+ (ret = elem.getAttributeNode( name )) && ret.value !== "" ?
+ ret.value :
+ null;
+ };
+ jQuery.valHooks.button = {
+ get: function( elem, name ) {
+ var ret = elem.getAttributeNode( name );
+ return ret && ret.specified ?
+ ret.value :
+ undefined;
+ },
+ set: nodeHook.set
+ };
-/*!
- * Sizzle CSS Selector Engine
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- * More information: http://sizzlejs.com/
- */
-(function(){
+ // Set contenteditable to false on removals(#10429)
+ // Setting to empty string throws an error as an invalid value
+ jQuery.attrHooks.contenteditable = {
+ set: function( elem, value, name ) {
+ nodeHook.set( elem, value === "" ? false : value, name );
+ }
+ };
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
- expando = "sizcache" + (Math.random() + '').replace('.', ''),
- done = 0,
- toString = Object.prototype.toString,
- hasDuplicate = false,
- baseHasDuplicate = true,
- rBackslash = /\\/g,
- rReturn = /\r\n/g,
- rNonWord = /\W/;
-
-// Here we check if the JavaScript engine is using some sort of
-// optimization where it does not always call our comparision
-// function. If that is the case, discard the hasDuplicate value.
-// Thus far that includes Google Chrome.
-[0, 0].sort(function() {
- baseHasDuplicate = false;
- return 0;
-});
+ // Set width and height to auto instead of 0 on empty string( Bug #8150 )
+ // This is for removals
+ jQuery.each([ "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = {
+ set: function( elem, value ) {
+ if ( value === "" ) {
+ elem.setAttribute( name, "auto" );
+ return value;
+ }
+ }
+ };
+ });
+}
-var Sizzle = function( selector, context, results, seed ) {
- results = results || [];
- context = context || document;
- var origContext = context;
+// Some attributes require a special call on IE
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !jQuery.support.hrefNormalized ) {
+ // href/src property should get the full normalized URL (#10299/#12915)
+ jQuery.each([ "href", "src" ], function( i, name ) {
+ jQuery.propHooks[ name ] = {
+ get: function( elem ) {
+ return elem.getAttribute( name, 4 );
+ }
+ };
+ });
+}
- if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
- return [];
- }
+if ( !jQuery.support.style ) {
+ jQuery.attrHooks.style = {
+ get: function( elem ) {
+ // Return undefined in the case of empty string
+ // Note: IE uppercases css property names, but if we were to .toLowerCase()
+ // .cssText, that would destroy case senstitivity in URL's, like in "background"
+ return elem.style.cssText || undefined;
+ },
+ set: function( elem, value ) {
+ return ( elem.style.cssText = value + "" );
+ }
+ };
+}
- if ( !selector || typeof selector !== "string" ) {
- return results;
- }
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+ jQuery.propHooks.selected = {
+ get: function( elem ) {
+ var parent = elem.parentNode;
- var m, set, checkSet, extra, ret, cur, pop, i,
- prune = true,
- contextXML = Sizzle.isXML( context ),
- parts = [],
- soFar = selector;
+ if ( parent ) {
+ parent.selectedIndex;
- // Reset the position of the chunker regexp (start from head)
- do {
- chunker.exec( "" );
- m = chunker.exec( soFar );
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ return null;
+ }
+ };
+}
- if ( m ) {
- soFar = m[3];
+jQuery.each([
+ "tabIndex",
+ "readOnly",
+ "maxLength",
+ "cellSpacing",
+ "cellPadding",
+ "rowSpan",
+ "colSpan",
+ "useMap",
+ "frameBorder",
+ "contentEditable"
+], function() {
+ jQuery.propFix[ this.toLowerCase() ] = this;
+});
- parts.push( m[1] );
+// IE6/7 call enctype encoding
+if ( !jQuery.support.enctype ) {
+ jQuery.propFix.enctype = "encoding";
+}
- if ( m[2] ) {
- extra = m[3];
- break;
+// Radios and checkboxes getter/setter
+jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
}
}
- } while ( m );
-
- if ( parts.length > 1 && origPOS.exec( selector ) ) {
+ };
+ if ( !jQuery.support.checkOn ) {
+ jQuery.valHooks[ this ].get = function( elem ) {
+ // Support: Webkit
+ // "" is returned instead of "on" if a value isn't specified
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ };
+ }
+});
+var rformElems = /^(?:input|select|textarea)$/i,
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|contextmenu)|click/,
+ rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
- if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
- set = posProcess( parts[0] + parts[1], context, seed );
+function returnTrue() {
+ return true;
+}
- } else {
- set = Expr.relative[ parts[0] ] ?
- [ context ] :
- Sizzle( parts.shift(), context );
+function returnFalse() {
+ return false;
+}
- while ( parts.length ) {
- selector = parts.shift();
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
- if ( Expr.relative[ selector ] ) {
- selector += parts.shift();
- }
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
- set = posProcess( selector, set, seed );
- }
- }
+ global: {},
- } else {
- // Take a shortcut and set the context if the root selector is an ID
- // (but not if it'll be faster if the inner selector is an ID)
- if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
- Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+ add: function( elem, types, handler, data, selector ) {
+ var tmp, events, t, handleObjIn,
+ special, eventHandle, handleObj,
+ handlers, type, namespaces, origType,
+ elemData = jQuery._data( elem );
- ret = Sizzle.find( parts.shift(), context, contextXML );
- context = ret.expr ?
- Sizzle.filter( ret.expr, ret.set )[0] :
- ret.set[0];
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
}
- if ( context ) {
- ret = seed ?
- { expr: parts.pop(), set: makeArray(seed) } :
- Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
- set = ret.expr ?
- Sizzle.filter( ret.expr, ret.set ) :
- ret.set;
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
- if ( parts.length > 0 ) {
- checkSet = makeArray( set );
+ // Init the element's event structure and main handler, if this is the first
+ if ( !(events = elemData.events) ) {
+ events = elemData.events = {};
+ }
+ if ( !(eventHandle = elemData.handle) ) {
+ eventHandle = elemData.handle = function( e ) {
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
+ jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
+ eventHandle.elem = elem;
+ }
- } else {
- prune = false;
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( core_rnotwhite ) || [""];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
}
- while ( parts.length ) {
- cur = parts.pop();
- pop = cur;
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
- if ( !Expr.relative[ cur ] ) {
- cur = "";
- } else {
- pop = parts.pop();
- }
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
- if ( pop == null ) {
- pop = context;
- }
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
- Expr.relative[ cur ]( checkSet, pop, contextXML );
- }
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend({
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join(".")
+ }, handleObjIn );
- } else {
- checkSet = parts = [];
- }
- }
+ // Init the event handler queue if we're the first
+ if ( !(handlers = events[ type ]) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
- if ( !checkSet ) {
- checkSet = set;
- }
+ // Only use addEventListener/attachEvent if the special events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
- if ( !checkSet ) {
- Sizzle.error( cur || selector );
- }
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
- if ( toString.call(checkSet) === "[object Array]" ) {
- if ( !prune ) {
- results.push.apply( results, checkSet );
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
- } else if ( context && context.nodeType === 1 ) {
- for ( i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
- results.push( set[i] );
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
}
}
- } else {
- for ( i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
- results.push( set[i] );
- }
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
}
- }
- } else {
- makeArray( checkSet, results );
- }
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
- if ( extra ) {
- Sizzle( extra, origContext, results, seed );
- Sizzle.uniqueSort( results );
- }
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
- return results;
-};
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+ var j, handleObj, tmp,
+ origCount, t, events,
+ special, handlers, type,
+ namespaces, origType,
+ elemData = jQuery.hasData( elem ) && jQuery._data( elem );
-Sizzle.uniqueSort = function( results ) {
- if ( sortOrder ) {
- hasDuplicate = baseHasDuplicate;
- results.sort( sortOrder );
-
- if ( hasDuplicate ) {
- for ( var i = 1; i < results.length; i++ ) {
- if ( results[i] === results[ i - 1 ] ) {
- results.splice( i--, 1 );
- }
- }
+ if ( !elemData || !(events = elemData.events) ) {
+ return;
}
- }
-
- return results;
-};
-
-Sizzle.matches = function( expr, set ) {
- return Sizzle( expr, null, null, set );
-};
-Sizzle.matchesSelector = function( node, expr ) {
- return Sizzle( expr, null, null, [node] ).length > 0;
-};
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( core_rnotwhite ) || [""];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[t] ) || [];
+ type = origType = tmp[1];
+ namespaces = ( tmp[2] || "" ).split( "." ).sort();
-Sizzle.find = function( expr, context, isXML ) {
- var set, i, len, match, type, left;
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
- if ( !expr ) {
- return [];
- }
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
- for ( i = 0, len = Expr.order.length; i < len; i++ ) {
- type = Expr.order[i];
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
- if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
- left = match[1];
- match.splice( 1, 1 );
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
- if ( left.substr( left.length - 1 ) !== "\\" ) {
- match[1] = (match[1] || "").replace( rBackslash, "" );
- set = Expr.find[ type ]( match, context, isXML );
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
- if ( set != null ) {
- expr = expr.replace( Expr.match[ type ], "" );
- break;
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
}
+
+ delete events[ type ];
}
}
- }
-
- if ( !set ) {
- set = typeof context.getElementsByTagName !== "undefined" ?
- context.getElementsByTagName( "*" ) :
- [];
- }
- return { set: set, expr: expr };
-};
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ delete elemData.handle;
-Sizzle.filter = function( expr, set, inplace, not ) {
- var match, anyFound,
- type, found, item, filter, left,
- i, pass,
- old = expr,
- result = [],
- curLoop = set,
- isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
+ // removeData also checks for emptiness and clears the expando if empty
+ // so use it instead of delete
+ jQuery._removeData( elem, "events" );
+ }
+ },
- while ( expr && set.length ) {
- for ( type in Expr.filter ) {
- if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
- filter = Expr.filter[ type ];
- left = match[1];
+ trigger: function( event, data, elem, onlyHandlers ) {
+ var handle, ontype, cur,
+ bubbleType, special, tmp, i,
+ eventPath = [ elem || document ],
+ type = core_hasOwn.call( event, "type" ) ? event.type : event,
+ namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
- anyFound = false;
+ cur = tmp = elem = elem || document;
- match.splice(1,1);
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
- if ( left.substr( left.length - 1 ) === "\\" ) {
- continue;
- }
-
- if ( curLoop === result ) {
- result = [];
- }
-
- if ( Expr.preFilter[ type ] ) {
- match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
-
- if ( !match ) {
- anyFound = found = true;
-
- } else if ( match === true ) {
- continue;
- }
- }
+ // focus/blur morphs to focusin/out; ensure we're not firing them right now
+ if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+ return;
+ }
- if ( match ) {
- for ( i = 0; (item = curLoop[i]) != null; i++ ) {
- if ( item ) {
- found = filter( item, match, i, curLoop );
- pass = not ^ found;
+ if ( type.indexOf(".") >= 0 ) {
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+ ontype = type.indexOf(":") < 0 && "on" + type;
- if ( inplace && found != null ) {
- if ( pass ) {
- anyFound = true;
+ // Caller can pass in a jQuery.Event object, Object, or just an event type string
+ event = event[ jQuery.expando ] ?
+ event :
+ new jQuery.Event( type, typeof event === "object" && event );
- } else {
- curLoop[i] = false;
- }
+ // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+ event.isTrigger = onlyHandlers ? 2 : 3;
+ event.namespace = namespaces.join(".");
+ event.namespace_re = event.namespace ?
+ new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
+ null;
- } else if ( pass ) {
- result.push( item );
- anyFound = true;
- }
- }
- }
- }
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ if ( !event.target ) {
+ event.target = elem;
+ }
- if ( found !== undefined ) {
- if ( !inplace ) {
- curLoop = result;
- }
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data == null ?
+ [ event ] :
+ jQuery.makeArray( data, [ event ] );
- expr = expr.replace( Expr.match[ type ], "" );
+ // Allow special events to draw outside the lines
+ special = jQuery.event.special[ type ] || {};
+ if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+ return;
+ }
- if ( !anyFound ) {
- return [];
- }
+ // Determine event propagation path in advance, per W3C events spec (#9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
- break;
- }
+ bubbleType = special.delegateType || type;
+ if ( !rfocusMorph.test( bubbleType + type ) ) {
+ cur = cur.parentNode;
+ }
+ for ( ; cur; cur = cur.parentNode ) {
+ eventPath.push( cur );
+ tmp = cur;
}
- }
-
- // Improper expression
- if ( expr === old ) {
- if ( anyFound == null ) {
- Sizzle.error( expr );
- } else {
- break;
+ // Only add window if we got to document (e.g., not plain obj or detached DOM)
+ if ( tmp === (elem.ownerDocument || document) ) {
+ eventPath.push( tmp.defaultView || tmp.parentWindow || window );
}
}
- old = expr;
- }
-
- return curLoop;
-};
+ // Fire handlers on the event path
+ i = 0;
+ while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
-Sizzle.error = function( msg ) {
- throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
+ event.type = i > 1 ?
+ bubbleType :
+ special.bindType || type;
-/**
- * Utility function for retreiving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-var getText = Sizzle.getText = function( elem ) {
- var i, node,
- nodeType = elem.nodeType,
- ret = "";
-
- if ( nodeType ) {
- if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
- // Use textContent || innerText for elements
- if ( typeof elem.textContent === 'string' ) {
- return elem.textContent;
- } else if ( typeof elem.innerText === 'string' ) {
- // Replace IE's carriage returns
- return elem.innerText.replace( rReturn, '' );
- } else {
- // Traverse it's children
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {
- ret += getText( elem );
- }
+ // jQuery handler
+ handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
+ if ( handle ) {
+ handle.apply( cur, data );
}
- } else if ( nodeType === 3 || nodeType === 4 ) {
- return elem.nodeValue;
- }
- } else {
- // If no nodeType, this is expected to be an array
- for ( i = 0; (node = elem[i]); i++ ) {
- // Do not traverse comment nodes
- if ( node.nodeType !== 8 ) {
- ret += getText( node );
+ // Native handler
+ handle = ontype && cur[ ontype ];
+ if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
+ event.preventDefault();
}
}
- }
- return ret;
-};
-
-var Expr = Sizzle.selectors = {
- order: [ "ID", "NAME", "TAG" ],
-
- match: {
- ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
- CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
- NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
- ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
- TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
- CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
- POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
- PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
- },
+ event.type = type;
- leftMatch: {},
+ // If nobody prevented the default action, do it now
+ if ( !onlyHandlers && !event.isDefaultPrevented() ) {
- attrMap: {
- "class": "className",
- "for": "htmlFor"
- },
+ if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
+ jQuery.acceptData( elem ) ) {
- attrHandle: {
- href: function( elem ) {
- return elem.getAttribute( "href" );
- },
- type: function( elem ) {
- return elem.getAttribute( "type" );
- }
- },
+ // Call a native DOM method on the target with the same name name as the event.
+ // Can't use an .isFunction() check here because IE6/7 fails that test.
+ // Don't do default actions on window, that's where global variables be (#6170)
+ if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
- relative: {
- "+": function(checkSet, part){
- var isPartStr = typeof part === "string",
- isTag = isPartStr && !rNonWord.test( part ),
- isPartStrNotTag = isPartStr && !isTag;
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ tmp = elem[ ontype ];
- if ( isTag ) {
- part = part.toLowerCase();
- }
+ if ( tmp ) {
+ elem[ ontype ] = null;
+ }
- for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
- if ( (elem = checkSet[i]) ) {
- while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+ // Prevent re-triggering of the same event, since we already bubbled it above
+ jQuery.event.triggered = type;
+ try {
+ elem[ type ]();
+ } catch ( e ) {
+ // IE<9 dies on focus/blur to hidden element (#1486,#12518)
+ // only reproducible on winXP IE8 native, not IE9 in IE8 mode
+ }
+ jQuery.event.triggered = undefined;
- checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
- elem || false :
- elem === part;
+ if ( tmp ) {
+ elem[ ontype ] = tmp;
+ }
}
}
+ }
- if ( isPartStrNotTag ) {
- Sizzle.filter( part, checkSet, true );
- }
- },
+ return event.result;
+ },
- ">": function( checkSet, part ) {
- var elem,
- isPartStr = typeof part === "string",
- i = 0,
- l = checkSet.length;
+ dispatch: function( event ) {
- if ( isPartStr && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
+ // Make a writable jQuery.Event from the native event object
+ event = jQuery.event.fix( event );
- for ( ; i < l; i++ ) {
- elem = checkSet[i];
+ var i, ret, handleObj, matched, j,
+ handlerQueue = [],
+ args = core_slice.call( arguments ),
+ handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
- if ( elem ) {
- var parent = elem.parentNode;
- checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
- }
- }
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[0] = event;
+ event.delegateTarget = this;
- } else {
- for ( ; i < l; i++ ) {
- elem = checkSet[i];
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
- if ( elem ) {
- checkSet[i] = isPartStr ?
- elem.parentNode :
- elem.parentNode === part;
- }
- }
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
- if ( isPartStr ) {
- Sizzle.filter( part, checkSet, true );
- }
- }
- },
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
- "": function(checkSet, part, isXML){
- var nodeCheck,
- doneName = done++,
- checkFn = dirCheck;
+ j = 0;
+ while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
- nodeCheck = part;
- checkFn = dirNodeCheck;
- }
+ // Triggered event must either 1) have no namespace, or
+ // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
+ if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
- checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
- },
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
- "~": function( checkSet, part, isXML ) {
- var nodeCheck,
- doneName = done++,
- checkFn = dirCheck;
+ ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+ .apply( matched.elem, args );
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
- nodeCheck = part;
- checkFn = dirNodeCheck;
+ if ( ret !== undefined ) {
+ if ( (event.result = ret) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
}
+ }
- checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
}
- },
- find: {
- ID: function( match, context, isXML ) {
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- return m && m.parentNode ? [m] : [];
- }
- },
+ return event.result;
+ },
- NAME: function( match, context ) {
- if ( typeof context.getElementsByName !== "undefined" ) {
- var ret = [],
- results = context.getElementsByName( match[1] );
+ handlers: function( event, handlers ) {
+ var sel, handleObj, matches, i,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
- for ( var i = 0, l = results.length; i < l; i++ ) {
- if ( results[i].getAttribute("name") === match[1] ) {
- ret.push( results[i] );
- }
- }
+ // Find delegate handlers
+ // Black-hole SVG instance trees (#13180)
+ // Avoid non-left-click bubbling in Firefox (#3861)
+ if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
- return ret.length === 0 ? null : ret;
- }
- },
+ /* jshint eqeqeq: false */
+ for ( ; cur != this; cur = cur.parentNode || this ) {
+ /* jshint eqeqeq: true */
- TAG: function( match, context ) {
- if ( typeof context.getElementsByTagName !== "undefined" ) {
- return context.getElementsByTagName( match[1] );
- }
- }
- },
- preFilter: {
- CLASS: function( match, curLoop, inplace, result, not, isXML ) {
- match = " " + match[1].replace( rBackslash, "" ) + " ";
+ // Don't check non-elements (#13208)
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
+ matches = [];
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
- if ( isXML ) {
- return match;
- }
+ // Don't conflict with Object.prototype properties (#13203)
+ sel = handleObj.selector + " ";
- for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
- if ( elem ) {
- if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
- if ( !inplace ) {
- result.push( elem );
+ if ( matches[ sel ] === undefined ) {
+ matches[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) >= 0 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
}
-
- } else if ( inplace ) {
- curLoop[i] = false;
+ if ( matches[ sel ] ) {
+ matches.push( handleObj );
+ }
+ }
+ if ( matches.length ) {
+ handlerQueue.push({ elem: cur, handlers: matches });
}
}
}
+ }
- return false;
- },
+ // Add the remaining (directly-bound) handlers
+ if ( delegateCount < handlers.length ) {
+ handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
+ }
- ID: function( match ) {
- return match[1].replace( rBackslash, "" );
- },
+ return handlerQueue;
+ },
- TAG: function( match, curLoop ) {
- return match[1].replace( rBackslash, "" ).toLowerCase();
- },
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
- CHILD: function( match ) {
- if ( match[1] === "nth" ) {
- if ( !match[2] ) {
- Sizzle.error( match[0] );
- }
+ // Create a writable copy of the event object and normalize some properties
+ var i, prop, copy,
+ type = event.type,
+ originalEvent = event,
+ fixHook = this.fixHooks[ type ];
- match[2] = match[2].replace(/^\+|\s*/g, '');
+ if ( !fixHook ) {
+ this.fixHooks[ type ] = fixHook =
+ rmouseEvent.test( type ) ? this.mouseHooks :
+ rkeyEvent.test( type ) ? this.keyHooks :
+ {};
+ }
+ copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
- // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
- var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
- match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
- !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+ event = new jQuery.Event( originalEvent );
- // calculate the numbers (first)n+(last) including if they are negative
- match[2] = (test[1] + (test[2] || 1)) - 0;
- match[3] = test[3] - 0;
- }
- else if ( match[2] ) {
- Sizzle.error( match[0] );
- }
+ i = copy.length;
+ while ( i-- ) {
+ prop = copy[ i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
- // TODO: Move to normal caching system
- match[0] = done++;
+ // Support: IE<9
+ // Fix target property (#1925)
+ if ( !event.target ) {
+ event.target = originalEvent.srcElement || document;
+ }
- return match;
- },
+ // Support: Chrome 23+, Safari?
+ // Target should not be a text node (#504, #13143)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
- ATTR: function( match, curLoop, inplace, result, not, isXML ) {
- var name = match[1] = match[1].replace( rBackslash, "" );
+ // Support: IE<9
+ // For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
+ event.metaKey = !!event.metaKey;
- if ( !isXML && Expr.attrMap[name] ) {
- match[1] = Expr.attrMap[name];
- }
+ return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
+ },
- // Handle if an un-quoted value was used
- match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
+ // Includes some event props shared by KeyEvent and MouseEvent
+ props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
- if ( match[2] === "~=" ) {
- match[4] = " " + match[4] + " ";
- }
+ fixHooks: {},
- return match;
- },
+ keyHooks: {
+ props: "char charCode key keyCode".split(" "),
+ filter: function( event, original ) {
- PSEUDO: function( match, curLoop, inplace, result, not ) {
- if ( match[1] === "not" ) {
- // If we're dealing with a complex expression, or a simple one
- if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
- match[3] = Sizzle(match[3], null, null, curLoop);
+ // Add which for key events
+ if ( event.which == null ) {
+ event.which = original.charCode != null ? original.charCode : original.keyCode;
+ }
- } else {
- var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+ return event;
+ }
+ },
- if ( !inplace ) {
- result.push.apply( result, ret );
- }
+ mouseHooks: {
+ props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
+ filter: function( event, original ) {
+ var body, eventDoc, doc,
+ button = original.button,
+ fromElement = original.fromElement;
- return false;
- }
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && original.clientX != null ) {
+ eventDoc = event.target.ownerDocument || document;
+ doc = eventDoc.documentElement;
+ body = eventDoc.body;
- } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
- return true;
+ event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
+ event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
}
- return match;
- },
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && fromElement ) {
+ event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
+ }
- POS: function( match ) {
- match.unshift( true );
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && button !== undefined ) {
+ event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
+ }
- return match;
+ return event;
}
},
- filters: {
- enabled: function( elem ) {
- return elem.disabled === false && elem.type !== "hidden";
+ special: {
+ load: {
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
},
-
- disabled: function( elem ) {
- return elem.disabled === true;
+ focus: {
+ // Fire native event if possible so blur/focus sequence is correct
+ trigger: function() {
+ if ( this !== safeActiveElement() && this.focus ) {
+ try {
+ this.focus();
+ return false;
+ } catch ( e ) {
+ // Support: IE<9
+ // If we error on focus to hidden element (#1486, #12518),
+ // let .trigger() run the handlers
+ }
+ }
+ },
+ delegateType: "focusin"
},
-
- checked: function( elem ) {
- return elem.checked === true;
+ blur: {
+ trigger: function() {
+ if ( this === safeActiveElement() && this.blur ) {
+ this.blur();
+ return false;
+ }
+ },
+ delegateType: "focusout"
},
+ click: {
+ // For checkbox, fire native event so checked state will be right
+ trigger: function() {
+ if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
+ this.click();
+ return false;
+ }
+ },
- selected: function( elem ) {
- // Accessing this property makes selected-by-default
- // options in Safari work properly
- if ( elem.parentNode ) {
- elem.parentNode.selectedIndex;
+ // For cross-browser consistency, don't fire native .click() on links
+ _default: function( event ) {
+ return jQuery.nodeName( event.target, "a" );
}
-
- return elem.selected === true;
- },
-
- parent: function( elem ) {
- return !!elem.firstChild;
- },
-
- empty: function( elem ) {
- return !elem.firstChild;
- },
-
- has: function( elem, i, match ) {
- return !!Sizzle( match[3], elem ).length;
- },
-
- header: function( elem ) {
- return (/h\d/i).test( elem.nodeName );
- },
-
- text: function( elem ) {
- var attr = elem.getAttribute( "type" ), type = elem.type;
- // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
- // use getAttribute instead to test this case
- return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
- },
-
- radio: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
- },
-
- checkbox: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
- },
-
- file: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
- },
-
- password: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
- },
-
- submit: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && "submit" === elem.type;
- },
-
- image: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
- },
-
- reset: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && "reset" === elem.type;
- },
-
- button: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && "button" === elem.type || name === "button";
},
- input: function( elem ) {
- return (/input|select|textarea|button/i).test( elem.nodeName );
- },
+ beforeunload: {
+ postDispatch: function( event ) {
- focus: function( elem ) {
- return elem === elem.ownerDocument.activeElement;
+ // Even when returnValue equals to undefined Firefox will still show alert
+ if ( event.result !== undefined ) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
}
},
- setFilters: {
- first: function( elem, i ) {
- return i === 0;
- },
-
- last: function( elem, i, match, array ) {
- return i === array.length - 1;
- },
-
- even: function( elem, i ) {
- return i % 2 === 0;
- },
-
- odd: function( elem, i ) {
- return i % 2 === 1;
- },
- lt: function( elem, i, match ) {
- return i < match[3] - 0;
- },
-
- gt: function( elem, i, match ) {
- return i > match[3] - 0;
- },
-
- nth: function( elem, i, match ) {
- return match[3] - 0 === i;
- },
+ simulate: function( type, elem, event, bubble ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ var e = jQuery.extend(
+ new jQuery.Event(),
+ event,
+ {
+ type: type,
+ isSimulated: true,
+ originalEvent: {}
+ }
+ );
+ if ( bubble ) {
+ jQuery.event.trigger( e, null, elem );
+ } else {
+ jQuery.event.dispatch.call( elem, e );
+ }
+ if ( e.isDefaultPrevented() ) {
+ event.preventDefault();
+ }
+ }
+};
- eq: function( elem, i, match ) {
- return match[3] - 0 === i;
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
}
- },
- filter: {
- PSEUDO: function( elem, match, i, array ) {
- var name = match[1],
- filter = Expr.filters[ name ];
+ } :
+ function( elem, type, handle ) {
+ var name = "on" + type;
- if ( filter ) {
- return filter( elem, i, match, array );
+ if ( elem.detachEvent ) {
- } else if ( name === "contains" ) {
- return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
+ // #8545, #7054, preventing memory leaks for custom events in IE6-8
+ // detachEvent needed property on element, by name of that event, to properly expose it to GC
+ if ( typeof elem[ name ] === core_strundefined ) {
+ elem[ name ] = null;
+ }
- } else if ( name === "not" ) {
- var not = match[3];
+ elem.detachEvent( name, handle );
+ }
+ };
- for ( var j = 0, l = not.length; j < l; j++ ) {
- if ( not[j] === elem ) {
- return false;
- }
- }
+jQuery.Event = function( src, props ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !(this instanceof jQuery.Event) ) {
+ return new jQuery.Event( src, props );
+ }
- return true;
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
- } else {
- Sizzle.error( name );
- }
- },
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
+ src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
- CHILD: function( elem, match ) {
- var first, last,
- doneName, parent, cache,
- count, diff,
- type = match[1],
- node = elem;
-
- switch ( type ) {
- case "only":
- case "first":
- while ( (node = node.previousSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
+ // Event type
+ } else {
+ this.type = src;
+ }
- if ( type === "first" ) {
- return true;
- }
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
- node = elem;
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || jQuery.now();
- /* falls through */
- case "last":
- while ( (node = node.nextSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
- return true;
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
- case "nth":
- first = match[2];
- last = match[3];
+ preventDefault: function() {
+ var e = this.originalEvent;
- if ( first === 1 && last === 0 ) {
- return true;
- }
+ this.isDefaultPrevented = returnTrue;
+ if ( !e ) {
+ return;
+ }
- doneName = match[0];
- parent = elem.parentNode;
+ // If preventDefault exists, run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
- if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
- count = 0;
+ // Support: IE
+ // Otherwise set the returnValue property of the original event to false
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
- for ( node = parent.firstChild; node; node = node.nextSibling ) {
- if ( node.nodeType === 1 ) {
- node.nodeIndex = ++count;
- }
- }
+ this.isPropagationStopped = returnTrue;
+ if ( !e ) {
+ return;
+ }
+ // If stopPropagation exists, run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
- parent[ expando ] = doneName;
- }
+ // Support: IE
+ // Set the cancelBubble property of the original event to true
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ }
+};
- diff = elem.nodeIndex - last;
+// Create mouseenter/leave events using mouseover/out and event-time checks
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
- if ( first === 0 ) {
- return diff === 0;
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj;
- } else {
- return ( diff % first === 0 && diff / first >= 0 );
- }
+ // For mousenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
}
- },
+ return ret;
+ }
+ };
+});
- ID: function( elem, match ) {
- return elem.nodeType === 1 && elem.getAttribute("id") === match;
- },
+// IE submit delegation
+if ( !jQuery.support.submitBubbles ) {
- TAG: function( elem, match ) {
- return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
- },
+ jQuery.event.special.submit = {
+ setup: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
+ }
- CLASS: function( elem, match ) {
- return (" " + (elem.className || elem.getAttribute("class")) + " ")
- .indexOf( match ) > -1;
+ // Lazy-add a submit handler when a descendant form may potentially be submitted
+ jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
+ // Node name check avoids a VML-related crash in IE (#9807)
+ var elem = e.target,
+ form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
+ if ( form && !jQuery._data( form, "submitBubbles" ) ) {
+ jQuery.event.add( form, "submit._submit", function( event ) {
+ event._submit_bubble = true;
+ });
+ jQuery._data( form, "submitBubbles", true );
+ }
+ });
+ // return undefined since we don't need an event listener
},
- ATTR: function( elem, match ) {
- var name = match[1],
- result = Sizzle.attr ?
- Sizzle.attr( elem, name ) :
- Expr.attrHandle[ name ] ?
- Expr.attrHandle[ name ]( elem ) :
- elem[ name ] != null ?
- elem[ name ] :
- elem.getAttribute( name ),
- value = result + "",
- type = match[2],
- check = match[4];
-
- return result == null ?
- type === "!=" :
- !type && Sizzle.attr ?
- result != null :
- type === "=" ?
- value === check :
- type === "*=" ?
- value.indexOf(check) >= 0 :
- type === "~=" ?
- (" " + value + " ").indexOf(check) >= 0 :
- !check ?
- value && result !== false :
- type === "!=" ?
- value !== check :
- type === "^=" ?
- value.indexOf(check) === 0 :
- type === "$=" ?
- value.substr(value.length - check.length) === check :
- type === "|=" ?
- value === check || value.substr(0, check.length + 1) === check + "-" :
- false;
+ postDispatch: function( event ) {
+ // If form was submitted by the user, bubble the event up the tree
+ if ( event._submit_bubble ) {
+ delete event._submit_bubble;
+ if ( this.parentNode && !event.isTrigger ) {
+ jQuery.event.simulate( "submit", this.parentNode, event, true );
+ }
+ }
},
- POS: function( elem, match, i, array ) {
- var name = match[2],
- filter = Expr.setFilters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
+ teardown: function() {
+ // Only need this for delegated form submit events
+ if ( jQuery.nodeName( this, "form" ) ) {
+ return false;
}
- }
- }
-};
-var origPOS = Expr.match.POS,
- fescape = function(all, num){
- return "\\" + (num - 0 + 1);
+ // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
+ jQuery.event.remove( this, "._submit" );
+ }
};
-
-for ( var type in Expr.match ) {
- Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
- Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
}
-// Expose origPOS
-// "global" as in regardless of relation to brackets/parens
-Expr.match.globalPOS = origPOS;
-
-var makeArray = function( array, results ) {
- array = Array.prototype.slice.call( array, 0 );
- if ( results ) {
- results.push.apply( results, array );
- return results;
- }
+// IE change delegation and checkbox/radio fix
+if ( !jQuery.support.changeBubbles ) {
- return array;
-};
+ jQuery.event.special.change = {
-// Perform a simple check to determine if the browser is capable of
-// converting a NodeList to an array using builtin methods.
-// Also verifies that the returned array holds DOM nodes
-// (which is not the case in the Blackberry browser)
-try {
- Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
+ setup: function() {
-// Provide a fallback method if it does not work
-} catch( e ) {
- makeArray = function( array, results ) {
- var i = 0,
- ret = results || [];
-
- if ( toString.call(array) === "[object Array]" ) {
- Array.prototype.push.apply( ret, array );
-
- } else {
- if ( typeof array.length === "number" ) {
- for ( var l = array.length; i < l; i++ ) {
- ret.push( array[i] );
+ if ( rformElems.test( this.nodeName ) ) {
+ // IE doesn't fire change on a check/radio until blur; trigger it on click
+ // after a propertychange. Eat the blur-change in special.change.handle.
+ // This still fires onchange a second time for check/radio after blur.
+ if ( this.type === "checkbox" || this.type === "radio" ) {
+ jQuery.event.add( this, "propertychange._change", function( event ) {
+ if ( event.originalEvent.propertyName === "checked" ) {
+ this._just_changed = true;
+ }
+ });
+ jQuery.event.add( this, "click._change", function( event ) {
+ if ( this._just_changed && !event.isTrigger ) {
+ this._just_changed = false;
+ }
+ // Allow triggered, simulated change events (#11500)
+ jQuery.event.simulate( "change", this, event, true );
+ });
}
+ return false;
+ }
+ // Delegated event; lazy-add a change handler on descendant inputs
+ jQuery.event.add( this, "beforeactivate._change", function( e ) {
+ var elem = e.target;
- } else {
- for ( ; array[i]; i++ ) {
- ret.push( array[i] );
+ if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
+ jQuery.event.add( elem, "change._change", function( event ) {
+ if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
+ jQuery.event.simulate( "change", this.parentNode, event, true );
+ }
+ });
+ jQuery._data( elem, "changeBubbles", true );
}
- }
- }
+ });
+ },
- return ret;
- };
-}
+ handle: function( event ) {
+ var elem = event.target;
-var sortOrder, siblingCheck;
+ // Swallow native change events from checkbox/radio, we already triggered them above
+ if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
+ return event.handleObj.handler.apply( this, arguments );
+ }
+ },
-if ( document.documentElement.compareDocumentPosition ) {
- sortOrder = function( a, b ) {
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
- }
+ teardown: function() {
+ jQuery.event.remove( this, "._change" );
- if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
- return a.compareDocumentPosition ? -1 : 1;
+ return !rformElems.test( this.nodeName );
}
-
- return a.compareDocumentPosition(b) & 4 ? -1 : 1;
};
+}
-} else {
- sortOrder = function( a, b ) {
- // The nodes are identical, we can exit early
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
- // Fallback to using sourceIndex (in IE) if it's available on both nodes
- } else if ( a.sourceIndex && b.sourceIndex ) {
- return a.sourceIndex - b.sourceIndex;
- }
+ // Attach a single capturing handler while someone wants focusin/focusout
+ var attaches = 0,
+ handler = function( event ) {
+ jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
+ };
- var al, bl,
- ap = [],
- bp = [],
- aup = a.parentNode,
- bup = b.parentNode,
- cur = aup;
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ if ( attaches++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --attaches === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
+ }
+ };
+ });
+}
- // If the nodes are siblings (or identical) we can do a quick check
- if ( aup === bup ) {
- return siblingCheck( a, b );
+jQuery.fn.extend({
- // If no parents were found then the nodes are disconnected
- } else if ( !aup ) {
- return -1;
+ on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
+ var type, origFn;
- } else if ( !bup ) {
- return 1;
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ this.on( type, selector, data, types[ type ], one );
+ }
+ return this;
}
- // Otherwise they're somewhere else in the tree so we need
- // to build up a full list of the parentNodes for comparison
- while ( cur ) {
- ap.unshift( cur );
- cur = cur.parentNode;
+ if ( data == null && fn == null ) {
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
}
-
- cur = bup;
-
- while ( cur ) {
- bp.unshift( cur );
- cur = cur.parentNode;
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return this;
}
- al = ap.length;
- bl = bp.length;
-
- // Start walking down the tree looking for a discrepancy
- for ( var i = 0; i < al && i < bl; i++ ) {
- if ( ap[i] !== bp[i] ) {
- return siblingCheck( ap[i], bp[i] );
- }
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
}
-
- // We ended someplace up the tree so do a sibling check
- return i === al ?
- siblingCheck( a, bp[i], -1 ) :
- siblingCheck( ap[i], b, 1 );
- };
-
- siblingCheck = function( a, b, ret ) {
- if ( a === b ) {
- return ret;
+ return this.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ });
+ },
+ one: function( types, selector, data, fn ) {
+ return this.on( types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
}
-
- var cur = a.nextSibling;
-
- while ( cur ) {
- if ( cur === b ) {
- return -1;
+ if ( typeof types === "object" ) {
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
}
-
- cur = cur.nextSibling;
+ return this;
}
+ if ( selector === false || typeof selector === "function" ) {
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each(function() {
+ jQuery.event.remove( this, types, fn, selector );
+ });
+ },
- return 1;
- };
-}
-
-// Check to see if the browser returns elements by name when
-// querying by getElementById (and provide a workaround)
-(function(){
- // We're going to inject a fake input element with a specified name
- var form = document.createElement("div"),
- id = "script" + (new Date()).getTime(),
- root = document.documentElement;
-
- form.innerHTML = " ";
-
- // Inject it into the root element, check its status, and remove it quickly
- root.insertBefore( form, root.firstChild );
-
- // The workaround has to do additional checks after a getElementById
- // Which slows things down for other browsers (hence the branching)
- if ( document.getElementById( id ) ) {
- Expr.find.ID = function( match, context, isXML ) {
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
-
- return m ?
- m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
- [m] :
- undefined :
- [];
- }
- };
-
- Expr.filter.ID = function( elem, match ) {
- var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
-
- return elem.nodeType === 1 && node && node.nodeValue === match;
- };
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+ triggerHandler: function( type, data ) {
+ var elem = this[0];
+ if ( elem ) {
+ return jQuery.event.trigger( type, data, elem, true );
+ }
}
+});
+var isSimple = /^.[^:#\[\.,]*$/,
+ rparentsprev = /^(?:parents|prev(?:Until|All))/,
+ rneedsContext = jQuery.expr.match.needsContext,
+ // methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
- root.removeChild( form );
-
- // release memory in IE
- root = form = null;
-})();
+jQuery.fn.extend({
+ find: function( selector ) {
+ var i,
+ ret = [],
+ self = this,
+ len = self.length;
-(function(){
- // Check to see if the browser returns only elements
- // when doing getElementsByTagName("*")
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ }) );
+ }
- // Create a fake element
- var div = document.createElement("div");
- div.appendChild( document.createComment("") );
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
- // Make sure no comments are found
- if ( div.getElementsByTagName("*").length > 0 ) {
- Expr.find.TAG = function( match, context ) {
- var results = context.getElementsByTagName( match[1] );
+ // Needed because $( selector, context ) becomes $( context ).find( selector )
+ ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+ ret.selector = this.selector ? this.selector + " " + selector : selector;
+ return ret;
+ },
- // Filter out possible comments
- if ( match[1] === "*" ) {
- var tmp = [];
+ has: function( target ) {
+ var i,
+ targets = jQuery( target, this ),
+ len = targets.length;
- for ( var i = 0; results[i]; i++ ) {
- if ( results[i].nodeType === 1 ) {
- tmp.push( results[i] );
- }
+ return this.filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
}
-
- results = tmp;
}
+ });
+ },
- return results;
- };
- }
-
- // Check to see if an attribute returns normalized href attributes
- div.innerHTML = " ";
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], true) );
+ },
- if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
- div.firstChild.getAttribute("href") !== "#" ) {
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], false) );
+ },
- Expr.attrHandle.href = function( elem ) {
- return elem.getAttribute( "href", 2 );
- };
- }
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ },
- // release memory in IE
- div = null;
-})();
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ ret = [],
+ pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
-if ( document.querySelectorAll ) {
- (function(){
- var oldSizzle = Sizzle,
- div = document.createElement("div"),
- id = "__sizzle__";
+ for ( ; i < l; i++ ) {
+ for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && (pos ?
+ pos.index(cur) > -1 :
- div.innerHTML = "
";
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector(cur, selectors)) ) {
- // Safari can't handle uppercase or unicode characters when
- // in quirks mode.
- if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
- return;
+ cur = ret.push( cur );
+ break;
+ }
+ }
}
- Sizzle = function( query, context, extra, seed ) {
- context = context || document;
-
- // Only use querySelectorAll on non-XML documents
- // (ID selectors don't work in non-HTML documents)
- if ( !seed && !Sizzle.isXML(context) ) {
- // See if we find a selector to speed up
- var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
-
- if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
- // Speed-up: Sizzle("TAG")
- if ( match[1] ) {
- return makeArray( context.getElementsByTagName( query ), extra );
+ return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );
+ },
- // Speed-up: Sizzle(".CLASS")
- } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
- return makeArray( context.getElementsByClassName( match[2] ), extra );
- }
- }
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
- if ( context.nodeType === 9 ) {
- // Speed-up: Sizzle("body")
- // The body element only exists once, optimize finding it
- if ( query === "body" && context.body ) {
- return makeArray( [ context.body ], extra );
-
- // Speed-up: Sizzle("#ID")
- } else if ( match && match[3] ) {
- var elem = context.getElementById( match[3] );
-
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id === match[3] ) {
- return makeArray( [ elem ], extra );
- }
-
- } else {
- return makeArray( [], extra );
- }
- }
-
- try {
- return makeArray( context.querySelectorAll(query), extra );
- } catch(qsaError) {}
-
- // qSA works strangely on Element-rooted queries
- // We can work around this by specifying an extra ID on the root
- // and working up from there (Thanks to Andrew Dupont for the technique)
- // IE 8 doesn't work on object elements
- } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
- var oldContext = context,
- old = context.getAttribute( "id" ),
- nid = old || id,
- hasParent = context.parentNode,
- relativeHierarchySelector = /^\s*[+~]/.test( query );
-
- if ( !old ) {
- context.setAttribute( "id", nid );
- } else {
- nid = nid.replace( /'/g, "\\$&" );
- }
- if ( relativeHierarchySelector && hasParent ) {
- context = context.parentNode;
- }
-
- try {
- if ( !relativeHierarchySelector || hasParent ) {
- return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
- }
-
- } catch(pseudoError) {
- } finally {
- if ( !old ) {
- oldContext.removeAttribute( "id" );
- }
- }
- }
- }
-
- return oldSizzle(query, context, extra, seed);
- };
-
- for ( var prop in oldSizzle ) {
- Sizzle[ prop ] = oldSizzle[ prop ];
- }
-
- // release memory in IE
- div = null;
- })();
-}
-
-(function(){
- var html = document.documentElement,
- matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
-
- if ( matches ) {
- // Check to see if it's possible to do matchesSelector
- // on a disconnected node (IE 9 fails this)
- var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
- pseudoWorks = false;
-
- try {
- // This should fail with an exception
- // Gecko does not error, returns false instead
- matches.call( document.documentElement, "[test!='']:sizzle" );
-
- } catch( pseudoError ) {
- pseudoWorks = true;
- }
-
- Sizzle.matchesSelector = function( node, expr ) {
- // Make sure that attribute selectors are quoted
- expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
-
- if ( !Sizzle.isXML( node ) ) {
- try {
- if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
- var ret = matches.call( node, expr );
-
- // IE 9's matchesSelector returns false on disconnected nodes
- if ( ret || !disconnectedMatch ||
- // As well, disconnected nodes are said to be in a document
- // fragment in IE 9, so check for that
- node.document && node.document.nodeType !== 11 ) {
- return ret;
- }
- }
- } catch(e) {}
- }
-
- return Sizzle(expr, null, null, [node]).length > 0;
- };
- }
-})();
-
-(function(){
- var div = document.createElement("div");
-
- div.innerHTML = "
";
-
- // Opera can't find a second classname (in 9.6)
- // Also, make sure that getElementsByClassName actually exists
- if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
- return;
- }
-
- // Safari caches class attributes, doesn't catch changes (in 3.2)
- div.lastChild.className = "e";
-
- if ( div.getElementsByClassName("e").length === 1 ) {
- return;
- }
-
- Expr.order.splice(1, 0, "CLASS");
- Expr.find.CLASS = function( match, context, isXML ) {
- if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
- return context.getElementsByClassName(match[1]);
- }
- };
-
- // release memory in IE
- div = null;
-})();
-
-function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
-
- if ( elem ) {
- var match = false;
-
- elem = elem[dir];
-
- while ( elem ) {
- if ( elem[ expando ] === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 && !isXML ){
- elem[ expando ] = doneName;
- elem.sizset = i;
- }
-
- if ( elem.nodeName.toLowerCase() === cur ) {
- match = elem;
- break;
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
-
- if ( elem ) {
- var match = false;
-
- elem = elem[dir];
-
- while ( elem ) {
- if ( elem[ expando ] === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 ) {
- if ( !isXML ) {
- elem[ expando ] = doneName;
- elem.sizset = i;
- }
-
- if ( typeof cur !== "string" ) {
- if ( elem === cur ) {
- match = true;
- break;
- }
-
- } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
- match = elem;
- break;
- }
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-if ( document.documentElement.contains ) {
- Sizzle.contains = function( a, b ) {
- return a !== b && (a.contains ? a.contains(b) : true);
- };
-
-} else if ( document.documentElement.compareDocumentPosition ) {
- Sizzle.contains = function( a, b ) {
- return !!(a.compareDocumentPosition(b) & 16);
- };
-
-} else {
- Sizzle.contains = function() {
- return false;
- };
-}
-
-Sizzle.isXML = function( elem ) {
- // documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
- var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
-
- return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-var posProcess = function( selector, context, seed ) {
- var match,
- tmpSet = [],
- later = "",
- root = context.nodeType ? [context] : context;
-
- // Position selectors must be done after the filter
- // And so must :not(positional) so we move all PSEUDOs to the end
- while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
- later += match[0];
- selector = selector.replace( Expr.match.PSEUDO, "" );
- }
-
- selector = Expr.relative[selector] ? selector + "*" : selector;
-
- for ( var i = 0, l = root.length; i < l; i++ ) {
- Sizzle( selector, root[i], tmpSet, seed );
- }
-
- return Sizzle.filter( later, tmpSet );
-};
-
-// EXPOSE
-// Override sizzle attribute retrieval
-Sizzle.attr = jQuery.attr;
-Sizzle.selectors.attrMap = {};
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.filters;
-jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-
-
-})();
-
-
-var runtil = /Until$/,
- rparentsprev = /^(?:parents|prevUntil|prevAll)/,
- // Note: This RegExp should be improved, or likely pulled from Sizzle
- rmultiselector = /,/,
- isSimple = /^.[^:#\[\.,]*$/,
- slice = Array.prototype.slice,
- POS = jQuery.expr.match.globalPOS,
- // methods guaranteed to produce a unique set when starting from a unique set
- guaranteedUnique = {
- children: true,
- contents: true,
- next: true,
- prev: true
- };
-
-jQuery.fn.extend({
- find: function( selector ) {
- var self = this,
- i, l;
-
- if ( typeof selector !== "string" ) {
- return jQuery( selector ).filter(function() {
- for ( i = 0, l = self.length; i < l; i++ ) {
- if ( jQuery.contains( self[ i ], this ) ) {
- return true;
- }
- }
- });
- }
-
- var ret = this.pushStack( "", "find", selector ),
- length, n, r;
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- length = ret.length;
- jQuery.find( selector, this[i], ret );
-
- if ( i > 0 ) {
- // Make sure that the results are unique
- for ( n = length; n < ret.length; n++ ) {
- for ( r = 0; r < length; r++ ) {
- if ( ret[r] === ret[n] ) {
- ret.splice(n--, 1);
- break;
- }
- }
- }
- }
- }
-
- return ret;
- },
-
- has: function( target ) {
- var targets = jQuery( target );
- return this.filter(function() {
- for ( var i = 0, l = targets.length; i < l; i++ ) {
- if ( jQuery.contains( this, targets[i] ) ) {
- return true;
- }
- }
- });
- },
-
- not: function( selector ) {
- return this.pushStack( winnow(this, selector, false), "not", selector);
- },
-
- filter: function( selector ) {
- return this.pushStack( winnow(this, selector, true), "filter", selector );
- },
-
- is: function( selector ) {
- return !!selector && (
- typeof selector === "string" ?
- // If this is a positional selector, check membership in the returned set
- // so $("p:first").is("p:last") won't return true for a doc with two "p".
- POS.test( selector ) ?
- jQuery( selector, this.context ).index( this[0] ) >= 0 :
- jQuery.filter( selector, this ).length > 0 :
- this.filter( selector ).length > 0 );
- },
-
- closest: function( selectors, context ) {
- var ret = [], i, l, cur = this[0];
-
- // Array (deprecated as of jQuery 1.7)
- if ( jQuery.isArray( selectors ) ) {
- var level = 1;
-
- while ( cur && cur.ownerDocument && cur !== context ) {
- for ( i = 0; i < selectors.length; i++ ) {
-
- if ( jQuery( cur ).is( selectors[ i ] ) ) {
- ret.push({ selector: selectors[ i ], elem: cur, level: level });
- }
- }
-
- cur = cur.parentNode;
- level++;
- }
-
- return ret;
- }
-
- // String
- var pos = POS.test( selectors ) || typeof selectors !== "string" ?
- jQuery( selectors, context || this.context ) :
- 0;
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- cur = this[i];
-
- while ( cur ) {
- if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
- ret.push( cur );
- break;
-
- } else {
- cur = cur.parentNode;
- if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
- break;
- }
- }
- }
- }
-
- ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
-
- return this.pushStack( ret, "closest", selectors );
- },
-
- // Determine the position of an element within
- // the matched set of elements
- index: function( elem ) {
-
- // No argument, return index in parent
- if ( !elem ) {
- return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
- }
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
+ }
// index in selector
if ( typeof elem === "string" ) {
@@ -5552,20 +5826,22 @@ jQuery.fn.extend({
jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
all = jQuery.merge( this.get(), set );
- return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
- all :
- jQuery.unique( all ) );
+ return this.pushStack( jQuery.unique(all) );
},
- andSelf: function() {
- return this.add( this.prevObject );
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter(selector)
+ );
}
});
-// A painfully simple check to see if an element is disconnected
-// from a document (should be improved, where feasible).
-function isDisconnected( node ) {
- return !node || !node.parentNode || node.parentNode.nodeType === 11;
+function sibling( cur, dir ) {
+ do {
+ cur = cur[ dir ];
+ } while ( cur && cur.nodeType !== 1 );
+
+ return cur;
}
jQuery.each({
@@ -5580,10 +5856,10 @@ jQuery.each({
return jQuery.dir( elem, "parentNode", until );
},
next: function( elem ) {
- return jQuery.nth( elem, 2, "nextSibling" );
+ return sibling( elem, "nextSibling" );
},
prev: function( elem ) {
- return jQuery.nth( elem, 2, "previousSibling" );
+ return sibling( elem, "previousSibling" );
},
nextAll: function( elem ) {
return jQuery.dir( elem, "nextSibling" );
@@ -5606,13 +5882,13 @@ jQuery.each({
contents: function( elem ) {
return jQuery.nodeName( elem, "iframe" ) ?
elem.contentDocument || elem.contentWindow.document :
- jQuery.makeArray( elem.childNodes );
+ jQuery.merge( [], elem.childNodes );
}
}, function( name, fn ) {
jQuery.fn[ name ] = function( until, selector ) {
var ret = jQuery.map( this, fn, until );
- if ( !runtil.test( name ) ) {
+ if ( name.slice( -5 ) !== "Until" ) {
selector = until;
}
@@ -5620,25 +5896,35 @@ jQuery.each({
ret = jQuery.filter( selector, ret );
}
- ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
+ if ( this.length > 1 ) {
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ ret = jQuery.unique( ret );
+ }
- if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
- ret = ret.reverse();
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
}
- return this.pushStack( ret, name, slice.call( arguments ).join(",") );
+ return this.pushStack( ret );
};
});
jQuery.extend({
filter: function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
if ( not ) {
expr = ":not(" + expr + ")";
}
- return elems.length === 1 ?
- jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
- jQuery.find.matches(expr, elems);
+ return elems.length === 1 && elem.nodeType === 1 ?
+ jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+ jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ }));
},
dir: function( elem, dir, until ) {
@@ -5654,19 +5940,6 @@ jQuery.extend({
return matched;
},
- nth: function( cur, result, dir, elem ) {
- result = result || 1;
- var num = 0;
-
- for ( ; cur; cur = cur[dir] ) {
- if ( cur.nodeType === 1 && ++num === result ) {
- break;
- }
- }
-
- return cur;
- },
-
sibling: function( n, elem ) {
var r = [];
@@ -5681,46 +5954,37 @@ jQuery.extend({
});
// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, keep ) {
-
- // Can't pass null or undefined to indexOf in Firefox 4
- // Set to 0 to skip string check
- qualifier = qualifier || 0;
-
+function winnow( elements, qualifier, not ) {
if ( jQuery.isFunction( qualifier ) ) {
- return jQuery.grep(elements, function( elem, i ) {
- var retVal = !!qualifier.call( elem, i, elem );
- return retVal === keep;
+ return jQuery.grep( elements, function( elem, i ) {
+ /* jshint -W018 */
+ return !!qualifier.call( elem, i, elem ) !== not;
});
- } else if ( qualifier.nodeType ) {
- return jQuery.grep(elements, function( elem, i ) {
- return ( elem === qualifier ) === keep;
- });
+ }
- } else if ( typeof qualifier === "string" ) {
- var filtered = jQuery.grep(elements, function( elem ) {
- return elem.nodeType === 1;
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
});
+ }
+
+ if ( typeof qualifier === "string" ) {
if ( isSimple.test( qualifier ) ) {
- return jQuery.filter(qualifier, filtered, !keep);
- } else {
- qualifier = jQuery.filter( qualifier, filtered );
+ return jQuery.filter( qualifier, elements, not );
}
+
+ qualifier = jQuery.filter( qualifier, elements );
}
- return jQuery.grep(elements, function( elem, i ) {
- return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
+ return jQuery.grep( elements, function( elem ) {
+ return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;
});
}
-
-
-
-
function createSafeFragment( document ) {
var list = nodeNames.split( "|" ),
- safeFrag = document.createDocumentFragment();
+ safeFrag = document.createDocumentFragment();
if ( safeFrag.createElement ) {
while ( list.length ) {
@@ -5734,40 +5998,43 @@ function createSafeFragment( document ) {
var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
- rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+ rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
+ rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
rleadingWhitespace = /^\s+/,
- rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
rtagName = /<([\w:]+)/,
rtbody = / ]", "i"),
+ rnoInnerhtml = /<(?:script|style|link)/i,
+ manipulation_rcheckableType = /^(?:checkbox|radio)$/i,
// checked="checked" or checked
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
- rscriptType = /\/(java|ecma)script/i,
- rcleanScript = /^\s*\s*$/g,
+
+ // We have to close these tags to support XHTML (#13200)
wrapMap = {
option: [ 1, "", " " ],
legend: [ 1, "", " " ],
+ area: [ 1, "", " " ],
+ param: [ 1, "", " " ],
thead: [ 1, "" ],
tr: [ 2, "" ],
- td: [ 3, "" ],
col: [ 2, "" ],
- area: [ 1, "", " " ],
- _default: [ 0, "", "" ]
+ td: [ 3, "" ],
+
+ // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
+ // unless wrapped in a div with non-breaking characters in front of it.
+ _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X", "
" ]
},
- safeFragment = createSafeFragment( document );
+ safeFragment = createSafeFragment( document ),
+ fragmentDiv = safeFragment.appendChild( document.createElement("div") );
wrapMap.optgroup = wrapMap.option;
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
wrapMap.th = wrapMap.td;
-// IE can't serialize and
+