!function(a){functionb(a,b){returnfunction(){a.apply(b,arguments)}}functionc(a){if("object"!==typeofthis)thrownewTypeError("Promises must be constructed via new");if("function"!==typeofa)thrownewTypeError("not a function");this._state=null,this._value=null,this._deferreds=[],i(a,b(e,this),b(f,this))}functiond(a){varb=this;returnnull===this._state?voidthis._deferreds.push(a):voidk(function(){varc=b._state?a.onFulfilled:a.onRejected;if(null===c)returnvoid(b._state?a.resolve:a.reject)(b._value);vard;try{d=c(b._value)}catch(e){returnvoida.reject(e)}a.resolve(d)})}functione(a){try{if(a===this)thrownewTypeError("A promise cannot be resolved with itself.");if(a&&("object"===typeofa||"function"===typeofa)){varc=a.then;if("function"===typeofc)returnvoidi(b(c,a),b(e,this),b(f,this))}this._state=!0,this._value=a,g.call(this)}catch(d){f.call(this,d)}}functionf(a){this._state=!1,this._value=a,g.call(this)}functiong(){for(vara=0,b=this._deferreds.length;b>a;a++)d.call(this,this._deferreds[a]);this._deferreds=null}functionh(a,b,c,d){this.onFulfilled="function"===typeofa?a:null,this.onRejected="function"===typeofb?b:null,this.resolve=c,this.reject=d}functioni(a,b,c){vard=!1;try{a(function(a){d||(d=!0,b(a))},function(a){d||(d=!0,c(a))})}catch(e){if(d)return;d=!0,c(e)}}varj=setTimeout,k="function"===typeofsetImmediate&&setImmediate||function(a){j(a,1)},l=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)};c.prototype["catch"]=function(a){returnthis.then(null,a)},c.prototype.then=function(a,b){vare=this;returnnewc(function(c,f){d.call(e,newh(a,b,c,f))})},c.all=function(){vara=Array.prototype.slice.call(1===arguments.length&&l(arguments[0])?arguments[0]:arguments);returnnewc(function(b,c){functiond(f,g){try{if(g&&("object"===typeofg||"function"===typeofg)){varh=g.then;if("function"===typeofh)returnvoidh.call(g,function(a){d(f,a)},c)}a[f]=g,0===--e&&b(a)}catch(i){c(i)}}if(0===a.length)returnb([]);for(vare=a.length,f=0;f<a.length;f++)d(f,a[f])})},c.resolve=function(a){returna&&"object"===typeofa&&a.constructor===c?a:newc(function(b){b(a)})},c.reject=function(a){returnnewc(function(b,c){c(a)})},c.race=function(a){returnnewc(function(b,c){for(vard=0,e=a.length;e>d;d++)a[d].then(b,c)})},c._setImmediateFn=function(a){k=a},"undefined"!==typeofmodule&&module.exports?module.exports=c:a.Promise||(a.Promise=c)}(this);