{"version":3,"file":"app.bundle.js","mappings":"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","sources":["webpack://business-engine-client-app/./node_modules/angular-sanitize/angular-sanitize.js","webpack://business-engine-client-app/./node_modules/angular-sanitize/index.js","webpack://business-engine-client-app/./node_modules/ng-file-upload/dist/ng-file-upload-shim.js","webpack://business-engine-client-app/./node_modules/ng-file-upload/dist/ng-file-upload.js","webpack://business-engine-client-app/./src/configs/global.settings.js","webpack://business-engine-client-app/./src/controllers/module.controllers.js","webpack://business-engine-client-app/./src/directives/field.directive.js","webpack://business-engine-client-app/./src/services/action.service.js","webpack://business-engine-client-app/./src/services/expression.service.js","webpack://business-engine-client-app/external var \"jQuery\"","webpack://business-engine-client-app/webpack/bootstrap","webpack://business-engine-client-app/webpack/runtime/compat get default export","webpack://business-engine-client-app/webpack/runtime/define property getters","webpack://business-engine-client-app/webpack/runtime/hasOwnProperty shorthand","webpack://business-engine-client-app/external var \"angular\"","webpack://business-engine-client-app/./src/configs/app.config.js","webpack://business-engine-client-app/./src/app.js","webpack://business-engine-client-app/./src/providers/deferred-events.provider.js","webpack://business-engine-client-app/./src/services/global.service.js","webpack://business-engine-client-app/./src/services/api.service.js","webpack://business-engine-client-app/./src/directives/angular-extended.directive.js","webpack://business-engine-client-app/./src/directives/custom-items.directive.js","webpack://business-engine-client-app/./src/controllers/dashboard.controller.js"],"sourcesContent":["/**\n * @license AngularJS v1.8.3\n * (c) 2010-2020 Google LLC. http://angularjs.org\n * License: MIT\n */\n(function(window, angular) {'use strict';\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Any commits to this file should be reviewed with security in mind. *\n * Changes to this file can potentially create security vulnerabilities. *\n * An approval from 2 Core members with history of modifying *\n * this file is required. *\n * *\n * Does the change somehow allow for arbitrary javascript to be executed? *\n * Or allows for someone to change the prototype of built-in objects? *\n * Or gives undesired access to variables likes document or window? *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\nvar $sanitizeMinErr = angular.$$minErr('$sanitize');\nvar bind;\nvar extend;\nvar forEach;\nvar isArray;\nvar isDefined;\nvar lowercase;\nvar noop;\nvar nodeContains;\nvar htmlParser;\nvar htmlSanitizeWriter;\n\n/**\n * @ngdoc module\n * @name ngSanitize\n * @description\n *\n * The `ngSanitize` module provides functionality to sanitize HTML.\n *\n * See {@link ngSanitize.$sanitize `$sanitize`} for usage.\n */\n\n/**\n * @ngdoc service\n * @name $sanitize\n * @kind function\n *\n * @description\n * Sanitizes an html string by stripping all potentially dangerous tokens.\n *\n * The input is sanitized by parsing the HTML into tokens. All safe tokens (from a trusted URI list) are\n * then serialized back to a properly escaped HTML string. This means that no unsafe input can make\n * it into the returned string.\n *\n * The trusted URIs for URL sanitization of attribute values is configured using the functions\n * `aHrefSanitizationTrustedUrlList` and `imgSrcSanitizationTrustedUrlList` of {@link $compileProvider}.\n *\n * The input may also contain SVG markup if this is enabled via {@link $sanitizeProvider}.\n *\n * @param {string} html HTML input.\n * @returns {string} Sanitized HTML.\n *\n * @example\n \n \n \n
\n Snippet: \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
DirectiveHowSourceRendered
ng-bind-htmlAutomatically uses $sanitize
<div ng-bind-html=\"snippet\">
</div>
ng-bind-htmlBypass $sanitize by explicitly trusting the dangerous value\n
<div ng-bind-html=\"deliberatelyTrustDangerousSnippet()\">\n</div>
\n
ng-bindAutomatically escapes
<div ng-bind=\"snippet\">
</div>
\n
\n
\n \n it('should sanitize the html snippet by default', function() {\n expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).\n toBe('

an html\\nclick here\\nsnippet

');\n });\n\n it('should inline raw snippet if bound to a trusted value', function() {\n expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).\n toBe(\"

an html\\n\" +\n \"click here\\n\" +\n \"snippet

\");\n });\n\n it('should escape snippet without any filter', function() {\n expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).\n toBe(\"<p style=\\\"color:blue\\\">an html\\n\" +\n \"<em onmouseover=\\\"this.textContent='PWN3D!'\\\">click here</em>\\n\" +\n \"snippet</p>\");\n });\n\n it('should update', function() {\n element(by.model('snippet')).clear();\n element(by.model('snippet')).sendKeys('new text');\n expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).\n toBe('new text');\n expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).toBe(\n 'new text');\n expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).toBe(\n \"new <b onclick=\\\"alert(1)\\\">text</b>\");\n });\n
\n
\n */\n\n\n/**\n * @ngdoc provider\n * @name $sanitizeProvider\n * @this\n *\n * @description\n * Creates and configures {@link $sanitize} instance.\n */\nfunction $SanitizeProvider() {\n var hasBeenInstantiated = false;\n var svgEnabled = false;\n\n this.$get = ['$$sanitizeUri', function($$sanitizeUri) {\n hasBeenInstantiated = true;\n if (svgEnabled) {\n extend(validElements, svgElements);\n }\n return function(html) {\n var buf = [];\n htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) {\n return !/^unsafe:/.test($$sanitizeUri(uri, isImage));\n }));\n return buf.join('');\n };\n }];\n\n\n /**\n * @ngdoc method\n * @name $sanitizeProvider#enableSvg\n * @kind function\n *\n * @description\n * Enables a subset of svg to be supported by the sanitizer.\n *\n *
\n *

By enabling this setting without taking other precautions, you might expose your\n * application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned\n * outside of the containing element and be rendered over other elements on the page (e.g. a login\n * link). Such behavior can then result in phishing incidents.

\n *\n *

To protect against these, explicitly setup `overflow: hidden` css rule for all potential svg\n * tags within the sanitized content:

\n *\n *
\n *\n *
\n   *   .rootOfTheIncludedContent svg {\n   *     overflow: hidden !important;\n   *   }\n   *   
\n *
\n *\n * @param {boolean=} flag Enable or disable SVG support in the sanitizer.\n * @returns {boolean|$sanitizeProvider} Returns the currently configured value if called\n * without an argument or self for chaining otherwise.\n */\n this.enableSvg = function(enableSvg) {\n if (isDefined(enableSvg)) {\n svgEnabled = enableSvg;\n return this;\n } else {\n return svgEnabled;\n }\n };\n\n\n /**\n * @ngdoc method\n * @name $sanitizeProvider#addValidElements\n * @kind function\n *\n * @description\n * Extends the built-in lists of valid HTML/SVG elements, i.e. elements that are considered safe\n * and are not stripped off during sanitization. You can extend the following lists of elements:\n *\n * - `htmlElements`: A list of elements (tag names) to extend the current list of safe HTML\n * elements. HTML elements considered safe will not be removed during sanitization. All other\n * elements will be stripped off.\n *\n * - `htmlVoidElements`: This is similar to `htmlElements`, but marks the elements as\n * \"void elements\" (similar to HTML\n * [void elements](https://rawgit.com/w3c/html/html5.1-2/single-page.html#void-elements)). These\n * elements have no end tag and cannot have content.\n *\n * - `svgElements`: This is similar to `htmlElements`, but for SVG elements. This list is only\n * taken into account if SVG is {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for\n * `$sanitize`.\n *\n *
\n * This method must be called during the {@link angular.Module#config config} phase. Once the\n * `$sanitize` service has been instantiated, this method has no effect.\n *
\n *\n *
\n * Keep in mind that extending the built-in lists of elements may expose your app to XSS or\n * other vulnerabilities. Be very mindful of the elements you add.\n *
\n *\n * @param {Array|Object} elements - A list of valid HTML elements or an object with one or\n * more of the following properties:\n * - **htmlElements** - `{Array}` - A list of elements to extend the current list of\n * HTML elements.\n * - **htmlVoidElements** - `{Array}` - A list of elements to extend the current list of\n * void HTML elements; i.e. elements that do not have an end tag.\n * - **svgElements** - `{Array}` - A list of elements to extend the current list of SVG\n * elements. The list of SVG elements is only taken into account if SVG is\n * {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for `$sanitize`.\n *\n * Passing an array (`[...]`) is equivalent to passing `{htmlElements: [...]}`.\n *\n * @return {$sanitizeProvider} Returns self for chaining.\n */\n this.addValidElements = function(elements) {\n if (!hasBeenInstantiated) {\n if (isArray(elements)) {\n elements = {htmlElements: elements};\n }\n\n addElementsTo(svgElements, elements.svgElements);\n addElementsTo(voidElements, elements.htmlVoidElements);\n addElementsTo(validElements, elements.htmlVoidElements);\n addElementsTo(validElements, elements.htmlElements);\n }\n\n return this;\n };\n\n\n /**\n * @ngdoc method\n * @name $sanitizeProvider#addValidAttrs\n * @kind function\n *\n * @description\n * Extends the built-in list of valid attributes, i.e. attributes that are considered safe and are\n * not stripped off during sanitization.\n *\n * **Note**:\n * The new attributes will not be treated as URI attributes, which means their values will not be\n * sanitized as URIs using `$compileProvider`'s\n * {@link ng.$compileProvider#aHrefSanitizationTrustedUrlList aHrefSanitizationTrustedUrlList} and\n * {@link ng.$compileProvider#imgSrcSanitizationTrustedUrlList imgSrcSanitizationTrustedUrlList}.\n *\n *
\n * This method must be called during the {@link angular.Module#config config} phase. Once the\n * `$sanitize` service has been instantiated, this method has no effect.\n *
\n *\n *
\n * Keep in mind that extending the built-in list of attributes may expose your app to XSS or\n * other vulnerabilities. Be very mindful of the attributes you add.\n *
\n *\n * @param {Array} attrs - A list of valid attributes.\n *\n * @returns {$sanitizeProvider} Returns self for chaining.\n */\n this.addValidAttrs = function(attrs) {\n if (!hasBeenInstantiated) {\n extend(validAttrs, arrayToMap(attrs, true));\n }\n return this;\n };\n\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // Private stuff\n //////////////////////////////////////////////////////////////////////////////////////////////////\n\n bind = angular.bind;\n extend = angular.extend;\n forEach = angular.forEach;\n isArray = angular.isArray;\n isDefined = angular.isDefined;\n lowercase = angular.$$lowercase;\n noop = angular.noop;\n\n htmlParser = htmlParserImpl;\n htmlSanitizeWriter = htmlSanitizeWriterImpl;\n\n nodeContains = window.Node.prototype.contains || /** @this */ function(arg) {\n // eslint-disable-next-line no-bitwise\n return !!(this.compareDocumentPosition(arg) & 16);\n };\n\n // Regular Expressions for parsing tags and attributes\n var SURROGATE_PAIR_REGEXP = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,\n // Match everything outside of normal chars and \" (quote character)\n NON_ALPHANUMERIC_REGEXP = /([^#-~ |!])/g;\n\n\n // Good source of info about elements and attributes\n // http://dev.w3.org/html5/spec/Overview.html#semantics\n // http://simon.html5.org/html-elements\n\n // Safe Void Elements - HTML5\n // http://dev.w3.org/html5/spec/Overview.html#void-elements\n var voidElements = stringToMap('area,br,col,hr,img,wbr');\n\n // Elements that you can, intentionally, leave open (and which close themselves)\n // http://dev.w3.org/html5/spec/Overview.html#optional-tags\n var optionalEndTagBlockElements = stringToMap('colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr'),\n optionalEndTagInlineElements = stringToMap('rp,rt'),\n optionalEndTagElements = extend({},\n optionalEndTagInlineElements,\n optionalEndTagBlockElements);\n\n // Safe Block Elements - HTML5\n var blockElements = extend({}, optionalEndTagBlockElements, stringToMap('address,article,' +\n 'aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,' +\n 'h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul'));\n\n // Inline Elements - HTML5\n var inlineElements = extend({}, optionalEndTagInlineElements, stringToMap('a,abbr,acronym,b,' +\n 'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,' +\n 'samp,small,span,strike,strong,sub,sup,time,tt,u,var'));\n\n // SVG Elements\n // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements\n // Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted.\n // They can potentially allow for arbitrary javascript to be executed. See #11290\n var svgElements = stringToMap('circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,' +\n 'hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,' +\n 'radialGradient,rect,stop,svg,switch,text,title,tspan');\n\n // Blocked Elements (will be stripped)\n var blockedElements = stringToMap('script,style');\n\n var validElements = extend({},\n voidElements,\n blockElements,\n inlineElements,\n optionalEndTagElements);\n\n //Attributes that have href and hence need to be sanitized\n var uriAttrs = stringToMap('background,cite,href,longdesc,src,xlink:href,xml:base');\n\n var htmlAttrs = stringToMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +\n 'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +\n 'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +\n 'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +\n 'valign,value,vspace,width');\n\n // SVG attributes (without \"id\" and \"name\" attributes)\n // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes\n var svgAttrs = stringToMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' +\n 'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' +\n 'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' +\n 'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' +\n 'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' +\n 'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' +\n 'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' +\n 'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' +\n 'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' +\n 'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' +\n 'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' +\n 'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' +\n 'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' +\n 'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' +\n 'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true);\n\n var validAttrs = extend({},\n uriAttrs,\n svgAttrs,\n htmlAttrs);\n\n function stringToMap(str, lowercaseKeys) {\n return arrayToMap(str.split(','), lowercaseKeys);\n }\n\n function arrayToMap(items, lowercaseKeys) {\n var obj = {}, i;\n for (i = 0; i < items.length; i++) {\n obj[lowercaseKeys ? lowercase(items[i]) : items[i]] = true;\n }\n return obj;\n }\n\n function addElementsTo(elementsMap, newElements) {\n if (newElements && newElements.length) {\n extend(elementsMap, arrayToMap(newElements));\n }\n }\n\n /**\n * Create an inert document that contains the dirty HTML that needs sanitizing.\n * We use the DOMParser API by default and fall back to createHTMLDocument if DOMParser is not\n * available.\n */\n var getInertBodyElement /* function(html: string): HTMLBodyElement */ = (function(window, document) {\n if (isDOMParserAvailable()) {\n return getInertBodyElement_DOMParser;\n }\n\n if (!document || !document.implementation) {\n throw $sanitizeMinErr('noinert', 'Can\\'t create an inert html document');\n }\n var inertDocument = document.implementation.createHTMLDocument('inert');\n var inertBodyElement = (inertDocument.documentElement || inertDocument.getDocumentElement()).querySelector('body');\n return getInertBodyElement_InertDocument;\n\n function isDOMParserAvailable() {\n try {\n return !!getInertBodyElement_DOMParser('');\n } catch (e) {\n return false;\n }\n }\n\n function getInertBodyElement_DOMParser(html) {\n // We add this dummy element to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `` do not get hoisted to the `` tag.\n html = '' + html;\n try {\n var body = new window.DOMParser().parseFromString(html, 'text/html').body;\n body.firstChild.remove();\n return body;\n } catch (e) {\n return undefined;\n }\n }\n\n function getInertBodyElement_InertDocument(html) {\n inertBodyElement.innerHTML = html;\n\n // Support: IE 9-11 only\n // strip custom-namespaced attributes on IE<=11\n if (document.documentMode) {\n stripCustomNsAttrs(inertBodyElement);\n }\n\n return inertBodyElement;\n }\n })(window, window.document);\n\n /**\n * @example\n * htmlParser(htmlString, {\n * start: function(tag, attrs) {},\n * end: function(tag) {},\n * chars: function(text) {},\n * comment: function(text) {}\n * });\n *\n * @param {string} html string\n * @param {object} handler\n */\n function htmlParserImpl(html, handler) {\n if (html === null || html === undefined) {\n html = '';\n } else if (typeof html !== 'string') {\n html = '' + html;\n }\n\n var inertBodyElement = getInertBodyElement(html);\n if (!inertBodyElement) return '';\n\n //mXSS protection\n var mXSSAttempts = 5;\n do {\n if (mXSSAttempts === 0) {\n throw $sanitizeMinErr('uinput', 'Failed to sanitize html because the input is unstable');\n }\n mXSSAttempts--;\n\n // trigger mXSS if it is going to happen by reading and writing the innerHTML\n html = inertBodyElement.innerHTML;\n inertBodyElement = getInertBodyElement(html);\n } while (html !== inertBodyElement.innerHTML);\n\n var node = inertBodyElement.firstChild;\n while (node) {\n switch (node.nodeType) {\n case 1: // ELEMENT_NODE\n handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes));\n break;\n case 3: // TEXT NODE\n handler.chars(node.textContent);\n break;\n }\n\n var nextNode;\n if (!(nextNode = node.firstChild)) {\n if (node.nodeType === 1) {\n handler.end(node.nodeName.toLowerCase());\n }\n nextNode = getNonDescendant('nextSibling', node);\n if (!nextNode) {\n while (nextNode == null) {\n node = getNonDescendant('parentNode', node);\n if (node === inertBodyElement) break;\n nextNode = getNonDescendant('nextSibling', node);\n if (node.nodeType === 1) {\n handler.end(node.nodeName.toLowerCase());\n }\n }\n }\n }\n node = nextNode;\n }\n\n while ((node = inertBodyElement.firstChild)) {\n inertBodyElement.removeChild(node);\n }\n }\n\n function attrToMap(attrs) {\n var map = {};\n for (var i = 0, ii = attrs.length; i < ii; i++) {\n var attr = attrs[i];\n map[attr.name] = attr.value;\n }\n return map;\n }\n\n\n /**\n * Escapes all potentially dangerous characters, so that the\n * resulting string can be safely inserted into attribute or\n * element text.\n * @param value\n * @returns {string} escaped text\n */\n function encodeEntities(value) {\n return value.\n replace(/&/g, '&').\n replace(SURROGATE_PAIR_REGEXP, function(value) {\n var hi = value.charCodeAt(0);\n var low = value.charCodeAt(1);\n return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';\n }).\n replace(NON_ALPHANUMERIC_REGEXP, function(value) {\n return '&#' + value.charCodeAt(0) + ';';\n }).\n replace(//g, '>');\n }\n\n /**\n * create an HTML/XML writer which writes to buffer\n * @param {Array} buf use buf.join('') to get out sanitized html string\n * @returns {object} in the form of {\n * start: function(tag, attrs) {},\n * end: function(tag) {},\n * chars: function(text) {},\n * comment: function(text) {}\n * }\n */\n function htmlSanitizeWriterImpl(buf, uriValidator) {\n var ignoreCurrentElement = false;\n var out = bind(buf, buf.push);\n return {\n start: function(tag, attrs) {\n tag = lowercase(tag);\n if (!ignoreCurrentElement && blockedElements[tag]) {\n ignoreCurrentElement = tag;\n }\n if (!ignoreCurrentElement && validElements[tag] === true) {\n out('<');\n out(tag);\n forEach(attrs, function(value, key) {\n var lkey = lowercase(key);\n var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');\n if (validAttrs[lkey] === true &&\n (uriAttrs[lkey] !== true || uriValidator(value, isImage))) {\n out(' ');\n out(key);\n out('=\"');\n out(encodeEntities(value));\n out('\"');\n }\n });\n out('>');\n }\n },\n end: function(tag) {\n tag = lowercase(tag);\n if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) {\n out('');\n }\n // eslint-disable-next-line eqeqeq\n if (tag == ignoreCurrentElement) {\n ignoreCurrentElement = false;\n }\n },\n chars: function(chars) {\n if (!ignoreCurrentElement) {\n out(encodeEntities(chars));\n }\n }\n };\n }\n\n\n /**\n * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare\n * ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want\n * to allow any of these custom attributes. This method strips them all.\n *\n * @param node Root element to process\n */\n function stripCustomNsAttrs(node) {\n while (node) {\n if (node.nodeType === window.Node.ELEMENT_NODE) {\n var attrs = node.attributes;\n for (var i = 0, l = attrs.length; i < l; i++) {\n var attrNode = attrs[i];\n var attrName = attrNode.name.toLowerCase();\n if (attrName === 'xmlns:ns1' || attrName.lastIndexOf('ns1:', 0) === 0) {\n node.removeAttributeNode(attrNode);\n i--;\n l--;\n }\n }\n }\n\n var nextNode = node.firstChild;\n if (nextNode) {\n stripCustomNsAttrs(nextNode);\n }\n\n node = getNonDescendant('nextSibling', node);\n }\n }\n\n function getNonDescendant(propName, node) {\n // An element is clobbered if its `propName` property points to one of its descendants\n var nextNode = node[propName];\n if (nextNode && nodeContains.call(node, nextNode)) {\n throw $sanitizeMinErr('elclob', 'Failed to sanitize html because the element is clobbered: {0}', node.outerHTML || node.outerText);\n }\n return nextNode;\n }\n}\n\nfunction sanitizeText(chars) {\n var buf = [];\n var writer = htmlSanitizeWriter(buf, noop);\n writer.chars(chars);\n return buf.join('');\n}\n\n\n// define ngSanitize module and register $sanitize service\nangular.module('ngSanitize', [])\n .provider('$sanitize', $SanitizeProvider)\n .info({ angularVersion: '1.8.3' });\n\n/**\n * @ngdoc filter\n * @name linky\n * @kind function\n *\n * @description\n * Finds links in text input and turns them into html links. Supports `http/https/ftp/sftp/mailto` and\n * plain email address links.\n *\n * Requires the {@link ngSanitize `ngSanitize`} module to be installed.\n *\n * @param {string} text Input text.\n * @param {string} [target] Window (`_blank|_self|_parent|_top`) or named frame to open links in.\n * @param {object|function(url)} [attributes] Add custom attributes to the link element.\n *\n * Can be one of:\n *\n * - `object`: A map of attributes\n * - `function`: Takes the url as a parameter and returns a map of attributes\n *\n * If the map of attributes contains a value for `target`, it overrides the value of\n * the target parameter.\n *\n *\n * @returns {string} Html-linkified and {@link $sanitize sanitized} text.\n *\n * @usage\n \n *\n * @example\n \n \n
\n Snippet: \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FilterSourceRendered
linky filter\n
<div ng-bind-html=\"snippet | linky\">
</div>
\n
\n
\n
linky target\n
<div ng-bind-html=\"snippetWithSingleURL | linky:'_blank'\">
</div>
\n
\n
\n
linky custom attributes\n
<div ng-bind-html=\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\">
</div>
\n
\n
\n
no filter
<div ng-bind=\"snippet\">
</div>
\n \n \n angular.module('linkyExample', ['ngSanitize'])\n .controller('ExampleController', ['$scope', function($scope) {\n $scope.snippet =\n 'Pretty text with some links:\\n' +\n 'http://angularjs.org/,\\n' +\n 'mailto:us@somewhere.org,\\n' +\n 'another@somewhere.org,\\n' +\n 'and one more: ftp://127.0.0.1/.';\n $scope.snippetWithSingleURL = 'http://angularjs.org/';\n }]);\n \n \n it('should linkify the snippet with urls', function() {\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\n toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);\n });\n\n it('should not linkify snippet without the linky filter', function() {\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).\n toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\n expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);\n });\n\n it('should update', function() {\n element(by.model('snippet')).clear();\n element(by.model('snippet')).sendKeys('new http://link.');\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\n toBe('new http://link.');\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())\n .toBe('new http://link.');\n });\n\n it('should work with the target property', function() {\n expect(element(by.id('linky-target')).\n element(by.binding(\"snippetWithSingleURL | linky:'_blank'\")).getText()).\n toBe('http://angularjs.org/');\n expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');\n });\n\n it('should optionally add custom attributes', function() {\n expect(element(by.id('linky-custom-attributes')).\n element(by.binding(\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\")).getText()).\n toBe('http://angularjs.org/');\n expect(element(by.css('#linky-custom-attributes a')).getAttribute('rel')).toEqual('nofollow');\n });\n \n \n */\nangular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {\n var LINKY_URL_REGEXP =\n /((s?ftp|https?):\\/\\/|(www\\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\\S*[^\\s.;,(){}<>\"\\u201d\\u2019]/i,\n MAILTO_REGEXP = /^mailto:/i;\n\n var linkyMinErr = angular.$$minErr('linky');\n var isDefined = angular.isDefined;\n var isFunction = angular.isFunction;\n var isObject = angular.isObject;\n var isString = angular.isString;\n\n return function(text, target, attributes) {\n if (text == null || text === '') return text;\n if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', text);\n\n var attributesFn =\n isFunction(attributes) ? attributes :\n isObject(attributes) ? function getAttributesObject() {return attributes;} :\n function getEmptyAttributesObject() {return {};};\n\n var match;\n var raw = text;\n var html = [];\n var url;\n var i;\n while ((match = raw.match(LINKY_URL_REGEXP))) {\n // We can not end in these as they are sometimes found at the end of the sentence\n url = match[0];\n // if we did not match ftp/http/www/mailto then assume mailto\n if (!match[2] && !match[4]) {\n url = (match[3] ? 'http://' : 'mailto:') + url;\n }\n i = match.index;\n addText(raw.substr(0, i));\n addLink(url, match[0].replace(MAILTO_REGEXP, ''));\n raw = raw.substring(i + match[0].length);\n }\n addText(raw);\n return $sanitize(html.join(''));\n\n function addText(text) {\n if (!text) {\n return;\n }\n html.push(sanitizeText(text));\n }\n\n function addLink(url, text) {\n var key, linkAttributes = attributesFn(url);\n html.push('');\n addText(text);\n html.push('');\n }\n };\n}]);\n\n\n})(window, window.angular);\n","require('./angular-sanitize');\nmodule.exports = 'ngSanitize';\n","/**!\n * AngularJS file upload directives and services. Supports: file upload/drop/paste, resume, cancel/abort,\n * progress, resize, thumbnail, preview, validation and CORS\n * FileAPI Flash shim for old browsers not supporting FormData\n * @author Danial \n * @version 12.2.13\n */\n\n(function () {\n /** @namespace FileAPI.noContentTimeout */\n\n function patchXHR(fnName, newFn) {\n window.XMLHttpRequest.prototype[fnName] = newFn(window.XMLHttpRequest.prototype[fnName]);\n }\n\n function redefineProp(xhr, prop, fn) {\n try {\n Object.defineProperty(xhr, prop, {get: fn});\n } catch (e) {/*ignore*/\n }\n }\n\n if (!window.FileAPI) {\n window.FileAPI = {};\n }\n\n if (!window.XMLHttpRequest) {\n throw 'AJAX is not supported. XMLHttpRequest is not defined.';\n }\n\n FileAPI.shouldLoad = !window.FormData || FileAPI.forceLoad;\n if (FileAPI.shouldLoad) {\n var initializeUploadListener = function (xhr) {\n if (!xhr.__listeners) {\n if (!xhr.upload) xhr.upload = {};\n xhr.__listeners = [];\n var origAddEventListener = xhr.upload.addEventListener;\n xhr.upload.addEventListener = function (t, fn) {\n xhr.__listeners[t] = fn;\n if (origAddEventListener) origAddEventListener.apply(this, arguments);\n };\n }\n };\n\n patchXHR('open', function (orig) {\n return function (m, url, b) {\n initializeUploadListener(this);\n this.__url = url;\n try {\n orig.apply(this, [m, url, b]);\n } catch (e) {\n if (e.message.indexOf('Access is denied') > -1) {\n this.__origError = e;\n orig.apply(this, [m, '_fix_for_ie_crossdomain__', b]);\n }\n }\n };\n });\n\n patchXHR('getResponseHeader', function (orig) {\n return function (h) {\n return this.__fileApiXHR && this.__fileApiXHR.getResponseHeader ? this.__fileApiXHR.getResponseHeader(h) : (orig == null ? null : orig.apply(this, [h]));\n };\n });\n\n patchXHR('getAllResponseHeaders', function (orig) {\n return function () {\n return this.__fileApiXHR && this.__fileApiXHR.getAllResponseHeaders ? this.__fileApiXHR.getAllResponseHeaders() : (orig == null ? null : orig.apply(this));\n };\n });\n\n patchXHR('abort', function (orig) {\n return function () {\n return this.__fileApiXHR && this.__fileApiXHR.abort ? this.__fileApiXHR.abort() : (orig == null ? null : orig.apply(this));\n };\n });\n\n patchXHR('setRequestHeader', function (orig) {\n return function (header, value) {\n if (header === '__setXHR_') {\n initializeUploadListener(this);\n var val = value(this);\n // fix for angular < 1.2.0\n if (val instanceof Function) {\n val(this);\n }\n } else {\n this.__requestHeaders = this.__requestHeaders || {};\n this.__requestHeaders[header] = value;\n orig.apply(this, arguments);\n }\n };\n });\n\n patchXHR('send', function (orig) {\n return function () {\n var xhr = this;\n if (arguments[0] && arguments[0].__isFileAPIShim) {\n var formData = arguments[0];\n var config = {\n url: xhr.__url,\n jsonp: false, //removes the callback form param\n cache: true, //removes the ?fileapiXXX in the url\n complete: function (err, fileApiXHR) {\n if (err && angular.isString(err) && err.indexOf('#2174') !== -1) {\n // this error seems to be fine the file is being uploaded properly.\n err = null;\n }\n xhr.__completed = true;\n if (!err && xhr.__listeners.load)\n xhr.__listeners.load({\n type: 'load',\n loaded: xhr.__loaded,\n total: xhr.__total,\n target: xhr,\n lengthComputable: true\n });\n if (!err && xhr.__listeners.loadend)\n xhr.__listeners.loadend({\n type: 'loadend',\n loaded: xhr.__loaded,\n total: xhr.__total,\n target: xhr,\n lengthComputable: true\n });\n if (err === 'abort' && xhr.__listeners.abort)\n xhr.__listeners.abort({\n type: 'abort',\n loaded: xhr.__loaded,\n total: xhr.__total,\n target: xhr,\n lengthComputable: true\n });\n if (fileApiXHR.status !== undefined) redefineProp(xhr, 'status', function () {\n return (fileApiXHR.status === 0 && err && err !== 'abort') ? 500 : fileApiXHR.status;\n });\n if (fileApiXHR.statusText !== undefined) redefineProp(xhr, 'statusText', function () {\n return fileApiXHR.statusText;\n });\n redefineProp(xhr, 'readyState', function () {\n return 4;\n });\n if (fileApiXHR.response !== undefined) redefineProp(xhr, 'response', function () {\n return fileApiXHR.response;\n });\n var resp = fileApiXHR.responseText || (err && fileApiXHR.status === 0 && err !== 'abort' ? err : undefined);\n redefineProp(xhr, 'responseText', function () {\n return resp;\n });\n redefineProp(xhr, 'response', function () {\n return resp;\n });\n if (err) redefineProp(xhr, 'err', function () {\n return err;\n });\n xhr.__fileApiXHR = fileApiXHR;\n if (xhr.onreadystatechange) xhr.onreadystatechange();\n if (xhr.onload) xhr.onload();\n },\n progress: function (e) {\n e.target = xhr;\n if (xhr.__listeners.progress) xhr.__listeners.progress(e);\n xhr.__total = e.total;\n xhr.__loaded = e.loaded;\n if (e.total === e.loaded) {\n // fix flash issue that doesn't call complete if there is no response text from the server\n var _this = this;\n setTimeout(function () {\n if (!xhr.__completed) {\n xhr.getAllResponseHeaders = function () {\n };\n _this.complete(null, {status: 204, statusText: 'No Content'});\n }\n }, FileAPI.noContentTimeout || 10000);\n }\n },\n headers: xhr.__requestHeaders\n };\n config.data = {};\n config.files = {};\n for (var i = 0; i < formData.data.length; i++) {\n var item = formData.data[i];\n if (item.val != null && item.val.name != null && item.val.size != null && item.val.type != null) {\n config.files[item.key] = item.val;\n } else {\n config.data[item.key] = item.val;\n }\n }\n\n setTimeout(function () {\n if (!FileAPI.hasFlash) {\n throw 'Adode Flash Player need to be installed. To check ahead use \"FileAPI.hasFlash\"';\n }\n xhr.__fileApiXHR = FileAPI.upload(config);\n }, 1);\n } else {\n if (this.__origError) {\n throw this.__origError;\n }\n orig.apply(xhr, arguments);\n }\n };\n });\n window.XMLHttpRequest.__isFileAPIShim = true;\n window.FormData = FormData = function () {\n return {\n append: function (key, val, name) {\n if (val.__isFileAPIBlobShim) {\n val = val.data[0];\n }\n this.data.push({\n key: key,\n val: val,\n name: name\n });\n },\n data: [],\n __isFileAPIShim: true\n };\n };\n\n window.Blob = Blob = function (b) {\n return {\n data: b,\n __isFileAPIBlobShim: true\n };\n };\n }\n\n})();\n\n(function () {\n /** @namespace FileAPI.forceLoad */\n /** @namespace window.FileAPI.jsUrl */\n /** @namespace window.FileAPI.jsPath */\n\n function isInputTypeFile(elem) {\n return elem[0].tagName.toLowerCase() === 'input' && elem.attr('type') && elem.attr('type').toLowerCase() === 'file';\n }\n\n function hasFlash() {\n try {\n var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');\n if (fo) return true;\n } catch (e) {\n if (navigator.mimeTypes['application/x-shockwave-flash'] !== undefined) return true;\n }\n return false;\n }\n\n function getOffset(obj) {\n var left = 0, top = 0;\n\n if (window.jQuery) {\n return jQuery(obj).offset();\n }\n\n if (obj.offsetParent) {\n do {\n left += (obj.offsetLeft - obj.scrollLeft);\n top += (obj.offsetTop - obj.scrollTop);\n obj = obj.offsetParent;\n } while (obj);\n }\n return {\n left: left,\n top: top\n };\n }\n\n if (FileAPI.shouldLoad) {\n FileAPI.hasFlash = hasFlash();\n\n //load FileAPI\n if (FileAPI.forceLoad) {\n FileAPI.html5 = false;\n }\n\n if (!FileAPI.upload) {\n var jsUrl, basePath, script = document.createElement('script'), allScripts = document.getElementsByTagName('script'), i, index, src;\n if (window.FileAPI.jsUrl) {\n jsUrl = window.FileAPI.jsUrl;\n } else if (window.FileAPI.jsPath) {\n basePath = window.FileAPI.jsPath;\n } else {\n for (i = 0; i < allScripts.length; i++) {\n src = allScripts[i].src;\n index = src.search(/\\/ng\\-file\\-upload[\\-a-zA-z0-9\\.]*\\.js/);\n if (index > -1) {\n basePath = src.substring(0, index + 1);\n break;\n }\n }\n }\n\n if (FileAPI.staticPath == null) FileAPI.staticPath = basePath;\n script.setAttribute('src', jsUrl || basePath + 'FileAPI.min.js');\n document.getElementsByTagName('head')[0].appendChild(script);\n }\n\n FileAPI.ngfFixIE = function (elem, fileElem, changeFn) {\n if (!hasFlash()) {\n throw 'Adode Flash Player need to be installed. To check ahead use \"FileAPI.hasFlash\"';\n }\n var fixInputStyle = function () {\n var label = fileElem.parent();\n if (elem.attr('disabled')) {\n if (label) label.removeClass('js-fileapi-wrapper');\n } else {\n if (!fileElem.attr('__ngf_flash_')) {\n fileElem.unbind('change');\n fileElem.unbind('click');\n fileElem.bind('change', function (evt) {\n fileApiChangeFn.apply(this, [evt]);\n changeFn.apply(this, [evt]);\n });\n fileElem.attr('__ngf_flash_', 'true');\n }\n label.addClass('js-fileapi-wrapper');\n if (!isInputTypeFile(elem)) {\n label.css('position', 'absolute')\n .css('top', getOffset(elem[0]).top + 'px').css('left', getOffset(elem[0]).left + 'px')\n .css('width', elem[0].offsetWidth + 'px').css('height', elem[0].offsetHeight + 'px')\n .css('filter', 'alpha(opacity=0)').css('display', elem.css('display'))\n .css('overflow', 'hidden').css('z-index', '900000')\n .css('visibility', 'visible');\n fileElem.css('width', elem[0].offsetWidth + 'px').css('height', elem[0].offsetHeight + 'px')\n .css('position', 'absolute').css('top', '0px').css('left', '0px');\n }\n }\n };\n\n elem.bind('mouseenter', fixInputStyle);\n\n var fileApiChangeFn = function (evt) {\n var files = FileAPI.getFiles(evt);\n //just a double check for #233\n for (var i = 0; i < files.length; i++) {\n if (files[i].size === undefined) files[i].size = 0;\n if (files[i].name === undefined) files[i].name = 'file';\n if (files[i].type === undefined) files[i].type = 'undefined';\n }\n if (!evt.target) {\n evt.target = {};\n }\n evt.target.files = files;\n // if evt.target.files is not writable use helper field\n if (evt.target.files !== files) {\n evt.__files_ = files;\n }\n (evt.__files_ || evt.target.files).item = function (i) {\n return (evt.__files_ || evt.target.files)[i] || null;\n };\n };\n };\n\n FileAPI.disableFileInput = function (elem, disable) {\n if (disable) {\n elem.removeClass('js-fileapi-wrapper');\n } else {\n elem.addClass('js-fileapi-wrapper');\n }\n };\n }\n})();\n\nif (!window.FileReader) {\n window.FileReader = function () {\n var _this = this, loadStarted = false;\n this.listeners = {};\n this.addEventListener = function (type, fn) {\n _this.listeners[type] = _this.listeners[type] || [];\n _this.listeners[type].push(fn);\n };\n this.removeEventListener = function (type, fn) {\n if (_this.listeners[type]) _this.listeners[type].splice(_this.listeners[type].indexOf(fn), 1);\n };\n this.dispatchEvent = function (evt) {\n var list = _this.listeners[evt.type];\n if (list) {\n for (var i = 0; i < list.length; i++) {\n list[i].call(_this, evt);\n }\n }\n };\n this.onabort = this.onerror = this.onload = this.onloadstart = this.onloadend = this.onprogress = null;\n\n var constructEvent = function (type, evt) {\n var e = {type: type, target: _this, loaded: evt.loaded, total: evt.total, error: evt.error};\n if (evt.result != null) e.target.result = evt.result;\n return e;\n };\n var listener = function (evt) {\n if (!loadStarted) {\n loadStarted = true;\n if (_this.onloadstart) _this.onloadstart(constructEvent('loadstart', evt));\n }\n var e;\n if (evt.type === 'load') {\n if (_this.onloadend) _this.onloadend(constructEvent('loadend', evt));\n e = constructEvent('load', evt);\n if (_this.onload) _this.onload(e);\n _this.dispatchEvent(e);\n } else if (evt.type === 'progress') {\n e = constructEvent('progress', evt);\n if (_this.onprogress) _this.onprogress(e);\n _this.dispatchEvent(e);\n } else {\n e = constructEvent('error', evt);\n if (_this.onerror) _this.onerror(e);\n _this.dispatchEvent(e);\n }\n };\n this.readAsDataURL = function (file) {\n FileAPI.readAsDataURL(file, listener);\n };\n this.readAsText = function (file) {\n FileAPI.readAsText(file, listener);\n };\n };\n}\n","/**!\n * AngularJS file upload directives and services. Supoorts: file upload/drop/paste, resume, cancel/abort,\n * progress, resize, thumbnail, preview, validation and CORS\n * @author Danial \n * @version 12.2.13\n */\n\nif (window.XMLHttpRequest && !(window.FileAPI && FileAPI.shouldLoad)) {\n window.XMLHttpRequest.prototype.setRequestHeader = (function (orig) {\n return function (header, value) {\n if (header === '__setXHR_') {\n var val = value(this);\n // fix for angular < 1.2.0\n if (val instanceof Function) {\n val(this);\n }\n } else {\n orig.apply(this, arguments);\n }\n };\n })(window.XMLHttpRequest.prototype.setRequestHeader);\n}\n\nvar ngFileUpload = angular.module('ngFileUpload', []);\n\nngFileUpload.version = '12.2.13';\n\nngFileUpload.service('UploadBase', ['$http', '$q', '$timeout', function ($http, $q, $timeout) {\n var upload = this;\n upload.promisesCount = 0;\n\n this.isResumeSupported = function () {\n return window.Blob && window.Blob.prototype.slice;\n };\n\n var resumeSupported = this.isResumeSupported();\n\n function sendHttp(config) {\n config.method = config.method || 'POST';\n config.headers = config.headers || {};\n\n var deferred = config._deferred = config._deferred || $q.defer();\n var promise = deferred.promise;\n\n function notifyProgress(e) {\n if (deferred.notify) {\n deferred.notify(e);\n }\n if (promise.progressFunc) {\n $timeout(function () {\n promise.progressFunc(e);\n });\n }\n }\n\n function getNotifyEvent(n) {\n if (config._start != null && resumeSupported) {\n return {\n loaded: n.loaded + config._start,\n total: (config._file && config._file.size) || n.total,\n type: n.type, config: config,\n lengthComputable: true, target: n.target\n };\n } else {\n return n;\n }\n }\n\n if (!config.disableProgress) {\n config.headers.__setXHR_ = function () {\n return function (xhr) {\n if (!xhr || !xhr.upload || !xhr.upload.addEventListener) return;\n config.__XHR = xhr;\n if (config.xhrFn) config.xhrFn(xhr);\n xhr.upload.addEventListener('progress', function (e) {\n e.config = config;\n notifyProgress(getNotifyEvent(e));\n }, false);\n //fix for firefox not firing upload progress end, also IE8-9\n xhr.upload.addEventListener('load', function (e) {\n if (e.lengthComputable) {\n e.config = config;\n notifyProgress(getNotifyEvent(e));\n }\n }, false);\n };\n };\n }\n\n function uploadWithAngular() {\n $http(config).then(function (r) {\n if (resumeSupported && config._chunkSize && !config._finished && config._file) {\n var fileSize = config._file && config._file.size || 0;\n notifyProgress({\n loaded: Math.min(config._end, fileSize),\n total: fileSize,\n config: config,\n type: 'progress'\n }\n );\n upload.upload(config, true);\n } else {\n if (config._finished) delete config._finished;\n deferred.resolve(r);\n }\n }, function (e) {\n deferred.reject(e);\n }, function (n) {\n deferred.notify(n);\n }\n );\n }\n\n if (!resumeSupported) {\n uploadWithAngular();\n } else if (config._chunkSize && config._end && !config._finished) {\n config._start = config._end;\n config._end += config._chunkSize;\n uploadWithAngular();\n } else if (config.resumeSizeUrl) {\n $http.get(config.resumeSizeUrl).then(function (resp) {\n if (config.resumeSizeResponseReader) {\n config._start = config.resumeSizeResponseReader(resp.data);\n } else {\n config._start = parseInt((resp.data.size == null ? resp.data : resp.data.size).toString());\n }\n if (config._chunkSize) {\n config._end = config._start + config._chunkSize;\n }\n uploadWithAngular();\n }, function (e) {\n throw e;\n });\n } else if (config.resumeSize) {\n config.resumeSize().then(function (size) {\n config._start = size;\n if (config._chunkSize) {\n config._end = config._start + config._chunkSize;\n }\n uploadWithAngular();\n }, function (e) {\n throw e;\n });\n } else {\n if (config._chunkSize) {\n config._start = 0;\n config._end = config._start + config._chunkSize;\n }\n uploadWithAngular();\n }\n\n\n promise.success = function (fn) {\n promise.then(function (response) {\n fn(response.data, response.status, response.headers, config);\n });\n return promise;\n };\n\n promise.error = function (fn) {\n promise.then(null, function (response) {\n fn(response.data, response.status, response.headers, config);\n });\n return promise;\n };\n\n promise.progress = function (fn) {\n promise.progressFunc = fn;\n promise.then(null, null, function (n) {\n fn(n);\n });\n return promise;\n };\n promise.abort = promise.pause = function () {\n if (config.__XHR) {\n $timeout(function () {\n config.__XHR.abort();\n });\n }\n return promise;\n };\n promise.xhr = function (fn) {\n config.xhrFn = (function (origXhrFn) {\n return function () {\n if (origXhrFn) origXhrFn.apply(promise, arguments);\n fn.apply(promise, arguments);\n };\n })(config.xhrFn);\n return promise;\n };\n\n upload.promisesCount++;\n if (promise['finally'] && promise['finally'] instanceof Function) {\n promise['finally'](function () {\n upload.promisesCount--;\n });\n }\n return promise;\n }\n\n this.isUploadInProgress = function () {\n return upload.promisesCount > 0;\n };\n\n this.rename = function (file, name) {\n file.ngfName = name;\n return file;\n };\n\n this.jsonBlob = function (val) {\n if (val != null && !angular.isString(val)) {\n val = JSON.stringify(val);\n }\n var blob = new window.Blob([val], {type: 'application/json'});\n blob._ngfBlob = true;\n return blob;\n };\n\n this.json = function (val) {\n return angular.toJson(val);\n };\n\n function copy(obj) {\n var clone = {};\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n clone[key] = obj[key];\n }\n }\n return clone;\n }\n\n this.isFile = function (file) {\n return file != null && (file instanceof window.Blob || (file.flashId && file.name && file.size));\n };\n\n this.upload = function (config, internal) {\n function toResumeFile(file, formData) {\n if (file._ngfBlob) return file;\n config._file = config._file || file;\n if (config._start != null && resumeSupported) {\n if (config._end && config._end >= file.size) {\n config._finished = true;\n config._end = file.size;\n }\n var slice = file.slice(config._start, config._end || file.size);\n slice.name = file.name;\n slice.ngfName = file.ngfName;\n if (config._chunkSize) {\n formData.append('_chunkSize', config._chunkSize);\n formData.append('_currentChunkSize', config._end - config._start);\n formData.append('_chunkNumber', Math.floor(config._start / config._chunkSize));\n formData.append('_totalSize', config._file.size);\n }\n return slice;\n }\n return file;\n }\n\n function addFieldToFormData(formData, val, key) {\n if (val !== undefined) {\n if (angular.isDate(val)) {\n val = val.toISOString();\n }\n if (angular.isString(val)) {\n formData.append(key, val);\n } else if (upload.isFile(val)) {\n var file = toResumeFile(val, formData);\n var split = key.split(',');\n if (split[1]) {\n file.ngfName = split[1].replace(/^\\s+|\\s+$/g, '');\n key = split[0];\n }\n config._fileKey = config._fileKey || key;\n formData.append(key, file, file.ngfName || file.name);\n } else {\n if (angular.isObject(val)) {\n if (val.$$ngfCircularDetection) throw 'ngFileUpload: Circular reference in config.data. Make sure specified data for Upload.upload() has no circular reference: ' + key;\n\n val.$$ngfCircularDetection = true;\n try {\n for (var k in val) {\n if (val.hasOwnProperty(k) && k !== '$$ngfCircularDetection') {\n var objectKey = config.objectKey == null ? '[i]' : config.objectKey;\n if (val.length && parseInt(k) > -1) {\n objectKey = config.arrayKey == null ? objectKey : config.arrayKey;\n }\n addFieldToFormData(formData, val[k], key + objectKey.replace(/[ik]/g, k));\n }\n }\n } finally {\n delete val.$$ngfCircularDetection;\n }\n } else {\n formData.append(key, val);\n }\n }\n }\n }\n\n function digestConfig() {\n config._chunkSize = upload.translateScalars(config.resumeChunkSize);\n config._chunkSize = config._chunkSize ? parseInt(config._chunkSize.toString()) : null;\n\n config.headers = config.headers || {};\n config.headers['Content-Type'] = undefined;\n config.transformRequest = config.transformRequest ?\n (angular.isArray(config.transformRequest) ?\n config.transformRequest : [config.transformRequest]) : [];\n config.transformRequest.push(function (data) {\n var formData = new window.FormData(), key;\n data = data || config.fields || {};\n if (config.file) {\n data.file = config.file;\n }\n for (key in data) {\n if (data.hasOwnProperty(key)) {\n var val = data[key];\n if (config.formDataAppender) {\n config.formDataAppender(formData, key, val);\n } else {\n addFieldToFormData(formData, val, key);\n }\n }\n }\n\n return formData;\n });\n }\n\n if (!internal) config = copy(config);\n if (!config._isDigested) {\n config._isDigested = true;\n digestConfig();\n }\n\n return sendHttp(config);\n };\n\n this.http = function (config) {\n config = copy(config);\n config.transformRequest = config.transformRequest || function (data) {\n if ((window.ArrayBuffer && data instanceof window.ArrayBuffer) || data instanceof window.Blob) {\n return data;\n }\n return $http.defaults.transformRequest[0].apply(this, arguments);\n };\n config._chunkSize = upload.translateScalars(config.resumeChunkSize);\n config._chunkSize = config._chunkSize ? parseInt(config._chunkSize.toString()) : null;\n\n return sendHttp(config);\n };\n\n this.translateScalars = function (str) {\n if (angular.isString(str)) {\n if (str.search(/kb/i) === str.length - 2) {\n return parseFloat(str.substring(0, str.length - 2) * 1024);\n } else if (str.search(/mb/i) === str.length - 2) {\n return parseFloat(str.substring(0, str.length - 2) * 1048576);\n } else if (str.search(/gb/i) === str.length - 2) {\n return parseFloat(str.substring(0, str.length - 2) * 1073741824);\n } else if (str.search(/b/i) === str.length - 1) {\n return parseFloat(str.substring(0, str.length - 1));\n } else if (str.search(/s/i) === str.length - 1) {\n return parseFloat(str.substring(0, str.length - 1));\n } else if (str.search(/m/i) === str.length - 1) {\n return parseFloat(str.substring(0, str.length - 1) * 60);\n } else if (str.search(/h/i) === str.length - 1) {\n return parseFloat(str.substring(0, str.length - 1) * 3600);\n }\n }\n return str;\n };\n\n this.urlToBlob = function(url) {\n var defer = $q.defer();\n $http({url: url, method: 'get', responseType: 'arraybuffer'}).then(function (resp) {\n var arrayBufferView = new Uint8Array(resp.data);\n var type = resp.headers('content-type') || 'image/WebP';\n var blob = new window.Blob([arrayBufferView], {type: type});\n var matches = url.match(/.*\\/(.+?)(\\?.*)?$/);\n if (matches.length > 1) {\n blob.name = matches[1];\n }\n defer.resolve(blob);\n }, function (e) {\n defer.reject(e);\n });\n return defer.promise;\n };\n\n this.setDefaults = function (defaults) {\n this.defaults = defaults || {};\n };\n\n this.defaults = {};\n this.version = ngFileUpload.version;\n}\n\n]);\n\nngFileUpload.service('Upload', ['$parse', '$timeout', '$compile', '$q', 'UploadExif', function ($parse, $timeout, $compile, $q, UploadExif) {\n var upload = UploadExif;\n upload.getAttrWithDefaults = function (attr, name) {\n if (attr[name] != null) return attr[name];\n var def = upload.defaults[name];\n return (def == null ? def : (angular.isString(def) ? def : JSON.stringify(def)));\n };\n\n upload.attrGetter = function (name, attr, scope, params) {\n var attrVal = this.getAttrWithDefaults(attr, name);\n if (scope) {\n try {\n if (params) {\n return $parse(attrVal)(scope, params);\n } else {\n return $parse(attrVal)(scope);\n }\n } catch (e) {\n // hangle string value without single qoute\n if (name.search(/min|max|pattern/i)) {\n return attrVal;\n } else {\n throw e;\n }\n }\n } else {\n return attrVal;\n }\n };\n\n upload.shouldUpdateOn = function (type, attr, scope) {\n var modelOptions = upload.attrGetter('ngfModelOptions', attr, scope);\n if (modelOptions && modelOptions.updateOn) {\n return modelOptions.updateOn.split(' ').indexOf(type) > -1;\n }\n return true;\n };\n\n upload.emptyPromise = function () {\n var d = $q.defer();\n var args = arguments;\n $timeout(function () {\n d.resolve.apply(d, args);\n });\n return d.promise;\n };\n\n upload.rejectPromise = function () {\n var d = $q.defer();\n var args = arguments;\n $timeout(function () {\n d.reject.apply(d, args);\n });\n return d.promise;\n };\n\n upload.happyPromise = function (promise, data) {\n var d = $q.defer();\n promise.then(function (result) {\n d.resolve(result);\n }, function (error) {\n $timeout(function () {\n throw error;\n });\n d.resolve(data);\n });\n return d.promise;\n };\n\n function applyExifRotations(files, attr, scope) {\n var promises = [upload.emptyPromise()];\n angular.forEach(files, function (f, i) {\n if (f.type.indexOf('image/jpeg') === 0 && upload.attrGetter('ngfFixOrientation', attr, scope, {$file: f})) {\n promises.push(upload.happyPromise(upload.applyExifRotation(f), f).then(function (fixedFile) {\n files.splice(i, 1, fixedFile);\n }));\n }\n });\n return $q.all(promises);\n }\n\n function resizeFile(files, attr, scope, ngModel) {\n var resizeVal = upload.attrGetter('ngfResize', attr, scope);\n if (!resizeVal || !upload.isResizeSupported() || !files.length) return upload.emptyPromise();\n if (resizeVal instanceof Function) {\n var defer = $q.defer();\n return resizeVal(files).then(function (p) {\n resizeWithParams(p, files, attr, scope, ngModel).then(function (r) {\n defer.resolve(r);\n }, function (e) {\n defer.reject(e);\n });\n }, function (e) {\n defer.reject(e);\n });\n } else {\n return resizeWithParams(resizeVal, files, attr, scope, ngModel);\n }\n }\n\n function resizeWithParams(params, files, attr, scope, ngModel) {\n var promises = [upload.emptyPromise()];\n\n function handleFile(f, i) {\n if (f.type.indexOf('image') === 0) {\n if (params.pattern && !upload.validatePattern(f, params.pattern)) return;\n params.resizeIf = function (width, height) {\n return upload.attrGetter('ngfResizeIf', attr, scope,\n {$width: width, $height: height, $file: f});\n };\n var promise = upload.resize(f, params);\n promises.push(promise);\n promise.then(function (resizedFile) {\n files.splice(i, 1, resizedFile);\n }, function (e) {\n f.$error = 'resize';\n (f.$errorMessages = (f.$errorMessages || {})).resize = true;\n f.$errorParam = (e ? (e.message ? e.message : e) + ': ' : '') + (f && f.name);\n ngModel.$ngfValidations.push({name: 'resize', valid: false});\n upload.applyModelValidation(ngModel, files);\n });\n }\n }\n\n for (var i = 0; i < files.length; i++) {\n handleFile(files[i], i);\n }\n return $q.all(promises);\n }\n\n upload.updateModel = function (ngModel, attr, scope, fileChange, files, evt, noDelay) {\n function update(files, invalidFiles, newFiles, dupFiles, isSingleModel) {\n attr.$$ngfPrevValidFiles = files;\n attr.$$ngfPrevInvalidFiles = invalidFiles;\n var file = files && files.length ? files[0] : null;\n var invalidFile = invalidFiles && invalidFiles.length ? invalidFiles[0] : null;\n\n if (ngModel) {\n upload.applyModelValidation(ngModel, files);\n ngModel.$setViewValue(isSingleModel ? file : files);\n }\n\n if (fileChange) {\n $parse(fileChange)(scope, {\n $files: files,\n $file: file,\n $newFiles: newFiles,\n $duplicateFiles: dupFiles,\n $invalidFiles: invalidFiles,\n $invalidFile: invalidFile,\n $event: evt\n });\n }\n\n var invalidModel = upload.attrGetter('ngfModelInvalid', attr);\n if (invalidModel) {\n $timeout(function () {\n $parse(invalidModel).assign(scope, isSingleModel ? invalidFile : invalidFiles);\n });\n }\n $timeout(function () {\n // scope apply changes\n });\n }\n\n var allNewFiles, dupFiles = [], prevValidFiles, prevInvalidFiles,\n invalids = [], valids = [];\n\n function removeDuplicates() {\n function equals(f1, f2) {\n return f1.name === f2.name && (f1.$ngfOrigSize || f1.size) === (f2.$ngfOrigSize || f2.size) &&\n f1.type === f2.type;\n }\n\n function isInPrevFiles(f) {\n var j;\n for (j = 0; j < prevValidFiles.length; j++) {\n if (equals(f, prevValidFiles[j])) {\n return true;\n }\n }\n for (j = 0; j < prevInvalidFiles.length; j++) {\n if (equals(f, prevInvalidFiles[j])) {\n return true;\n }\n }\n return false;\n }\n\n if (files) {\n allNewFiles = [];\n dupFiles = [];\n for (var i = 0; i < files.length; i++) {\n if (isInPrevFiles(files[i])) {\n dupFiles.push(files[i]);\n } else {\n allNewFiles.push(files[i]);\n }\n }\n }\n }\n\n function toArray(v) {\n return angular.isArray(v) ? v : [v];\n }\n\n function resizeAndUpdate() {\n function updateModel() {\n $timeout(function () {\n update(keep ? prevValidFiles.concat(valids) : valids,\n keep ? prevInvalidFiles.concat(invalids) : invalids,\n files, dupFiles, isSingleModel);\n }, options && options.debounce ? options.debounce.change || options.debounce : 0);\n }\n\n var resizingFiles = validateAfterResize ? allNewFiles : valids;\n resizeFile(resizingFiles, attr, scope, ngModel).then(function () {\n if (validateAfterResize) {\n upload.validate(allNewFiles, keep ? prevValidFiles.length : 0, ngModel, attr, scope)\n .then(function (validationResult) {\n valids = validationResult.validsFiles;\n invalids = validationResult.invalidsFiles;\n updateModel();\n });\n } else {\n updateModel();\n }\n }, function () {\n for (var i = 0; i < resizingFiles.length; i++) {\n var f = resizingFiles[i];\n if (f.$error === 'resize') {\n var index = valids.indexOf(f);\n if (index > -1) {\n valids.splice(index, 1);\n invalids.push(f);\n }\n updateModel();\n }\n }\n });\n }\n\n prevValidFiles = attr.$$ngfPrevValidFiles || [];\n prevInvalidFiles = attr.$$ngfPrevInvalidFiles || [];\n if (ngModel && ngModel.$modelValue) {\n prevValidFiles = toArray(ngModel.$modelValue);\n }\n\n var keep = upload.attrGetter('ngfKeep', attr, scope);\n allNewFiles = (files || []).slice(0);\n if (keep === 'distinct' || upload.attrGetter('ngfKeepDistinct', attr, scope) === true) {\n removeDuplicates(attr, scope);\n }\n\n var isSingleModel = !keep && !upload.attrGetter('ngfMultiple', attr, scope) && !upload.attrGetter('multiple', attr);\n\n if (keep && !allNewFiles.length) return;\n\n upload.attrGetter('ngfBeforeModelChange', attr, scope, {\n $files: files,\n $file: files && files.length ? files[0] : null,\n $newFiles: allNewFiles,\n $duplicateFiles: dupFiles,\n $event: evt\n });\n\n var validateAfterResize = upload.attrGetter('ngfValidateAfterResize', attr, scope);\n\n var options = upload.attrGetter('ngfModelOptions', attr, scope);\n upload.validate(allNewFiles, keep ? prevValidFiles.length : 0, ngModel, attr, scope)\n .then(function (validationResult) {\n if (noDelay) {\n update(allNewFiles, [], files, dupFiles, isSingleModel);\n } else {\n if ((!options || !options.allowInvalid) && !validateAfterResize) {\n valids = validationResult.validFiles;\n invalids = validationResult.invalidFiles;\n } else {\n valids = allNewFiles;\n }\n if (upload.attrGetter('ngfFixOrientation', attr, scope) && upload.isExifSupported()) {\n applyExifRotations(valids, attr, scope).then(function () {\n resizeAndUpdate();\n });\n } else {\n resizeAndUpdate();\n }\n }\n });\n };\n\n return upload;\n}]);\n\nngFileUpload.directive('ngfSelect', ['$parse', '$timeout', '$compile', 'Upload', function ($parse, $timeout, $compile, Upload) {\n var generatedElems = [];\n\n function isDelayedClickSupported(ua) {\n // fix for android native browser < 4.4 and safari windows\n var m = ua.match(/Android[^\\d]*(\\d+)\\.(\\d+)/);\n if (m && m.length > 2) {\n var v = Upload.defaults.androidFixMinorVersion || 4;\n return parseInt(m[1]) < 4 || (parseInt(m[1]) === v && parseInt(m[2]) < v);\n }\n\n // safari on windows\n return ua.indexOf('Chrome') === -1 && /.*Windows.*Safari.*/.test(ua);\n }\n\n function linkFileSelect(scope, elem, attr, ngModel, $parse, $timeout, $compile, upload) {\n /** @namespace attr.ngfSelect */\n /** @namespace attr.ngfChange */\n /** @namespace attr.ngModel */\n /** @namespace attr.ngfModelOptions */\n /** @namespace attr.ngfMultiple */\n /** @namespace attr.ngfCapture */\n /** @namespace attr.ngfValidate */\n /** @namespace attr.ngfKeep */\n var attrGetter = function (name, scope) {\n return upload.attrGetter(name, attr, scope);\n };\n\n function isInputTypeFile() {\n return elem[0].tagName.toLowerCase() === 'input' && attr.type && attr.type.toLowerCase() === 'file';\n }\n\n function fileChangeAttr() {\n return attrGetter('ngfChange') || attrGetter('ngfSelect');\n }\n\n function changeFn(evt) {\n if (upload.shouldUpdateOn('change', attr, scope)) {\n var fileList = evt.__files_ || (evt.target && evt.target.files), files = [];\n /* Handle duplicate call in IE11 */\n if (!fileList) return;\n for (var i = 0; i < fileList.length; i++) {\n files.push(fileList[i]);\n }\n upload.updateModel(ngModel, attr, scope, fileChangeAttr(),\n files.length ? files : null, evt);\n }\n }\n\n upload.registerModelChangeValidator(ngModel, attr, scope);\n\n var unwatches = [];\n if (attrGetter('ngfMultiple')) {\n unwatches.push(scope.$watch(attrGetter('ngfMultiple'), function () {\n fileElem.attr('multiple', attrGetter('ngfMultiple', scope));\n }));\n }\n if (attrGetter('ngfCapture')) {\n unwatches.push(scope.$watch(attrGetter('ngfCapture'), function () {\n fileElem.attr('capture', attrGetter('ngfCapture', scope));\n }));\n }\n if (attrGetter('ngfAccept')) {\n unwatches.push(scope.$watch(attrGetter('ngfAccept'), function () {\n fileElem.attr('accept', attrGetter('ngfAccept', scope));\n }));\n }\n unwatches.push(attr.$observe('accept', function () {\n fileElem.attr('accept', attrGetter('accept'));\n }));\n function bindAttrToFileInput(fileElem, label) {\n function updateId(val) {\n fileElem.attr('id', 'ngf-' + val);\n label.attr('id', 'ngf-label-' + val);\n }\n\n for (var i = 0; i < elem[0].attributes.length; i++) {\n var attribute = elem[0].attributes[i];\n if (attribute.name !== 'type' && attribute.name !== 'class' && attribute.name !== 'style') {\n if (attribute.name === 'id') {\n updateId(attribute.value);\n unwatches.push(attr.$observe('id', updateId));\n } else {\n fileElem.attr(attribute.name, (!attribute.value && (attribute.name === 'required' ||\n attribute.name === 'multiple')) ? attribute.name : attribute.value);\n }\n }\n }\n }\n\n function createFileInput() {\n if (isInputTypeFile()) {\n return elem;\n }\n\n var fileElem = angular.element('');\n\n var label = angular.element('');\n label.css('visibility', 'hidden').css('position', 'absolute').css('overflow', 'hidden')\n .css('width', '0px').css('height', '0px').css('border', 'none')\n .css('margin', '0px').css('padding', '0px').attr('tabindex', '-1');\n bindAttrToFileInput(fileElem, label);\n\n generatedElems.push({el: elem, ref: label});\n\n document.body.appendChild(label.append(fileElem)[0]);\n\n return fileElem;\n }\n\n function clickHandler(evt) {\n if (elem.attr('disabled')) return false;\n if (attrGetter('ngfSelectDisabled', scope)) return;\n\n var r = detectSwipe(evt);\n // prevent the click if it is a swipe\n if (r != null) return r;\n\n resetModel(evt);\n\n // fix for md when the element is removed from the DOM and added back #460\n try {\n if (!isInputTypeFile() && !document.body.contains(fileElem[0])) {\n generatedElems.push({el: elem, ref: fileElem.parent()});\n document.body.appendChild(fileElem.parent()[0]);\n fileElem.bind('change', changeFn);\n }\n } catch (e) {/*ignore*/\n }\n\n if (isDelayedClickSupported(navigator.userAgent)) {\n setTimeout(function () {\n fileElem[0].click();\n }, 0);\n } else {\n fileElem[0].click();\n }\n\n return false;\n }\n\n\n var initialTouchStartY = 0;\n var initialTouchStartX = 0;\n\n function detectSwipe(evt) {\n var touches = evt.changedTouches || (evt.originalEvent && evt.originalEvent.changedTouches);\n if (touches) {\n if (evt.type === 'touchstart') {\n initialTouchStartX = touches[0].clientX;\n initialTouchStartY = touches[0].clientY;\n return true; // don't block event default\n } else {\n // prevent scroll from triggering event\n if (evt.type === 'touchend') {\n var currentX = touches[0].clientX;\n var currentY = touches[0].clientY;\n if ((Math.abs(currentX - initialTouchStartX) > 20) ||\n (Math.abs(currentY - initialTouchStartY) > 20)) {\n evt.stopPropagation();\n evt.preventDefault();\n return false;\n }\n }\n return true;\n }\n }\n }\n\n var fileElem = elem;\n\n function resetModel(evt) {\n if (upload.shouldUpdateOn('click', attr, scope) && fileElem.val()) {\n fileElem.val(null);\n upload.updateModel(ngModel, attr, scope, fileChangeAttr(), null, evt, true);\n }\n }\n\n if (!isInputTypeFile()) {\n fileElem = createFileInput();\n }\n fileElem.bind('change', changeFn);\n\n if (!isInputTypeFile()) {\n elem.bind('click touchstart touchend', clickHandler);\n } else {\n elem.bind('click', resetModel);\n }\n\n function ie10SameFileSelectFix(evt) {\n if (fileElem && !fileElem.attr('__ngf_ie10_Fix_')) {\n if (!fileElem[0].parentNode) {\n fileElem = null;\n return;\n }\n evt.preventDefault();\n evt.stopPropagation();\n fileElem.unbind('click');\n var clone = fileElem.clone();\n fileElem.replaceWith(clone);\n fileElem = clone;\n fileElem.attr('__ngf_ie10_Fix_', 'true');\n fileElem.bind('change', changeFn);\n fileElem.bind('click', ie10SameFileSelectFix);\n fileElem[0].click();\n return false;\n } else {\n fileElem.removeAttr('__ngf_ie10_Fix_');\n }\n }\n\n if (navigator.appVersion.indexOf('MSIE 10') !== -1) {\n fileElem.bind('click', ie10SameFileSelectFix);\n }\n\n if (ngModel) ngModel.$formatters.push(function (val) {\n if (val == null || val.length === 0) {\n if (fileElem.val()) {\n fileElem.val(null);\n }\n }\n return val;\n });\n\n scope.$on('$destroy', function () {\n if (!isInputTypeFile()) fileElem.parent().remove();\n angular.forEach(unwatches, function (unwatch) {\n unwatch();\n });\n });\n\n $timeout(function () {\n for (var i = 0; i < generatedElems.length; i++) {\n var g = generatedElems[i];\n if (!document.body.contains(g.el[0])) {\n generatedElems.splice(i, 1);\n g.ref.remove();\n }\n }\n });\n\n if (window.FileAPI && window.FileAPI.ngfFixIE) {\n window.FileAPI.ngfFixIE(elem, fileElem, changeFn);\n }\n }\n\n return {\n restrict: 'AEC',\n require: '?ngModel',\n link: function (scope, elem, attr, ngModel) {\n linkFileSelect(scope, elem, attr, ngModel, $parse, $timeout, $compile, Upload);\n }\n };\n}]);\n\n(function () {\n\n ngFileUpload.service('UploadDataUrl', ['UploadBase', '$timeout', '$q', function (UploadBase, $timeout, $q) {\n var upload = UploadBase;\n upload.base64DataUrl = function (file) {\n if (angular.isArray(file)) {\n var d = $q.defer(), count = 0;\n angular.forEach(file, function (f) {\n upload.dataUrl(f, true)['finally'](function () {\n count++;\n if (count === file.length) {\n var urls = [];\n angular.forEach(file, function (ff) {\n urls.push(ff.$ngfDataUrl);\n });\n d.resolve(urls, file);\n }\n });\n });\n return d.promise;\n } else {\n return upload.dataUrl(file, true);\n }\n };\n upload.dataUrl = function (file, disallowObjectUrl) {\n if (!file) return upload.emptyPromise(file, file);\n if ((disallowObjectUrl && file.$ngfDataUrl != null) || (!disallowObjectUrl && file.$ngfBlobUrl != null)) {\n return upload.emptyPromise(disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl, file);\n }\n var p = disallowObjectUrl ? file.$$ngfDataUrlPromise : file.$$ngfBlobUrlPromise;\n if (p) return p;\n\n var deferred = $q.defer();\n $timeout(function () {\n if (window.FileReader && file &&\n (!window.FileAPI || navigator.userAgent.indexOf('MSIE 8') === -1 || file.size < 20000) &&\n (!window.FileAPI || navigator.userAgent.indexOf('MSIE 9') === -1 || file.size < 4000000)) {\n //prefer URL.createObjectURL for handling refrences to files of all sizes\n //since it doesn´t build a large string in memory\n var URL = window.URL || window.webkitURL;\n if (URL && URL.createObjectURL && !disallowObjectUrl) {\n var url;\n try {\n url = URL.createObjectURL(file);\n } catch (e) {\n $timeout(function () {\n file.$ngfBlobUrl = '';\n deferred.reject();\n });\n return;\n }\n $timeout(function () {\n file.$ngfBlobUrl = url;\n if (url) {\n deferred.resolve(url, file);\n upload.blobUrls = upload.blobUrls || [];\n upload.blobUrlsTotalSize = upload.blobUrlsTotalSize || 0;\n upload.blobUrls.push({url: url, size: file.size});\n upload.blobUrlsTotalSize += file.size || 0;\n var maxMemory = upload.defaults.blobUrlsMaxMemory || 268435456;\n var maxLength = upload.defaults.blobUrlsMaxQueueSize || 200;\n while ((upload.blobUrlsTotalSize > maxMemory || upload.blobUrls.length > maxLength) && upload.blobUrls.length > 1) {\n var obj = upload.blobUrls.splice(0, 1)[0];\n URL.revokeObjectURL(obj.url);\n upload.blobUrlsTotalSize -= obj.size;\n }\n }\n });\n } else {\n var fileReader = new FileReader();\n fileReader.onload = function (e) {\n $timeout(function () {\n file.$ngfDataUrl = e.target.result;\n deferred.resolve(e.target.result, file);\n $timeout(function () {\n delete file.$ngfDataUrl;\n }, 1000);\n });\n };\n fileReader.onerror = function () {\n $timeout(function () {\n file.$ngfDataUrl = '';\n deferred.reject();\n });\n };\n fileReader.readAsDataURL(file);\n }\n } else {\n $timeout(function () {\n file[disallowObjectUrl ? '$ngfDataUrl' : '$ngfBlobUrl'] = '';\n deferred.reject();\n });\n }\n });\n\n if (disallowObjectUrl) {\n p = file.$$ngfDataUrlPromise = deferred.promise;\n } else {\n p = file.$$ngfBlobUrlPromise = deferred.promise;\n }\n p['finally'](function () {\n delete file[disallowObjectUrl ? '$$ngfDataUrlPromise' : '$$ngfBlobUrlPromise'];\n });\n return p;\n };\n return upload;\n }]);\n\n function getTagType(el) {\n if (el.tagName.toLowerCase() === 'img') return 'image';\n if (el.tagName.toLowerCase() === 'audio') return 'audio';\n if (el.tagName.toLowerCase() === 'video') return 'video';\n return /./;\n }\n\n function linkFileDirective(Upload, $timeout, scope, elem, attr, directiveName, resizeParams, isBackground) {\n function constructDataUrl(file) {\n var disallowObjectUrl = Upload.attrGetter('ngfNoObjectUrl', attr, scope);\n Upload.dataUrl(file, disallowObjectUrl)['finally'](function () {\n $timeout(function () {\n var src = (disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl) || file.$ngfDataUrl;\n if (isBackground) {\n elem.css('background-image', 'url(\\'' + (src || '') + '\\')');\n } else {\n elem.attr('src', src);\n }\n if (src) {\n elem.removeClass('ng-hide');\n } else {\n elem.addClass('ng-hide');\n }\n });\n });\n }\n\n $timeout(function () {\n var unwatch = scope.$watch(attr[directiveName], function (file) {\n var size = resizeParams;\n if (directiveName === 'ngfThumbnail') {\n if (!size) {\n size = {\n width: elem[0].naturalWidth || elem[0].clientWidth,\n height: elem[0].naturalHeight || elem[0].clientHeight\n };\n }\n if (size.width === 0 && window.getComputedStyle) {\n var style = getComputedStyle(elem[0]);\n if (style.width && style.width.indexOf('px') > -1 && style.height && style.height.indexOf('px') > -1) {\n size = {\n width: parseInt(style.width.slice(0, -2)),\n height: parseInt(style.height.slice(0, -2))\n };\n }\n }\n }\n\n if (angular.isString(file)) {\n elem.removeClass('ng-hide');\n if (isBackground) {\n return elem.css('background-image', 'url(\\'' + file + '\\')');\n } else {\n return elem.attr('src', file);\n }\n }\n if (file && file.type && file.type.search(getTagType(elem[0])) === 0 &&\n (!isBackground || file.type.indexOf('image') === 0)) {\n if (size && Upload.isResizeSupported()) {\n size.resizeIf = function (width, height) {\n return Upload.attrGetter('ngfResizeIf', attr, scope,\n {$width: width, $height: height, $file: file});\n };\n Upload.resize(file, size).then(\n function (f) {\n constructDataUrl(f);\n }, function (e) {\n throw e;\n }\n );\n } else {\n constructDataUrl(file);\n }\n } else {\n elem.addClass('ng-hide');\n }\n });\n\n scope.$on('$destroy', function () {\n unwatch();\n });\n });\n }\n\n\n /** @namespace attr.ngfSrc */\n /** @namespace attr.ngfNoObjectUrl */\n ngFileUpload.directive('ngfSrc', ['Upload', '$timeout', function (Upload, $timeout) {\n return {\n restrict: 'AE',\n link: function (scope, elem, attr) {\n linkFileDirective(Upload, $timeout, scope, elem, attr, 'ngfSrc',\n Upload.attrGetter('ngfResize', attr, scope), false);\n }\n };\n }]);\n\n /** @namespace attr.ngfBackground */\n /** @namespace attr.ngfNoObjectUrl */\n ngFileUpload.directive('ngfBackground', ['Upload', '$timeout', function (Upload, $timeout) {\n return {\n restrict: 'AE',\n link: function (scope, elem, attr) {\n linkFileDirective(Upload, $timeout, scope, elem, attr, 'ngfBackground',\n Upload.attrGetter('ngfResize', attr, scope), true);\n }\n };\n }]);\n\n /** @namespace attr.ngfThumbnail */\n /** @namespace attr.ngfAsBackground */\n /** @namespace attr.ngfSize */\n /** @namespace attr.ngfNoObjectUrl */\n ngFileUpload.directive('ngfThumbnail', ['Upload', '$timeout', function (Upload, $timeout) {\n return {\n restrict: 'AE',\n link: function (scope, elem, attr) {\n var size = Upload.attrGetter('ngfSize', attr, scope);\n linkFileDirective(Upload, $timeout, scope, elem, attr, 'ngfThumbnail', size,\n Upload.attrGetter('ngfAsBackground', attr, scope));\n }\n };\n }]);\n\n ngFileUpload.config(['$compileProvider', function ($compileProvider) {\n if ($compileProvider.imgSrcSanitizationWhitelist) $compileProvider.imgSrcSanitizationWhitelist(/^\\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/);\n if ($compileProvider.aHrefSanitizationWhitelist) $compileProvider.aHrefSanitizationWhitelist(/^\\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/);\n }]);\n\n ngFileUpload.filter('ngfDataUrl', ['UploadDataUrl', '$sce', function (UploadDataUrl, $sce) {\n return function (file, disallowObjectUrl, trustedUrl) {\n if (angular.isString(file)) {\n return $sce.trustAsResourceUrl(file);\n }\n var src = file && ((disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl) || file.$ngfDataUrl);\n if (file && !src) {\n if (!file.$ngfDataUrlFilterInProgress && angular.isObject(file)) {\n file.$ngfDataUrlFilterInProgress = true;\n UploadDataUrl.dataUrl(file, disallowObjectUrl);\n }\n return '';\n }\n if (file) delete file.$ngfDataUrlFilterInProgress;\n return (file && src ? (trustedUrl ? $sce.trustAsResourceUrl(src) : src) : file) || '';\n };\n }]);\n\n})();\n\nngFileUpload.service('UploadValidate', ['UploadDataUrl', '$q', '$timeout', function (UploadDataUrl, $q, $timeout) {\n var upload = UploadDataUrl;\n\n function globStringToRegex(str) {\n var regexp = '', excludes = [];\n if (str.length > 2 && str[0] === '/' && str[str.length - 1] === '/') {\n regexp = str.substring(1, str.length - 1);\n } else {\n var split = str.split(',');\n if (split.length > 1) {\n for (var i = 0; i < split.length; i++) {\n var r = globStringToRegex(split[i]);\n if (r.regexp) {\n regexp += '(' + r.regexp + ')';\n if (i < split.length - 1) {\n regexp += '|';\n }\n } else {\n excludes = excludes.concat(r.excludes);\n }\n }\n } else {\n if (str.indexOf('!') === 0) {\n excludes.push('^((?!' + globStringToRegex(str.substring(1)).regexp + ').)*$');\n } else {\n if (str.indexOf('.') === 0) {\n str = '*' + str;\n }\n regexp = '^' + str.replace(new RegExp('[.\\\\\\\\+*?\\\\[\\\\^\\\\]$(){}=!<>|:\\\\-]', 'g'), '\\\\$&') + '$';\n regexp = regexp.replace(/\\\\\\*/g, '.*').replace(/\\\\\\?/g, '.');\n }\n }\n }\n return {regexp: regexp, excludes: excludes};\n }\n\n upload.validatePattern = function (file, val) {\n if (!val) {\n return true;\n }\n var pattern = globStringToRegex(val), valid = true;\n if (pattern.regexp && pattern.regexp.length) {\n var regexp = new RegExp(pattern.regexp, 'i');\n valid = (file.type != null && regexp.test(file.type)) ||\n (file.name != null && regexp.test(file.name));\n }\n var len = pattern.excludes.length;\n while (len--) {\n var exclude = new RegExp(pattern.excludes[len], 'i');\n valid = valid && (file.type == null || exclude.test(file.type)) &&\n (file.name == null || exclude.test(file.name));\n }\n return valid;\n };\n\n upload.ratioToFloat = function (val) {\n var r = val.toString(), xIndex = r.search(/[x:]/i);\n if (xIndex > -1) {\n r = parseFloat(r.substring(0, xIndex)) / parseFloat(r.substring(xIndex + 1));\n } else {\n r = parseFloat(r);\n }\n return r;\n };\n\n upload.registerModelChangeValidator = function (ngModel, attr, scope) {\n if (ngModel) {\n ngModel.$formatters.push(function (files) {\n if (ngModel.$dirty) {\n var filesArray = files;\n if (files && !angular.isArray(files)) {\n filesArray = [files];\n }\n upload.validate(filesArray, 0, ngModel, attr, scope).then(function () {\n upload.applyModelValidation(ngModel, filesArray);\n });\n }\n return files;\n });\n }\n };\n\n function markModelAsDirty(ngModel, files) {\n if (files != null && !ngModel.$dirty) {\n if (ngModel.$setDirty) {\n ngModel.$setDirty();\n } else {\n ngModel.$dirty = true;\n }\n }\n }\n\n upload.applyModelValidation = function (ngModel, files) {\n markModelAsDirty(ngModel, files);\n angular.forEach(ngModel.$ngfValidations, function (validation) {\n ngModel.$setValidity(validation.name, validation.valid);\n });\n };\n\n upload.getValidationAttr = function (attr, scope, name, validationName, file) {\n var dName = 'ngf' + name[0].toUpperCase() + name.substr(1);\n var val = upload.attrGetter(dName, attr, scope, {$file: file});\n if (val == null) {\n val = upload.attrGetter('ngfValidate', attr, scope, {$file: file});\n if (val) {\n var split = (validationName || name).split('.');\n val = val[split[0]];\n if (split.length > 1) {\n val = val && val[split[1]];\n }\n }\n }\n return val;\n };\n\n upload.validate = function (files, prevLength, ngModel, attr, scope) {\n ngModel = ngModel || {};\n ngModel.$ngfValidations = ngModel.$ngfValidations || [];\n\n angular.forEach(ngModel.$ngfValidations, function (v) {\n v.valid = true;\n });\n\n var attrGetter = function (name, params) {\n return upload.attrGetter(name, attr, scope, params);\n };\n\n var ignoredErrors = (upload.attrGetter('ngfIgnoreInvalid', attr, scope) || '').split(' ');\n var runAllValidation = upload.attrGetter('ngfRunAllValidations', attr, scope);\n\n if (files == null || files.length === 0) {\n return upload.emptyPromise({'validFiles': files, 'invalidFiles': []});\n }\n\n files = files.length === undefined ? [files] : files.slice(0);\n var invalidFiles = [];\n\n function validateSync(name, validationName, fn) {\n if (files) {\n var i = files.length, valid = null;\n while (i--) {\n var file = files[i];\n if (file) {\n var val = upload.getValidationAttr(attr, scope, name, validationName, file);\n if (val != null) {\n if (!fn(file, val, i)) {\n if (ignoredErrors.indexOf(name) === -1) {\n file.$error = name;\n (file.$errorMessages = (file.$errorMessages || {}))[name] = true;\n file.$errorParam = val;\n if (invalidFiles.indexOf(file) === -1) {\n invalidFiles.push(file);\n }\n if (!runAllValidation) {\n files.splice(i, 1);\n }\n valid = false;\n } else {\n files.splice(i, 1);\n }\n }\n }\n }\n }\n if (valid !== null) {\n ngModel.$ngfValidations.push({name: name, valid: valid});\n }\n }\n }\n\n validateSync('pattern', null, upload.validatePattern);\n validateSync('minSize', 'size.min', function (file, val) {\n return file.size + 0.1 >= upload.translateScalars(val);\n });\n validateSync('maxSize', 'size.max', function (file, val) {\n return file.size - 0.1 <= upload.translateScalars(val);\n });\n var totalSize = 0;\n validateSync('maxTotalSize', null, function (file, val) {\n totalSize += file.size;\n if (totalSize > upload.translateScalars(val)) {\n files.splice(0, files.length);\n return false;\n }\n return true;\n });\n\n validateSync('validateFn', null, function (file, r) {\n return r === true || r === null || r === '';\n });\n\n if (!files.length) {\n return upload.emptyPromise({'validFiles': [], 'invalidFiles': invalidFiles});\n }\n\n function validateAsync(name, validationName, type, asyncFn, fn) {\n function resolveResult(defer, file, val) {\n function resolveInternal(fn) {\n if (fn()) {\n if (ignoredErrors.indexOf(name) === -1) {\n file.$error = name;\n (file.$errorMessages = (file.$errorMessages || {}))[name] = true;\n file.$errorParam = val;\n if (invalidFiles.indexOf(file) === -1) {\n invalidFiles.push(file);\n }\n if (!runAllValidation) {\n var i = files.indexOf(file);\n if (i > -1) files.splice(i, 1);\n }\n defer.resolve(false);\n } else {\n var j = files.indexOf(file);\n if (j > -1) files.splice(j, 1);\n defer.resolve(true);\n }\n } else {\n defer.resolve(true);\n }\n }\n\n if (val != null) {\n asyncFn(file, val).then(function (d) {\n resolveInternal(function () {\n return !fn(d, val);\n });\n }, function () {\n resolveInternal(function () {\n return attrGetter('ngfValidateForce', {$file: file});\n });\n });\n } else {\n defer.resolve(true);\n }\n }\n\n var promises = [upload.emptyPromise(true)];\n if (files) {\n files = files.length === undefined ? [files] : files;\n angular.forEach(files, function (file) {\n var defer = $q.defer();\n promises.push(defer.promise);\n if (type && (file.type == null || file.type.search(type) !== 0)) {\n defer.resolve(true);\n return;\n }\n if (name === 'dimensions' && upload.attrGetter('ngfDimensions', attr) != null) {\n upload.imageDimensions(file).then(function (d) {\n resolveResult(defer, file,\n attrGetter('ngfDimensions', {$file: file, $width: d.width, $height: d.height}));\n }, function () {\n defer.resolve(false);\n });\n } else if (name === 'duration' && upload.attrGetter('ngfDuration', attr) != null) {\n upload.mediaDuration(file).then(function (d) {\n resolveResult(defer, file,\n attrGetter('ngfDuration', {$file: file, $duration: d}));\n }, function () {\n defer.resolve(false);\n });\n } else {\n resolveResult(defer, file,\n upload.getValidationAttr(attr, scope, name, validationName, file));\n }\n });\n }\n var deffer = $q.defer();\n $q.all(promises).then(function (values) {\n var isValid = true;\n for (var i = 0; i < values.length; i++) {\n if (!values[i]) {\n isValid = false;\n break;\n }\n }\n ngModel.$ngfValidations.push({name: name, valid: isValid});\n deffer.resolve(isValid);\n });\n return deffer.promise;\n }\n\n var deffer = $q.defer();\n var promises = [];\n\n promises.push(validateAsync('maxHeight', 'height.max', /image/,\n this.imageDimensions, function (d, val) {\n return d.height <= val;\n }));\n promises.push(validateAsync('minHeight', 'height.min', /image/,\n this.imageDimensions, function (d, val) {\n return d.height >= val;\n }));\n promises.push(validateAsync('maxWidth', 'width.max', /image/,\n this.imageDimensions, function (d, val) {\n return d.width <= val;\n }));\n promises.push(validateAsync('minWidth', 'width.min', /image/,\n this.imageDimensions, function (d, val) {\n return d.width >= val;\n }));\n promises.push(validateAsync('dimensions', null, /image/,\n function (file, val) {\n return upload.emptyPromise(val);\n }, function (r) {\n return r;\n }));\n promises.push(validateAsync('ratio', null, /image/,\n this.imageDimensions, function (d, val) {\n var split = val.toString().split(','), valid = false;\n for (var i = 0; i < split.length; i++) {\n if (Math.abs((d.width / d.height) - upload.ratioToFloat(split[i])) < 0.01) {\n valid = true;\n }\n }\n return valid;\n }));\n promises.push(validateAsync('maxRatio', 'ratio.max', /image/,\n this.imageDimensions, function (d, val) {\n return (d.width / d.height) - upload.ratioToFloat(val) < 0.0001;\n }));\n promises.push(validateAsync('minRatio', 'ratio.min', /image/,\n this.imageDimensions, function (d, val) {\n return (d.width / d.height) - upload.ratioToFloat(val) > -0.0001;\n }));\n promises.push(validateAsync('maxDuration', 'duration.max', /audio|video/,\n this.mediaDuration, function (d, val) {\n return d <= upload.translateScalars(val);\n }));\n promises.push(validateAsync('minDuration', 'duration.min', /audio|video/,\n this.mediaDuration, function (d, val) {\n return d >= upload.translateScalars(val);\n }));\n promises.push(validateAsync('duration', null, /audio|video/,\n function (file, val) {\n return upload.emptyPromise(val);\n }, function (r) {\n return r;\n }));\n\n promises.push(validateAsync('validateAsyncFn', null, null,\n function (file, val) {\n return val;\n }, function (r) {\n return r === true || r === null || r === '';\n }));\n\n $q.all(promises).then(function () {\n\n if (runAllValidation) {\n for (var i = 0; i < files.length; i++) {\n var file = files[i];\n if (file.$error) {\n files.splice(i--, 1);\n }\n }\n }\n\n runAllValidation = false;\n validateSync('maxFiles', null, function (file, val, i) {\n return prevLength + i < val;\n });\n\n deffer.resolve({'validFiles': files, 'invalidFiles': invalidFiles});\n });\n return deffer.promise;\n };\n\n upload.imageDimensions = function (file) {\n if (file.$ngfWidth && file.$ngfHeight) {\n var d = $q.defer();\n $timeout(function () {\n d.resolve({width: file.$ngfWidth, height: file.$ngfHeight});\n });\n return d.promise;\n }\n if (file.$ngfDimensionPromise) return file.$ngfDimensionPromise;\n\n var deferred = $q.defer();\n $timeout(function () {\n if (file.type.indexOf('image') !== 0) {\n deferred.reject('not image');\n return;\n }\n upload.dataUrl(file).then(function (dataUrl) {\n var img = angular.element('').attr('src', dataUrl)\n .css('visibility', 'hidden').css('position', 'fixed')\n .css('max-width', 'none !important').css('max-height', 'none !important');\n\n function success() {\n var width = img[0].naturalWidth || img[0].clientWidth;\n var height = img[0].naturalHeight || img[0].clientHeight;\n img.remove();\n file.$ngfWidth = width;\n file.$ngfHeight = height;\n deferred.resolve({width: width, height: height});\n }\n\n function error() {\n img.remove();\n deferred.reject('load error');\n }\n\n img.on('load', success);\n img.on('error', error);\n\n var secondsCounter = 0;\n function checkLoadErrorInCaseOfNoCallback() {\n $timeout(function () {\n if (img[0].parentNode) {\n if (img[0].clientWidth) {\n success();\n } else if (secondsCounter++ > 10) {\n error();\n } else {\n checkLoadErrorInCaseOfNoCallback();\n }\n }\n }, 1000);\n }\n\n checkLoadErrorInCaseOfNoCallback();\n\n angular.element(document.getElementsByTagName('body')[0]).append(img);\n }, function () {\n deferred.reject('load error');\n });\n });\n\n file.$ngfDimensionPromise = deferred.promise;\n file.$ngfDimensionPromise['finally'](function () {\n delete file.$ngfDimensionPromise;\n });\n return file.$ngfDimensionPromise;\n };\n\n upload.mediaDuration = function (file) {\n if (file.$ngfDuration) {\n var d = $q.defer();\n $timeout(function () {\n d.resolve(file.$ngfDuration);\n });\n return d.promise;\n }\n if (file.$ngfDurationPromise) return file.$ngfDurationPromise;\n\n var deferred = $q.defer();\n $timeout(function () {\n if (file.type.indexOf('audio') !== 0 && file.type.indexOf('video') !== 0) {\n deferred.reject('not media');\n return;\n }\n upload.dataUrl(file).then(function (dataUrl) {\n var el = angular.element(file.type.indexOf('audio') === 0 ? '