PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` var http = require('http'); var https = require('https'); var url = require('url'); var isHttpResource = require('../utils/is-http-resource'); var isHttpsResource = require('../utils/is-https-resource'); var override = require('../utils/override'); var HTTP_PROTOCOL = 'http:'; function loadRemoteResource(uri, inlineRequest, inlineTimeout, callback) { var proxyProtocol = inlineRequest.protocol || inlineRequest.hostname; var errorHandled = false; var requestOptions; var fetch; requestOptions = override( url.parse(uri), inlineRequest || {} ); if (inlineRequest.hostname !== undefined) { // overwrite as we always expect a http proxy currently requestOptions.protocol = inlineRequest.protocol || HTTP_PROTOCOL; requestOptions.path = requestOptions.href; } fetch = (proxyProtocol && !isHttpsResource(proxyProtocol)) || isHttpResource(uri) ? http.get : https.get; fetch(requestOptions, function(res) { var chunks = []; var movedUri; if (errorHandled) { return; } if (res.statusCode < 200 || res.statusCode > 399) { return callback(res.statusCode, null); } if (res.statusCode > 299) { movedUri = url.resolve(uri, res.headers.location); return loadRemoteResource(movedUri, inlineRequest, inlineTimeout, callback); } res.on('data', function(chunk) { chunks.push(chunk.toString()); }); res.on('end', function() { var body = chunks.join(''); callback(null, body); }); }) .on('error', function(res) { if (errorHandled) { return; } errorHandled = true; callback(res.message, null); }) .on('timeout', function() { if (errorHandled) { return; } errorHandled = true; callback('timeout', null); }) .setTimeout(inlineTimeout); } module.exports = loadRemoteResource;