UNPKG

domotz-remote-pawn

Version:

Domotz Agent

5,779 lines 641 kB
!(function(f) {
 if("object"===typeof exports&&"undefined"!==typeof module) {
 module.exports=f(); 
}else if("function"===typeof define&&define.amd) {
 define([], f); 
}else{
 ("undefined"!==typeof window?window:"undefined"!==typeof global?global:"undefined"!==typeof self?self:this).fastlib=f(); 
} 
}(function() {
 return (function() {
 return function r(e, n, t) {
 function o(i, f) {
 if(!n[i]) {
 if(!e[i]) {
 var c="function"===typeof require&&require;if(!f&&c) {
 return c(i, !0); 
}if(u) {
 return u(i, !0); 
}var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND", a; 
}var p=n[i]={exports:{}};e[i][0].call(p.exports, function(r) {
 return o(e[i][1][r]||r); 
}, p, p.exports, r, e, n, t); 
}return n[i].exports; 
}for(var u="function"===typeof require&&require, i=0;i<t.length;i++) {
 o(t[i]); 
}return o; 
}; 
}())({1:[function(require, module, exports) {
 module.exports=function(windowSize) {
 return function(snapshots) {
 var snapshotInd, snapshot, 
bytes=0, 
times=0, 
start=snapshots.length-1, 
end=Math.max(0, snapshots.length-windowSize);for(snapshotInd=start;snapshotInd>=end;--snapshotInd) {
 bytes+=(snapshot=snapshots[snapshotInd]).bytes, times+=snapshot.time; 
}return times>0?1e3*bytes*8/times:0; 
}; 
}; 
}, {}], 2:[function(require, module, exports) {
 module.exports=function(windowSize, snapshotResetThreshold) {
 var startInd, curSpeed, fixedStartInd, bytes, times;function reset() {
 startInd=0, curSpeed=0, 0, bytes=0, times=0, fixedStartInd=!1; 
}return snapshotResetThreshold=snapshotResetThreshold||5, reset(), function(snapshots) {
 var snapshotInd, speed;if(snapshots.length<snapshotResetThreshold&&reset(), snapshots.length, !fixedStartInd) {
 var sumBytes=0, 
sumTime=0, 
start=snapshots.length-1, 
end=Math.max(0, snapshots.length-windowSize);for(snapshotInd=start;snapshotInd>=end;--snapshotInd) {
 snapshot=snapshots[snapshotInd], sumBytes+=snapshot.bytes, sumTime+=snapshot.time; 
}(speed=sumTime>0?sumBytes/sumTime:0)>=curSpeed?(startInd=start+1, curSpeed=speed, bytes=sumBytes, times=sumTime):fixedStartInd=!0; 
}for(snapshotInd=startInd;snapshotInd<snapshots.length;++snapshotInd) {
 snapshot=snapshots[snapshotInd], bytes+=snapshot.bytes, times+=snapshot.time; 
}return startInd=snapshots.length, times>0?1e3*bytes*8/times:0; 
}; 
}; 
}, {}], 3:[function(require, module, exports) {
 module.exports=(function() {
 function positiveNumberValidator(name) {
 return function(value) {
 if(value<=0) {
 throw new errors.TesterArgumentError(name+": expected value should be above 0, given value: "+value); 
} 
}; 
}var errors=require("./error"), 
timer=require("./timer"), 
utils=require("./utils"), 
validators={maxAttempts:positiveNumberValidator("maxAttempts"), maxConnections:positiveNumberValidator("maxConnections"), progressFrequencyMs:positiveNumberValidator("progressFrequencyMs"), firstRequestBytes:positiveNumberValidator("firstRequestBytes"), maxBytesInFlight:positiveNumberValidator("maxBytesInFlight"), startRangeRequestTimeMs:positiveNumberValidator("startRangeRequestTimeMs"), maxRangeRequestTimeMs:positiveNumberValidator("maxRangeRequestTimeMs"), rangeRequestIncreaseMs:positiveNumberValidator("rangeRequestIncreaseMs"), latencyMeasurementsWindowSize:positiveNumberValidator("latencyMeasurementsWindowSize"), minLatencyMeasurements:positiveNumberValidator("minLatencyMeasurements"), latencyMeasurementsFrequencyMs:positiveNumberValidator("latencyMeasurementsFrequencyMs"), protocol:function(protocol) {
 if("http"!==protocol&&"https"!==protocol) {
 throw new errors.TesterArgumentError("protocol: only http and https are supported, given value: "+protocol); 
} 
}, version:function(version) {
 throw new errors.TesterArgumentError("can not override tester version"); 
}, duration:function(duration) {
 if(void 0===duration.min) {
 throw new errors.TesterArgumentError("duration: when provided, duration.min is mandatory"); 
}if(void 0===duration.max) {
 throw new errors.TesterArgumentError("duration: when provided, duration.max is mandatory"); 
}if(duration.min>duration.max) {
 throw new errors.TesterArgumentError("duration: max duration should be higher or equal to min duration, given value: min="+duration.min+", max="+duration.max); 
}if(duration.min<0) {
 throw new errors.TesterArgumentError("duration.min can not be negative"); 
}if(duration.max<0) {
 throw new errors.TesterArgumentError("duration.max can not be negative"); 
}if(duration.max>300) {
 throw new errors.TesterArgumentError("duration.max is limited at 300"); 
} 
}, connections:function(connections) {
 if(void 0===connections.min) {
 throw new errors.TesterArgumentError("connections: when provided, connections.min is mandatory"); 
}if(void 0===connections.max) {
 throw new errors.TesterArgumentError("connections: when provided, connections.max is mandatory"); 
}if(connections.min>connections.max) {
 throw new errors.TesterArgumentError("connections: max connections should be higher or equal to min connections, given value: min="+connections.min+", max="+connections.max); 
}if(connections.min<=0) {
 throw new errors.TesterArgumentError("connections.min should be positive"); 
}if(connections.max<=0) {
 throw new errors.TesterArgumentError("connections.max should be positive"); 
}if(connections.max>30) {
 throw new errors.TesterArgumentError("connections.max is limited at 30"); 
} 
}}, 
defaultDuration={min:5, max:30}, 
defaultConfig={version:"0.3.12", maxAttempts:5, connections:{min:1, max:3}, duration:defaultDuration, progressFrequencyMs:200, protocol:"https", firstRequestBytes:2048, maxBytesInFlight:78643200, collectAfterComplete:!1, getTestOcasParams:{}, startRangeRequestTimeMs:300, maxRangeRequestTimeMs:1e3, rangeRequestIncreaseMs:200, timer:timer.time, measureLatency:!1, latencyMeasurementsWindowSize:5, minLatencyMeasurements:3, latencyMeasurementsFrequencyMs:1e3, aggregator:require("./aggregator/movingAverage")(10), stopper:require("./stopper/stableMeasurementsStopper")({minDuration:defaultDuration.min, maxDuration:defaultDuration.max, stabilityDelta:3, minStableMeasurements:10})};function validate(name, value) {
 var validator;if(void 0===defaultConfig[name]) {
 throw new errors.TesterArgumentError("unknown tester config attribute: "+name); 
}return(validator=validators[name])&&validator(value), !0; 
}return{get:function(overrides) {
 var config=utils.simpleCopy(defaultConfig);return overrides&&(function(config, overrides) {
 var name, value;if(overrides) {
 for(name in overrides) {
 validate(name, value=overrides[name]), config[name]=value; 
} 
} 
}(config, overrides)), config; 
}, validate:function(name, value) {
 return validate(name, value); 
}}; 
}()); 
}, {"./aggregator/movingAverage":1, "./error":4, "./stopper/stableMeasurementsStopper":11, "./timer":13, "./utils":15}], 4:[function(require, module, exports) {
 var errors={};function TesterArgumentError() {
 var temp=Error.apply(this, arguments);temp.name=this.name="TesterArgumentError", this.stack=temp.stack, this.message=temp.message; 
}function TesterEventError() {
 var temp=Error.apply(this, arguments);temp.name=this.name="TesterEventError", this.stack=temp.stack, this.message=temp.message; 
}function RequesterArgumentError() {
 var temp=Error.apply(this, arguments);temp.name=this.name="RequesterArgumentError", this.stack=temp.stack, this.message=temp.message; 
}function GetOcaUrlError() {
 var temp=Error.apply(this, arguments);temp.name=this.name="GetOcaUrlError", this.stack=temp.stack, this.message=temp.message; 
}function NoOcaUrlsError() {
 var temp=Error.apply(this, arguments);temp.name=this.name="NoOcaUrlsError", this.stack=temp.stack, this.message=temp.message; 
}function DownloadOcaDataError() {
 var temp=Error.apply(this, arguments);temp.name=this.name="DownloadOcaDataError", this.stack=temp.stack, this.message=temp.message; 
}TesterArgumentError.prototype=Error.prototype, errors.TesterArgumentError=TesterArgumentError, TesterEventError.prototype=Error.prototype, errors.TesterEventError=TesterEventError, RequesterArgumentError.prototype=Error.prototype, errors.RequesterArgumentError=RequesterArgumentError, GetOcaUrlError.prototype=Error.prototype, errors.GetOcaUrlError=GetOcaUrlError, NoOcaUrlsError.prototype=Error.prototype, errors.NoOcaUrlsError=NoOcaUrlsError, DownloadOcaDataError.prototype=Error.prototype, errors.DownloadOcaDataError=DownloadOcaDataError, module.exports=errors; 
}, {}], 5:[function(require, module, exports) {
 module.exports={events:{START:"start", END:"end", SUCCESS:"success", FAIL:"fail", STOP:"stop", ATTEMPT_START:"attemptStart", ATTEMPT_END:"attemptEnd", ATTEMPT_SUCCESS:"attemptSuccess", ATTEMPT_FAIL:"attemptFail", PROGRESS:"progress", SNAPSHOT:"snapshot", CONNECTION_START:"connectionStart", CONNECTION_FAIL:"connectionFail", CONNECTION_PROGRESS:"connectionProgress", CONNECTION_SUCCESS:"connectionSuccess", CONNECTION_END:"connectionEnd", LATENCY_START:"latencyStart", LATENCY_FAIL:"latencyFail", LATENCY_SUCCESS:"latencySuccess", LATENCY_END:"latencyEnd", UPLOAD_START:"uploadStart", UPLOAD_FAIL:"uploadFail", UPLOAD_SUCCESS:"uploadSuccess", UPLOAD_END:"uploadEnd", URL_REQUEST_START:"urlRequestStart", URL_REQUEST_END:"urlRequestEnd", AFTER_COMPLETE_ATTEMPT_START:"afterCompleteAttemptStart", AFTER_COMPLETE_ATTEMPT_END:"afterCompleteAttemptEnd", ANY:"event"}, schema:{start:{}, end:{}, success:{}, fail:{}, stop:{}, attemptStart:{}, attemptEnd:{}, attemptSuccess:{}, attemptFail:{}, progress:{}, snapshot:{}, connectionStart:{}, connectionFail:{}, connectionProgress:{}, connectionSuccess:{}, connectionEnd:{}, latencyStart:{}, latencyFail:{}, latencySuccess:{}, latencyEnd:{}, uploadStart:{}, uploadFail:{}, uploadSuccess:{}, uploadEnd:{}, urlRequestStart:{}, urlRequestEnd:{}, afterCompleteAttemptStart:{}, afterCompleteAttemptEnd:{}, event:{}}}; 
}, {}], 6:[function(require, module, exports) {
 module.exports=function(tester, requester, config) {
 var logUrl, logSource, nfLogger, testSessionId, testAttemptSessionId, afterCompleteSessionId, 
loggingEnabled=!1, 
connectionSessionIds={}, 
getUrlSessionIds=[], 
snapshotEvents=[], 
progressEvents=[], 
latencyEvents={}, 
connectionEvents={}, 
events=require("./event").events, 
dummy=require("./utils").dummy;function endSessionType(data) {
 switch(data.result) {
 case"success":return"SessionEnded";case"fail":return"ActionFailed";case"stop":return"SessionCancelled"; 
} 
}function endMeasureSession(sessionId, data) {
 data.type=endSessionType(data), data.snapshots=snapshotEvents, data.progress=progressEvents, data.latencies=latencyEvents, snapshotEvents=[], progressEvents=[], latencyEvents={}, nfLogger.endSession(sessionId, data); 
}logUrl=(config=config||{}).url||"https://ichnaea.test.netflix.com/cl2", logSource=config.source||"netspeed", require("./utils"), nfLogger=require("nf-cl-logger")({requestSender:function(data) {
 requester().upload(logUrl, null, dummy, function(resp) {
 resp.success; 
}, data); 
}, batchInterval:6e5, batchSize:1e5, source:logSource});var navigator=void 0!==navigator?navigator:config.navigator;return nfLogger.addContext("Client", {deviceType:navigator.deviceData?navigator.deviceType||"Mobile":"Browser", appVersion:navigator.appVersion, userAgent:navigator.userAgent, tester:tester.config(), referrer:"undefined"!==typeof document&&document.referrer, deviceInfo:navigator.deviceData, href:void 0!==navigator&&"undefined"!==typeof window&&window.location&&window.location.href||"NA"}), {startLogging:function() {
 loggingEnabled||(loggingEnabled=!0, tester.on(events.START, function(data) {
 testSessionId=nfLogger.startSession("SpeedTest", data); 
}), tester.on(events.END, function(data) {
 data.pageLoad="undefined"!==typeof window&&window.performance&&window.performance.timing?window.performance.timing:{}, data.type=endSessionType(data), nfLogger.endSession(testSessionId, data), nfLogger.flush(); 
}), tester.on(events.ATTEMPT_START, function(data) {
 testAttemptSessionId=nfLogger.startSession("Measure", data); 
}), tester.on(events.ATTEMPT_END, function(data) {
 endMeasureSession(testAttemptSessionId, data); 
}), tester.on(events.CONNECTION_START, function(data) {
 var request=data.requestUrl;connectionSessionIds[request]=nfLogger.startSession("Connection", data), connectionEvents[request]=[]; 
}), tester.on(events.CONNECTION_PROGRESS, function(data) {
 var requestUrl=data.requestUrl;connectionEvents[requestUrl]&&connectionEvents[requestUrl].push({bytes:data.bytes, start:data.start, end:data.end}); 
}), tester.on(events.CONNECTION_END, function(data) {
 !(function(requestUrl, data) {
 var connectionSessionId=connectionSessionIds[requestUrl];data.type=endSessionType(data), data.measurements=connectionEvents[requestUrl], nfLogger.endSession(connectionSessionId, data), delete connectionSessionIds[requestUrl], delete connectionEvents[requestUrl]; 
}(data.requestUrl, data)); 
}), tester.on(events.URL_REQUEST_START, function(data) {
 getUrlSessionIds.push(nfLogger.startSession("GetUrl", data)); 
}), tester.on(events.URL_REQUEST_END, function(data) {
 var sessionId=getUrlSessionIds[0];sessionId&&(data.type=endSessionType(data), nfLogger.endSession(sessionId, data), getUrlSessionIds.shift()); 
}), tester.on(events.LATENCY_END, function(data) {
 var oca=data.oca;latencyEvents[oca]||(latencyEvents[oca]=[]), latencyEvents[oca].push(data); 
}), tester.on(events.PROGRESS, function(data) {
 progressEvents.push(data); 
}), tester.on(events.SNAPSHOT, function(data) {
 snapshotEvents.push(data); 
}), tester.on(events.AFTER_COMPLETE_ATTEMPT_START, function(data) {
 afterCompleteSessionId=nfLogger.startSession("AfterCompleteMeasure", data); 
}), tester.on(events.AFTER_COMPLETE_ATTEMPT_END, function(data) {
 endMeasureSession(afterCompleteSessionId, data), nfLogger.flush(); 
}), config.debug&&tester.on(events.ANY, function(data) {})); 
}, endLogging:function() {
 loggingEnabled&&(loggingEnabled=!1); 
}, getLogger:function() {
 return nfLogger; 
}, flush:function() {
 nfLogger.flush(); 
}}; 
}; 
}, {"./event":5, "./utils":15, "nf-cl-logger":23}], 7:[function(require, module, exports) {
 var logging=require("./logger"), 
requester=require("./requester/node"), 
aggregator=(require("./event").events, require("./aggregator/stableMovingAverage")(5)), 
stopper=require("./stopper/stableDeltaMeasurementsStopper")({minDuration:7, maxDuration:30, stabilityDelta:2, minStableMeasurements:6, measureLatency:!1}), 
testerFactory=require("./tester"), 
defaultConfig={duration:{min:15, max:30}, connections:{min:1, max:8}, maxAttempts:10, aggregator:aggregator, measureLatency:!1, getTestOcasParams:{https:!0, endpoint:"api.fast.com/oca/speedtest/v2", token:"2ffa0vg67u692GU23DPiFrAlOqyYdq19", urlCount:5}, stopper:stopper, progressFrequencyMs:150};module.exports={tester:function(config, userInfo) {
 function flushLogger(force) {
 !force&&tester.isRunning()||logger.flush(); 
}var testerConfig=JSON.parse(JSON.stringify(defaultConfig)), 
navigator={deviceData:userInfo, deviceType:"NodeJS"};config.duration&&(testerConfig.duration=config.duration), config.connections&&(testerConfig.connections=config.connections), void 0!==config.https&&(testerConfig.getTestOcasParams.https=config.https);var tester=testerFactory(requester, testerConfig), 
logger=logging(tester, requester, {url:"https://ichnaea-web.netflix.com/cl2", navigator:navigator});return logger.getLogger().logEvent("NodeSession"), flushLogger(!0), logger.startLogging(), setInterval(flushLogger, 2e3), tester; 
}, errors:require("./error"), event:require("./event").events}; 
}, {"./aggregator/stableMovingAverage":2, "./error":4, "./event":5, "./logger":6, "./requester/node":8, "./stopper/stableDeltaMeasurementsStopper":10, "./tester":12}], 8:[function(require, module, exports) {
 module.exports=function() {
 var request, 
testIsRunning=!1, 
supportsProgress=!0, 
errors=require("../error"), 
utils=require("../utils"), 
timer=require("../timer").time, 
urlPackage=require("url"), 
requestTimeoutMs=1e4, 
CHUNK_SIZE=5e4;function validate(url, onProgressCallback, onCompleteCallback) {
 if(!url) {
 throw new errors.RequesterArgumentError("url argument is mandatory to perform speed test"); 
}if(!onProgressCallback) {
 throw new errors.RequesterArgumentError("onProgressCallback is mandatory"); 
}if(!onCompleteCallback) {
 throw new errors.RequesterArgumentError("onCompleteCallback is mandatory"); 
} 
}function startTest(url, onProgressCallback, onCompleteCallback, withResponse) {
 var progressBytes, lastProgressTime, lastCompleteTime, data;if(withResponse) {
 return (function(url, onProgressCallback, onCompleteCallback, withResponse) {
 var progress, lastBytesLoaded, progressBytes, lastProgressTime, lastCompleteTime, data, requestSettings;lastBytesLoaded=0, request=require("request"), supportsProgress&&(progress=require("request-progress")), lastProgressTime=lastCompleteTime=timer(), requestSettings={url:url, timeout:requestTimeoutMs}, withResponse||(requestSettings.encoding=null), progress(request=request(requestSettings, function(error, response, body) {
 var now=timer();error||response&&200!==response.statusCode?((error=error||{}).response=response, onCompleteCallback({success:!1, error:error})):(data={success:!0, end:now, start:lastCompleteTime}, withResponse&&(data.response=body), progressBytes=response.connection.bytesRead-lastBytesLoaded, lastBytesLoaded=response.connection.bytesRead, onProgressCallback({bytes:progressBytes, success:!0, start:lastProgressTime, end:now}), onCompleteCallback(data)); 
}), {throttle:100, delay:1}).on("progress", function(state) {
 var now=timer();progressBytes=state.size.transferred-lastBytesLoaded, lastBytesLoaded=state.size.transferred, onProgressCallback({bytes:progressBytes, success:!0, start:lastProgressTime, end:now}), lastProgressTime=now; 
}).on("error", function(error) {
 onCompleteCallback({success:!1, response:error}); 
}); 
}(url, onProgressCallback, onCompleteCallback, withResponse)); 
}lastProgressTime=lastCompleteTime=timer(), http=url.indexOf("https:")>=0?require("https"):require("http"), request=http.get(url, function(response) {
 response.setEncoding("binary"), response.on("data", function(chunk) {
 var now=timer();progressBytes=chunk.length, onProgressCallback({bytes:progressBytes, success:!0, start:lastProgressTime, end:now}), lastProgressTime=now; 
}), response.on("end", function() {
 data={success:!0, end:timer(), start:lastCompleteTime}, withResponse&&(data.response=body), onCompleteCallback(data); 
}), response.on("error", function(error) {
 onCompleteCallback({success:!1, response:error}); 
}); 
}).on("error", function(error) {
 onCompleteCallback({success:!1, response:error}); 
}); 
}return{start:function(url, onProgressCallback, onCompleteCallback, withResponse) {
 validate(url, onProgressCallback, onCompleteCallback), testIsRunning=!0, startTest(url, onProgressCallback, onCompleteCallback, withResponse), testIsRunning=!1; 
}, upload:function(url, size, onProgressCallback, onCompleteCallback, data) {
 validate(url, onProgressCallback, onCompleteCallback), testIsRunning=!0, (function(url, size, onProgressCallback, onCompleteCallback, data) {
 url=urlPackage.parse(url);var lastCompleteTime, requestSettings, 
chunkSize=Math.min(CHUNK_SIZE, size);requestSettings={method:"post", timeout:requestTimeoutMs, host:url.host, path:url.path}, size<=0?(requestSettings.headers={"content-type":"application/json", "Content-Length":data&&data.length||0}, data=data||""):(requestSettings.headers={"content-type":"application/octet-stream", "Content-Length":size}, data=utils.genBlob(chunkSize), data=Buffer.alloc?Buffer.alloc(chunkSize, data):new Buffer(data)), lastCompleteTime=timer();var i, 
request=("https:"===url.protocol?require("https"):require("http")).request(requestSettings, function(response) {
 response.on("data", function(chunk) {}), response.on("end", function() {
 var result={success:!0, start:lastCompleteTime, bytes:size, end:timer()};onProgressCallback(result), onCompleteCallback(result); 
}), response.on("error", function(error) {
 onCompleteCallback({success:!1, response:error}); 
}); 
});for(request.on("error", function(error) {
 testIsRunning&&onCompleteCallback({success:!1, response:error}); 
}), i=0;i<Math.floor(size/chunkSize);i++) {
 request.write(data); 
}i*chunkSize<size&&request.write(data), request.end(); 
}(url, size, onProgressCallback, onCompleteCallback, data)), testIsRunning=!1; 
}, supportsProgress:function() {
 return!1; 
}, setSupportsProgress:function(value) {
 supportsProgress=value; 
}, stop:function() {
 request&&request.abort(), testIsRunning=!1; 
}}; 
}; 
}, {"../error":4, "../timer":13, "../utils":15, "http":void 0, "https":void 0, "request":28, "request-progress":27, "url":void 0}], 9:[function(require, module, exports) {
 module.exports=(function() {
 var snapshots, lastProcessedWorkerMeasurement, overflowMeasurements;function reset() {
 snapshots=[], lastProcessedWorkerMeasurement={}, overflowMeasurements={}; 
}return reset(), {reset:function() {
 reset(); 
}, compute:function(workerMeasurements) {
 var workerSnapshotData=(function(workerMeasurements) {
 var workerId, snapshotMeasurements, curWorkerMeasurements, workerMeasurementsCount, lastMeasurement, lastMeasurementInd, snapshotEnd, newLastProcessedWorkerMeasurement, curWorkerOverflowMeasurements;for(workerId in snapshotMeasurements=[], newLastProcessedWorkerMeasurement={}, workerMeasurements) {
 if(workerMeasurements.hasOwnProperty(workerId)) {
 if(workerMeasurementsCount=(curWorkerMeasurements=workerMeasurements[workerId]).length, lastMeasurementInd=lastProcessedWorkerMeasurement[workerId]||0, curWorkerOverflowMeasurements=overflowMeasurements[workerId]||[], !(lastMeasurementInd<workerMeasurementsCount||curWorkerOverflowMeasurements.length>0)) {
 return; 
}overflowMeasurements[workerId]=[], snapshotMeasurements.push({workerId:workerId, measurements:[].concat(curWorkerOverflowMeasurements, curWorkerMeasurements.slice(lastMeasurementInd, workerMeasurementsCount))}), lastMeasurement=curWorkerMeasurements[workerMeasurementsCount-1], (!snapshotEnd||lastMeasurement.end<snapshotEnd)&&(snapshotEnd=lastMeasurement.end), newLastProcessedWorkerMeasurement[workerId]=workerMeasurementsCount; 
} 
}return lastProcessedWorkerMeasurement=newLastProcessedWorkerMeasurement, {measurements:snapshotMeasurements, end:snapshotEnd}; 
}(workerMeasurements));if(workerSnapshotData) {
 var snapshot=(function(snapshotMeasurements) {
 var minTime, maxTime, snapshot, curRange, rangeFinished, curLastTime;function minStart(curWorkerMeasurements) {
 var snapshotInd, 
min={workerId:null, measurement:{}, snapshotInd:null};for(snapshotInd=0;snapshotInd<snapshotMeasurements.length;++snapshotInd) {
 var workerId=snapshotMeasurements[snapshotInd].workerId, 
measurement=snapshotMeasurements[snapshotInd].measurements[curWorkerMeasurements[workerId]||0];measurement&&(void 0===min.measurement.start||measurement.start<min.measurement.start)&&(min.workerId=workerId, min.measurement=measurement, min.snaphotInd=snapshotInd); 
}return min; 
}for(snapshot={bytes:0, time:0}, curRange={}, rangeFinished=0;rangeFinished<snapshotMeasurements.length;) {
 var curMin=minStart(curRange);null!==curMin.workerId?(curRange[curMin.workerId]=(curRange[curMin.workerId]||0)+1, curRange[curMin.workerId]>=snapshotMeasurements[curMin.snaphotInd].measurements.length&&(rangeFinished+=1), void 0===minTime&&(curLastTime=minTime=curMin.measurement.start), curLastTime=Math.max(curLastTime, curMin.measurement.start), curMin.measurement.end>curLastTime&&(snapshot.time+=curMin.measurement.end-curLastTime, curLastTime=curMin.measurement.end), snapshot.bytes+=curMin.measurement.bytes):rangeFinished+=1; 
}if(void 0!==(maxTime=curLastTime)&&void 0!==minTime) {
 return snapshot.start=minTime, snapshot.end=maxTime, snapshot; 
} 
}(function(snapshotMeasurements, snapshotEnd) {
 var curWorkerMeasurements, workerId, lastMeasurement, measurementId, overflowMeasurement, snapshotInd, snapshot;for(snapshotInd=0;snapshotInd<snapshotMeasurements.length;++snapshotInd) {
 for(curWorkerMeasurements=(snapshot=snapshotMeasurements[snapshotInd]).measurements, workerId=snapshot.workerId, measurementId=curWorkerMeasurements.length-1;measurementId>=0&&(lastMeasurement=curWorkerMeasurements[measurementId]).start>=snapshotEnd;--measurementId) {
 overflowMeasurements[workerId]||(overflowMeasurements[workerId]=[]), overflowMeasurements[workerId].push(lastMeasurement); 
}snapshot.measurements=curWorkerMeasurements.slice(0, measurementId+1), measurementId>=0&&lastMeasurement&&lastMeasurement.end>snapshotEnd&&((overflowMeasurement={start:snapshotEnd, end:lastMeasurement.end}).bytes=lastMeasurement.bytes*(lastMeasurement.end-snapshotEnd)/(lastMeasurement.end-lastMeasurement.start), lastMeasurement.bytes-=overflowMeasurement.bytes, lastMeasurement.end=snapshotEnd, overflowMeasurements[workerId]||(overflowMeasurements[workerId]=[]), overflowMeasurements[workerId].push(overflowMeasurement)); 
}return snapshotMeasurements; 
}(workerSnapshotData.measurements, workerSnapshotData.end)));return snapshot&&snapshots.push(snapshot), snapshot; 
} 
}, length:function() {
 return snapshots.length; 
}, all:function() {
 return snapshots; 
}}; 
}()); 
}, {}], 10:[function(require, module, exports) {
 module.exports=function(config) {
 var minDuration, maxDuration, stabilityDelta, minStableMeasurements, timer, startTime;return minDuration=config.minDuration||5, maxDuration=config.maxDuration||60, stabilityDelta=config.stabilityDelta||5, minStableMeasurements=config.minStableMeasurements||5, timer=config.timer||require("../timer").time, startTime=timer(), function(metrics) {
 var testTime=void 0!==metrics.testTime?metrics.testTime:timer()-startTime, 
measurements=metrics.progressMeasurements, 
afterCompleteDuration=metrics.afterCompleteDuration, 
numMeasurements=measurements.length, 
curSpeed=metrics.speed;return void 0===afterCompleteDuration?!!(testTime>=maxDuration||!(numMeasurements<minStableMeasurements||numMeasurements-(function(measurements, windowSize) {
 var measurement, 
curMaxSpeed=0, 
curMaxInd=0, 
measurementInd=0, 
numMeasurements=measurements.length, 
firstMeasurementInd=Math.max(0, numMeasurements-windowSize);for(measurementInd=numMeasurements-1;measurementInd>=firstMeasurementInd;--measurementInd) {
 (measurement=measurements[measurementInd]).speed>=curMaxSpeed&&(curMaxSpeed=measurement.speed, curMaxInd=measurementInd); 
}return curMaxInd; 
}(measurements, Math.ceil(minStableMeasurements/2)))<Math.ceil(minStableMeasurements/2)||numMeasurements-Math.max(0, numMeasurements-minStableMeasurements)<minStableMeasurements||(function(value, measurements) {
 var measurementInd, delta, 
maxDelta=0;for(measurementInd=0;measurementInd<measurements.length;++measurementInd) {
 (delta=100*Math.abs(measurements[measurementInd].speed-value)/value)>maxDelta&&(maxDelta=delta); 
}return maxDelta; 
}(curSpeed, measurements.slice(numMeasurements-minStableMeasurements, numMeasurements)))>stabilityDelta)&&testTime>=minDuration):testTime>=afterCompleteDuration; 
}; 
}; 
}, {"../timer":13}], 11:[function(require, module, exports) {
 module.exports=function(config) {
 var minDuration, maxDuration, stabilityDelta, minStableMeasurements, timer, startTime;return minDuration=config.minDuration||5, maxDuration=config.maxDuration||60, stabilityDelta=config.stabilityDelta||5, minStableMeasurements=config.minStableMeasurements||5, timer=config.timer||require("../timer").time, startTime=timer(), function(metrics) {
 var testTime=void 0!==metrics.testTime?metrics.testTime:timer()-startTime, 
measurements=metrics.progressMeasurements, 
afterCompleteDuration=metrics.afterCompleteDuration, 
numMeasurements=measurements.length;if(void 0===afterCompleteDuration) {
 if(testTime>=maxDuration) {
 return!0; 
}if(numMeasurements<minStableMeasurements) {
 return!1; 
}var maxInd=(function(measurements, windowSize) {
 var measurement, 
curMaxSpeed=0, 
curMaxInd=0, 
measurementInd=0, 
numMeasurements=measurements.length, 
firstMeasurementInd=Math.max(0, numMeasurements-windowSize);for(measurementInd=numMeasurements-1;measurementInd>=firstMeasurementInd;--measurementInd) {
 (measurement=measurements[measurementInd]).speed>=curMaxSpeed&&(curMaxSpeed=measurement.speed, curMaxInd=measurementInd); 
}return curMaxInd; 
}(measurements, minStableMeasurements));return!(numMeasurements-maxInd<minStableMeasurements)&&!((function(value, measurements) {
 var measurementInd, delta, 
maxDelta=0;for(measurementInd=0;measurementInd<measurements.length;++measurementInd) {
 (delta=100*Math.abs(measurements[measurementInd].speed-value)/value)>maxDelta&&(maxDelta=delta); 
}return delta; 
}(measurements[maxInd].speed, measurements.slice(numMeasurements-minStableMeasurements, numMeasurements)))>stabilityDelta)&&testTime>=minDuration; 
}return testTime>=afterCompleteDuration; 
}; 
}; 
}, {"../timer":13}], 12:[function(require, module, exports) {
 module.exports=(function() {
 var MAX_PAYLOAD_BYTES=26214400, 
MIN_REQUEST_SIZE=1024, 
STABLE_MEASUREMENTS_THRESHOLD=10, 
TEST_TYPE={DOWNLOAD_TEST:"download", UPLOAD_TEST:"upload", LATENCY_TEST:"latency"}, 
utils=require("./utils"), 
errors=require("./error"), 
events=require("./event"), 
testConfig=require("./config");require("circular-buffer");return function(requester, config) {
 var that, currentTestType, reportTimeout, retryTimeout, requestTimeMs, activeWorkersCount, speedAggregator, stopper, timer, testType, 
testIsRunning=!1, 
testAttempt=1, 
stats={}, 
startTime=null, 
downloadStartTime=null, 
workerMeasurements={}, 
latencyMeasurements={}, 
requesters={}, 
pingers={}, 
progressMeasurements=[], 
urlGetter=require("./url_getter")(), 
uniqueId=utils.uniqueId, 
snapshot=require("./snapshot"), 
eventHandlers={}, 
ocaCount={};for(testType in TEST_TYPE) {
 testType=TEST_TYPE[testType], stats[testType]={}, stats[testType].tests=0, stats[testType].results=[], stats[testType].bytes=[]; 
}if(!requester) {
 throw new errors.TesterArgumentError("requester factory should be provided to the tester"); 
}function validateEvent(eventName, callback) {
 if(void 0===events.schema[eventName]) {
 throw new errors.TesterEventError("no event with name "+eventName); 
}if(!utils.isFunction(callback)) {
 throw new errors.TesterEventError("function callback is expected for event "+eventName); 
} 
}function isActive() {
 return testIsRunning; 
}function stop() {
 var reqId;for(reqId in testIsRunning=!1, urlGetter.stop(), reportTimeout&&clearTimeout(reportTimeout), retryTimeout&&clearTimeout(retryTimeout), requesters) {
 requesters[reqId].stop(), pingers[reqId].stop(); 
} 
}function computeLoadedLatency() {
 var reqId, value, 
latencies=[], 
count=0;for(reqId in latencyMeasurements) {
 latencyMeasurements[reqId].length>4&&(value=utils.percentile(latencyMeasurements[reqId], .75), latencies.push(value)), count+=latencyMeasurements[reqId].length; 
}if(0===latencies.length) {
 for(reqId in latencyMeasurements) {
 value=utils.percentile(latencyMeasurements[reqId], .75), latencies.push(value); 
} 
}return{value:Math.min.apply(null, latencies), count:count}; 
}function reportEndEvents(data) {
 var eventData, 
result=data.result, 
resultValue=-1;eventData={start:startTime, downloadStart:downloadStartTime, attempts:testAttempt, numberOfTests:stats[currentTestType].tests, bytes:stats[currentTestType].bytes[stats[currentTestType].bytes.length-1]}, "success"===result?(eventData.stable=data.stable, currentTestType===TEST_TYPE.LATENCY_TEST?(resultValue=data.value, eventData.count=data.count, eventData.value=resultValue):(resultValue=data.speed, eventData.speed=resultValue, eventData.latency=computeLoadedLatency()), event(events.events.ATTEMPT_SUCCESS, eventData), event(events.events.SUCCESS, eventData), eventData.result=result):"stop"===result?(eventData.reason=data.reason||"stopped", event(events.events.STOP, eventData), eventData.result=result):(eventData.error=data.error, eventData.attempts=testAttempt-1, event(events.events.ATTEMPT_FAIL, eventData), event(events.events.FAIL, eventData), eventData.result=result), event(events.events.ATTEMPT_END, eventData), event(events.events.END, eventData), stats[currentTestType].results.push(resultValue); 
}function reportMetrics(interval) {
 function testTime() {
 return(timer()-(downloadStartTime||startTime))/1e3; 
}var latestSnapshot, resultData, testComplete, currentSpeed, snapshots, testTimeS, 
activeSnapshot=!1;if(isActive()) {
 if(currentTestType===TEST_TYPE.LATENCY_TEST) {
 (resultData=(function() {
 var reqId, value, 
latencies=[], 
count=0;for(reqId in latencyMeasurements) {
 value=utils.percentile(latencyMeasurements[reqId], .1), latencies.push(value), count+=latencyMeasurements[reqId].length; 
}return{value:Math.min.apply(null, latencies), count:count}; 
}())).stable=!0, (testComplete=testTime()>5&&resultData.count>50)?(stop(), resultData.result="success", setTimeout(function() {
 reportEndEvents(resultData); 
}, 10)):(event(events.events.PROGRESS, resultData), reportTimeout=setTimeout(function() {
 reportMetrics(interval); 
}, interval)); 
}else{
 (latestSnapshot=snapshot.compute(workerMeasurements))&&(activeSnapshot=latestSnapshot.end-latestSnapshot.start>0, event(events.events.SNAPSHOT, {bytes:latestSnapshot.bytes, start:latestSnapshot.start, end:latestSnapshot.end, time:latestSnapshot.time})), snapshots=snapshot.all(), testTimeS=testTime(), activeSnapshot&&(currentSpeed=speedAggregator(snapshots), testComplete=testTimeS>config.duration.min&&stopper({testTime:testTimeS, snapshots:snapshots, progressMeasurements:progressMeasurements, speed:currentSpeed})), testTimeS>config.duration.max&&(testComplete=!0, currentSpeed=speedAggregator(snapshots)), resultData={speed:currentSpeed, stable:!0, bytes:stats[currentTestType].bytes[stats[currentTestType].bytes.length-1], latency:computeLoadedLatency()}, testComplete?(testTimeS>config.duration.max&&(resultData.stopperStable=!1, progressMeasurements.length>STABLE_MEASUREMENTS_THRESHOLD&&(resultData.stable=!0)), stop(), resultData.result="success", setTimeout(function() {
 reportEndEvents(resultData); 
}, 10)):(activeSnapshot&&(progressMeasurements.push({speed:currentSpeed}), event(events.events.PROGRESS, {speed:currentSpeed, bytes:resultData.bytes, latency:resultData.latency})), reportTimeout=setTimeout(function() {
 reportMetrics(interval); 
}, interval));var i, 
desiredWorkers=activeWorkersCount;if(activeWorkersCount<config.connections.max) {
 for(currentSpeed>5e7?desiredWorkers=config.connections.max:currentSpeed>1e7&&activeWorkersCount<5?desiredWorkers=5:currentSpeed>1e6&&activeWorkersCount<3&&(desiredWorkers=3), currentSpeed>5e5&&activeWorkersCount<2&&(desiredWorkers=3), i=0;i<desiredWorkers-activeWorkersCount;++i) {
 startNewWorker(); 
} 
} 
} 
} 
}function urlRequestStop(data) {
 event(events.events.URL_REQUEST_END, {result:"stop"}); 
}function startNewWorker() {
 activeWorkersCount+=1, event(events.events.URL_REQUEST_START, config.getTestOcasParams), urlGetter.getNext(config.getTestOcasParams, requester, function(url) {
 var id=uniqueId();event(events.events.URL_REQUEST_END, {url:url, result:"success", client:urlGetter.clientInfo()}), downloadStartTime=downloadStartTime||timer(), (function(workerId, url, attempt) {
 function sendLatencyRequest(onLatencyComplete) {
 var rangeUrl=url.replace("/range/", "/range/0-0");event(events.events.LATENCY_START, {oca:oca}), pinger.upload(rangeUrl, 0, utils.dummy, onLatencyComplete); 
}var rangeUrl, 
req=requester(), 
pinger=requester(), 
requestSize=config.firstRequestBytes, 
oca=url.split("/")[2];function sendDownloadRequest(onDownloadProgress, onDownloadComplete, maxPayloadSize) {
 testAttempt<3||config.maxBytesInFlight-1<activeWorkersCount*maxPayloadSize||!req.supportsProgress()?rangeUrl=url.replace("/range/", "/range/0-"+requestSize):(rangeUrl=url.replace("/range/", ""), requestSize=MAX_PAYLOAD_BYTES), event(events.events.CONNECTION_START, {oca:oca, range:requestSize, requestUrl:rangeUrl});try{
 req.start(rangeUrl, onDownloadProgress, onDownloadComplete, !1, url); 
}catch(e) {
 onDownloadComplete({success:!1, response:{type:"Requester error", message:e}}); 
} 
}function sendUploadRequest(onUploadProgress, onUploadComplete, maxPayloadSize) {
 testAttempt<3||config.maxBytesInFlight-1<activeWorkersCount*maxPayloadSize||!req.supportsProgress()?rangeUrl=url.replace("/range/", "/range/0-"+requestSize):(rangeUrl=url.replace("/range/", ""), requestSize=MAX_PAYLOAD_BYTES), event(events.events.CONNECTION_START, {oca:oca, range:requestSize, requestUrl:rangeUrl});try{
 req.upload(rangeUrl, requestSize, onUploadProgress, onUploadComplete); 
}catch(e) {
 onUploadComplete({success:!1, response:{type:"Requester error", message:e}}); 
} 
}function workerIsActive() {
 return void 0!==workerMeasurements[workerId]; 
}function onProgress(progress) {
 var progressData;workerIsActive()&&isActive()?progress.success&&(void 0===(progressData={bytes:progress.bytes, time:progress.end-progress.start, start:progress.start, end:progress.end}).bytes&&(progressData.bytes=requestSize), stats[currentTestType].bytes[stats[currentTestType].bytes.length-1]+=progressData.bytes, workerMeasurements[workerId].push(progressData), event(events.events.CONNECTION_PROGRESS, {bytes:progressData.bytes, start:progressData.start, end:progressData.end, requestUrl:rangeUrl})):req.stop(); 
}function onComplete(sendRequest) {
 var maxPayloadSize=MAX_PAYLOAD_BYTES, 
completeFunc=function(data) {
 var requestTime, 
eventData={oca:oca, requestUrl:rangeUrl}, 
partialSuccess=!1, 
ocaRequest=ocaCount[oca]||0;if(ocaCount[oca]=ocaRequest+1, maxPayloadSize=MAX_PAYLOAD_BYTES-ocaRequest, workerIsActive()&&isActive()&&"stopped"!==data.reason) {
 if(partialSuccess=!data.success&&workerMeasurements[workerId].length>0, !data.success&&!partialSuccess) {
 var error=new errors.DownloadOcaDataError("Could not download oca data");return error.url=url, error.response=data.response, eventData.error=error, event(events.events.CONNECTION_FAIL, eventData), eventData.result="fail", event(events.events.CONNECTION_END, eventData), void test(attempt+1, error); 
}eventData.bytes=requestSize, eventData.partialSuccess=partialSuccess, event(events.events.CONNECTION_SUCCESS, eventData), eventData.result="success", req.supportsProgress()?requestSize=maxPayloadSize:(requestTime=data.end-data.start, requestSize=Math.min(Math.floor(requestTimeMs*requestSize/requestTime), 5*requestSize, maxPayloadSize, Math.round(config.maxBytesInFlight/config.connections.max)), requestTimeMs=Math.min(requestTimeMs+config.rangeRequestIncreaseMs, config.maxRangeRequestTimeMs), requestSize=Math.max(requestSize, MIN_REQUEST_SIZE)), event(events.events.CONNECTION_END, eventData), sendRequest(onProgress, completeFunc, maxPayloadSize); 
}else {
 req.stop(), eventData.reason="inactive", eventData.result="stop", event(events.events.CONNECTION_END, eventData); 
} 
};return completeFunc; 
}function onLatencyComplete(data) {
 var latency, scheduleDelay, 
eventData={oca:oca};if(workerIsActive()&&isActive()&&"stopped"!==data.reason) {
 if(data.success) {
 latency=data.end-data.start, data.timing||(latency/=2), eventData.latency=latency, eventData.start=data.start, eventData.end=data.end, latencyMeasurements[workerId].push(latency), eventData.timing=data.timing, event(events.events.LATENCY_SUCCESS, eventData), eventData.result="success"; 
}else{
 var error=new errors.DownloadOcaDataError("Could not measure latency to oca "+oca);error.url=url, error.response=data.response, eventData.error=error, event(events.events.LATENCY_FAIL, eventData), eventData.result="fail"; 
}event(events.events.LATENCY_END, eventData), scheduleDelay=currentTestType!==TEST_TYPE.LATENCY_TEST?latency?Math.max(config.latencyMeasurementsFrequencyMs-latency, 0):config.latencyMeasurementsFrequencyMs:0, setTimeout(function() {
 return sendLatencyRequest(onLatencyComplete); 
}, scheduleDelay); 
}else {
 pinger.stop(), eventData.reason="inactive", eventData.result="stop", event(events.events.LATENCY_END, eventData); 
} 
}requesters[workerId]=req, pingers[workerId]=pinger, workerMeasurements[workerId]=[], latencyMeasurements[workerId]=[], req.supportsProgress()&&(requestSize=MAX_PAYLOAD_BYTES), config.measureLatency&&currentTestType!==TEST_TYPE.LATENCY_TEST&&sendLatencyRequest(onLatencyComplete), currentTestType===TEST_TYPE.DOWNLOAD_TEST?sendDownloadRequest(onProgress, onComplete(sendDownloadRequest), MAX_PAYLOAD_BYTES):currentTestType===TEST_TYPE.UPLOAD_TEST?sendUploadRequest(onProgress, onComplete(sendUploadRequest), MAX_PAYLOAD_BYTES):currentTestType===TEST_TYPE.LATENCY_TEST&&sendLatencyRequest(onLatencyComplete); 
}(id, url, testAttempt)); 
}, function(error) {
 return (function(error) {
 event(events.events.URL_REQUEST_END, {error:error, result:"fail"}), isActive()&&test(testAttempt+1, error); 
}(error)); 
}, urlRequestStop); 
}function test(attempt, error) {
 function startTest() {
 var i;if(eventData={attempt:testAttempt}, event(events.events.ATTEMPT_START, eventData), startTime=timer(), currentTestType!==TEST_TYPE.LATENCY_TEST) {
 for(i=0;i<config.connections.min;i++) {
 startNewWorker(); 
} 
}else {
 for(i=0;i<Math.min(5, config.connections.max);i++) {
 startNewWorker(); 
} 
}reportMetrics(config.progressFrequencyMs); 
}var eventData;isActive()&&stop(), startTime=null, downloadStartTime=null, testAttempt=1, workerMeasurements={}, latencyMeasurements={}, requesters={}, pingers={}, progressMeasurements=[], requestTimeMs=config.startRangeRequestTimeMs, activeWorkersCount=0, ocaCount={}, snapshot.reset(), "undefined"!==typeof window&&window.performance&&window.performance.clearResourceTimings&&window.performance.clearResourceTimings(), (testAttempt=attempt||1)>config.maxAttempts?reportEndEvents({result:"fail", error:error}):(testIsRunning=!0, error&&(eventData={error:error, attempt:testAttempt-1}, event(events.events.ATTEMPT_FAIL, eventData), eventData.result="fail", event(events.events.ATTEMPT_END, eventData), error.url&&urlGetter.reportBadUrl(error.url)), testAttempt>1?setTimeout(startTest, Math.min(Math.pow(2, testAttempt), 200)):startTest()); 
}function event(eventName, data) {
 var eventInd, genericHandlers, 
handlers=eventHandlers[eventName];if(data.testType=currentTestType, handlers&&handlers.length>0) {
 for(eventInd=0;eventInd<handlers.length;++eventInd) {
 handlers[eventInd];try{
 handlers[eventInd](utils.simpleCopy(data)); 
}catch(e) {} 
} 
}if((genericHandlers=eventHandlers[events.events.ANY])&&genericHandlers.length>0) {
 for(eventInd=0;eventInd<genericHandlers.length;++eventInd) {
 genericHandlers[eventInd]({event:eventName, data:utils.simpleCopy(data)}); 
} 
} 
}return config=testConfig.get(config), timer=config.timer, speedAggregator=config.aggregator, stopper=config.stopper, that={download:function() {
 currentTestType=TEST_TYPE.DOWNLOAD_TEST, stats[currentTestType].tests+=1, stats[currentTestType].bytes.push(0), urlGetter.reset(), event(events.events.START, {numberOfTests:stats[currentTestType].tests, type:currentTestType, stats:stats}), test(); 
}, upload:function() {
 currentTestType=TEST_TYPE.UPLOAD_TEST, stats[currentTestType].tests>1&&urlGetter.reset(), stats[currentTestType].tests+=1, stats[currentTestType].bytes.push(0), event(events.events.START, {numberOfTests:stats[currentTestType].tests, type:currentTestType, stats:stats}), test(); 
}, latency:function() {
 currentTestType=TEST_TYPE.LATENCY_TEST, stats[currentTestType].tests>1&&urlGetter.reset(), stats[currentTestType].tests+=1, stats[currentTestType].bytes.push(0), event(events.events.START, {numberOfTests:stats[currentTestType].tests, type:currentTestType, stats:stats}), test(); 
}, stop:function() {
 stop(), reportEndEvents({result:"stop", reason:"user"}); 
}, on:function(eventName, callback) {
 validateEvent(eventName, callback);var handlers=eventHandlers[eventName];return handlers||(handlers=eventHandlers[eventName]=[]), handlers.push(callback), that; 
}, off:function(eventName, callback) {
 validateEvent(eventName, callback);var eventInd, event, 
handlers=eventHandlers[eventName], 
outHandlers=[];if(handlers&&handlers.length>0) {
 for(eventInd=0;eventInd<handlers.length;++eventInd) {
 (event=handlers[eventInd])!==callback&&outHandlers.push(event); 
}outHandlers.length>0&&(eventHandlers[eventName]=outHandlers); 
}return that; 
}, config:function(attr) {
 return attr?config[attr]:config; 
}, setConfig:function(attrs) {
 for(var name in attrs) {
 testConfig.validate(name, attrs[name])&&(config[name]=attrs[name]); 
}return config; 
}, isRunning:function() {
 return testIsRunning; 
}}; 
}; 
}()); 
}, {"./config":3, "./error":4, "./event":5, "./snapshot":9, "./url_getter":14, "./utils":15, "circular-buffer":16}], 13:[function(require, module, exports) {
 module.exports=(function() {
 var timer;return"undefined"!==typeof window&&this.window&&window.performance&&(timer=window.performance.now||window.performance.webkitNow)&&(timer=timer.bind(window.performance)), timer||(timer=function() {
 return(new Date).getTime(); 
}), {time:timer}; 
}()); 
}, {}], 14:[function(require, module, exports) {
 module.exports=function() {
 var DEFAULT_PARAMS, curUrlInd, testUrls, that, req, urlReporter, clientInfo, waitOnRefresh;function reset() {
 testUrls=[], curUrlInd=0, req=void 0, waitOnRefresh=!1; 
}var errors=require("./error"), 
dummy=require("./utils").dummy;return DEFAULT_PARAMS={https:!0, token:"YXNkZmFzZGxmbnNkYWZoYXNkZmhrYWxm", urlCount:3, endpoint:"api-global.netflix.com/oca/speedtest", extraParams:{}}, that={}, urlReporter=(function() {
 var badUrls, ocaFailures, siteFailures;function parseUrl(url) {
 var endpoint, speedtestInd, 
urlParts=url.split("?"), 
urlData={};return urlData.url=url, urlData.normalizedUrl=url, endpoint=urlParts[0], 2===urlParts.length&&((speedtestInd=endpoint.lastIndexOf("/speedtest"))?(endpoint=endpoint.substring(0, speedtestInd+10), urlData.normalizedUrl=endpoint+"?"+urlParts[1]):urlData.normalizedUrl=url), endpoint=endpoint.replace(/.*?:\/\//g, ""), urlData.oca=endpoint.split("/")[0], urlData.site=urlData.oca.split(".")[2], urlData; 
}function reset() {
 badUrls={}, ocaFailures={}, siteFailures={}, clientInfo={}; 
}return reset(), {reset:reset, isBadUrl:function(url) {
 var urlData=parseUrl(url), 
ocaFails=void 0===ocaFailures[urlData.oca]?0:ocaFailures[urlData.oca], 
siteFails=void 0===siteFailures[urlData.site]?0:siteFailures[urlData.site];return url=urlData.normalizedUrl, void 0!==badUrls[url]||ocaFails>=2||siteFails>=3; 
}, reportBadUrl:function(url) {
 var urlData=parseUrl(url);url=urlData.normalizedUrl, badUrls[url]=!0, urlData.oca&&(ocaFailures[urlData.oca]=void 0===ocaFailures[urlData.oca]?1:ocaFailures[urlData.oca]+1), 1===ocaFailures[urlData.oca]&&urlData.site&&(siteFailures[urlData.site]=void 0===siteFailures[urlData.site]?1:siteFailures[urlData.site]+1); 
}}; 
}()), reset(), that.get=function(urlParams, requester, onComplete, onFail, onStop, refresh) {
 function returnUrl(urls) {
 urls.length>0?onComplete(urls[curUrlInd]):onFail(new errors.NoOcaUrlsError("No urls returned from the endpoint "+url)); 
}0===testUrls.length||refresh?that.refresh(urlParams, requester, returnUrl, onFail, onStop):returnUrl(testUrls); 
}, that.getNext=function(urlParams, requester, onComplete, onFail, onStop, refresh) {
 function wrapper(func) {
 return function(data) {
 waitOnRefresh=!1, func(data); 
}; 
}function getUrl() {
 curUrlInd=(curUrlInd+1)%testUrls.length, testUrls.length>0?onComplete(testUrls[curUrlInd]):onFail(new errors.NoOcaUrlsError("No urls returned from the endpoint "+urlParams)); 
}testUrls.length<3||refresh?waitOnRefresh?(function waitTillRefresh(callback) {
 waitOnRefresh?setTimeout(function() {
 waitTillRefresh(callback); 
}, 50):callback(); 
}(getUrl)):(waitOnRefresh=!0, that.get(urlParams, requester, wrapper(onComplete), wrapper(onFail), wrapper(onStop), !0)):getUrl(); 
}, that.reportBadUrl=function(url) {
 var urlInd, 
newTestUrls=[];for(urlReporter.reportBadUrl(url), urlInd=0;urlInd<testUrls.length;++urlInd) {
 urlReporter.isBadUrl(testUrls[urlInd])||newTestUrls.push(testUrls[urlInd]); 
}return testUrls=newTestUrls; 
}, that.refresh=function(urlParams, requester, onSuccess, onFail, onStop) {
 req=requester();var url=(function(params) {
 var param, 
url="https://"+(params.endpoint||DEFAULT_PARAMS.endpoint)+"?https="+(void 0!==params.https?params.https:DEFAULT_PARAMS.https)+"&token="+(params.token||DEFAULT_PARAMS.token)+"&urlCount="+(params.urlCount||DEFAULT_PARAMS.urlCount);for(param in params.extraParams) {
 params.extraParams.hasOwnProperty(param)&&(url+="&"+param+"="+params.extraParams[param]); 
}return url; 
}(urlParams));req.start(url, dummy, function(data) {
 req=void 0, data.success?(reset(), testUrls=(function(responseText) {
 var response, targets, ind, url, allUrls;for(allUrls=[], targets=(response=JSON.parse(responseText)).targets||[], (clientInfo=response.client||{}).servers=[], ind=0;ind<targets.length;++ind) {
 url=(url=targets[ind].url).replace(/speedtest/, "speedtest/range/"), urlReporter.isBadUrl(url)||(testUrls.push(url), clientInfo.servers.push(targets[ind])), allUrls.push(url); 
}return 0===testUrls.length&&(testUrls=allUrls), testUrls; 
}(data.response)), onSuccess(testUrls)):"stopped"!==data.reason?(error=new errors.GetOcaUrlError("Could not send request to "+url), error.response=data.response, onFail(error)):onStop(data); 
}, !0); 
}, that.stop=function() {
 req&&req.stop(); 
}, that.reset=function() {
 reset(), urlReporter.reset(); 
}, that.clientInfo=function() {
 return clientInfo; 
}, that; 
}; 
}, {"./error":4, "./utils":15}], 15:[function(require, module, exports) {
 var id, 
utils={};utils.getXHR=function() {
 var XMLHttpFactories=["Msxml2.XMLHTTP.6.0", "Msxml3.XMLHTTP", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP", "Msxml2.XMLHTTP.3.0"], 
xmlhttp=!1;try{
 if(-1!==navigator.appVersion.indexOf("MSIE 10")) {
 throw new Error("Error"); 
}xmlhttp=new XDomainRequest; 
}catch(e) {
 try{
 xmlhttp=new XMLHttpRequest; 
}catch(e) {
 for(var i=0;i<XMLHttpFactories.length;i++) {
 try{
 xmlhttp=new ActiveXObject(XMLHttpFactories[i]);break; 
}catch(e) {} 
} 
} 
}finally{
 return xmlhttp; 
} 
}, utils.uniqueId=(id=0, function() {
 var myId=id;return id+=1, myId; 
}), utils.dummy=function() {}, utils.isFunction=function(obj) {
 return!!(obj&&obj.constructor&&obj.call&&obj.apply); 
}, utils.simpleCopy=function(obj) {
 var attr, 
copy={};for(attr in obj) {
 copy[attr]=obj[attr]; 
}return copy; 
}, utils.createObject=function(obj) {
 function F() {}return F.prototype=obj, new F; 
}, utils.median=function(values) {
 var l, half;if(0!==(l=values.length)) {
 return 1===l?values[0]:(half=Math.floor(l/2), values.sort(), l%2?values[half]:(values[half-1]+values[half])/2); 
} 
}, utils.percentile=function(values, p) {
 if(0===values.length) {
 return 0; 
}if("number"!==typeof p) {
 throw new TypeError("p must be a number"); 
}if(values.sort(function(a, b) {
 return a-b; 
}), p<=0) {
 return values[0]; 
}if(p>=1) {
 return values[values.length-1]; 
}var index=values.length*p, 
lower=Math.floor(index), 
upper=lower+1, 
weight=index%1;return upper>=values.length?values[lower]:values[lower]*(1-weight)+values[upper]*weight; 
}, utils.addEventListener=function(elem, event, listener) {
 elem.addEventListener?elem.addEventListener(event, listener, !1):elem.attachEvent("on"+event, listener); 
}, utils.removeEventListener=function(elem, event, listener) {
 elem.addEventListener?elem.removeEventListener(event, listener):elem.detachEvent("on"+event, listener); 
}, utils.polyfillObjectKeys=function() {
 var hasOwnProperty, hasDontEnumBug, dontEnums, dontEnumsLength;Object.keys||(Object.keys=(hasOwnProperty=Object.prototype.hasOwnProperty, hasDontEnumBug=!{toString:null}.propertyIsEnumerable("toString"), dontEnumsLength=(dontEnums=["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"]).length, function(obj) {
 if("object"!==typeof obj&&("function"!==typeof obj||null===obj)) {
 throw new TypeError("Object.keys called on non-object"); 
}var prop, i, 
result=[];for(prop in obj) {
 hasOwnProperty.call(obj, prop)&&result.push(prop); 
}if(hasDontEnumBug) {
 for(i=0;i<dontEnumsLength;i++) {
 hasOwnProperty.call(obj, dontEnums[i])&&result.push(dontEnums[i]); 
} 
}return result; 
})); 
}, utils.onDomReady=function(callback) {
 document.addEventListener?document.addEventListener("DOMContentLoaded", callback, !1):document.attachEvent("onreadystatechange", function onReadyIe(event) {
 "complete"===document.readyState&&(document.detachEvent("onreadystatechange", onReadyIe), callback()); 
}); 
}, utils.genBlob=function(size) {
 var blobStr, blob;for(blobStr="";2*blobStr.length<=size;) {
 blobStr+=blobStr+Math.random().toString(); 
}blobStr.length>size?blobStr=blobStr.substring(0, size):blobStr+=blobStr.substring(0, size-blobStr.length);try{
 blob=new Blob([blobStr], {type:"application/octet-stream"}); 
}catch(e) {
 try{
 var bb=new(window.MozBlobBuilder||window.WebKitBlobBuilder||window.BlobBuilder);bb.append(blobStr), blob=bb.getBlob("application/octet-stream"); 
}catch(e) {
 blob=blobStr; 
} 
}return blob; 
}, module.exports=utils; 
}, {}], 16:[function(require, module, exports) {
 function CircularBuffer(capacity) {
 if(!(this instanceof CircularBuffer)) {
 return new CircularBuffer(capacity); 
}if("object"===typeof capacity&&Array.isArray(capacity._buffer)&&"number"===typeof capacity._capacity&&"number"===typeof capacity._first&&"number"===typeof capacity._size) {
 for(var prop in capacity) {
 capacity.hasOwnProperty(prop)&&(this[prop]=capacity[prop]); 
} 
}else{
 if("number"!==typeof capacity||capacity%1!=0||capacity<1) {
 throw new TypeError("Invalid capacity"); 
}this._buffer=new Array(capacity), this._capacity=capacity, this._first=0, this._size=0; 
} 
}CircularBuffer.prototype={size:function() {
 return this._size; 
}, capacity:function() {
 return this._capacity; 
}, enq:function(value) {
 this._first>0?this._first--:this._first=this._capacity-1, this._buffer[this._first]=value, this._size<this._capacity&&this._size++; 
}, push:function(value) {
 this._size==this._capacity?(this._buffer[this._first]=value, this._first=(this._first+1)%this._capacity):(this._buffer[(this._first+this._size)%this._capacity]=value, this._size++); 
}, deq:function() {
 if(0==this._size) {
 throw new RangeError("dequeue on empty buffer"); 
}var value=this._buffer[(this._first+this._size-1)%this._capacity];return this._size--, value; 
}, pop:function() {
 return this.deq(); 
}, shift:function() {
 if(0==this._size) {
 throw new RangeError("shift on empty buffer"); 
}var value=this._buffer[this._first];return this._first==this._capacity-1?this._first=0:this._first++, this._size--, value; 
}, get:function(start, end) {
 if(0==this._size&&0==start&&(void 0==end||0==end)) {
 return[]; 
}if("number"!==typeof start||start%1!=0||start<0) {
 throw new TypeError("Invalid start"); 
}if(start>=this._size) {
 throw new RangeError("Index past end of buffer: "+start); 
}if(void 0==end) {
 return this._buffer[(this._first+start)%this._capacity]; 
}if("number"!==typeof end||end%1!=0||end<0) {
 throw new TypeError("Invalid end"); 
}if(end>=this._size) {
 throw new RangeError("Index past end of buffer: "+end); 
}return this._first+start>=this._capacity&&(start-=this._capacity, end-=this._capacity), this._first+end<this._capacity?this._buffer.slice(this._first+start, this._first+end+1):this._buffer.slice(this._first+start, this._capacity).concat(this._buffer.slice(0, this._first+end+1-this._capacity)); 
}, toarray:function() {
 return 0==this._size?[]:this.get(0, this._size-1); 
}}, module.exports=CircularBuffer; 
}, {}], 17:[function(require, module, exports) {
 function objectToString(o) {
 return Object.prototype.toString.call(o); 
}exports.isArray=function(arg) {
 return Array.isArray?Array.isArray(arg):"[object Array]"===objectToString(arg); 
}, exports.isBoolean=function(arg) {
 return"boolean"===typeof arg; 
}, exports.isNull=function(arg) {
 return null===arg; 
}, exports.isNullOrUndefined=function(arg) {
 return null==arg; 
}, exports.isNumber=function(arg) {
 return"number"===typeof arg; 
}, exports.isString=function(arg) {
 return"string"===typeof arg; 
}, exports.isSymbol=function(arg) {
 return"symbol"===typeof arg; 
}, exports.isUndefined=function(arg) {
 return void 0===arg; 
}, exports.isRegExp=function(re) {
 return"[object RegExp]"===objectToString(re); 
}, exports.isObject=function(arg) {
 return"object"===typeof arg&&null!==arg; 
}, exports.isDate=function(d) {
 return"[object Date]"===objectToString(d); 
}, exports.isError=function(e) {
 return"[object Error]"===objectToString(e)||e instanceof Error; 
}, exports.isFunction=function(arg) {
 return"function"===typeof arg; 
}, exports.isPrimitive=function(arg) {
 return null===arg||"boolean"===typeof arg||"number"===typeof arg||"string"===typeof arg||"symbol"===typeof arg||void 0===arg; 
}, exports.isBuffer=Buffer.isBuffer; 
}, {}], 18:[function(require, module, exports) {
 module.exports=ForeverAgent, ForeverAgent.SSL=ForeverAgentSSL;var util=require("util"), 
Agent=require("http").Agent, 
net=require("net"), 
tls=require("tls"), 
AgentSSL=require("https").Agent;function getConnectionName(host, port) {
 return"string"===typeof host?host+":"+port:host.host+":"+host.port+":"+(host.localAddress?host.localAddress+":":":"); 
}function ForeverAgent(options) {
 var self=this;self.options=options||{}, self.requests={}, self.sockets={}, self.freeSockets={}, self.maxSockets=self.options.maxSockets||Agent.defaultMaxSockets, self.minSockets=self.options.minSockets||ForeverAgent.defaultMinSockets, self.on("free", function(socket, host, port) {
 var name=getConnectionName(host, port);if(self.requests[name]&&self.requests[name].length) {
 self.requests[name].shift().onSocket(socket); 
}else if(self.sockets[name].length<self.minSockets) {
 self.freeSockets[name]||(self.freeSockets[name]=[]), self.freeSockets[name].push(socket);var onIdleError=function() {
 socket.destroy(); 
};socket._onIdleError=onIdleError, socket.on("error", onIdleError); 
}else {
 socket.destroy(); 
} 
}); 
}function ForeverAgentSSL(options) {
 ForeverAgent.call(this, options); 
}util.inherits(ForeverAgent, Agent), ForeverAgent.defaultMinSockets=5, ForeverAgent.prototype.createConnection=net.createConnection, ForeverAgent.prototype.addRequestNoreuse=Agent.prototype.addRequest, ForeverAgent.prototype.addRequest=function(req, host, port) {
 var name=getConnectionName(host, port);if("string"!==typeof host) {
 var options=host;port=options.port, host=options.host; 
}if(this.freeSockets[name]&&this.freeSockets[name].length>0&&!req.useChunkedEncodingByDefault) {
 var idleSocket=this.freeSockets[name].pop();idleSocket.removeListener("error", idleSocket._onIdleError), delete idleSocket._onIdleError, req._reusedSocket=!0, req.onSocket(idleSocket); 
}else {
 this.addRequestNoreuse(req, host, port); 
} 
}, ForeverAgent.prototype.removeSocket=function(s, name, host, port) {
 var index;this.sockets[name]?-1!==(index=this.sockets[name].indexOf(s))&&this.sockets[name].splice(index, 1):this.sockets[name]&&0===this.sockets[name].length&&(delete this.sockets[name], delete this.requests[name]);this.freeSockets[name]&&(-1!==(index=this.freeSockets[name].indexOf(s))&&(this.freeSockets[name].splice(index, 1), 0===this.freeSockets[name].length&&delete this.freeSockets[name]));this.requests[name]&&this.requests[name].length&&this.createSocket(name, host, port).emit("free"); 
}, util.inherits(ForeverAgentSSL, ForeverAgent), ForeverAgentSSL.prototype.createConnection=function(port, host, options) {
 options="object"===typeof port?port:"object"===typeof host?host:"object"===typeof options?options:{};"number"===typeof port&&(options.port=port);"string"===typeof host&&(options.host=host);return tls.connect(options); 
}, ForeverAgentSSL.prototype.addRequestNoreuse=AgentSSL.prototype.addRequest; 
}, {http:void 0, https:void 0, net:void 0, tls:void 0, util:void 0}], 19:[function(require, module, exports) {
 try{
 var util=require("util");if("function"!==typeof util.inherits) {
 throw""; 
}module.exports=util.inherits; 
}catch(e) {
 module.exports=require("./inherits_browser.js"); 
} 
}, {"./inherits_browser.js":20, "util":void 0}], 20:[function(require, module, exports) {
 "function"===typeof Object.create?module.exports=function(ctor, superCtor) {
 ctor.super_=superCtor, ctor.prototype=Object.create(superCtor.prototype, {constructor:{value:ctor, enumerable:!1, writable:!0, configurable:!0}}); 
}:module.exports=function(ctor, superCtor) {
 ctor.super_=superCtor;var TempCtor=function() {};TempCtor.prototype=superCtor.prototype, ctor.prototype=new TempCtor, ctor.prototype.constructor=ctor; 
}; 
}, {}], 21:[function(require, module, exports) {
 var stream=require("stream");function isStream(obj) {
 return obj instanceof stream.Stream; 
}function isReadable(obj) {
 return isStream(obj)&&"function"===typeof obj._read&&"object"===typeof obj._readableState; 
}function isWritable(obj) {
 return isStream(obj)&&"function"===typeof obj._write&&"object"===typeof obj._writableState; 
}module.exports=isStream, module.exports.isReadable=isReadable, module.exports.isWritable=isWritable, module.exports.isDuplex=function(obj) {
 return isReadable(obj)&&isWritable(obj); 
}; 
}, {stream:void 0}], 22:[function(require, module, exports) {
 function serializer(replacer, cycleReplacer) {
 var stack=[], 
keys=[];return null==cycleReplacer&&(cycleReplacer=function(key, value) {
 return stack[0]===value?"[Circular ~]":"[Circular ~."+keys.slice(0, stack.indexOf(value)).join(".")+"]"; 
}), function(key, value) {
 if(stack.length>0) {
 var thisPos=stack.indexOf(this);~thisPos?stack.splice(thisPos+1):stack.push(this), ~thisPos?keys.splice(thisPos, 1/0, key):keys.push(key), ~stack.indexOf(value)&&(value=cycleReplacer.call(this, key, value)); 
}else {
 stack.push(value); 
}return null==replacer?value:replacer.call(this, key, value); 
}; 
}(module.exports=function(obj, replacer, spaces, cycleReplacer) {
 return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); 
}).getSerialize=serializer; 
}, {}], 23:[function(require, module, exports) {
 "use strict";module.exports=require("./src/logger"); 
}, {"./src/logger":25}], 24:[function(require, module, exports) {
 "use strict";var SCHEMA=require("nf-cl-schema-ui"), 
INCREMENTING_BITS_MASK=Math.pow(2, 28)-1, 
RANDOM_BITS_SHIFT=Math.pow(2, 25);function Logger() {
 this._init.apply(this, arguments); 
}Logger.prototype={constructor:Logger, batchInterval:3e4, batchSize:50, timeOffset:0, source:"", requestSender:null, getClientTime:null, addContext:function(type, data) {
 var context=this._initContext([type], data);return this._state.pending[context.id]=context, context.id; 
}, removeContext:function(id) {
 return this._state.pending[id]?(delete this._state.pending[id], id):this._state.current[id]?(this._state.currentDelta.push(this._state.current[id]), delete this._state.current[id], id):null; 
}, logEvent:function(type, data) {
 var context=this._initEventContext([type, "DiscreteEvent"], data);return this._snapshot(context), context.id; 
}, startSession:function(type, data) {
 var context=this._initEventContext([type, "Session"], data);return this._state.current[context.id]=context, this._snapshot(), context.id; 
}, endSession:function(sessionId, data) {
 var startContext=this._state.current[sessionId];if(startContext) {
 var type=data&&data.type?[data.type, "SessionEnded"]:["SessionEnded"], 
endContext=this._initEventContext(type, data);return endContext.duration=endContext.time-startContext.time, endContext.sessionId=sessionId, delete this._state.current[sessionId], this._snapshot(endContext, startContext), sessionId; 
}return null; 
}, flush:function() {
 var state=this._state;if(!state.ending&&state.snapshots&&state.snapshots.length) {
 var envelope={currentState:state.current, reverseDeltas:state.snapshots, type:"CompactConsolidatedLoggingEnvelope", version:2, clientSendTime:this._timestamp()};state.snapshots=[], this.requestSender(JSON.stringify(envelope)); 
} 
}, serialize:function() {
 var timer=this._batchTimeout;this._batchTimeout=null;var json=JSON.stringify(this);return this._batchTimeout=timer, json; 
}, sever:function(severedContext) {
 this.end(severedContext||"Severed"), this._init(this); 
}, end:function(endingContext) {
 endingContext&&this.addContext(endingContext), this._state.ending=!0, this._stopBatching();for(var keys=Object.keys(this._state.current).sort(function(a, b) {
 return b-a; 
}), logId=keys.pop(), i=0;i<keys.length;i++) {
 var context=this._state.current[keys[i]], 
types=context.type;"Session"===types[types.length-1]&&this.endSession(context.id, {type:"SessionCanceled"}); 
}this.endSession(logId, {type:"SessionEnded"}), this._state.ending=!1, this.flush(), this._state=null; 
}, _init:function(options) {
 this._initOptions(options), this._startBatching(), options.existingState||this._startLogSession(), this._logInitializedEvent(); 
}, _initOptions:function(options) {
 options.existingState?this._restore(options.existingState):this._initState(), this._initProperties(options); 
}, _initState:function() {
 var state={sequenceNumber:0, lastIncrementingBits:0, pending:{}, current:{}, snapshots:[], currentDelta:[]};this._state=state; 
}, _startLogSession:function() {
 this.startSession("Log", {source:this.source, schema:{name:SCHEMA.name, version:SCHEMA.version}}); 
}, _logInitializedEvent:function() {
 this.logEvent("LoggerInitialized", {version:"2.0.3"}); 
}, _restore:function(state) {
 for(var existingState=JSON.parse(state), keys=Object.keys(existingState), i=0;i<keys.length;i++) {
 var key=keys[i];this[key]=existingState[key]; 
} 
}, _initProperties:function(options) {
 for(var option in this) {
 "function"!==typeof this[option]&&options&&"_"!==option.charAt(0)&&(void 0!==options[option]?this[option]=options[option]:this[option]=this[option]); 
} 
}, _copyData:function(data) {
 var copy={};for(var field in data) {
 copy[field]=data[field]; 
}return copy; 
}, _initContext:function(type, data) {
 var context;return context=data?this._copyData(data):{}, SCHEMA&&SCHEMA.types[type[0]]?context.type=SCHEMA.types[type[0]]:context.type=type, context.id=this._getNextContextId(), context; 
}, _initEventContext:function(type, data) {
 var context=this._initContext(type, data);return context.sequence=++this._state.sequenceNumber, void 0===context.time&&(context.time=this._timestamp()), context; 
}, _getClientTime:function() {
 return(new Date).getTime(); 
}, _timestamp:function() {
 return(this.getClientTime||this._getClientTime)()+this.timeOffset; 
}, _getNextContextId:function() {
 var currentTimeInSeconds=Math.floor(this._timestamp()/1e3), 
bitsShift=RANDOM_BITS_SHIFT, 
incrementingBits=currentTimeInSeconds&INCREMENTING_BITS_MASK, 
randomBits=Math.floor(Math.random()*bitsShift);return incrementingBits<=this._state.lastIncrementingBits&&(incrementingBits=this._state.lastIncrementingBits+1), this._state.lastIncrementingBits=incrementingBits, incrementingBits*bitsShift+randomBits; 
}, _snapshot:function(context) {
 for(var count=1, current=this._state.current, pending=this._state.pending, pendingKeys=Object.keys(pending), i=0;i<pendingKeys.length;i++) {
 var key=pendingKeys[i];current[key]=pending[key], count++; 
}this._state.pending={}, this._state.currentDelta.push(count), this._state.currentDelta=[], this._state.snapshots.push(this._state.currentDelta), arguments.length&&this._state.currentDelta.push.apply(this._state.currentDelta, arguments), this._state.snapshots.length>=this.batchSize&&this.flush(); 
}, _startBatching:function() {
 var self=this;self._batchTimeout=setTimeout(function() {
 self.flush(), self._startBatching(); 
}, self.batchInterval); 
}, _stopBatching:function() {
 clearTimeout(this._batchTimeout), this._batchTimeout=null; 
}}, module.exports=Logger; 
}, {"nf-cl-schema-ui":26}], 25:[function(require, module, exports) {
 "use strict";var Logger=require("./logger-core");module.exports=function(optionsArg) {
 var options=optionsArg||{};return options.version=options.version||"2.0", options.envelopeName=options.envelopeName||"CompactConsolidatedLoggingEnvelope", new Logger(options); 
}; 
}, {"./logger-core":24}], 26:[function(require, module, exports) {
 module.exports={version:"1.19.0", name:"netflixApp", types:{"AcceptTermsOfUse":["AcceptTermsOfUse", "Action", "Session"], "AdaptiveEcomFallbackExperience":["AdaptiveEcomFallbackExperience", "FallbackExperience"], "AddCachedVideo":["AddCachedVideo", "Action", "Session"], "AddCachedVideoCommand":["AddCachedVideoCommand", "Command", "Session"], "AddProfile":["AddProfile", "Action", "Session"], "AddToPlaylist":["AddToPlaylist", "Action", "Session"], "AddToPlaylistCommand":["AddToPlaylistCommand", "Command", "Session"], "BackCommand":["BackCommand", "Command", "Session"], "BoxartRenderCanceled":["BoxartRenderCanceled", "BoxartRenderEnded", "DiscreteEvent"], "BoxartRenderFailed":["BoxartRenderFailed", "BoxartRenderEnded", "DiscreteEvent"], "CachedPlay":["CachedPlay", "Play", "Action", "Session"], "CancelCommand":["CancelCommand", "Command", "Session"], "CancelMembership":["CancelMembership", "Action", "Session"], "ChangeValueCommand":["ChangeValueCommand", "Command", "Session"], "CloseApp":["CloseApp", "Action", "Session"], "CloseAppCommand":["CloseAppCommand", "Command", "Session"], "CloseCommand":["CloseCommand", "Command", "Session"], "ConnectWithLineAccount":["ConnectWithLineAccount", "Action", "Session"], "CreateAccount":["CreateAccount", "Action", "Session"], "DeepLinkInput":["DeepLinkInput", "UserInput"], "DeleteProfile":["DeleteProfile", "Action", "Session"], "DirectedGestureInput":["DirectedGestureInput", "GestureInput", "UserInput"], "Download":["Download", "Action", "Session"], "EditPaymentCommand":["EditPaymentCommand", "Command", "Session"], "EditPlanCommand":["EditPlanCommand", "Command", "Session"], "EditProfile":["EditProfile", "Action", "Session"], "EnterFullscreenCommand":["EnterFullscreenCommand", "Command", "Session"], "EnterKidsModeCommand":["EnterKidsModeCommand", "Command", "Session"], "ExitFullscreenCommand":["ExitFullscreenCommand", "Command", "Session"], "ExitKidsModeCommand":["ExitKidsModeCommand", "Command", "Session"], "FastForwardCommand":["FastForwardCommand", "TrickplayCommand", "Command", "Session"], "FillVideoCommand":["FillVideoCommand", "Command", "Session"], "FitVideoCommand":["FitVideoCommand", "Command", "Session"], "ForwardCommand":["ForwardCommand", "Command", "Session"], "GestureInput":["GestureInput", "UserInput"], "HomeCommand":["HomeCommand", "Command", "Session"], "KeyboardInput":["KeyboardInput", "UserInput"], "LolomoDataModel":["LolomoDataModel", "DataModel"], "MobileConnection":["MobileConnection", "NetworkConnection"], "MuteCommand":["MuteCommand", "Command", "Session"], "Navigate":["Navigate", "Action", "Session"], "NavigateBackward":["NavigateBackward", "Navigate", "Action", "Session"], "NavigateForward":["NavigateForward", "Navigate", "Action", "Session"], "NetflixId":["NetflixId", "ProfileIdentity", "Session"], "NotifyUms":["NotifyUms", "Action", "Session"], "PauseCommand":["PauseCommand", "TrickplayCommand", "Command", "Session"], "PauseDownloadCommand":["PauseDownloadCommand", "Command", "Session"], "Play":["Play", "Action", "Session"], "PlayCommand":["PlayCommand", "Command", "Session"], "PlayNextCommand":["PlayNextCommand", "Command", "Session"], "PointerInput":["PointerInput", "UserInput"], "PrepareOnramp":["PrepareOnramp", "Action", "Session"], "PreparePlay":["PreparePlay", "Action", "Session"], "ProcessStateTransition":["ProcessStateTransition", "Action", "Session"], "ProfileGuid":["ProfileGuid", "ProfileIdentity", "Session"], "PushNotificationAcknowledged":["PushNotificationAcknowledged", "PushNotificationResolved", "DiscreteEvent"], "PushNotificationDismissed":["PushNotificationDismissed", "PushNotificationAcknowledged", "PushNotificationResolved", "DiscreteEvent"], "PushNotificationIgnored":["PushNotificationIgnored", "PushNotificationResolved", "DiscreteEvent"], "RedeemGiftCard":["RedeemGiftCard", "Action", "Session"], "RedeemGiftCardCommand":["RedeemGiftCardCommand", "Command", "Session"], "RegisterForPushNotifications":["RegisterForPushNotifications", "Action", "Session"], "RemoveAllCachedVideosCommand":["RemoveAllCachedVideosCommand", "Command", "Session"], "RemoveCachedVideo":["RemoveCachedVideo", "Action", "Session"], "RemoveCachedVideoAndPlayNextCommand":["RemoveCachedVideoAndPlayNextCommand", "Command", "Session"], "RemoveCachedVideoCommand":["RemoveCachedVideoCommand", "Command", "Session"], "RemoveDownloadDevice":["RemoveDownloadDevice", "Action", "Session"], "RemoveFromPlaylist":["RemoveFromPlaylist", "Action", "Session"], "RemoveFromPlaylistCommand":["RemoveFromPlaylistCommand", "Command", "Session"], "RemoveFromViewingActivity":["RemoveFromViewingActivity", "Action", "Session"], "RenderNavigationLevel":["RenderNavigationLevel", "Action", "Session"], "RequestSharedCredentials":["RequestSharedCredentials", "Action", "Session"], "ResumeDownloadCommand":["ResumeDownloadCommand", "Command", "Session"], "RetryDownloadCommand":["RetryDownloadCommand", "Command", "Session"], "RewindCommand":["RewindCommand", "TrickplayCommand", "Command", "Session"], "Search":["Search", "Action", "Session"], "SearchCommand":["SearchCommand", "Command", "Session"], "SearchSuggestionResults":["SearchSuggestionResults", "DataModel"], "SearchSuggestionTitleResults":["SearchSuggestionTitleResults", "DataModel"], "SearchTitleResults":["SearchTitleResults", "DataModel"], "SeekCommand":["SeekCommand", "TrickplayCommand", "Command", "Session"], "SelectCommand":["SelectCommand", "Command", "Session"], "SelectPlan":["SelectPlan", "Action", "Session"], "SelectProfile":["SelectProfile", "Action", "Session"], "SetStarRating":["SetStarRating", "Action", "Session"], "SetThumbRating":["SetThumbRating", "Action", "Session"], "SeveredForVppa":["SeveredForVppa", "Severed"], "SeveredForWebpageUnload":["SeveredForWebpageUnload", "Severed"], "Share":["Share", "Action", "Session"], "ShareCommand":["ShareCommand", "Command", "Session"], "SignIn":["SignIn", "Action", "Session"], "SignInCommand":["SignInCommand", "Command", "Session"], "SignOut":["SignOut", "Action", "Session"], "SignOutCommand":["SignOutCommand", "Command", "Session"], "SignUpCommand":["SignUpCommand", "Command", "Session"], "SkipAheadCommand":["SkipAheadCommand", "TrickplayCommand", "Command", "Session"], "SkipBackCommand":["SkipBackCommand", "TrickplayCommand", "Command", "Session"], "SkipCommand":["SkipCommand", "Command", "Session"], "StartAppExperience":["StartAppExperience", "Action", "Session"], "StartMembership":["StartMembership", "Action", "Session"], "StartMembershipCommand":["StartMembershipCommand", "Command", "Session"], "StartPlay":["StartPlay", "Action", "Session"], "StoreSharedCredentials":["StoreSharedCredentials", "Action", "Session"], "SubmitCommand":["SubmitCommand", "Command", "Session"], "SubmitOnrampResults":["SubmitOnrampResults", "Action", "Session"], "ThrottleSearch":["ThrottleSearch", "Action", "Session"], "UnmuteCommand":["UnmuteCommand", "Command", "Session"], "UnpauseCommand":["UnpauseCommand", "TrickplayCommand", "Command", "Session"], "UpdatePaymentInfo":["UpdatePaymentInfo", "Action", "Session"], "ValidateInput":["ValidateInput", "Action", "Session"], "ValidateMemberId":["ValidateMemberId", "Action", "Session"], "ValidatePin":["ValidatePin", "Action", "Session"], "ViewAccountMenuCommand":["ViewAccountMenuCommand", "Command", "Session"], "ViewAudioSubtitlesSelectorCommand":["ViewAudioSubtitlesSelectorCommand", "Command", "Session"], "ViewCachedVideosCommand":["ViewCachedVideosCommand", "Command", "Session"], "ViewCategoriesCommand":["ViewCategoriesCommand", "Command", "Session"], "ViewDetailsCommand":["ViewDetailsCommand", "Command", "Session"], "ViewEpisodesSelectorCommand":["ViewEpisodesSelectorCommand", "Command", "Session"], "ViewPreviewsCommand":["ViewPreviewsCommand", "Command", "Session"], "ViewProfilesCommand":["ViewProfilesCommand", "Command", "Session"], "ViewSettingsCommand":["ViewSettingsCommand", "Command", "Session"], "ViewTitlesCommand":["ViewTitlesCommand", "Command", "Session"], "VisitorDeviceId":["VisitorDeviceId", "AccountIdentity", "Session"], "VoiceInput":["VoiceInput", "UserInput"], "WatchCreditsCommand":["WatchCreditsCommand", "Command", "Session"], "WifiConnection":["WifiConnection", "NetworkConnection"], "WiredConnection":["WiredConnection", "NetworkConnection"], "android.SystemBackCommand":["android.SystemBackCommand", "Command", "Session"], "cs.Call":["cs.Call", "Action", "Session"], "cs.CallCommand":["cs.CallCommand", "Command", "Session"], "cs.EndCallCommand":["cs.EndCallCommand", "Command", "Session"], "edx.AlertsOperation":["edx.AlertsOperation", "edx.ApiOperation", "Action", "Session"], "edx.ApiOperation":["edx.ApiOperation", "Action", "Session"], "edx.AtlasOperation":["edx.AtlasOperation", "edx.ApiOperation", "Action", "Session"], "edx.ChronosOperation":["edx.ChronosOperation", "edx.ApiOperation", "Action", "Session"], "edx.CommandLineInterface":["edx.CommandLineInterface", "Action", "Session"], "edx.DashboardsOperation":["edx.DashboardsOperation", "edx.ApiOperation", "Action", "Session"], "edx.ElasticSearchOperation":["edx.ElasticSearchOperation", "edx.ApiOperation", "Action", "Session"], "edx.GitOperation":["edx.GitOperation", "edx.ApiOperation", "Action", "Session"], "edx.HttpRequest":["edx.HttpRequest", "Action", "Session"], "edx.KeymasterOperation":["edx.KeymasterOperation", "edx.ApiOperation", "Action", "Session"], "edx.MantisOperation":["edx.MantisOperation", "edx.ApiOperation", "Action", "Session"], "edx.NodeQuarkIndexOperation":["edx.NodeQuarkIndexOperation", "edx.ApiOperation", "Action", "Session"], "edx.PagerDutyOperation":["edx.PagerDutyOperation", "edx.ApiOperation", "Action", "Session"], "edx.PrimerIndexOperation":["edx.PrimerIndexOperation", "edx.ApiOperation", "Action", "Session"], "edx.PrimerOperation":["edx.PrimerOperation", "edx.ApiOperation", "Action", "Session"], "edx.RavenOperation":["edx.RavenOperation", "edx.ApiOperation", "Action", "Session"], "edx.SkipperOperation":["edx.SkipperOperation", "edx.ApiOperation", "Action", "Session"], "edx.SpinnakerOperation":["edx.SpinnakerOperation", "edx.ApiOperation", "Action", "Session"], "edx.TitusOperation":["edx.TitusOperation", "edx.ApiOperation", "Action", "Session"], "iko.EndCommand":["iko.EndCommand", "Command", "Session"], "iko.EnterBattleCommand":["iko.EnterBattleCommand", "Command", "Session"], "iko.Presentation":["iko.Presentation", "Presentation", "Session"], "ios.DeepLinkInput":["ios.DeepLinkInput", "UserInput"], "ios.LoadConfigurationService":["ios.LoadConfigurationService", "Action", "Session"], "ios.LoadDownloadService":["ios.LoadDownloadService", "Action", "Session"], "ios.LoadIdentityService":["ios.LoadIdentityService", "Action", "Session"], "ios.LoadNrdService":["ios.LoadNrdService", "Action", "Session"], "ios.RegisterForPushNotifications":["ios.RegisterForPushNotifications", "Action", "Session"], "tvui.JankMeasurementReported":["tvui.JankMeasurementReported", "MeasurementReported", "DiscreteEvent"], "tvui.MetadataDownloadPlayDelay":["tvui.MetadataDownloadPlayDelay", "tvui.PlayDelay", "Session"], "tvui.PlatformPlayDelay":["tvui.PlatformPlayDelay", "tvui.PlayDelay", "Session"], "tvui.RequestImeCandidateList":["tvui.RequestImeCandidateList", "Action", "Session"], "tvui.UiPlayDelay":["tvui.UiPlayDelay", "tvui.PlayDelay", "Session"], "tvui.VideoPresentationPlayDelay":["tvui.VideoPresentationPlayDelay", "tvui.PlayDelay", "Session"], "www.ExtendedAreaFocus":["www.ExtendedAreaFocus", "Focus", "Session"]}}; 
}, {}], 27:[function(require, module, exports) {
 "use strict";var throttle=require("throttleit");module.exports=function(request, options) {
 var context;if(request.progressContext) {
 return request; 
}if(request.response) {
 throw new Error("Already got response, it's too late to track progress"); 
}return(options=options||{}).throttle=null==options.throttle?1e3:options.throttle, options.delay=options.delay||0, options.lengthHeader=options.lengthHeader||"content-length", (context={}).request=request, context.options=options, context.reportState=throttle(function(context) {
 var state;!context.delayTimer&&context.request.progressState&&((state=context.state).time.elapsed=(Date.now()-context.startedAt)/1e3, state.time.elapsed>=1&&(state.speed=state.size.transferred/state.time.elapsed), null!=state.size.total&&(state.percent=Math.min(state.size.transferred, state.size.total)/state.size.total, null!=state.speed&&(state.time.remaining=1!==state.percent?state.size.total/state.speed-state.time.elapsed:0, state.time.remaining=Math.round(1e3*state.time.remaining)/1e3)), context.request.emit("progress", state)); 
}.bind(null, context), options.throttle), request.on("request", function(context) {
 context.startedAt=null, context.state=context.request.progressState=null, context.delayTimer&&clearTimeout(context.delayTimer), context.delayTimer=null; 
}.bind(null, context)).on("response", function(response) {
 return response.on("data", function(context, data) {
 context.state.size.transferred+=data.length, !context.delayTimer&&context.reportState(); 
}.bind(null, context)), (function(context, response) {
 context.startedAt=Date.now(), context.state=context.request.progressState={time:{elapsed:0, remaining:null}, speed:null, percent:null, size:{total:Number(response.headers[context.options.lengthHeader])||null, transferred:0}}, context.delayTimer=setTimeout(function() {
 context.delayTimer=null; 
}, context.options.delay); 
}(context, response)); 
}).on("end", function(context) {
 context.delayTimer&&(clearTimeout(context.delayTimer), context.delayTimer=null), context.request.progressState=context.request.progressContext=null; 
}.bind(null, context)), request.progressContext=context, request; 
}; 
}, {throttleit:118}], 28:[function(require, module, exports) {
 "use strict";var extend=require("util")._extend, 
cookies=require("./lib/cookies"), 
helpers=require("./lib/helpers"), 
isFunction=helpers.isFunction, 
constructObject=helpers.constructObject, 
filterForCallback=helpers.filterForCallback, 
constructOptionsFrom=helpers.constructOptionsFrom, 
paramsHaveRequestBody=helpers.paramsHaveRequestBody;function initParams(uri, options, callback) {
 return callback=filterForCallback([options, callback]), options=constructOptionsFrom(uri, options), constructObject().extend({callback:callback}).extend({options:options}).extend({uri:options.uri}).done(); 
}function request(uri, options, callback) {
 if(void 0===uri) {
 throw new Error("undefined is not a valid uri or options object."); 
}var params=initParams(uri, options, callback);if((options=params.options).callback=params.callback, options.uri=params.uri, "HEAD"===params.options.method&&paramsHaveRequestBody(params)) {
 throw new Error("HTTP HEAD requests MUST NOT include a request body."); 
}return new request.Request(options); 
}["get", "head", "post", "put", "patch", "del"].forEach(function(verb) {
 var method="del"===verb?"DELETE":verb.toUpperCase();request[verb]=function(uri, options, callback) {
 var params=initParams(uri, options, callback);return params.options.method=method, this(params.uri||null, params.options, params.callback); 
}; 
}), request.jar=function(store) {
 return cookies.jar(store); 
}, request.cookie=function(str) {
 return cookies.parse(str); 
}, request.defaults=function(options, requester) {
 "function"===typeof options&&(requester=options, options={});var method, 
defaults=(method=this, function(uri, opts, callback) {
 var params=initParams(uri, opts, callback);return params.options=extend((function(options) {
 return delete(options=extend({}, options)).headers, options; 
}(options)), params.options), options.headers&&(params.options.headers=(function(params, options) {
 return constructObject().extend(options.headers).extend(params.options.headers).done(); 
}(params, options))), isFunction(requester)&&(method=requester), method(params.options, params.callback); 
});return defaults.get=this.get, defaults.patch=this.patch, defaults.post=this.post, defaults.put=this.put, defaults.head=this.head, defaults.del=this.del, defaults.cookie=this.cookie, defaults.jar=this.jar, defaults.defaults=this.defaults, defaults; 
}, request.forever=function(agentOptions, optionsArg) {
 var options=constructObject();return optionsArg&&options.extend(optionsArg), agentOptions&&(options.agentOptions=agentOptions), options.extend({forever:!0}), request.defaults(options.done()); 
}, module.exports=request, request.Request=require("./request"), request.initParams=initParams, Object.defineProperty(request, "debug", {enumerable:!0, get:function() {
 return request.Request.debug; 
}, set:function(debug) {
 request.Request.debug=debug; 
}}); 
}, {"./lib/cookies":30, "./lib/helpers":34, "./request":116, "util":void 0}], 29:[function(require, module, exports) {
 "use strict";var caseless=require("caseless"), 
uuid=require("node-uuid"), 
helpers=require("./helpers"), 
md5=helpers.md5, 
toBase64=helpers.toBase64;function Auth(request) {
 this.request=request, this.hasAuth=!1, this.sentAuth=!1, this.bearerToken=null, this.user=null, this.pass=null; 
}Auth.prototype.basic=function(user, pass, sendImmediately) {
 if("string"!==typeof user||void 0!==pass&&"string"!==typeof pass) {
 throw new Error("auth() received invalid user or password"); 
}if(this.user=user, this.pass=pass, this.hasAuth=!0, sendImmediately||void 0===sendImmediately) {
 var authHeader="Basic "+toBase64(user+":"+(pass||""));return this.sentAuth=!0, authHeader; 
} 
}, Auth.prototype.bearer=function(bearer, sendImmediately) {
 if(this.bearerToken=bearer, this.hasAuth=!0, sendImmediately||void 0===sendImmediately) {
 "function"===typeof bearer&&(bearer=bearer());var authHeader="Bearer "+(bearer||"");return this.sentAuth=!0, authHeader; 
} 
}, Auth.prototype.digest=function(method, path, authHeader) {
 for(var challenge={}, re=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;;) {
 var match=re.exec(authHeader);if(!match) {
 break; 
}challenge[match[1]]=match[2]||match[3]; 
}var ha1=md5(this.user+":"+challenge.realm+":"+this.pass), 
ha2=md5(method+":"+path), 
qop=/(^|,)\s*auth\s*($|,)/.test(challenge.qop)&&"auth", 
nc=qop&&"00000001", 
cnonce=qop&&uuid().replace(/-/g, ""), 
digestResponse=md5(qop?ha1+":"+challenge.nonce+":"+nc+":"+cnonce+":"+qop+":"+ha2:ha1+":"+challenge.nonce+":"+ha2), 
authValues={username:this.user, realm:challenge.realm, nonce:challenge.nonce, uri:path, qop:qop, response:digestResponse, nc:nc, cnonce:cnonce, algorithm:challenge.algorithm, opaque:challenge.opaque};for(var k in authHeader=[], authValues) {
 authValues[k]&&("qop"===k||"nc"===k||"algorithm"===k?authHeader.push(k+"="+authValues[k]):authHeader.push(k+'="'+authValues[k]+'"')); 
}return authHeader="Digest "+authHeader.join(", "), this.sentAuth=!0, authHeader; 
}, Auth.prototype.onRequest=function(user, pass, sendImmediately, bearer) {
 var authHeader, 
request=this.request;if(void 0===bearer&&void 0===user) {
 throw new Error("no auth mechanism defined"); 
}(authHeader=void 0!==bearer?this.bearer(bearer, sendImmediately):this.basic(user, pass, sendImmediately))&&request.setHeader("authorization", authHeader); 
}, Auth.prototype.onResponse=function(response) {
 var request=this.request;if(!this.hasAuth||this.sentAuth) {
 return null; 
}var authHeader=caseless(response.headers).get("www-authenticate");switch(authHeader&&authHeader.split(" ")[0].toLowerCase()) {
 case"basic":return this.basic(this.user, this.pass, !0);case"bearer":return this.bearer(this.bearerToken, !0);case"digest":return this.digest(request.method, request.path, authHeader); 
} 
}, exports.Auth=Auth; 
}, {"./helpers":34, "caseless":46, "node-uuid":108}], 30:[function(require, module, exports) {
 "use strict";var tough=require("tough-cookie"), 
Cookie=tough.Cookie, 
CookieJar=tough.CookieJar;function RequestJar(store) {
 this._jar=new CookieJar(store); 
}exports.parse=function(str) {
 if(str&&str.uri&&(str=str.uri), "string"!==typeof str) {
 throw new Error("The cookie function only accepts STRING as param"); 
}return Cookie.parse(str); 
}, RequestJar.prototype.setCookie=function(cookieOrStr, uri, options) {
 return this._jar.setCookieSync(cookieOrStr, uri, options||{}); 
}, RequestJar.prototype.getCookieString=function(uri) {
 return this._jar.getCookieStringSync(uri); 
}, RequestJar.prototype.getCookies=function(uri) {
 return this._jar.getCookiesSync(uri); 
}, exports.jar=function(store) {
 return new RequestJar(store); 
}; 
}, {"tough-cookie":119}], 31:[function(require, module, exports) {
 "use strict";module.exports=function(obj) {
 var o={};return Object.keys(obj).forEach(function(i) {
 o[i]=obj[i]; 
}), o; 
}; 
}, {}], 32:[function(require, module, exports) {
 "use strict";function formatHostname(hostname) {
 return hostname.replace(/^\.*/, ".").toLowerCase(); 
}function parseNoProxyZone(zone) {
 var zoneParts=(zone=zone.trim().toLowerCase()).split(":", 2);return{hostname:formatHostname(zoneParts[0]), port:zoneParts[1], hasPort:zone.indexOf(":")>-1}; 
}module.exports=function(uri) {
 var noProxy=process.env.NO_PROXY||process.env.no_proxy||"";return"*"===noProxy?null:""!==noProxy&&(function(uri, noProxy) {
 var port=uri.port||("https:"===uri.protocol?"443":"80"), 
hostname=formatHostname(uri.hostname);return noProxy.split(",").map(parseNoProxyZone).some(function(noProxyZone) {
 var isMatchedAt=hostname.indexOf(noProxyZone.hostname), 
hostnameMatched=isMatchedAt>-1&&isMatchedAt===hostname.length-noProxyZone.hostname.length;return noProxyZone.hasPort?port===noProxyZone.port&&hostnameMatched:hostnameMatched; 
}); 
}(uri, noProxy))?null:"http:"===uri.protocol?process.env.HTTP_PROXY||process.env.http_proxy||null:"https:"===uri.protocol&&(process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy)||null; 
}; 
}, {}], 33:[function(require, module, exports) {
 "use strict";var fs=require("fs"), 
qs=require("querystring"), 
validate=require("har-validator"), 
util=require("util");function Har(request) {
 this.request=request; 
}Har.prototype.reducer=function(obj, pair) {
 if(void 0===obj[pair.name]) {
 return obj[pair.name]=pair.value, obj; 
}var arr=[obj[pair.name], pair.value];return obj[pair.name]=arr, obj; 
}, Har.prototype.prep=function(data) {
 if(data.queryObj={}, data.headersObj={}, data.postData.jsonObj=!1, data.postData.paramsObj=!1, data.queryString&&data.queryString.length&&(data.queryObj=data.queryString.reduce(this.reducer, {})), data.headers&&data.headers.length&&(data.headersObj=data.headers.reduceRight(function(headers, header) {
 return headers[header.name]=header.value, headers; 
}, {})), data.cookies&&data.cookies.length) {
 var cookies=data.cookies.map(function(cookie) {
 return cookie.name+"="+cookie.value; 
});cookies.length&&(data.headersObj.cookie=cookies.join("; ")); 
}switch(data.postData.mimeType) {
 case"multipart/mixed":case"multipart/related":case"multipart/form-data":case"multipart/alternative":data.postData.mimeType="multipart/form-data";break;case"application/x-www-form-urlencoded":data.postData.params?(data.postData.paramsObj=data.postData.params.reduce(this.reducer, {}), data.postData.text=qs.stringify(data.postData.paramsObj)):data.postData.text="";break;case"text/json":case"text/x-json":case"application/json":case"application/x-json":if(data.postData.mimeType="application/json", data.postData.text) {
 try{
 data.postData.jsonObj=JSON.parse(data.postData.text); 
}catch(e) {
 this.request.debug(e), data.postData.mimeType="text/plain"; 
} 
} 
}return data; 
}, Har.prototype.options=function(options) {
 if(!options.har) {
 return options; 
}var har=util._extend({}, options.har);if(har.log&&har.log.entries&&(har=har.log.entries[0]), har.url=har.url||options.url||options.uri||options.baseUrl||"/", har.httpVersion=har.httpVersion||"HTTP/1.1", har.queryString=har.queryString||[], har.headers=har.headers||[], har.cookies=har.cookies||[], har.postData=har.postData||{}, har.postData.mimeType=har.postData.mimeType||"application/octet-stream", har.bodySize=0, har.headersSize=0, har.postData.size=0, !validate.request(har)) {
 return options; 
}var req=this.prep(har);switch(req.url&&(options.url=req.url), req.method&&(options.method=req.method), Object.keys(req.queryObj).length&&(options.qs=req.queryObj), Object.keys(req.headersObj).length&&(options.headers=req.headersObj), req.postData.mimeType) {
 case"application/x-www-form-urlencoded":options.form=req.postData.paramsObj;break;case"application/json":req.postData.jsonObj&&(options.body=req.postData.jsonObj, options.json=!0);break;case"multipart/form-data":options.formData={}, req.postData.params.forEach(function(param) {
 var attachment={};param.fileName||param.fileName||param.contentType?(param.fileName&&!param.value?attachment.value=fs.createReadStream(param.fileName):param.value&&(attachment.value=param.value), param.fileName&&(attachment.options={filename:param.fileName, contentType:param.contentType?param.contentType:null}), options.formData[param.name]=attachment):options.formData[param.name]=param.value; 
});break;default:req.postData.text&&(options.body=req.postData.text); 
}return options; 
}, exports.Har=Har; 
}, {"fs":void 0, "har-validator":52, "querystring":void 0, "util":void 0}], 34:[function(require, module, exports) {
 "use strict";var extend=require("util")._extend, 
jsonSafeStringify=require("json-stringify-safe"), 
crypto=require("crypto");function constructObject(initialObject) {
 return initialObject=initialObject||{}, {extend:function(object) {
 return constructObject(extend(initialObject, object)); 
}, done:function() {
 return initialObject; 
}}; 
}function isFunction(value) {
 return"function"===typeof value; 
}exports.isFunction=isFunction, exports.constructObject=constructObject, exports.constructOptionsFrom=function(uri, options) {
 var params=constructObject();return"object"===typeof options?params.extend(options).extend({uri:uri}):"string"===typeof uri?params.extend({uri:uri}):params.extend(uri), params.done(); 
}, exports.filterForCallback=function(values) {
 return values.filter(isFunction)[0]; 
}, exports.paramsHaveRequestBody=function(params) {
 return params.options.body||params.options.requestBodyStream||params.options.json&&"boolean"!==typeof params.options.json||params.options.multipart; 
}, exports.safeStringify=function(obj) {
 var ret;try{
 ret=JSON.stringify(obj); 
}catch(e) {
 ret=jsonSafeStringify(obj); 
}return ret; 
}, exports.md5=function(str) {
 return crypto.createHash("md5").update(str).digest("hex"); 
}, exports.isReadStream=function(rs) {
 return rs.readable&&rs.path&&rs.mode; 
}, exports.toBase64=function(str) {
 return new Buffer(str||"", "utf8").toString("base64"); 
}, exports.defer="undefined"===typeof setImmediate?process.nextTick:setImmediate; 
}, {"crypto":void 0, "json-stringify-safe":22, "util":void 0}], 35:[function(require, module, exports) {
 "use strict";var uuid=require("node-uuid"), 
CombinedStream=require("combined-stream"), 
isstream=require("isstream");function Multipart(request) {
 this.request=request, this.boundary=uuid(), this.chunked=!1, this.body=null; 
}Multipart.prototype.isChunked=function(options) {
 var chunked=!1, 
parts=options.data||options;if(!parts.forEach) {
 throw new Error("Argument error, options.multipart."); 
}return void 0!==options.chunked&&(chunked=options.chunked), "chunked"===this.request.getHeader("transfer-encoding")&&(chunked=!0), chunked||parts.forEach(function(part) {
 if(void 0===part.body) {
 throw new Error("Body attribute missing in multipart."); 
}isstream(part.body)&&(chunked=!0); 
}), chunked; 
}, Multipart.prototype.setHeaders=function(chunked) {
 chunked&&!this.request.hasHeader("transfer-encoding")&&this.request.setHeader("transfer-encoding", "chunked");var header=this.request.getHeader("content-type");header&&-1!==header.indexOf("multipart")?-1!==header.indexOf("boundary")?this.boundary=header.replace(/.*boundary=([^\s;])+.*/, "$1"):this.request.setHeader("content-type", header+"; boundary="+this.boundary):this.request.setHeader("content-type", "multipart/related; boundary="+this.boundary); 
}, Multipart.prototype.build=function(parts, chunked) {
 var self=this, 
body=chunked?new CombinedStream:[];function add(part) {
 return chunked?body.append(part):body.push(new Buffer(part)); 
}return self.request.preambleCRLF&&add("\r\n"), parts.forEach(function(part) {
 var preamble="--"+self.boundary+"\r\n";Object.keys(part).forEach(function(key) {
 "body"!==key&&(preamble+=key+": "+part[key]+"\r\n"); 
}), add(preamble+="\r\n"), add(part.body), add("\r\n"); 
}), add("--"+self.boundary+"--"), self.request.postambleCRLF&&add("\r\n"), body; 
}, Multipart.prototype.onRequest=function(options) {
 var chunked=this.isChunked(options), 
parts=options.data||options;this.setHeaders(chunked), this.chunked=chunked, this.body=this.build(parts, chunked); 
}, exports.Multipart=Multipart; 
}, {"combined-stream":47, "isstream":21, "node-uuid":108}], 36:[function(require, module, exports) {
 "use strict";var qs=require("qs"), 
caseless=require("caseless"), 
uuid=require("node-uuid"), 
oauth=require("oauth-sign");function OAuth(request) {
 this.request=request; 
}OAuth.prototype.buildParams=function(_oauth, uri, method, query, form, qsLib) {
 var oa={};for(var i in _oauth) {
 oa["oauth_"+i]=_oauth[i]; 
}oa.oauth_version||(oa.oauth_version="1.0"), oa.oauth_timestamp||(oa.oauth_timestamp=Math.floor(Date.now()/1e3).toString()), oa.oauth_nonce||(oa.oauth_nonce=uuid().replace(/-/g, "")), oa.oauth_signature_method||(oa.oauth_signature_method="HMAC-SHA1");var consumer_secret_or_private_key=oa.oauth_consumer_secret||oa.oauth_private_key;delete oa.oauth_consumer_secret, delete oa.oauth_private_key;var token_secret=oa.oauth_token_secret;delete oa.oauth_token_secret;var realm=oa.oauth_realm;delete oa.oauth_realm, delete oa.oauth_transport_method;var baseurl=uri.protocol+"//"+uri.host+uri.pathname, 
params=qsLib.parse([].concat(query, form, qsLib.stringify(oa)).join("&"));return oa.oauth_signature=oauth.sign(oa.oauth_signature_method, method, baseurl, params, consumer_secret_or_private_key, token_secret), realm&&(oa.realm=realm), oa; 
}, OAuth.prototype.concatParams=function(oa, sep, wrap) {
 wrap=wrap||"";var params=Object.keys(oa).filter(function(i) {
 return"realm"!==i&&"oauth_signature"!==i; 
}).sort();return oa.realm&&params.splice(0, 1, "realm"), params.push("oauth_signature"), params.map(function(i) {
 return i+"="+wrap+oauth.rfc3986(oa[i])+wrap; 
}).join(sep); 
}, OAuth.prototype.onRequest=function(_oauth) {
 var form, query, 
request=this.request, 
uri=request.uri||{}, 
method=request.method||"", 
headers=caseless(request.headers), 
body=request.body||"", 
qsLib=request.qsLib||qs, 
contentType=headers.get("content-type")||"", 
formContentType="application/x-www-form-urlencoded", 
transport=_oauth.transport_method||"header";if(contentType.slice(0, formContentType.length)===formContentType&&(contentType=formContentType, form=body), uri.query&&(query=uri.query), "body"===transport&&("POST"!==method||contentType!==formContentType)) {
 throw new Error("oauth: transport_method of 'body' requires 'POST' and content-type '"+formContentType+"'"); 
}var oa=this.buildParams(_oauth, uri, method, query, form, qsLib);switch(transport) {
 case"header":request.setHeader("Authorization", "OAuth "+this.concatParams(oa, ",", '"'));break;case"query":request.path=(query?"&":"?")+this.concatParams(oa, "&");break;case"body":request.body=(form?form+"&":"")+this.concatParams(oa, "&");break;default:throw new Error("oauth: transport_method invalid"); 
} 
}, exports.OAuth=OAuth; 
}, {"caseless":46, "node-uuid":108, "oauth-sign":109, "qs":110}], 37:[function(require, module, exports) {
 "use strict";var url=require("url"), 
isUrl=/^https?:/;function Redirect(request) {
 this.request=request, this.followRedirect=!0, this.followRedirects=!0, this.followAllRedirects=!1, this.allowRedirect=function() {
 return!0; 
}, this.maxRedirects=10, this.redirects=[], this.redirectsFollowed=0, this.removeRefererHeader=!1; 
}Redirect.prototype.onRequest=function() {
 var request=this.request;void 0!==request.maxRedirects&&(this.maxRedirects=request.maxRedirects), "function"===typeof request.followRedirect&&(this.allowRedirect=request.followRedirect), void 0!==request.followRedirect&&(this.followRedirects=!!request.followRedirect), void 0!==request.followAllRedirects&&(this.followAllRedirects=request.followAllRedirects), (this.followRedirects||this.followAllRedirects)&&(this.redirects=this.redirects||[]), void 0!==request.removeRefererHeader&&(this.removeRefererHeader=request.removeRefererHeader); 
}, Redirect.prototype.redirectTo=function(response) {
 var request=this.request, 
redirectTo=null;if(response.statusCode>=300&&response.statusCode<400&&response.caseless.has("location")) {
 var location=response.caseless.get("location");if(this.followAllRedirects) {
 redirectTo=location; 
}else if(this.followRedirects) {
 switch(request.method) {
 case"PATCH":case"PUT":case"POST":case"DELETE":break;default:redirectTo=location; 
} 
} 
}else if(401===response.statusCode) {
 var authHeader=request._auth.onResponse(response);authHeader&&(request.setHeader("authorization", authHeader), redirectTo=request.uri); 
}return redirectTo; 
}, Redirect.prototype.onResponse=function(response) {
 var request=this.request, 
redirectTo=this.redirectTo(response);if(!redirectTo||!this.allowRedirect.call(request, response)) {
 return!1; 
}if(request._paused&&response.resume(), this.redirectsFollowed>=this.maxRedirects) {
 return request.emit("error", new Error("Exceeded maxRedirects. Probably stuck in a redirect loop "+request.uri.href)), !1; 
}this.redirectsFollowed+=1, isUrl.test(redirectTo)||(redirectTo=url.resolve(request.uri.href, redirectTo));var uriPrev=request.uri;return request.uri=url.parse(redirectTo), request.uri.protocol!==uriPrev.protocol&&request._updateProtocol(), this.redirects.push({statusCode:response.statusCode, redirectUri:redirectTo}), this.followAllRedirects&&401!==response.statusCode&&307!==response.statusCode&&(request.method="GET"), delete request.src, delete request.req, delete request.agent, delete request._started, 401!==response.statusCode&&307!==response.statusCode&&(delete request.body, delete request._form, request.headers&&(request.removeHeader("host"), request.removeHeader("content-type"), request.removeHeader("content-length"), request.uri.hostname!==request.originalHost.split(":")[0]&&request.removeHeader("authorization"))), this.removeRefererHeader||request.setHeader("referer", request.uri.href), request.emit("redirect"), request.init(), !0; 
}, exports.Redirect=Redirect; 
}, {url:void 0}], 38:[function(require, module, exports) {
 var crypto=require("crypto"), 
parse=require("url").parse, 
keys=["acl", "location", "logging", "notification", "partNumber", "policy", "requestPayment", "torrent", "uploadId", "uploads", "versionId", "versioning", "versions", "website"];function authorization(options) {
 return"AWS "+options.key+":"+sign(options); 
}function hmacSha1(options) {
 return crypto.createHmac("sha1", options.secret).update(options.message).digest("base64"); 
}function sign(options) {
 return options.message=stringToSign(options), hmacSha1(options); 
}function stringToSign(options) {
 var headers=options.amazonHeaders||"";return headers&&(headers+="\n"), [options.verb, options.md5, options.contentType, options.date?options.date.toUTCString():"", headers+options.resource].join("\n"); 
}function queryStringToSign(options) {
 return"GET\n\n\n"+options.date+"\n"+options.resource; 
}module.exports=authorization, module.exports.authorization=authorization, module.exports.hmacSha1=hmacSha1, module.exports.sign=sign, module.exports.signQuery=function(options) {
 return options.message=queryStringToSign(options), hmacSha1(options); 
}, module.exports.queryStringToSign=stringToSign, module.exports.queryStringToSign=queryStringToSign, module.exports.canonicalizeHeaders=function(headers) {
 for(var buf=[], fields=Object.keys(headers), i=0, len=fields.length;i<len;++i) {
 var field, 
val=headers[field=fields[i]];0===(field=field.toLowerCase()).indexOf("x-amz")&&buf.push(field+":"+val); 
}return buf.sort().join("\n"); 
}, module.exports.canonicalizeResource=function(resource) {
 var url=parse(resource, !0), 
path=url.pathname, 
buf=[];return Object.keys(url.query).forEach(function(key) {
 if(~keys.indexOf(key)) {
 var val=""==url.query[key]?"":"="+encodeURIComponent(url.query[key]);buf.push(key+val); 
} 
}), path+(buf.length?"?"+buf.sort().join("&"):""); 
}; 
}, {crypto:void 0, url:void 0}], 39:[function(require, module, exports) {
 var DuplexStream=require("readable-stream/duplex");function BufferList(callback) {
 if(!(this instanceof BufferList)) {
 return new BufferList(callback); 
}if(this._bufs=[], this.length=0, "function"===typeof callback) {
 this._callback=callback;var piper=function(err) {
 this._callback&&(this._callback(err), this._callback=null); 
}.bind(this);this.on("pipe", function(src) {
 src.on("error", piper); 
}), this.on("unpipe", function(src) {
 src.removeListener("error", piper); 
}); 
}else {
 Buffer.isBuffer(callback)?this.append(callback):Array.isArray(callback)&&callback.forEach(function(b) {
 Buffer.isBuffer(b)&&this.append(b); 
}.bind(this)); 
}DuplexStream.call(this); 
}require("util").inherits(BufferList, DuplexStream), BufferList.prototype._offset=function(offset) {
 for(var _t, tot=0, i=0;i<this._bufs.length;i++) {
 if(offset<(_t=tot+this._bufs[i].length)) {
 return[i, offset-tot]; 
}tot=_t; 
} 
}, BufferList.prototype.append=function(buf) {
 var isBuffer=Buffer.isBuffer(buf)||buf instanceof BufferList;return"number"===typeof buf&&(buf=buf.toString()), this._bufs.push(isBuffer?buf:new Buffer(buf)), this.length+=buf.length, this; 
}, BufferList.prototype._write=function(buf, encoding, callback) {
 this.append(buf), callback&&callback(); 
}, BufferList.prototype._read=function(size) {
 if(!this.length) {
 return this.push(null); 
}size=Math.min(size, this.length), this.push(this.slice(0, size)), this.consume(size); 
}, BufferList.prototype.end=function(chunk) {
 DuplexStream.prototype.end.call(this, chunk), this._callback&&(this._callback(null, this.slice()), this._callback=null); 
}, BufferList.prototype.get=function(index) {
 return this.slice(index, index+1)[0]; 
}, BufferList.prototype.slice=function(start, end) {
 return this.copy(null, 0, start, end); 
}, BufferList.prototype.copy=function(dst, dstStart, srcStart, srcEnd) {
 if(("number"!==typeof srcStart||srcStart<0)&&(srcStart=0), ("number"!==typeof srcEnd||srcEnd>this.length)&&(srcEnd=this.length), srcStart>=this.length) {
 return dst||new Buffer(0); 
}if(srcEnd<=0) {
 return dst||new Buffer(0); 
}var l, i, 
copy=!!dst, 
off=this._offset(srcStart), 
len=srcEnd-srcStart, 
bytes=len, 
bufoff=copy&&dstStart||0, 
start=off[1];if(0===srcStart&&srcEnd==this.length) {
 if(!copy) {
 return Buffer.concat(this._bufs); 
}for(i=0;i<this._bufs.length;i++) {
 this._bufs[i].copy(dst, bufoff), bufoff+=this._bufs[i].length; 
}return dst; 
}if(bytes<=this._bufs[off[0]].length-start) {
 return copy?this._bufs[off[0]].copy(dst, dstStart, start, start+bytes):this._bufs[off[0]].slice(start, start+bytes); 
}for(copy||(dst=new Buffer(len)), i=off[0];i<this._bufs.length;i++) {
 if(!(bytes>(l=this._bufs[i].length-start))) {
 this._bufs[i].copy(dst, bufoff, start, start+bytes);break; 
}this._bufs[i].copy(dst, bufoff, start), bufoff+=l, bytes-=l, start&&(start=0); 
}return dst; 
}, BufferList.prototype.toString=function(encoding, start, end) {
 return this.slice(start, end).toString(encoding); 
}, BufferList.prototype.consume=function(bytes) {
 for(;this._bufs.length;) {
 if(!(bytes>this._bufs[0].length)) {
 this._bufs[0]=this._bufs[0].slice(bytes), this.length-=bytes;break; 
}bytes-=this._bufs[0].length, this.length-=this._bufs[0].length, this._bufs.shift(); 
}return this; 
}, BufferList.prototype.duplicate=function() {
 for(var i=0, copy=new BufferList;i<this._bufs.length;i++) {
 copy.append(this._bufs[i]); 
}return copy; 
}, BufferList.prototype.destroy=function() {
 this._bufs.length=0, this.length=0, this.push(null); 
}, (function() {
 var methods={readDoubleBE:8, readDoubleLE:8, readFloatBE:4, readFloatLE:4, readInt32BE:4, readInt32LE:4, readUInt32BE:4, readUInt32LE:4, readInt16BE:2, readInt16LE:2, readUInt16BE:2, readUInt16LE:2, readInt8:1, readUInt8:1};for(var m in methods) {
 !(function(m) {
 BufferList.prototype[m]=function(offset) {
 return this.slice(offset, offset+methods[m])[m](0); 
}; 
}(m)); 
} 
}()), module.exports=BufferList; 
}, {"readable-stream/duplex":40, "util":void 0}], 40:[function(require, module, exports) {
 module.exports=require("./lib/_stream_duplex.js"); 
}, {"./lib/_stream_duplex.js":41}], 41:[function(require, module, exports) {
 module.exports=Duplex;var objectKeys=Object.keys||function(obj) {
 var keys=[];for(var key in obj) {
 keys.push(key); 
}return keys; 
}, 
util=require("core-util-is");util.inherits=require("inherits");var Readable=require("./_stream_readable"), 
Writable=require("./_stream_writable");function Duplex(options) {
 if(!(this instanceof Duplex)) {
 return new Duplex(options); 
}Readable.call(this, options), Writable.call(this, options), options&&!1===options.readable&&(this.readable=!1), options&&!1===options.writable&&(this.writable=!1), this.allowHalfOpen=!0, options&&!1===options.allowHalfOpen&&(this.allowHalfOpen=!1), this.once("end", onend); 
}function onend() {
 this.allowHalfOpen||this._writableState.ended||process.nextTick(this.end.bind(this)); 
}util.inherits(Duplex, Readable), (function(xs, f) {
 for(var i=0, l=xs.length;i<l;i++) {
 f(xs[i], i); 
} 
}(objectKeys(Writable.prototype), function(method) {
 Duplex.prototype[method]||(Duplex.prototype[method]=Writable.prototype[method]); 
})); 
}, {"./_stream_readable":42, "./_stream_writable":43, "core-util-is":17, "inherits":19}], 42:[function(require, module, exports) {
 module.exports=Readable;var isArray=require("isarray"), 
Buffer=require("buffer").Buffer;Readable.ReadableState=ReadableState;var EE=require("events").EventEmitter;EE.listenerCount||(EE.listenerCount=function(emitter, type) {
 return emitter.listeners(type).length; 
});var StringDecoder, 
Stream=require("stream"), 
util=require("core-util-is");function ReadableState(options, stream) {
 var hwm=(options=options||{}).highWaterMark;this.highWaterMark=hwm||0===hwm?hwm:16384, this.highWaterMark=~~this.highWaterMark, this.buffer=[], this.length=0, this.pipes=null, this.pipesCount=0, this.flowing=!1, this.ended=!1, this.endEmitted=!1, this.reading=!1, this.calledRead=!1, this.sync=!0, this.needReadable=!1, this.emittedReadable=!1, this.readableListening=!1, this.objectMode=!!options.objectMode, this.defaultEncoding=options.defaultEncoding||"utf8", this.ranOut=!1, this.awaitDrain=0, this.readingMore=!1, this.decoder=null, this.encoding=null, options.encoding&&(StringDecoder||(StringDecoder=require("string_decoder/").StringDecoder), this.decoder=new StringDecoder(options.encoding), this.encoding=options.encoding); 
}function Readable(options) {
 if(!(this instanceof Readable)) {
 return new Readable(options); 
}this._readableState=new ReadableState(options, this), this.readable=!0, Stream.call(this); 
}function readableAddChunk(stream, state, chunk, encoding, addToFront) {
 var er=(function(state, chunk) {
 var er=null;Buffer.isBuffer(chunk)||"string"===typeof chunk||null===chunk||void 0===chunk||state.objectMode||(er=new TypeError("Invalid non-string/buffer chunk"));return er; 
}(state, chunk));if(er) {
 stream.emit("error", er); 
}else if(null===chunk||void 0===chunk) {
 state.reading=!1, state.ended||(function(stream, state) {
 if(state.decoder&&!state.ended) {
 var chunk=state.decoder.end();chunk&&chunk.length&&(state.buffer.push(chunk), state.length+=state.objectMode?1:chunk.length); 
}state.ended=!0, state.length>0?emitReadable(stream):endReadable(stream); 
}(stream, state)); 
}else if(state.objectMode||chunk&&chunk.length>0) {
 if(state.ended&&!addToFront) {
 var e=new Error("stream.push() after EOF");stream.emit("error", e); 
}else if(state.endEmitted&&addToFront) {
 e=new Error("stream.unshift() after end event");stream.emit("error", e); 
}else{
 !state.decoder||addToFront||encoding||(chunk=state.decoder.write(chunk)), state.length+=state.objectMode?1:chunk.length, addToFront?state.buffer.unshift(chunk):(state.reading=!1, state.buffer.push(chunk)), state.needReadable&&emitReadable(stream), (function(stream, state) {
 state.readingMore||(state.readingMore=!0, process.nextTick(function() {
 !(function(stream, state) {
 var len=state.length;for(;!state.reading&&!state.flowing&&!state.ended&&state.length<state.highWaterMark&&(stream.read(0), len!==state.length);) {
 len=state.length; 
}state.readingMore=!1; 
}(stream, state)); 
})); 
}(stream, state)); 
} 
}else {
 addToFront||(state.reading=!1); 
}return (function(state) {
 return!state.ended&&(state.needReadable||state.length<state.highWaterMark||0===state.length); 
}(state)); 
}util.inherits=require("inherits"), util.inherits(Readable, Stream), Readable.prototype.push=function(chunk, encoding) {
 var state=this._readableState;return"string"!==typeof chunk||state.objectMode||(encoding=encoding||state.defaultEncoding)!==state.encoding&&(chunk=new Buffer(chunk, encoding), encoding=""), readableAddChunk(this, state, chunk, encoding, !1); 
}, Readable.prototype.unshift=function(chunk) {
 return readableAddChunk(this, this._readableState, chunk, "", !0); 
}, Readable.prototype.setEncoding=function(enc) {
 StringDecoder||(StringDecoder=require("string_decoder/").StringDecoder), this._readableState.decoder=new StringDecoder(enc), this._readableState.encoding=enc; 
};var MAX_HWM=8388608;function howMuchToRead(n, state) {
 return 0===state.length&&state.ended?0:state.objectMode?0===n?0:1:null===n||isNaN(n)?state.flowing&&state.buffer.length?state.buffer[0].length:state.length:n<=0?0:(n>state.highWaterMark&&(state.highWaterMark=(function(n) {
 if(n>=MAX_HWM) {
 n=MAX_HWM; 
}else{
 n--;for(var p=1;p<32;p<<=1) {
 n|=n>>p; 
}n++; 
}return n; 
}(n))), n>state.length?state.ended?state.length:(state.needReadable=!0, 0):n); 
}function emitReadable(stream) {
 var state=stream._readableState;state.needReadable=!1, state.emittedReadable||(state.emittedReadable=!0, state.sync?process.nextTick(function() {
 emitReadable_(stream); 
}):emitReadable_(stream)); 
}function emitReadable_(stream) {
 stream.emit("readable"); 
}function flow(src) {
 var chunk, 
state=src._readableState;function write(dest, i, list) {
 !1===dest.write(chunk)&&state.awaitDrain++; 
}for(state.awaitDrain=0;state.pipesCount&&null!==(chunk=src.read());) {
 if(1===state.pipesCount?write(state.pipes):forEach(state.pipes, write), src.emit("data", chunk), state.awaitDrain>0) {
 return; 
} 
}if(0===state.pipesCount) {
 return state.flowing=!1, void(EE.listenerCount(src, "data")>0&&emitDataEvents(src)); 
}state.ranOut=!0; 
}function pipeOnReadable() {
 this._readableState.ranOut&&(this._readableState.ranOut=!1, flow(this)); 
}function emitDataEvents(stream, startPaused) {
 if(stream._readableState.flowing) {
 throw new Error("Cannot switch to old mode now."); 
}var paused=startPaused||!1, 
readable=!1;stream.readable=!0, stream.pipe=Stream.prototype.pipe, stream.on=stream.addListener=Stream.prototype.on, stream.on("readable", function() {
 var c;for(readable=!0;!paused&&null!==(c=stream.read());) {
 stream.emit("data", c); 
}null===c&&(readable=!1, stream._readableState.needReadable=!0); 
}), stream.pause=function() {
 paused=!0, this.emit("pause"); 
}, stream.resume=function() {
 paused=!1, readable?process.nextTick(function() {
 stream.emit("readable"); 
}):this.read(0), this.emit("resume"); 
}, stream.emit("readable"); 
}function fromList(n, state) {
 var ret, 
list=state.buffer, 
length=state.length, 
stringMode=!!state.decoder, 
objectMode=!!state.objectMode;if(0===list.length) {
 return null; 
}if(0===length) {
 ret=null; 
}else if(objectMode) {
 ret=list.shift(); 
}else if(!n||n>=length) {
 ret=stringMode?list.join(""):Buffer.concat(list, length), list.length=0; 
}else{
 if(n<list[0].length) {
 ret=(buf=list[0]).slice(0, n), list[0]=buf.slice(n); 
}else if(n===list[0].length) {
 ret=list.shift(); 
}else{
 ret=stringMode?"":new Buffer(n);for(var c=0, i=0, l=list.length;i<l&&c<n;i++) {
 var buf=list[0], 
cpy=Math.min(n-c, buf.length);stringMode?ret+=buf.slice(0, cpy):buf.copy(ret, c, 0, cpy), cpy<buf.length?list[0]=buf.slice(cpy):list.shift(), c+=cpy; 
} 
} 
}return ret; 
}function endReadable(stream) {
 var state=stream._readableState;if(state.length>0) {
 throw new Error("endReadable called on non-empty stream"); 
}!state.endEmitted&&state.calledRead&&(state.ended=!0, process.nextTick(function() {
 state.endEmitted||0!==state.length||(state.endEmitted=!0, stream.readable=!1, stream.emit("end")); 
})); 
}function forEach(xs, f) {
 for(var i=0, l=xs.length;i<l;i++) {
 f(xs[i], i); 
} 
}Readable.prototype.read=function(n) {
 var state=this._readableState;state.calledRead=!0;var ret, 
nOrig=n;if(("number"!==typeof n||n>0)&&(state.emittedReadable=!1), 0===n&&state.needReadable&&(state.length>=state.highWaterMark||state.ended)) {
 return emitReadable(this), null; 
}if(0===(n=howMuchToRead(n, state))&&state.ended) {
 return ret=null, state.length>0&&state.decoder&&(ret=fromList(n, state), state.length-=ret.length), 0===state.length&&endReadable(this), ret; 
}var doRead=state.needReadable;return state.length-n<=state.highWaterMark&&(doRead=!0), (state.ended||state.reading)&&(doRead=!1), doRead&&(state.reading=!0, state.sync=!0, 0===state.length&&(state.needReadable=!0), this._read(state.highWaterMark), state.sync=!1), doRead&&!state.reading&&(n=howMuchToRead(nOrig, state)), null===(ret=n>0?fromList(n, state):null)&&(state.needReadable=!0, n=0), state.length-=n, 0!==state.length||state.ended||(state.needReadable=!0), state.ended&&!state.endEmitted&&0===state.length&&endReadable(this), ret; 
}, Readable.prototype._read=function(n) {
 this.emit("error", new Error("not implemented")); 
}, Readable.prototype.pipe=function(dest, pipeOpts) {
 var src=this, 
state=this._readableState;switch(state.pipesCount) {
 case 0:state.pipes=dest;break;case 1:state.pipes=[state.pipes, dest];break;default:state.pipes.push(dest); 
}state.pipesCount+=1;var endFn=(!pipeOpts||!1!==pipeOpts.end)&&dest!==process.stdout&&dest!==process.stderr?onend:cleanup;function onunpipe(readable) {
 readable===src&&cleanup(); 
}function onend() {
 dest.end(); 
}state.endEmitted?process.nextTick(endFn):src.once("end", endFn), dest.on("unpipe", onunpipe);var ondrain=(function(src) {
 return function() {
 var state=src._readableState;state.awaitDrain--, 0===state.awaitDrain&&flow(src); 
}; 
}(src));function cleanup() {
 dest.removeListener("close", onclose), dest.removeListener("finish", onfinish), dest.removeListener("drain", ondrain), dest.removeListener("error", onerror), dest.removeListener("unpipe", onunpipe), src.removeListener("end", onend), src.removeListener("end", cleanup), dest._writableState&&!dest._writableState.needDrain||ondrain(); 
}function onerror(er) {
 unpipe(), dest.removeListener("error", onerror), 0===EE.listenerCount(dest, "error")&&dest.emit("error", er); 
}function onclose() {
 dest.removeListener("finish", onfinish), unpipe(); 
}function onfinish() {
 dest.removeListener("close", onclose), unpipe(); 
}function unpipe() {
 src.unpipe(dest); 
}return dest.on("drain", ondrain), dest._events&&dest._events.error?isArray(dest._events.error)?dest._events.error.unshift(onerror):dest._events.error=[onerror, dest._events.error]:dest.on("error", onerror), dest.once("close", onclose), dest.once("finish", onfinish), dest.emit("pipe", src), state.flowing||(this.on("readable", pipeOnReadable), state.flowing=!0, process.nextTick(function() {
 flow(src); 
})), dest; 
}, Readable.prototype.unpipe=function(dest) {
 var state=this._readableState;if(0===state.pipesCount) {
 return this; 
}if(1===state.pipesCount) {
 return dest&&dest!==state.pipes?this:(dest||(dest=state.pipes), state.pipes=null, state.pipesCount=0, this.removeListener("readable", pipeOnReadable), state.flowing=!1, dest&&dest.emit("unpipe", this), this); 
}if(!dest) {
 var dests=state.pipes, 
len=state.pipesCount;state.pipes=null, state.pipesCount=0, this.removeListener("readable", pipeOnReadable), state.flowing=!1;for(var i=0;i<len;i++) {
 dests[i].emit("unpipe", this); 
}return this; 
}return-1===(i=(function(xs, x) {
 for(var i=0, l=xs.length;i<l;i++) {
 if(xs[i]===x) {
 return i; 
} 
}return-1; 
}(state.pipes, dest)))?this:(state.pipes.splice(i, 1), state.pipesCount-=1, 1===state.pipesCount&&(state.pipes=state.pipes[0]), dest.emit("unpipe", this), this); 
}, Readable.prototype.on=function(ev, fn) {
 var res=Stream.prototype.on.call(this, ev, fn);if("data"!==ev||this._readableState.flowing||emitDataEvents(this), "readable"===ev&&this.readable) {
 var state=this._readableState;state.readableListening||(state.readableListening=!0, state.emittedReadable=!1, state.needReadable=!0, state.reading?state.length&&emitReadable(this):this.read(0)); 
}return res; 
}, Readable.prototype.addListener=Readable.prototype.on, Readable.prototype.resume=function() {
 emitDataEvents(this), this.read(0), this.emit("resume"); 
}, Readable.prototype.pause=function() {
 emitDataEvents(this, !0), this.emit("pause"); 
}, Readable.prototype.wrap=function(stream) {
 var state=this._readableState, 
paused=!1, 
self=this;for(var i in stream.on("end", function() {
 if(state.decoder&&!state.ended) {
 var chunk=state.decoder.end();chunk&&chunk.length&&self.push(chunk); 
}self.push(null); 
}), stream.on("data", function(chunk) {
 (state.decoder&&(chunk=state.decoder.write(chunk)), !state.objectMode||null!==chunk&&void 0!==chunk)&&((state.objectMode||chunk&&chunk.length)&&(self.push(chunk)||(paused=!0, stream.pause()))); 
}), stream) {
 "function"===typeof stream[i]&&void 0===this[i]&&(this[i]=(function(method) {
 return function() {
 return stream[method].apply(stream, arguments); 
}; 
}(i))); 
}return forEach(["error", "close", "destroy", "pause", "resume"], function(ev) {
 stream.on(ev, self.emit.bind(self, ev)); 
}), self._read=function(n) {
 paused&&(paused=!1, stream.resume()); 
}, self; 
}, Readable._fromList=fromList; 
}, {"buffer":void 0, "core-util-is":17, "events":void 0, "inherits":19, "isarray":44, "stream":void 0, "string_decoder/":45}], 43:[function(require, module, exports) {
 module.exports=Writable;var Buffer=require("buffer").Buffer;Writable.WritableState=WritableState;var util=require("core-util-is");util.inherits=require("inherits");var Stream=require("stream");function WritableState(options, stream) {
 var hwm=(options=options||{}).highWaterMark;this.highWaterMark=hwm||0===hwm?hwm:16384, this.objectMode=!!options.objectMode, this.highWaterMark=~~this.highWaterMark, this.needDrain=!1, this.ending=!1, this.ended=!1, this.finished=!1;var noDecode=!1===options.decodeStrings;this.decodeStrings=!noDecode, this.defaultEncoding=options.defaultEncoding||"utf8", this.length=0, this.writing=!1, this.sync=!0, this.bufferProcessing=!1, this.onwrite=function(er) {
 !(function(stream, er) {
 var state=stream._writableState, 
sync=state.sync, 
cb=state.writecb;if((function(state) {
 state.writing=!1, state.writecb=null, state.length-=state.writelen, state.writelen=0; 
}(state)), er) {
 !(function(stream, state, sync, er, cb) {
 sync?process.nextTick(function() {
 cb(er); 
}):cb(er);stream._writableState.errorEmitted=!0, stream.emit("error", er); 
}(stream, 0, sync, er, cb)); 
}else{
 var finished=needFinish(stream, state);finished||state.bufferProcessing||!state.buffer.length||(function(stream, state) {
 state.bufferProcessing=!0;for(var c=0;c<state.buffer.length;c++) {
 var entry=state.buffer[c], 
chunk=entry.chunk, 
encoding=entry.encoding, 
cb=entry.callback, 
len=state.objectMode?1:chunk.length;if(doWrite(stream, state, len, chunk, encoding, cb), state.writing) {
 c++;break; 
} 
}state.bufferProcessing=!1, c<state.buffer.length?state.buffer=state.buffer.slice(c):state.buffer.length=0; 
}(stream, state)), sync?process.nextTick(function() {
 afterWrite(stream, state, finished, cb); 
}):afterWrite(stream, state, finished, cb); 
} 
}(stream, er)); 
}, this.writecb=null, this.writelen=0, this.buffer=[], this.errorEmitted=!1; 
}function Writable(options) {
 var Duplex=require("./_stream_duplex");if(!(this instanceof Writable||this instanceof Duplex)) {
 return new Writable(options); 
}this._writableState=new WritableState(options, this), this.writable=!0, Stream.call(this); 
}function doWrite(stream, state, len, chunk, encoding, cb) {
 state.writelen=len, state.writecb=cb, state.writing=!0, state.sync=!0, stream._write(chunk, encoding, state.onwrite), state.sync=!1; 
}function afterWrite(stream, state, finished, cb) {
 finished||(function(stream, state) {
 0===state.length&&state.needDrain&&(state.needDrain=!1, stream.emit("drain")); 
}(stream, state)), cb(), finished&&finishMaybe(stream, state); 
}function needFinish(stream, state) {
 return state.ending&&0===state.length&&!state.finished&&!state.writing; 
}function finishMaybe(stream, state) {
 var need=needFinish(0, state);return need&&(state.finished=!0, stream.emit("finish")), need; 
}util.inherits(Writable, Stream), Writable.prototype.pipe=function() {
 this.emit("error", new Error("Cannot pipe. Not readable.")); 
}, Writable.prototype.write=function(chunk, encoding, cb) {
 var state=this._writableState, 
ret=!1;return"function"===typeof encoding&&(cb=encoding, encoding=null), Buffer.isBuffer(chunk)?encoding="buffer":encoding||(encoding=state.defaultEncoding), "function"!==typeof cb&&(cb=function() {}), state.ended?(function(stream, state, cb) {
 var er=new Error("write after end");stream.emit("error", er), process.nextTick(function() {
 cb(er); 
}); 
}(this, 0, cb)):(function(stream, state, chunk, cb) {
 var valid=!0;if(!Buffer.isBuffer(chunk)&&"string"!==typeof chunk&&null!==chunk&&void 0!==chunk&&!state.objectMode) {
 var er=new TypeError("Invalid non-string/buffer chunk");stream.emit("error", er), process.nextTick(function() {
 cb(er); 
}), valid=!1; 
}return valid; 
}(this, state, chunk, cb))&&(ret=(function(stream, state, chunk, encoding, cb) {
 chunk=(function(state, chunk, encoding) {
 return state.objectMode||!1===state.decodeStrings||"string"!==typeof chunk||(chunk=new Buffer(chunk, encoding)), chunk; 
}(state, chunk, encoding)), Buffer.isBuffer(chunk)&&(encoding="buffer");var len=state.objectMode?1:chunk.length;state.length+=len;var ret=state.length<state.highWaterMark;ret||(state.needDrain=!0);state.writing?state.buffer.push(new function(chunk, encoding, cb) {
 this.chunk=chunk, this.encoding=encoding, this.callback=cb; 
}(chunk, encoding, cb)):doWrite(stream, state, len, chunk, encoding, cb);return ret; 
}(this, state, chunk, encoding, cb))), ret; 
}, Writable.prototype._write=function(chunk, encoding, cb) {
 cb(new Error("not implemented")); 
}, Writable.prototype.end=function(chunk, encoding, cb) {
 var state=this._writableState;"function"===typeof chunk?(cb=chunk, chunk=null, encoding=null):"function"===typeof encoding&&(cb=encoding, encoding=null), void 0!==chunk&&null!==chunk&&this.write(chunk, encoding), state.ending||state.finished||(function(stream, state, cb) {
 state.ending=!0, finishMaybe(stream, state), cb&&(state.finished?process.nextTick(cb):stream.once("finish", cb));state.ended=!0; 
}(this, state, cb)); 
}; 
}, {"./_stream_duplex":41, "buffer":void 0, "core-util-is":17, "inherits":19, "stream":void 0}], 44:[function(require, module, exports) {
 module.exports=Array.isArray||function(arr) {
 return"[object Array]"==Object.prototype.toString.call(arr); 
}; 
}, {}], 45:[function(require, module, exports) {
 var Buffer=require("buffer").Buffer, 
isBufferEncoding=Buffer.isEncoding||function(encoding) {
 switch(encoding&&encoding.toLowerCase()) {
 case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1; 
} 
};var StringDecoder=exports.StringDecoder=function(encoding) {
 switch(this.encoding=(encoding||"utf8").toLowerCase().replace(/[-_]/, ""), (function(encoding) {
 if(encoding&&!isBufferEncoding(encoding)) {
 throw new Error("Unknown encoding: "+encoding); 
} 
}(encoding)), this.encoding) {
 case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2, this.detectIncompleteChar=utf16DetectIncompleteChar;break;case"base64":this.surrogateSize=3, this.detectIncompleteChar=base64DetectIncompleteChar;break;default:return void(this.write=passThroughWrite); 
}this.charBuffer=new Buffer(6), this.charReceived=0, this.charLength=0; 
};function passThroughWrite(buffer) {
 return buffer.toString(this.encoding); 
}function utf16DetectIncompleteChar(buffer) {
 this.charReceived=buffer.length%2, this.charLength=this.charReceived?2:0; 
}function base64DetectIncompleteChar(buffer) {
 this.charReceived=buffer.length%3, this.charLength=this.charReceived?3:0; 
}StringDecoder.prototype.write=function(buffer) {
 for(var charStr="";this.charLength;) {
 var available=buffer.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:buffer.length;if(buffer.copy(this.charBuffer, this.charReceived, 0, available), this.charReceived+=available, this.charReceived<this.charLength) {
 return""; 
}if(buffer=buffer.slice(available, buffer.length), !((charCode=(charStr=this.charBuffer.slice(0, this.charLength).toString(this.encoding)).charCodeAt(charStr.length-1))>=55296&&charCode<=56319)) {
 if(this.charReceived=this.charLength=0, 0===buffer.length) {
 return charStr; 
}break; 
}this.charLength+=this.surrogateSize, charStr=""; 
}this.detectIncompleteChar(buffer);var end=buffer.length;this.charLength&&(buffer.copy(this.charBuffer, 0, buffer.length-this.charReceived, end), end-=this.charReceived);var charCode;end=(charStr+=buffer.toString(this.encoding, 0, end)).length-1;if((charCode=charStr.charCodeAt(end))>=55296&&charCode<=56319) {
 var size=this.surrogateSize;return this.charLength+=size, this.charReceived+=size, this.charBuffer.copy(this.charBuffer, size, 0, size), buffer.copy(this.charBuffer, 0, 0, size), charStr.substring(0, end); 
}return charStr; 
}, StringDecoder.prototype.detectIncompleteChar=function(buffer) {
 for(var i=buffer.length>=3?3:buffer.length;i>0;i--) {
 var c=buffer[buffer.length-i];if(1==i&&c>>5==6) {
 this.charLength=2;break; 
}if(i<=2&&c>>4==14) {
 this.charLength=3;break; 
}if(i<=3&&c>>3==30) {
 this.charLength=4;break; 
} 
}this.charReceived=i; 
}, StringDecoder.prototype.end=function(buffer) {
 var res="";if(buffer&&buffer.length&&(res=this.write(buffer)), this.charReceived) {
 var cr=this.charReceived, 
buf=this.charBuffer, 
enc=this.encoding;res+=buf.slice(0, cr).toString(enc); 
}return res; 
}; 
}, {buffer:void 0}], 46:[function(require, module, exports) {
 function Caseless(dict) {
 this.dict=dict||{}; 
}Caseless.prototype.set=function(name, value, clobber) {
 if("object"!==typeof name) {
 void 0===clobber&&(clobber=!0);var has=this.has(name);return!clobber&&has?this.dict[has]=this.dict[has]+","+value:this.dict[has||name]=value, has; 
}for(var i in name) {
 this.set(i, name[i], value); 
} 
}, Caseless.prototype.has=function(name) {
 for(var keys=Object.keys(this.dict), i=(name=name.toLowerCase(), 0);i<keys.length;i++) {
 if(keys[i].toLowerCase()===name) {
 return keys[i]; 
} 
}return!1; 
}, Caseless.prototype.get=function(name) {
 var result, _key;name=name.toLowerCase();var headers=this.dict;return Object.keys(headers).forEach(function(key) {
 _key=key.toLowerCase(), name===_key&&(result=headers[key]); 
}), result; 
}, Caseless.prototype.swap=function(name) {
 var has=this.has(name);if(!has) {
 throw new Error('There is no header than matches "'+name+'"'); 
}this.dict[name]=this.dict[has], delete this.dict[has]; 
}, Caseless.prototype.del=function(name) {
 var has=this.has(name);return delete this.dict[has||name]; 
}, module.exports=function(dict) {
 return new Caseless(dict); 
}, module.exports.httpify=function(resp, headers) {
 var c=new Caseless(headers);return resp.setHeader=function(key, value, clobber) {
 return c.set(key, value, clobber); 
}, resp.hasHeader=function(key) {
 return c.has(key); 
}, resp.getHeader=function(key) {
 return c.get(key); 
}, resp.removeHeader=function(key) {
 return c.del(key); 
}, resp.headers=c.dict, c; 
}; 
}, {}], 47:[function(require, module, exports) {
 var util=require("util"), 
Stream=require("stream").Stream, 
DelayedStream=require("delayed-stream");function CombinedStream() {
 this.writable=!1, this.readable=!0, this.dataSize=0, this.maxDataSize=2097152, this.pauseStreams=!0, this._released=!1, this._streams=[], this._currentStream=null; 
}module.exports=CombinedStream, util.inherits(CombinedStream, Stream), CombinedStream.create=function(options) {
 var combinedStream=new this;for(var option in options=options||{}) {
 combinedStream[option]=options[option]; 
}return combinedStream; 
}, CombinedStream.isStreamLike=function(stream) {
 return"function"!==typeof stream&&"string"!==typeof stream&&"boolean"!==typeof stream&&"number"!==typeof stream&&!Buffer.isBuffer(stream); 
}, CombinedStream.prototype.append=function(stream) {
 if(CombinedStream.isStreamLike(stream)) {
 if(!(stream instanceof DelayedStream)) {
 var newStream=DelayedStream.create(stream, {maxDataSize:1/0, pauseStream:this.pauseStreams});stream.on("data", this._checkDataSize.bind(this)), stream=newStream; 
}this._handleErrors(stream), this.pauseStreams&&stream.pause(); 
}return this._streams.push(stream), this; 
}, CombinedStream.prototype.pipe=function(dest, options) {
 return Stream.prototype.pipe.call(this, dest, options), this.resume(), dest; 
}, CombinedStream.prototype._getNext=function() {
 this._currentStream=null;var stream=this._streams.shift();void 0!==stream?"function"===typeof stream?stream(function(stream) {
 CombinedStream.isStreamLike(stream)&&(stream.on("data", this._checkDataSize.bind(this)), this._handleErrors(stream)), this._pipeNext(stream); 
}.bind(this)):this._pipeNext(stream):this.end(); 
}, CombinedStream.prototype._pipeNext=function(stream) {
 if(this._currentStream=stream, CombinedStream.isStreamLike(stream)) {
 return stream.on("end", this._getNext.bind(this)), void stream.pipe(this, {end:!1}); 
}var value=stream;this.write(value), this._getNext(); 
}, CombinedStream.prototype._handleErrors=function(stream) {
 var self=this;stream.on("error", function(err) {
 self._emitError(err); 
}); 
}, CombinedStream.prototype.write=function(data) {
 this.emit("data", data); 
}, CombinedStream.prototype.pause=function() {
 this.pauseStreams&&(this.pauseStreams&&this._currentStream&&"function"===typeof this._currentStream.pause&&this._currentStream.pause(), this.emit("pause")); 
}, CombinedStream.prototype.resume=function() {
 this._released||(this._released=!0, this.writable=!0, this._getNext()), this.pauseStreams&&this._currentStream&&"function"===typeof this._currentStream.resume&&this._currentStream.resume(), this.emit("resume"); 
}, CombinedStream.prototype.end=function() {
 this._reset(), this.emit("end"); 
}, CombinedStream.prototype.destroy=function() {
 this._reset(), this.emit("close"); 
}, CombinedStream.prototype._reset=function() {
 this.writable=!1, this._streams=[], this._currentStream=null; 
}, CombinedStream.prototype._checkDataSize=function() {
 if(this._updateDataSize(), !(this.dataSize<=this.maxDataSize)) {
 var message="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this._emitError(new Error(message)); 
} 
}, CombinedStream.prototype._updateDataSize=function() {
 this.dataSize=0;var self=this;this._streams.forEach(function(stream) {
 stream.dataSize&&(self.dataSize+=stream.dataSize); 
}), this._currentStream&&this._currentStream.dataSize&&(this.dataSize+=this._currentStream.dataSize); 
}, CombinedStream.prototype._emitError=function(err) {
 this._reset(), this.emit("error", err); 
}; 
}, {"delayed-stream":48, "stream":void 0, "util":void 0}], 48:[function(require, module, exports) {
 var Stream=require("stream").Stream, 
util=require("util");function DelayedStream() {
 this.source=null, this.dataSize=0, this.maxDataSize=1048576, this.pauseStream=!0, this._maxDataSizeExceeded=!1, this._released=!1, this._bufferedEvents=[]; 
}module.exports=DelayedStream, util.inherits(DelayedStream, Stream), DelayedStream.create=function(source, options) {
 var delayedStream=new this;for(var option in options=options||{}) {
 delayedStream[option]=options[option]; 
}delayedStream.source=source;var realEmit=source.emit;return source.emit=function() {
 return delayedStream._handleEmit(arguments), realEmit.apply(source, arguments); 
}, source.on("error", function() {}), delayedStream.pauseStream&&source.pause(), delayedStream; 
}, DelayedStream.prototype.__defineGetter__("readable", function() {
 return this.source.readable; 
}), DelayedStream.prototype.resume=function() {
 this._released||this.release(), this.source.resume(); 
}, DelayedStream.prototype.pause=function() {
 this.source.pause(); 
}, DelayedStream.prototype.release=function() {
 this._released=!0, this._bufferedEvents.forEach(function(args) {
 this.emit.apply(this, args); 
}.bind(this)), this._bufferedEvents=[]; 
}, DelayedStream.prototype.pipe=function() {
 var r=Stream.prototype.pipe.apply(this, arguments);return this.resume(), r; 
}, DelayedStream.prototype._handleEmit=function(args) {
 this._released?this.emit.apply(this, args):("data"===args[0]&&(this.dataSize+=args[1].length, this._checkIfMaxDataSizeExceeded()), this._bufferedEvents.push(args)); 
}, DelayedStream.prototype._checkIfMaxDataSizeExceeded=function() {
 if(!(this._maxDataSizeExceeded||this.dataSize<=this.maxDataSize)) {
 this._maxDataSizeExceeded=!0;var message="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this.emit("error", new Error(message)); 
} 
}; 
}, {stream:void 0, util:void 0}], 49:[function(require, module, exports) {
 var CombinedStream=require("combined-stream"), 
util=require("util"), 
path=require("path"), 
http=require("http"), 
https=require("https"), 
parseUrl=require("url").parse, 
fs=require("fs"), 
mime=require("mime-types"), 
async=require("async");function FormData() {
 this._overheadLength=0, this._valueLength=0, this._lengthRetrievers=[], CombinedStream.call(this); 
}function populate(dst, src) {
 for(var prop in src) {
 dst[prop]||(dst[prop]=src[prop]); 
}return dst; 
}module.exports=FormData, util.inherits(FormData, CombinedStream), FormData.LINE_BREAK="\r\n", FormData.prototype.append=function(field, value, options) {
 options=options||{};var append=CombinedStream.prototype.append.bind(this);if("number"===typeof value&&(value=""+value), util.isArray(value)) {
 this._error(new Error("Arrays are not supported.")); 
}else{
 var header=this._multiPartHeader(field, value, options), 
footer=this._multiPartFooter(field, value, options);append(header), append(value), append(footer), this._trackLength(header, value, options); 
} 
}, FormData.prototype._trackLength=function(header, value, options) {
 var valueLength=0;null!=options.knownLength?valueLength+=+options.knownLength:Buffer.isBuffer(value)?valueLength=value.length:"string"===typeof value&&(valueLength=Buffer.byteLength(value)), this._valueLength+=valueLength, this._overheadLength+=Buffer.byteLength(header)+ +FormData.LINE_BREAK.length, value&&(value.path||value.readable&&value.hasOwnProperty("httpVersion"))&&(options.knownLength||this._lengthRetrievers.push(function(next) {
 value.hasOwnProperty("fd")?void 0!=value.end&&value.end!=1/0&&void 0!=value.start?next(null, value.end+1-(value.start?value.start:0)):fs.stat(value.path, function(err, stat) {
 var fileSize;err?next(err):(fileSize=stat.size-(value.start?value.start:0), next(null, fileSize)); 
}):value.hasOwnProperty("httpVersion")?next(null, +value.headers["content-length"]):value.hasOwnProperty("httpModule")?(value.on("response", function(response) {
 value.pause(), next(null, +response.headers["content-length"]); 
}), value.resume()):next("Unknown stream"); 
})); 
}, FormData.prototype._multiPartHeader=function(field, value, options) {
 var boundary=this.getBoundary(), 
header="";return null!=options.header?header=options.header:(header+="--"+boundary+FormData.LINE_BREAK+'Content-Disposition: form-data; name="'+field+'"', options.filename||value.path?header+='; filename="'+path.basename(options.filename||value.path)+'"'+FormData.LINE_BREAK+"Content-Type: "+(options.contentType||mime.lookup(options.filename||value.path)):value.readable&&value.hasOwnProperty("httpVersion")&&(header+='; filename="'+path.basename(value.client._httpMessage.path)+'"'+FormData.LINE_BREAK+"Content-Type: "+value.headers["content-type"]), header+=FormData.LINE_BREAK+FormData.LINE_BREAK), header; 
}, FormData.prototype._multiPartFooter=function(field, value, options) {
 return function(next) {
 var footer=FormData.LINE_BREAK;0===this._streams.length&&(footer+=this._lastBoundary()), next(footer); 
}.bind(this); 
}, FormData.prototype._lastBoundary=function() {
 return"--"+this.getBoundary()+"--"; 
}, FormData.prototype.getHeaders=function(userHeaders) {
 var formHeaders={"content-type":"multipart/form-data; boundary="+this.getBoundary()};for(var header in userHeaders) {
 formHeaders[header.toLowerCase()]=userHeaders[header]; 
}return formHeaders; 
}, FormData.prototype.getCustomHeaders=function(contentType) {
 return{"content-type":(contentType=contentType||"multipart/form-data")+"; boundary="+this.getBoundary(), "content-length":this.getLengthSync()}; 
}, FormData.prototype.getBoundary=function() {
 return this._boundary||this._generateBoundary(), this._boundary; 
}, FormData.prototype._generateBoundary=function() {
 for(var boundary="--------------------------", i=0;i<24;i++) {
 boundary+=Math.floor(10*Math.random()).toString(16); 
}this._boundary=boundary; 
}, FormData.prototype.getLengthSync=function(debug) {
 var knownLength=this._overheadLength+this._valueLength;return this._streams.length&&(knownLength+=this._lastBoundary().length), this._lengthRetrievers.length&&this._error(new Error("Cannot calculate proper length in synchronous way.")), knownLength; 
}, FormData.prototype.getLength=function(cb) {
 var knownLength=this._overheadLength+this._valueLength;this._streams.length&&(knownLength+=this._lastBoundary().length), this._lengthRetrievers.length?async.parallel(this._lengthRetrievers, function(err, values) {
 err?cb(err):(values.forEach(function(length) {
 knownLength+=length; 
}), cb(null, knownLength)); 
}):process.nextTick(cb.bind(this, null, knownLength)); 
}, FormData.prototype.submit=function(params, cb) {
 var request, options, 
defaults={method:"post"};return"string"===typeof params?options=populate({port:(params=parseUrl(params)).port, path:params.pathname, host:params.hostname}, defaults):(options=populate(params, defaults)).port||(options.port="https:"==options.protocol?443:80), options.headers=this.getHeaders(params.headers), request="https:"==params.protocol?https.request(options):http.request(options), this.getLength(function(err, length) {
 request.setHeader("Content-Length", length), this.pipe(request), cb&&(request.on("error", cb), request.on("response", cb.bind(this, null))); 
}.bind(this)), request; 
}, FormData.prototype._error=function(err) {
 this.error||(this.error=err, this.pause(), this.emit("error", err)); 
}; 
}, {"async":50, "combined-stream":47, "fs":void 0, "http":void 0, "https":void 0, "mime-types":105, "path":void 0, "url":void 0, "util":void 0}], 50:[function(require, module, exports) {
 !(function() {
 var root, previous_async, 
async={};function only_once(fn) {
 var called=!1;return function() {
 if(called) {
 throw new Error("Callback was already called."); 
}called=!0, fn.apply(root, arguments); 
}; 
}null!=(root=this)&&(previous_async=root.async), async.noConflict=function() {
 return root.async=previous_async, async; 
};var _toString=Object.prototype.toString, 
_isArray=Array.isArray||function(obj) {
 return"[object Array]"===_toString.call(obj); 
}, 
_each=function(arr, iterator) {
 for(var i=0;i<arr.length;i+=1) {
 iterator(arr[i], i, arr); 
} 
}, 
_map=function(arr, iterator) {
 if(arr.map) {
 return arr.map(iterator); 
}var results=[];return _each(arr, function(x, i, a) {
 results.push(iterator(x, i, a)); 
}), results; 
}, 
_keys=function(obj) {
 if(Object.keys) {
 return Object.keys(obj); 
}var keys=[];for(var k in obj) {
 obj.hasOwnProperty(k)&&keys.push(k); 
}return keys; 
};"undefined"!==typeof process&&process.nextTick?(async.nextTick=process.nextTick, "undefined"!==typeof setImmediate?async.setImmediate=function(fn) {
 setImmediate(fn); 
}:async.setImmediate=async.nextTick):"function"===typeof setImmediate?(async.nextTick=function(fn) {
 setImmediate(fn); 
}, async.setImmediate=async.nextTick):(async.nextTick=function(fn) {
 setTimeout(fn, 0); 
}, async.setImmediate=async.nextTick), async.each=function(arr, iterator, callback) {
 if(callback=callback||function() {}, !arr.length) {
 return callback(); 
}var completed=0;function done(err) {
 err?(callback(err), callback=function() {}):(completed+=1)>=arr.length&&callback(); 
}_each(arr, function(x) {
 iterator(x, only_once(done)); 
}); 
}, async.forEach=async.each, async.eachSeries=function(arr, iterator, callback) {
 if(callback=callback||function() {}, !arr.length) {
 return callback(); 
}var completed=0, 
iterate=function() {
 iterator(arr[completed], function(err) {
 err?(callback(err), callback=function() {}):(completed+=1)>=arr.length?callback():iterate(); 
}); 
};iterate(); 
}, async.forEachSeries=async.eachSeries, async.eachLimit=function(arr, limit, iterator, callback) {
 _eachLimit(limit).apply(null, [arr, iterator, callback]); 
}, async.forEachLimit=async.eachLimit;var _eachLimit=function(limit) {
 return function(arr, iterator, callback) {
 if(callback=callback||function() {}, !arr.length||limit<=0) {
 return callback(); 
}var completed=0, 
started=0, 
running=0;!(function replenish() {
 if(completed>=arr.length) {
 return callback(); 
}for(;running<limit&&started<arr.length;) {
 running+=1, iterator(arr[(started+=1)-1], function(err) {
 err?(callback(err), callback=function() {}):(running-=1, (completed+=1)>=arr.length?callback():replenish()); 
}); 
} 
}()); 
}; 
}, 
doParallel=function(fn) {
 return function() {
 var args=Array.prototype.slice.call(arguments);return fn.apply(null, [async.each].concat(args)); 
}; 
}, 
doSeries=function(fn) {
 return function() {
 var args=Array.prototype.slice.call(arguments);return fn.apply(null, [async.eachSeries].concat(args)); 
}; 
}, 
_asyncMap=function(eachfn, arr, iterator, callback) {
 if(arr=_map(arr, function(x, i) {
 return{index:i, value:x}; 
}), callback) {
 var results=[];eachfn(arr, function(x, callback) {
 iterator(x.value, function(err, v) {
 results[x.index]=v, callback(err); 
}); 
}, function(err) {
 callback(err, results); 
}); 
}else {
 eachfn(arr, function(x, callback) {
 iterator(x.value, function(err) {
 callback(err); 
}); 
}); 
} 
};async.map=doParallel(_asyncMap), async.mapSeries=doSeries(_asyncMap), async.mapLimit=function(arr, limit, iterator, callback) {
 return _mapLimit(limit)(arr, iterator, callback); 
};var _mapLimit=function(limit) {
 return (function(limit, fn) {
 return function() {
 var args=Array.prototype.slice.call(arguments);return fn.apply(null, [_eachLimit(limit)].concat(args)); 
}; 
}(limit, _asyncMap)); 
};async.reduce=function(arr, memo, iterator, callback) {
 async.eachSeries(arr, function(x, callback) {
 iterator(memo, x, function(err, v) {
 memo=v, callback(err); 
}); 
}, function(err) {
 callback(err, memo); 
}); 
}, async.inject=async.reduce, async.foldl=async.reduce, async.reduceRight=function(arr, memo, iterator, callback) {
 var reversed=_map(arr, function(x) {
 return x; 
}).reverse();async.reduce(reversed, memo, iterator, callback); 
}, async.foldr=async.reduceRight;var _filter=function(eachfn, arr, iterator, callback) {
 var results=[];eachfn(arr=_map(arr, function(x, i) {
 return{index:i, value:x}; 
}), function(x, callback) {
 iterator(x.value, function(v) {
 v&&results.push(x), callback(); 
}); 
}, function(err) {
 callback(_map(results.sort(function(a, b) {
 return a.index-b.index; 
}), function(x) {
 return x.value; 
})); 
}); 
};async.filter=doParallel(_filter), async.filterSeries=doSeries(_filter), async.select=async.filter, async.selectSeries=async.filterSeries;var _reject=function(eachfn, arr, iterator, callback) {
 var results=[];eachfn(arr=_map(arr, function(x, i) {
 return{index:i, value:x}; 
}), function(x, callback) {
 iterator(x.value, function(v) {
 v||results.push(x), callback(); 
}); 
}, function(err) {
 callback(_map(results.sort(function(a, b) {
 return a.index-b.index; 
}), function(x) {
 return x.value; 
})); 
}); 
};async.reject=doParallel(_reject), async.rejectSeries=doSeries(_reject);var _detect=function(eachfn, arr, iterator, main_callback) {
 eachfn(arr, function(x, callback) {
 iterator(x, function(result) {
 result?(main_callback(x), main_callback=function() {}):callback(); 
}); 
}, function(err) {
 main_callback(); 
}); 
};async.detect=doParallel(_detect), async.detectSeries=doSeries(_detect), async.some=function(arr, iterator, main_callback) {
 async.each(arr, function(x, callback) {
 iterator(x, function(v) {
 v&&(main_callback(!0), main_callback=function() {}), callback(); 
}); 
}, function(err) {
 main_callback(!1); 
}); 
}, async.any=async.some, async.every=function(arr, iterator, main_callback) {
 async.each(arr, function(x, callback) {
 iterator(x, function(v) {
 v||(main_callback(!1), main_callback=function() {}), callback(); 
}); 
}, function(err) {
 main_callback(!0); 
}); 
}, async.all=async.every, async.sortBy=function(arr, iterator, callback) {
 async.map(arr, function(x, callback) {
 iterator(x, function(err, criteria) {
 err?callback(err):callback(null, {value:x, criteria:criteria}); 
}); 
}, function(err, results) {
 if(err) {
 return callback(err); 
}callback(null, _map(results.sort(function(left, right) {
 var a=left.criteria, 
b=right.criteria;return a<b?-1:a>b?1:0; 
}), function(x) {
 return x.value; 
})); 
}); 
}, async.auto=function(tasks, callback) {
 callback=callback||function() {};var keys=_keys(tasks), 
remainingTasks=keys.length;if(!remainingTasks) {
 return callback(); 
}var results={}, 
listeners=[], 
addListener=function(fn) {
 listeners.unshift(fn); 
}, 
taskComplete=function() {
 remainingTasks--, _each(listeners.slice(0), function(fn) {
 fn(); 
}); 
};addListener(function() {
 if(!remainingTasks) {
 var theCallback=callback;callback=function() {}, theCallback(null, results); 
} 
}), _each(keys, function(k) {
 var task=_isArray(tasks[k])?tasks[k]:[tasks[k]], 
taskCallback=function(err) {
 var args=Array.prototype.slice.call(arguments, 1);if(args.length<=1&&(args=args[0]), err) {
 var safeResults={};_each(_keys(results), function(rkey) {
 safeResults[rkey]=results[rkey]; 
}), safeResults[k]=args, callback(err, safeResults), callback=function() {}; 
}else {
 results[k]=args, async.setImmediate(taskComplete); 
} 
}, 
requires=task.slice(0, Math.abs(task.length-1))||[], 
ready=function() {
 return iterator=function(a, x) {
 return a&&results.hasOwnProperty(x); 
}, memo=!0, ((arr=requires).reduce?arr.reduce(iterator, memo):(_each(arr, function(x, i, a) {
 memo=iterator(memo, x, i, a); 
}), memo))&&!results.hasOwnProperty(k);var arr, iterator, memo; 
};if(ready()) {
 task[task.length-1](taskCallback, results); 
}else{
 var listener=function() {
 ready()&&(!(function(fn) {
 for(var i=0;i<listeners.length;i+=1) {
 if(listeners[i]===fn) {
 return void listeners.splice(i, 1); 
} 
} 
}(listener)), task[task.length-1](taskCallback, results)); 
};addListener(listener); 
} 
}); 
}, async.retry=function(times, task, callback) {
 var attempts=[];"function"===typeof times&&(callback=task, task=times, times=5), times=parseInt(times, 10)||5;var wrappedTask=function(wrappedCallback, wrappedResults) {
 for(var retryAttempt=function(task, finalAttempt) {
 return function(seriesCallback) {
 task(function(err, result) {
 seriesCallback(!err||finalAttempt, {err:err, result:result}); 
}, wrappedResults); 
}; 
};times;) {
 attempts.push(retryAttempt(task, !(times-=1))); 
}async.series(attempts, function(done, data) {
 data=data[data.length-1], (wrappedCallback||callback)(data.err, data.result); 
}); 
};return callback?wrappedTask():wrappedTask; 
}, async.waterfall=function(tasks, callback) {
 if(callback=callback||function() {}, !_isArray(tasks)) {
 var err=new Error("First argument to waterfall must be an array of functions");return callback(err); 
}if(!tasks.length) {
 return callback(); 
}var wrapIterator=function(iterator) {
 return function(err) {
 if(err) {
 callback.apply(null, arguments), callback=function() {}; 
}else{
 var args=Array.prototype.slice.call(arguments, 1), 
next=iterator.next();next?args.push(wrapIterator(next)):args.push(callback), async.setImmediate(function() {
 iterator.apply(null, args); 
}); 
} 
}; 
};wrapIterator(async.iterator(tasks))(); 
};var _parallel=function(eachfn, tasks, callback) {
 if(callback=callback||function() {}, _isArray(tasks)) {
 eachfn.map(tasks, function(fn, callback) {
 fn&&fn(function(err) {
 var args=Array.prototype.slice.call(arguments, 1);args.length<=1&&(args=args[0]), callback.call(null, err, args); 
}); 
}, callback); 
}else{
 var results={};eachfn.each(_keys(tasks), function(k, callback) {
 tasks[k](function(err) {
 var args=Array.prototype.slice.call(arguments, 1);args.length<=1&&(args=args[0]), results[k]=args, callback(err); 
}); 
}, function(err) {
 callback(err, results); 
}); 
} 
};async.parallel=function(tasks, callback) {
 _parallel({map:async.map, each:async.each}, tasks, callback); 
}, async.parallelLimit=function(tasks, limit, callback) {
 _parallel({map:_mapLimit(limit), each:_eachLimit(limit)}, tasks, callback); 
}, async.series=function(tasks, callback) {
 if(callback=callback||function() {}, _isArray(tasks)) {
 async.mapSeries(tasks, function(fn, callback) {
 fn&&fn(function(err) {
 var args=Array.prototype.slice.call(arguments, 1);args.length<=1&&(args=args[0]), callback.call(null, err, args); 
}); 
}, callback); 
}else{
 var results={};async.eachSeries(_keys(tasks), function(k, callback) {
 tasks[k](function(err) {
 var args=Array.prototype.slice.call(arguments, 1);args.length<=1&&(args=args[0]), results[k]=args, callback(err); 
}); 
}, function(err) {
 callback(err, results); 
}); 
} 
}, async.iterator=function(tasks) {
 var makeCallback=function(index) {
 var fn=function() {
 return tasks.length&&tasks[index].apply(null, arguments), fn.next(); 
};return fn.next=function() {
 return index<tasks.length-1?makeCallback(index+1):null; 
}, fn; 
};return makeCallback(0); 
}, async.apply=function(fn) {
 var args=Array.prototype.slice.call(arguments, 1);return function() {
 return fn.apply(null, args.concat(Array.prototype.slice.call(arguments))); 
}; 
};var _concat=function(eachfn, arr, fn, callback) {
 var r=[];eachfn(arr, function(x, cb) {
 fn(x, function(err, y) {
 r=r.concat(y||[]), cb(err); 
}); 
}, function(err) {
 callback(err, r); 
}); 
};async.concat=doParallel(_concat), async.concatSeries=doSeries(_concat), async.whilst=function(test, iterator, callback) {
 test()?iterator(function(err) {
 if(err) {
 return callback(err); 
}async.whilst(test, iterator, callback); 
}):callback(); 
}, async.doWhilst=function(iterator, test, callback) {
 iterator(function(err) {
 if(err) {
 return callback(err); 
}var args=Array.prototype.slice.call(arguments, 1);test.apply(null, args)?async.doWhilst(iterator, test, callback):callback(); 
}); 
}, async.until=function(test, iterator, callback) {
 test()?callback():iterator(function(err) {
 if(err) {
 return callback(err); 
}async.until(test, iterator, callback); 
}); 
}, async.doUntil=function(iterator, test, callback) {
 iterator(function(err) {
 if(err) {
 return callback(err); 
}var args=Array.prototype.slice.call(arguments, 1);test.apply(null, args)?callback():async.doUntil(iterator, test, callback); 
}); 
}, async.queue=function(worker, concurrency) {
 function _insert(q, data, pos, callback) {
 if(q.started||(q.started=!0), _isArray(data)||(data=[data]), 0==data.length) {
 return async.setImmediate(function() {
 q.drain&&q.drain(); 
}); 
}_each(data, function(task) {
 var item={data:task, callback:"function"===typeof callback?callback:null};pos?q.tasks.unshift(item):q.tasks.push(item), q.saturated&&q.tasks.length===q.concurrency&&q.saturated(), async.setImmediate(q.process); 
}); 
}void 0===concurrency&&(concurrency=1);var workers=0, 
q={tasks:[], concurrency:concurrency, saturated:null, empty:null, drain:null, started:!1, paused:!1, push:function(data, callback) {
 _insert(q, data, !1, callback); 
}, kill:function() {
 q.drain=null, q.tasks=[]; 
}, unshift:function(data, callback) {
 _insert(q, data, !0, callback); 
}, process:function() {
 if(!q.paused&&workers<q.concurrency&&q.tasks.length) {
 var task=q.tasks.shift();q.empty&&0===q.tasks.length&&q.empty(), workers+=1;var cb=only_once(function() {
 workers-=1, task.callback&&task.callback.apply(task, arguments), q.drain&&q.tasks.length+workers===0&&q.drain(), q.process(); 
});worker(task.data, cb); 
} 
}, length:function() {
 return q.tasks.length; 
}, running:function() {
 return workers; 
}, idle:function() {
 return q.tasks.length+workers===0; 
}, pause:function() {
 !0!==q.paused&&(q.paused=!0); 
}, resume:function() {
 if(!1!==q.paused) {
 q.paused=!1;for(var w=1;w<=q.concurrency;w++) {
 async.setImmediate(q.process); 
} 
} 
}};return q; 
}, async.priorityQueue=function(worker, concurrency) {
 function _compareTasks(a, b) {
 return a.priority-b.priority; 
}var q=async.queue(worker, concurrency);return q.push=function(data, priority, callback) {
 !(function(q, data, priority, callback) {
 if(q.started||(q.started=!0), _isArray(data)||(data=[data]), 0==data.length) {
 return async.setImmediate(function() {
 q.drain&&q.drain(); 
}); 
}_each(data, function(task) {
 var item={data:task, priority:priority, callback:"function"===typeof callback?callback:null};q.tasks.splice((function(sequence, item, compare) {
 for(var beg=-1, end=sequence.length-1;beg<end;) {
 var mid=beg+(end-beg+1>>>1);compare(item, sequence[mid])>=0?beg=mid:end=mid-1; 
}return beg; 
}(q.tasks, item, _compareTasks))+1, 0, item), q.saturated&&q.tasks.length===q.concurrency&&q.saturated(), async.setImmediate(q.process); 
}); 
}(q, data, priority, callback)); 
}, delete q.unshift, q; 
}, async.cargo=function(worker, payload) {
 var working=!1, 
tasks=[], 
cargo={tasks:tasks, payload:payload, saturated:null, empty:null, drain:null, drained:!0, push:function(data, callback) {
 _isArray(data)||(data=[data]), _each(data, function(task) {
 tasks.push({data:task, callback:"function"===typeof callback?callback:null}), cargo.drained=!1, cargo.saturated&&tasks.length===payload&&cargo.saturated(); 
}), async.setImmediate(cargo.process); 
}, process:function process() {
 if(!working) {
 if(0===tasks.length) {
 return cargo.drain&&!cargo.drained&&cargo.drain(), void(cargo.drained=!0); 
}var ts="number"===typeof payload?tasks.splice(0, payload):tasks.splice(0, tasks.length), 
ds=_map(ts, function(task) {
 return task.data; 
});cargo.empty&&cargo.empty(), working=!0, worker(ds, function() {
 working=!1;var args=arguments;_each(ts, function(data) {
 data.callback&&data.callback.apply(null, args); 
}), process(); 
}); 
} 
}, length:function() {
 return tasks.length; 
}, running:function() {
 return working; 
}};return cargo; 
};var _console_fn=function(name) {
 return function(fn) {
 var args=Array.prototype.slice.call(arguments, 1);fn.apply(null, args.concat([function(err) {
 var args=Array.prototype.slice.call(arguments, 1);"undefined"!==typeof console&&(err?console.error:console[name]&&_each(args, function(x) {})); 
}])); 
}; 
};async.log=_console_fn("log"), async.dir=_console_fn("dir"), async.memoize=function(fn, hasher) {
 var memo={}, 
queues={};hasher=hasher||function(x) {
 return x; 
};var memoized=function() {
 var args=Array.prototype.slice.call(arguments), 
callback=args.pop(), 
key=hasher.apply(null, args);key in memo?async.nextTick(function() {
 callback.apply(null, memo[key]); 
}):key in queues?queues[key].push(callback):(queues[key]=[callback], fn.apply(null, args.concat([function() {
 memo[key]=arguments;var q=queues[key];delete queues[key];for(var i=0, l=q.length;i<l;i++) {
 q[i].apply(null, arguments); 
} 
}]))); 
};return memoized.memo=memo, memoized.unmemoized=fn, memoized; 
}, async.unmemoize=function(fn) {
 return function() {
 return(fn.unmemoized||fn).apply(null, arguments); 
}; 
}, async.times=function(count, iterator, callback) {
 for(var counter=[], i=0;i<count;i++) {
 counter.push(i); 
}return async.map(counter, iterator, callback); 
}, async.timesSeries=function(count, iterator, callback) {
 for(var counter=[], i=0;i<count;i++) {
 counter.push(i); 
}return async.mapSeries(counter, iterator, callback); 
}, async.seq=function() {
 var fns=arguments;return function() {
 var that=this, 
args=Array.prototype.slice.call(arguments), 
callback=args.pop();async.reduce(fns, args, function(newargs, fn, cb) {
 fn.apply(that, newargs.concat([function() {
 var err=arguments[0], 
nextargs=Array.prototype.slice.call(arguments, 1);cb(err, nextargs); 
}])); 
}, function(err, results) {
 callback.apply(that, [err].concat(results)); 
}); 
}; 
}, async.compose=function() {
 return async.seq.apply(null, Array.prototype.reverse.call(arguments)); 
};var _applyEach=function(eachfn, fns) {
 var go=function() {
 var that=this, 
args=Array.prototype.slice.call(arguments), 
callback=args.pop();return eachfn(fns, function(fn, cb) {
 fn.apply(that, args.concat([cb])); 
}, callback); 
};if(arguments.length>2) {
 var args=Array.prototype.slice.call(arguments, 2);return go.apply(this, args); 
}return go; 
};async.applyEach=doParallel(_applyEach), async.applyEachSeries=doSeries(_applyEach), async.forever=function(fn, callback) {
 !(function next(err) {
 if(err) {
 if(callback) {
 return callback(err); 
}throw err; 
}fn(next); 
}()); 
}, void 0!==module&&module.exports?module.exports=async:root.async=async; 
}()); 
}, {}], 51:[function(require, module, exports) {
 "use strict";function ValidationError(errors) {
 this.name="ValidationError", this.errors=errors; 
}ValidationError.prototype=Error.prototype, module.exports=ValidationError; 
}, {}], 52:[function(require, module, exports) {
 "use strict";var schemas=require("./schemas"), 
ValidationError=require("./error"), 
validator=require("is-my-json-valid"), 
runner=function(schema, data, cb) {
 var validate=validator(schema, {greedy:!0, verbose:!0, schemas:schemas}), 
valid=!1;return void 0!==data&&(valid=validate(data)), cb?cb(validate.errors?new ValidationError(validate.errors):null, valid):valid; 
};module.exports=function(data, cb) {
 return runner(schemas.har, data, cb); 
}, Object.keys(schemas).map(function(name) {
 module.exports[name]=function(data, cb) {
 return runner(schemas[name], data, cb); 
}; 
}); 
}, {"./error":51, "./schemas":60, "is-my-json-valid":70}], 53:[function(require, module, exports) {
 module.exports={properties:{beforeRequest:{$ref:"#cacheEntry"}, afterRequest:{$ref:"#cacheEntry"}, comment:{type:"string"}}}; 
}, {}], 54:[function(require, module, exports) {
 module.exports={oneOf:[{type:"object", optional:!0, required:["lastAccess", "eTag", "hitCount"], properties:{expires:{type:"string"}, lastAccess:{type:"string"}, eTag:{type:"string"}, hitCount:{type:"integer"}, comment:{type:"string"}}}, {type:null, additionalProperties:!1}]}; 
}, {}], 55:[function(require, module, exports) {
 module.exports={type:"object", required:["size", "mimeType"], properties:{size:{type:"integer"}, compression:{type:"integer"}, mimeType:{type:"string"}, text:{type:"string"}, encoding:{type:"string"}, comment:{type:"string"}}}; 
}, {}], 56:[function(require, module, exports) {
 module.exports={type:"object", required:["name", "value"], properties:{name:{type:"string"}, value:{type:"string"}, path:{type:"string"}, domain:{type:"string"}, expires:{type:["string", "null"], format:"date-time"}, httpOnly:{type:"boolean"}, secure:{type:"boolean"}, comment:{type:"string"}}}; 
}, {}], 57:[function(require, module, exports) {
 module.exports={type:"object", required:["name", "version"], properties:{name:{type:"string"}, version:{type:"string"}, comment:{type:"string"}}}; 
}, {}], 58:[function(require, module, exports) {
 module.exports={type:"object", optional:!0, required:["startedDateTime", "time", "request", "response", "cache", "timings"], properties:{pageref:{type:"string"}, startedDateTime:{type:"string", format:"date-time", pattern:"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))"}, time:{type:"number", min:0}, request:{$ref:"#request"}, response:{$ref:"#response"}, cache:{$ref:"#cache"}, timings:{$ref:"#timings"}, serverIPAddress:{type:"string", oneOf:[{format:"ipv4"}, {format:"ipv6"}]}, connection:{type:"string"}, comment:{type:"string"}}}; 
}, {}], 59:[function(require, module, exports) {
 module.exports={type:"object", required:["log"], properties:{log:{$ref:"#log"}}}; 
}, {}], 60:[function(require, module, exports) {
 "use strict";var schemas={cache:require("./cache.json"), cacheEntry:require("./cacheEntry.json"), content:require("./content.json"), cookie:require("./cookie.json"), creator:require("./creator.json"), entry:require("./entry.json"), har:require("./har.json"), log:require("./log.json"), page:require("./page.json"), pageTimings:require("./pageTimings.json"), postData:require("./postData.json"), record:require("./record.json"), request:require("./request.json"), response:require("./response.json"), timings:require("./timings.json")};schemas.cache.properties.beforeRequest=schemas.cacheEntry, schemas.cache.properties.afterRequest=schemas.cacheEntry, schemas.page.properties.pageTimings=schemas.pageTimings, schemas.request.properties.cookies.items=schemas.cookie, schemas.request.properties.headers.items=schemas.record, schemas.request.properties.queryString.items=schemas.record, schemas.request.properties.postData=schemas.postData, schemas.response.properties.cookies.items=schemas.cookie, schemas.response.properties.headers.items=schemas.record, schemas.response.properties.content=schemas.content, schemas.entry.properties.request=schemas.request, schemas.entry.properties.response=schemas.response, schemas.entry.properties.cache=schemas.cache, schemas.entry.properties.timings=schemas.timings, schemas.log.properties.creator=schemas.creator, schemas.log.properties.browser=schemas.creator, schemas.log.properties.pages.items=schemas.page, schemas.log.properties.entries.items=schemas.entry, schemas.har.properties.log=schemas.log, module.exports=schemas; 
}, {"./cache.json":53, "./cacheEntry.json":54, "./content.json":55, "./cookie.json":56, "./creator.json":57, "./entry.json":58, "./har.json":59, "./log.json":61, "./page.json":62, "./pageTimings.json":63, "./postData.json":64, "./record.json":65, "./request.json":66, "./response.json":67, "./timings.json":68}], 61:[function(require, module, exports) {
 module.exports={type:"object", required:["version", "creator", "entries"], properties:{version:{type:"string"}, creator:{$ref:"#creator"}, browser:{$ref:"#creator"}, pages:{type:"array", items:{$ref:"#page"}}, entries:{type:"array", items:{$ref:"#entry"}}, comment:{type:"string"}}}; 
}, {}], 62:[function(require, module, exports) {
 module.exports={type:"object", optional:!0, required:["startedDateTime", "id", "title", "pageTimings"], properties:{startedDateTime:{type:"string", format:"date-time", pattern:"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))"}, id:{type:"string", unique:!0}, title:{type:"string"}, pageTimings:{$ref:"#pageTimings"}, comment:{type:"string"}}}; 
}, {}], 63:[function(require, module, exports) {
 module.exports={type:"object", properties:{onContentLoad:{type:"number", min:-1}, onLoad:{type:"number", min:-1}, comment:{type:"string"}}}; 
}, {}], 64:[function(require, module, exports) {
 module.exports={type:"object", optional:!0, required:["mimeType"], properties:{mimeType:{type:"string"}, text:{type:"string"}, params:{type:"array", required:["name"], properties:{name:{type:"string"}, value:{type:"string"}, fileName:{type:"string"}, contentType:{type:"string"}, comment:{type:"string"}}}, comment:{type:"string"}}}; 
}, {}], 65:[function(require, module, exports) {
 module.exports={type:"object", required:["name", "value"], properties:{name:{type:"string"}, value:{type:"string"}, comment:{type:"string"}}}; 
}, {}], 66:[function(require, module, exports) {
 module.exports={type:"object", required:["method", "url", "httpVersion", "cookies", "headers", "queryString", "headersSize", "bodySize"], properties:{method:{type:"string"}, url:{type:"string", format:"uri"}, httpVersion:{type:"string"}, cookies:{type:"array", items:{$ref:"#cookie"}}, headers:{type:"array", items:{$ref:"#record"}}, queryString:{type:"array", items:{$ref:"#record"}}, postData:{$ref:"#postData"}, headersSize:{type:"integer"}, bodySize:{type:"integer"}, comment:{type:"string"}}}; 
}, {}], 67:[function(require, module, exports) {
 module.exports={type:"object", required:["status", "statusText", "httpVersion", "cookies", "headers", "content", "redirectURL", "headersSize", "bodySize"], properties:{status:{type:"integer"}, statusText:{type:"string"}, httpVersion:{type:"string"}, cookies:{type:"array", items:{$ref:"#cookie"}}, headers:{type:"array", items:{$ref:"#record"}}, content:{$ref:"#content"}, redirectURL:{type:"string"}, headersSize:{type:"integer"}, bodySize:{type:"integer"}, comment:{type:"string"}}}; 
}, {}], 68:[function(require, module, exports) {
 module.exports={required:["send", "wait", "receive"], properties:{dns:{type:"number", min:-1}, connect:{type:"number", min:-1}, blocked:{type:"number", min:-1}, send:{type:"number", min:-1}, wait:{type:"number", min:-1}, receive:{type:"number", min:-1}, ssl:{type:"number", min:-1}, comment:{type:"string"}}}; 
}, {}], 69:[function(require, module, exports) {
 var createIpValidator=require("is-my-ip-valid"), 
reEmailWhitespace=/\s/, 
reHostnameFirstPass=/^[a-zA-Z0-9.-]+$/, 
reHostnamePart=/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/, 
rePhoneFirstPass=/^\+[0-9][0-9 ]{5,27}[0-9]$/, 
rePhoneDoubleSpace=/ {2}/, 
rePhoneGlobalSpace=/ /g;exports["date-time"]=/^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}[tT ]\d{2}:\d{2}:\d{2}(?:\.\d+|)([zZ]|[+-]\d{2}:\d{2})$/, exports.date=/^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}$/, exports.time=/^\d{2}:\d{2}:\d{2}$/, exports.email=function(input) {
 return-1!==input.indexOf("@")&&!reEmailWhitespace.test(input); 
}, exports["ip-address"]=exports.ipv4=createIpValidator({version:4}), exports.ipv6=createIpValidator({version:6}), exports.uri=/^[a-zA-Z][a-zA-Z0-9+-.]*:[^\s]*$/, exports.color=/(#?([0-9A-Fa-f]{3,6})\b)|(aqua)|(black)|(blue)|(fuchsia)|(gray)|(green)|(lime)|(maroon)|(navy)|(olive)|(orange)|(purple)|(red)|(silver)|(teal)|(white)|(yellow)|(rgb\(\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*\))|(rgb\(\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*\))/, exports.hostname=function(input) {
 if(!reHostnameFirstPass.test(input)) {
 return!1; 
}for(var parts=input.split("."), i=0;i<parts.length;i++) {
 if(!reHostnamePart.test(parts[i])) {
 return!1; 
} 
}return!0; 
}, exports.alpha=/^[a-zA-Z]+$/, exports.alphanumeric=/^[a-zA-Z0-9]+$/, exports.style=/\s*(.+?):\s*([^;]+);?/g, exports.phone=function(input) {
 if(!rePhoneFirstPass.test(input)) {
 return!1; 
}if(rePhoneDoubleSpace.test(input)) {
 return!1; 
}var digits=input.substring(1).replace(rePhoneGlobalSpace, "").length;return digits>=7&&digits<=15; 
}, exports["utc-millisec"]=/^[0-9]{1,15}\.?[0-9]{0,15}$/; 
}, {"is-my-ip-valid":75}], 70:[function(require, module, exports) {
 var genobj=require("generate-object-property"), 
genfun=require("generate-function"), 
jsonpointer=require("jsonpointer"), 
xtend=require("xtend"), 
formats=require("./formats"), 
formatName=function(field) {
 field=JSON.stringify(field);for(var pattern=/\[([^\[\]"]+)\]/;pattern.test(field);) {
 field=field.replace(pattern, '."+$1+"'); 
}return field; 
}, 
types={any:function() {
 return"true"; 
}, null:function(name) {
 return name+" === null"; 
}, boolean:function(name) {
 return"typeof "+name+' === "boolean"'; 
}, array:function(name) {
 return"Array.isArray("+name+")"; 
}, object:function(name) {
 return"typeof "+name+' === "object" && '+name+" && !Array.isArray("+name+")"; 
}, number:function(name) {
 return"typeof "+name+' === "number" && isFinite('+name+")"; 
}, integer:function(name) {
 return"typeof "+name+' === "number" && (Math.floor('+name+") === "+name+" || "+name+" > 9007199254740992 || "+name+" < -9007199254740992)"; 
}, string:function(name) {
 return"typeof "+name+' === "string"'; 
}}, 
unique=function(array) {
 for(var list=[], i=0;i<array.length;i++) {
 list.push("object"===typeof array[i]?JSON.stringify(array[i]):array[i]); 
}for(i=1;i<list.length;i++) {
 if(list.indexOf(list[i])!==i) {
 return!1; 
} 
}return!0; 
}, 
isMultipleOf=function(name, multipleOf) {
 var res, 
factor=(0|multipleOf)!==multipleOf?Math.pow(10, multipleOf.toString().split(".").pop().length):1;factor>1?res=((0|name)!==name?Math.pow(10, name.toString().split(".").pop().length):1)>factor||Math.round(factor*name)%(factor*multipleOf):res=name%multipleOf;return!res; 
}, 
compile=function(schema, cache, root, reporter, opts) {
 var fmts=opts?xtend(formats, opts.formats):formats, 
scope={unique:unique, formats:fmts, isMultipleOf:isMultipleOf}, 
verbose=!!opts&&!!opts.verbose, 
greedy=!(!opts||void 0===opts.greedy)&&opts.greedy, 
syms={}, 
gensym=function(name) {
 return name+(syms[name]=(syms[name]||0)+1); 
}, 
reversePatterns={}, 
patterns=function(p) {
 if(reversePatterns[p]) {
 return reversePatterns[p]; 
}var n=gensym("pattern");return scope[n]=new RegExp(p), reversePatterns[p]=n, n; 
}, 
vars=["i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "x", "y", "z"], 
genloop=function() {
 var v=vars.shift();return vars.push(v+v[0]), v; 
}, 
visit=function(name, node, reporter, filter, schemaPath) {
 var properties=node.properties, 
type=node.type, 
tuple=!1;Array.isArray(node.items)&&(properties={}, node.items.forEach(function(item, i) {
 properties[i]=item; 
}), type="array", tuple=!0);var indent=0, 
error=function(msg, prop, value) {
 validate("errors++"), !0===reporter&&(validate("if (validate.errors === null) validate.errors = []"), verbose?validate("validate.errors.push({field:%s,message:%s,value:%s,type:%s,schemaPath:%s})", formatName(prop||name), JSON.stringify(msg), value||name, JSON.stringify(type), JSON.stringify(schemaPath)):validate("validate.errors.push({field:%s,message:%s})", formatName(prop||name), JSON.stringify(msg))); 
};!0===node.required?(indent++, validate("if (%s === undefined) {", name), error("is required"), validate("} else {")):(indent++, validate("if (%s !== undefined) {", name));var valid=[].concat(type).map(function(t) {
 if(t&&!types.hasOwnProperty(t)) {
 throw new Error("Unknown type: "+t); 
}return types[t||"any"](name); 
}).join(" || ")||"true";if("true"!==valid&&(indent++, validate("if (!(%s)) {", valid), error("is the wrong type"), validate("} else {")), tuple) {
 if(!1===node.additionalItems) {
 validate("if (%s.length > %d) {", name, node.items.length), error("has additional items"), validate("}"); 
}else if(node.additionalItems) {
 var i=genloop();validate("for (var %s = %d; %s < %s.length; %s++) {", i, node.items.length, i, name, i), visit(name+"["+i+"]", node.additionalItems, reporter, filter, schemaPath.concat("additionalItems")), validate("}"); 
} 
}if(node.format&&fmts[node.format]) {
 "string"!==type&&formats[node.format]&&validate("if (%s) {", types.string(name));var n=gensym("format");scope[n]=fmts[node.format], "function"===typeof scope[n]?validate("if (!%s(%s)) {", n, name):validate("if (!%s.test(%s)) {", n, name), error("must be "+node.format+" format"), validate("}"), "string"!==type&&formats[node.format]&&validate("}"); 
}if(Array.isArray(node.required)) {
 validate("if ((%s)) {", "object"!==type?types.object(name):"true"), validate("var missing = 0"), node.required.map(function(req) {
 var prop=genobj(name, req);validate("if (%s === undefined) {", prop), error("is required", prop), validate("missing++"), validate("}"); 
}), validate("}"), greedy||(validate("if (missing === 0) {"), indent++); 
}if(node.uniqueItems&&("array"!==type&&validate("if (%s) {", types.array(name)), validate("if (!(unique(%s))) {", name), error("must be unique"), validate("}"), "array"!==type&&validate("}")), node.enum) {
 var compare=node.enum.some(function(e) {
 return"object"===typeof e; 
})?function(e) {
 return"JSON.stringify("+name+") !== JSON.stringify("+JSON.stringify(e)+")"; 
}:function(e) {
 return name+" !== "+JSON.stringify(e); 
};validate("if (%s) {", node.enum.map(compare).join(" && ")||"false"), error("must be an enum value"), validate("}"); 
}if(node.dependencies&&("object"!==type&&validate("if (%s) {", types.object(name)), Object.keys(node.dependencies).forEach(function(key) {
 var deps=node.dependencies[key];"string"===typeof deps&&(deps=[deps]);Array.isArray(deps)&&(validate("if (%s !== undefined && !(%s)) {", genobj(name, key), deps.map(function(k) {
 return genobj(name, k)+" !== undefined"; 
}).join(" && ")||"true"), error("dependencies not set"), validate("}")), "object"===typeof deps&&(validate("if (%s !== undefined) {", genobj(name, key)), visit(name, deps, reporter, filter, schemaPath.concat(["dependencies", key])), validate("}")); 
}), "object"!==type&&validate("}")), node.additionalProperties||!1===node.additionalProperties) {
 "object"!==type&&validate("if (%s) {", types.object(name));i=genloop();var keys=gensym("keys"), 
additionalProp=Object.keys(properties||{}).map(function(p) {
 return keys+"["+i+"] !== "+JSON.stringify(p); 
}).concat(Object.keys(node.patternProperties||{}).map(function(p) {
 return"!"+patterns(p)+".test("+keys+"["+i+"])"; 
})).join(" && ")||"true";validate("var %s = Object.keys(%s)", keys, name)("for (var %s = 0; %s < %s.length; %s++) {", i, i, keys, i)("if (%s) {", additionalProp), !1===node.additionalProperties?(filter&&validate("delete %s", name+"["+keys+"["+i+"]]"), error("has additional properties", null, JSON.stringify(name+".")+" + "+keys+"["+i+"]")):visit(name+"["+keys+"["+i+"]]", node.additionalProperties, reporter, filter, schemaPath.concat(["additionalProperties"])), validate("}")("}"), "object"!==type&&validate("}"); 
}if(node.$ref) {
 var sub=(function(obj, additionalSchemas, ptr) {
 var visit=function(sub) {
 return sub&&sub.id===ptr?sub:"object"===typeof sub&&sub?Object.keys(sub).reduce(function(res, k) {
 return res||visit(sub[k]); 
}, null):null; 
}, 
res=visit(obj);if(res) {
 return res; 
}ptr=(ptr=ptr.replace(/^#/, "")).replace(/\/$/, "");try{
 return jsonpointer.get(obj, decodeURI(ptr)); 
}catch(err) {
 var other, 
end=ptr.indexOf("#");if(0!==end) {
 if(-1===end) {
 other=additionalSchemas[ptr]; 
}else{
 other=additionalSchemas[ptr.slice(0, end)];var fragment=ptr.slice(end).replace(/^#/, "");try{
 return jsonpointer.get(other, fragment); 
}catch(err) {} 
} 
}else {
 other=additionalSchemas[ptr]; 
}return other||null; 
} 
}(root, opts&&opts.schemas||{}, node.$ref));if(sub) {
 var fn=cache[node.$ref];fn||(cache[node.$ref]=function(data) {
 return fn(data); 
}, fn=compile(sub, cache, root, !1, opts));n=gensym("ref");scope[n]=fn, validate("if (!(%s(%s))) {", n, name), error("referenced schema does not match"), validate("}"); 
} 
}if(node.not) {
 var prev=gensym("prev");validate("var %s = errors", prev), visit(name, node.not, !1, filter, schemaPath.concat("not")), validate("if (%s === errors) {", prev), error("negative schema matches"), validate("} else {")("errors = %s", prev)("}"); 
}if(node.items&&!tuple) {
 "array"!==type&&validate("if (%s) {", types.array(name));i=genloop();validate("for (var %s = 0; %s < %s.length; %s++) {", i, i, name, i), visit(name+"["+i+"]", node.items, reporter, filter, schemaPath.concat("items")), validate("}"), "array"!==type&&validate("}"); 
}if(node.patternProperties) {
 "object"!==type&&validate("if (%s) {", types.object(name));keys=gensym("keys"), i=genloop();validate("var %s = Object.keys(%s)", keys, name)("for (var %s = 0; %s < %s.length; %s++) {", i, i, keys, i), Object.keys(node.patternProperties).forEach(function(key) {
 var p=patterns(key);validate("if (%s.test(%s)) {", p, keys+"["+i+"]"), visit(name+"["+keys+"["+i+"]]", node.patternProperties[key], reporter, filter, schemaPath.concat(["patternProperties", key])), validate("}"); 
}), validate("}"), "object"!==type&&validate("}"); 
}if(node.pattern) {
 var p=patterns(node.pattern);"string"!==type&&validate("if (%s) {", types.string(name)), validate("if (!(%s.test(%s))) {", p, name), error("pattern mismatch"), validate("}"), "string"!==type&&validate("}"); 
}if(node.allOf&&node.allOf.forEach(function(sch, key) {
 visit(name, sch, reporter, filter, schemaPath.concat(["allOf", key])); 
}), node.anyOf&&node.anyOf.length) {
 prev=gensym("prev");node.anyOf.forEach(function(sch, i) {
 0===i?validate("var %s = errors", prev):validate("if (errors !== %s) {", prev)("errors = %s", prev), visit(name, sch, !1, !1, schemaPath); 
}), node.anyOf.forEach(function(sch, i) {
 i&&validate("}"); 
}), validate("if (%s !== errors) {", prev), error("no schemas match"), validate("}"); 
}if(node.oneOf&&node.oneOf.length) {
 prev=gensym("prev");var passes=gensym("passes");validate("var %s = errors", prev)("var %s = 0", passes), node.oneOf.forEach(function(sch, i) {
 visit(name, sch, !1, !1, schemaPath), validate("if (%s === errors) {", prev)("%s++", passes)("} else {")("errors = %s", prev)("}"); 
}), validate("if (%s !== 1) {", passes), error("no (or more than one) schemas match"), validate("}"); 
}for(void 0!==node.multipleOf&&("number"!==type&&"integer"!==type&&validate("if (%s) {", types.number(name)), validate("if (!isMultipleOf(%s, %d)) {", name, node.multipleOf), error("has a remainder"), validate("}"), "number"!==type&&"integer"!==type&&validate("}")), void 0!==node.maxProperties&&("object"!==type&&validate("if (%s) {", types.object(name)), validate("if (Object.keys(%s).length > %d) {", name, node.maxProperties), error("has more properties than allowed"), validate("}"), "object"!==type&&validate("}")), void 0!==node.minProperties&&("object"!==type&&validate("if (%s) {", types.object(name)), validate("if (Object.keys(%s).length < %d) {", name, node.minProperties), error("has less properties than allowed"), validate("}"), "object"!==type&&validate("}")), void 0!==node.maxItems&&("array"!==type&&validate("if (%s) {", types.array(name)), validate("if (%s.length > %d) {", name, node.maxItems), error("has more items than allowed"), validate("}"), "array"!==type&&validate("}")), void 0!==node.minItems&&("array"!==type&&validate("if (%s) {", types.array(name)), validate("if (%s.length < %d) {", name, node.minItems), error("has less items than allowed"), validate("}"), "array"!==type&&validate("}")), void 0!==node.maxLength&&("string"!==type&&validate("if (%s) {", types.string(name)), validate("if (%s.length > %d) {", name, node.maxLength), error("has longer length than allowed"), validate("}"), "string"!==type&&validate("}")), void 0!==node.minLength&&("string"!==type&&validate("if (%s) {", types.string(name)), validate("if (%s.length < %d) {", name, node.minLength), error("has less length than allowed"), validate("}"), "string"!==type&&validate("}")), void 0!==node.minimum&&("number"!==type&&"integer"!==type&&validate("if (%s) {", types.number(name)), validate("if (%s %s %d) {", name, node.exclusiveMinimum?"<=":"<", node.minimum), error("is less than minimum"), validate("}"), "number"!==type&&"integer"!==type&&validate("}")), void 0!==node.maximum&&("number"!==type&&"integer"!==type&&validate("if (%s) {", types.number(name)), validate("if (%s %s %d) {", name, node.exclusiveMaximum?">=":">", node.maximum), error("is more than maximum"), validate("}"), "number"!==type&&"integer"!==type&&validate("}")), properties&&Object.keys(properties).forEach(function(p) {
 Array.isArray(type)&&-1!==type.indexOf("null")&&validate("if (%s !== null) {", name), visit(genobj(name, p), properties[p], reporter, filter, schemaPath.concat(tuple?p:["properties", p])), Array.isArray(type)&&-1!==type.indexOf("null")&&validate("}"); 
});indent--;) {
 validate("}"); 
} 
}, 
validate=genfun("function validate(data) {")("if (data === undefined) data = null")("validate.errors = null")("var errors = 0");return visit("data", schema, reporter, opts&&opts.filter, []), validate("return errors === 0")("}"), (validate=validate.toFunction(scope)).errors=null, Object.defineProperty&&Object.defineProperty(validate, "error", {get:function() {
 return validate.errors?validate.errors.map(function(err) {
 return err.field+" "+err.message; 
}).join("\n"):""; 
}}), validate.toJSON=function() {
 return schema; 
}, validate; 
};module.exports=function(schema, opts) {
 return"string"===typeof schema&&(schema=JSON.parse(schema)), compile(schema, {}, schema, !0, opts); 
}, module.exports.filter=function(schema, opts) {
 var validate=module.exports(schema, xtend(opts, {filter:!0}));return function(sch) {
 return validate(sch), sch; 
}; 
}; 
}, {"./formats":69, "generate-function":71, "generate-object-property":73, "jsonpointer":76, "xtend":126}], 71:[function(require, module, exports) {
 for(var util=require("util"), isProperty=require("is-property"), INDENT_START=/[\{\[]/, INDENT_END=/[\}\]]/, RESERVED=["do", "if", "in", "for", "let", "new", "try", "var", "case", "else", "enum", "eval", "null", "this", "true", "void", "with", "await", "break", "catch", "class", "const", "false", "super", "throw", "while", "yield", "delete", "export", "import", "public", "return", "static", "switch", "typeof", "default", "extends", "finally", "package", "private", "continue", "debugger", "function", "arguments", "interface", "protected", "implements", "instanceof", "NaN", "undefined"], RESERVED_MAP={}, i=0;i<RESERVED.length;i++) {
 RESERVED_MAP[RESERVED[i]]=!0; 
}var formats={s:function(s) {
 return""+s; 
}, d:function(d) {
 return""+Number(d); 
}, o:function(o) {
 return JSON.stringify(o); 
}}, 
genfun=function() {
 var lines=[], 
indent=0, 
vars={}, 
push=function(str) {
 for(var spaces="";spaces.length<2*indent;) {
 spaces+="  "; 
}lines.push(spaces+str); 
}, 
pushLine=function(line) {
 return INDENT_END.test(line.trim()[0])&&INDENT_START.test(line[line.length-1])?(indent--, push(line), void indent++):INDENT_START.test(line[line.length-1])?(push(line), void indent++):INDENT_END.test(line.trim()[0])?(indent--, void push(line)):void push(line); 
}, 
line=function(fmt) {
 if(!fmt) {
 return line; 
}if(1===arguments.length&&fmt.indexOf("\n")>-1) {
 for(var lines=fmt.trim().split("\n"), i=0;i<lines.length;i++) {
 pushLine(lines[i].trim()); 
} 
}else {
 pushLine(util.format.apply(util, arguments)); 
}return line; 
};return line.scope={}, line.formats=formats, line.sym=function(name) {
 return name&&(function(name) {
 return isProperty(name)&&!RESERVED_MAP.hasOwnProperty(name); 
}(name))||(name="tmp"), vars[name]||(vars[name]=0), name+(vars[name]++||""); 
}, line.property=function(obj, name) {
 return 1===arguments.length&&(name=obj, obj=""), isProperty(name+="")?obj?obj+"."+name:name:obj?obj+"["+JSON.stringify(name)+"]":JSON.stringify(name); 
}, line.toString=function() {
 return lines.join("\n"); 
}, line.toFunction=function(scope) {
 scope||(scope={});var src="return ("+line.toString()+")";Object.keys(line.scope).forEach(function(key) {
 scope[key]||(scope[key]=line.scope[key]); 
});var keys=Object.keys(scope).map(function(key) {
 return key; 
}), 
vals=keys.map(function(key) {
 return scope[key]; 
});return Function.apply(null, keys.concat(src)).apply(null, vals); 
}, arguments.length&&line.apply(null, arguments), line; 
};genfun.formats=formats, module.exports=genfun; 
}, {"is-property":72, "util":void 0}], 72:[function(require, module, exports) {
 "use strict";module.exports=function(str) {
 return/^[$A-Z\_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc][$A-Z\_a-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc0-9\u0300-\u036f\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e4-\u08fe\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19b0-\u19c0\u19c8\u19c9\u19d0-\u19d9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2-\u1cf4\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f1\ua900-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f]*$/.test(str); 
}; 
}, {}], 73:[function(require, module, exports) {
 var isProperty=require("is-property"), 
gen=function(obj, prop) {
 return isProperty(prop)?obj+"."+prop:obj+"["+JSON.stringify(prop)+"]"; 
};gen.valid=isProperty, gen.property=function(prop) {
 return isProperty(prop)?prop:JSON.stringify(prop); 
}, module.exports=gen; 
}, {"is-property":74}], 74:[function(require, module, exports) {
 arguments[4][72][0].apply(exports, arguments); 
}, {dup:72}], 75:[function(require, module, exports) {
 var reIpv4FirstPass=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/, 
reSubnetString=/\/\d{1,3}(?=%|$)/, 
reForwardSlash=/\//, 
reZone=/%.*$/, 
reBadCharacters=/([^0-9a-f:/%])/i, 
reBadAddress=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/i;function validate4(input) {
 if(!reIpv4FirstPass.test(input)) {
 return!1; 
}var parts=input.split(".");if(4!==parts.length) {
 return!1; 
}if("0"===parts[0][0]&&parts[0].length>1) {
 return!1; 
}if("0"===parts[1][0]&&parts[1].length>1) {
 return!1; 
}if("0"===parts[2][0]&&parts[2].length>1) {
 return!1; 
}if("0"===parts[3][0]&&parts[3].length>1) {
 return!1; 
}var n0=Number(parts[0]), 
n1=Number(parts[1]), 
n2=Number(parts[2]), 
n3=Number(parts[3]);return n0>=0&&n0<256&&n1>=0&&n1<256&&n2>=0&&n2<256&&n3>=0&&n3<256; 
}function validate6(input) {
 var withoutSubnet=input.replace(reSubnetString, ""), 
hasSubnet=input.length!==withoutSubnet.length;if(hasSubnet) {
 return!1; 
}if(!hasSubnet&&reForwardSlash.test(input)) {
 return!1; 
}var withoutZone=withoutSubnet.replace(reZone, ""), 
lastPartSeparator=withoutZone.lastIndexOf(":");if(-1===lastPartSeparator) {
 return!1; 
}var address=validate4(withoutZone.substring(lastPartSeparator+1))?withoutZone.substring(0, lastPartSeparator+1)+"1234:5678":withoutZone;if(reBadCharacters.test(address)) {
 return!1; 
}if(reBadAddress.test(address)) {
 return!1; 
}var halves=address.split("::");if(halves.length>2) {
 return!1; 
}if(2===halves.length) {
 var first=""===halves[0]?[]:halves[0].split(":"), 
last=""===halves[1]?[]:halves[1].split(":");if(8-(first.length+last.length)<=0) {
 return!1; 
} 
}else if(8!==address.split(":").length) {
 return!1; 
}return!0; 
}function validate(input) {
 return validate4(input)||validate6(input); 
}module.exports=function(options) {
 if(options||(options={}), 4===options.version) {
 return validate4; 
}if(6===options.version) {
 return validate6; 
}if(null==options.version) {
 return validate; 
}throw new Error("Unknown version: "+options.version); 
}, module.exports.__all_regexes__=[reIpv4FirstPass, reSubnetString, reForwardSlash, reZone, reBadCharacters, reBadAddress]; 
}, {}], 76:[function(require, module, exports) {
 var hasExcape=/~/, 
escapeMatcher=/~[01]/g;function escapeReplacer(m) {
 switch(m) {
 case"~1":return"/";case"~0":return"~"; 
}throw new Error("Invalid tilde escape: "+m); 
}function untilde(str) {
 return hasExcape.test(str)?str.replace(escapeMatcher, escapeReplacer):str; 
}function compilePointer(pointer) {
 if("string"===typeof pointer) {
 if(""===(pointer=pointer.split("/"))[0]) {
 return pointer; 
}throw new Error("Invalid JSON pointer."); 
}if(Array.isArray(pointer)) {
 return pointer; 
}throw new Error("Invalid JSON pointer."); 
}function get(obj, pointer) {
 if("object"!==typeof obj) {
 throw new Error("Invalid input object."); 
}var len=(pointer=compilePointer(pointer)).length;if(1===len) {
 return obj; 
}for(var p=1;p<len;) {
 if(obj=obj[untilde(pointer[p++])], len===p) {
 return obj; 
}if("object"!==typeof obj) {
 return; 
} 
} 
}function set(obj, pointer, value) {
 if("object"!==typeof obj) {
 throw new Error("Invalid input object."); 
}if(0===(pointer=compilePointer(pointer)).length) {
 throw new Error("Invalid JSON pointer for set."); 
}return (function(obj, pointer, value) {
 for(var part, hasNextPart, p=1, len=pointer.length;p<len&&(part=untilde(pointer[p++]), hasNextPart=len>p, void 0===obj[part]&&(Array.isArray(obj)&&"-"===part&&(part=obj.length), hasNextPart&&(""!==pointer[p]&&pointer[p]<1/0||"-"===pointer[p]?obj[part]=[]:obj[part]={})), hasNextPart);) {
 obj=obj[part]; 
}var oldValue=obj[part];return void 0===value?delete obj[part]:obj[part]=value, oldValue; 
}(obj, pointer, value)); 
}exports.get=get, exports.set=set, exports.compile=function(pointer) {
 var compiled=compilePointer(pointer);return{get:function(object) {
 return get(object, compiled); 
}, set:function(object, value) {
 return set(object, compiled, value); 
}}; 
}; 
}, {}], 77:[function(require, module, exports) {
 module.exports=require("./lib"); 
}, {"./lib":80}], 78:[function(require, module, exports) {
 var Url=require("url"), 
Hoek=require("hoek"), 
Cryptiles=require("cryptiles"), 
Crypto=require("./crypto"), 
Utils=require("./utils");exports.header=function(uri, method, options) {
 var result={field:"", artifacts:{}};if(!uri||"string"!==typeof uri&&"object"!==typeof uri||!method||"string"!==typeof method||!options||"object"!==typeof options) {
 return result.err="Invalid argument type", result; 
}var timestamp=options.timestamp||Utils.nowSecs(options.localtimeOffsetMsec), 
credentials=options.credentials;if(!(credentials&&credentials.id&&credentials.key&&credentials.algorithm)) {
 return result.err="Invalid credential object", result; 
}if(-1===Crypto.algorithms.indexOf(credentials.algorithm)) {
 return result.err="Unknown algorithm", result; 
}"string"===typeof uri&&(uri=Url.parse(uri));var artifacts={ts:timestamp, nonce:options.nonce||Cryptiles.randomString(6), method:method, resource:uri.pathname+(uri.search||""), host:uri.hostname, port:uri.port||("http:"===uri.protocol?80:443), hash:options.hash, ext:options.ext, app:options.app, dlg:options.dlg};result.artifacts=artifacts, artifacts.hash||!options.payload&&""!==options.payload||(artifacts.hash=Crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType));var mac=Crypto.calculateMac("header", credentials, artifacts), 
hasExt=null!==artifacts.ext&&void 0!==artifacts.ext&&""!==artifacts.ext, 
header='Hawk id="'+credentials.id+'", ts="'+artifacts.ts+'", nonce="'+artifacts.nonce+(artifacts.hash?'", hash="'+artifacts.hash:"")+(hasExt?'", ext="'+Hoek.escapeHeaderAttribute(artifacts.ext):"")+'", mac="'+mac+'"';return artifacts.app&&(header+=', app="'+artifacts.app+(artifacts.dlg?'", dlg="'+artifacts.dlg:"")+'"'), result.field=header, result; 
}, exports.authenticate=function(res, credentials, artifacts, options) {
 if(artifacts=Hoek.clone(artifacts), options=options||{}, res.headers["www-authenticate"]) {
 if((attributes=Utils.parseAuthorizationHeader(res.headers["www-authenticate"], ["ts", "tsm", "error"]))instanceof Error) {
 return!1; 
}if(attributes.ts) {
 if(Crypto.calculateTsMac(attributes.ts, credentials)!==attributes.tsm) {
 return!1; 
} 
} 
}return!res.headers["server-authorization"]&&!options.required||!((attributes=Utils.parseAuthorizationHeader(res.headers["server-authorization"], ["mac", "ext", "hash"]))instanceof Error)&&(artifacts.ext=attributes.ext, artifacts.hash=attributes.hash, Crypto.calculateMac("response", credentials, artifacts)===attributes.mac&&(!options.payload&&""!==options.payload||!!attributes.hash&&Crypto.calculatePayloadHash(options.payload, credentials.algorithm, res.headers["content-type"])===attributes.hash));var attributes; 
}, exports.getBewit=function(uri, options) {
 if(!uri||"string"!==typeof uri&&"object"!==typeof uri||!options||"object"!==typeof options||!options.ttlSec) {
 return""; 
}options.ext=null===options.ext||void 0===options.ext?"":options.ext;var now=Utils.now(options.localtimeOffsetMsec), 
credentials=options.credentials;if(!(credentials&&credentials.id&&credentials.key&&credentials.algorithm)) {
 return""; 
}if(-1===Crypto.algorithms.indexOf(credentials.algorithm)) {
 return""; 
}"string"===typeof uri&&(uri=Url.parse(uri));var exp=Math.floor(now/1e3)+options.ttlSec, 
mac=Crypto.calculateMac("bewit", credentials, {ts:exp, nonce:"", method:"GET", resource:uri.pathname+(uri.search||""), host:uri.hostname, port:uri.port||("http:"===uri.protocol?80:443), ext:options.ext}), 
bewit=credentials.id+"\\"+exp+"\\"+mac+"\\"+options.ext;return Hoek.base64urlEncode(bewit); 
}, exports.message=function(host, port, message, options) {
 if(!host||"string"!==typeof host||!port||"number"!==typeof port||null===message||void 0===message||"string"!==typeof message||!options||"object"!==typeof options) {
 return null; 
}var timestamp=options.timestamp||Utils.nowSecs(options.localtimeOffsetMsec), 
credentials=options.credentials;if(!(credentials&&credentials.id&&credentials.key&&credentials.algorithm)) {
 return null; 
}if(-1===Crypto.algorithms.indexOf(credentials.algorithm)) {
 return null; 
}var artifacts={ts:timestamp, nonce:options.nonce||Cryptiles.randomString(6), host:host, port:port, hash:Crypto.calculatePayloadHash(message, credentials.algorithm)};return{id:credentials.id, ts:artifacts.ts, nonce:artifacts.nonce, hash:artifacts.hash, mac:Crypto.calculateMac("message", credentials, artifacts)}; 
}; 
}, {"./crypto":79, "./utils":82, "cryptiles":84, "hoek":86, "url":void 0}], 79:[function(require, module, exports) {
 var Crypto=require("crypto"), 
Url=require("url"), 
Utils=require("./utils");exports.headerVersion="1", exports.algorithms=["sha1", "sha256"], exports.calculateMac=function(type, credentials, options) {
 var normalized=exports.generateNormalizedString(type, options);return Crypto.createHmac(credentials.algorithm, credentials.key).update(normalized).digest("base64"); 
}, exports.generateNormalizedString=function(type, options) {
 var resource=options.resource||"";resource&&"/"!==resource[0]&&(resource=Url.parse(resource, !1).path);var normalized="hawk."+exports.headerVersion+"."+type+"\n"+options.ts+"\n"+options.nonce+"\n"+(options.method||"").toUpperCase()+"\n"+resource+"\n"+options.host.toLowerCase()+"\n"+options.port+"\n"+(options.hash||"")+"\n";return options.ext&&(normalized+=options.ext.replace("\\", "\\\\").replace("\n", "\\n")), normalized+="\n", options.app&&(normalized+=options.app+"\n"+(options.dlg||"")+"\n"), normalized; 
}, exports.calculatePayloadHash=function(payload, algorithm, contentType) {
 var hash=exports.initializePayloadHash(algorithm, contentType);return hash.update(payload||""), exports.finalizePayloadHash(hash); 
}, exports.initializePayloadHash=function(algorithm, contentType) {
 var hash=Crypto.createHash(algorithm);return hash.update("hawk."+exports.headerVersion+".payload\n"), hash.update(Utils.parseContentType(contentType)+"\n"), hash; 
}, exports.finalizePayloadHash=function(hash) {
 return hash.update("\n"), hash.digest("base64"); 
}, exports.calculateTsMac=function(ts, credentials) {
 var hmac=Crypto.createHmac(credentials.algorithm, credentials.key);return hmac.update("hawk."+exports.headerVersion+".ts\n"+ts+"\n"), hmac.digest("base64"); 
}, exports.timestampMessage=function(credentials, localtimeOffsetMsec) {
 var now=Utils.nowSecs(localtimeOffsetMsec);return{ts:now, tsm:exports.calculateTsMac(now, credentials)}; 
}; 
}, {"./utils":82, "crypto":void 0, "url":void 0}], 80:[function(require, module, exports) {
 exports.error=exports.Error=require("boom"), exports.sntp=require("sntp"), exports.server=require("./server"), exports.client=require("./client"), exports.crypto=require("./crypto"), exports.utils=require("./utils"), exports.uri={authenticate:exports.server.authenticateBewit, getBewit:exports.client.getBewit}; 
}, {"./client":78, "./crypto":79, "./server":81, "./utils":82, "boom":83, "sntp":87}], 81:[function(require, module, exports) {
 var Boom=require("boom"), 
Hoek=require("hoek"), 
Cryptiles=require("cryptiles"), 
Crypto=require("./crypto"), 
Utils=require("./utils");exports.authenticate=function(req, credentialsFunc, options, callback) {
 callback=Hoek.nextTick(callback), options.nonceFunc=options.nonceFunc||function(nonce, ts, nonceCallback) {
 return nonceCallback(); 
}, options.timestampSkewSec=options.timestampSkewSec||60;var now=Utils.now(options.localtimeOffsetMsec), 
request=Utils.parseRequest(req, options);if(request instanceof Error) {
 return callback(Boom.badRequest(request.message)); 
}var attributes=Utils.parseAuthorizationHeader(request.authorization);if(attributes instanceof Error) {
 return callback(attributes); 
}var artifacts={method:request.method, host:request.host, port:request.port, resource:request.url, ts:attributes.ts, nonce:attributes.nonce, hash:attributes.hash, ext:attributes.ext, app:attributes.app, dlg:attributes.dlg, mac:attributes.mac, id:attributes.id};if(!(attributes.id&&attributes.ts&&attributes.nonce&&attributes.mac)) {
 return callback(Boom.badRequest("Missing attributes"), null, artifacts); 
}credentialsFunc(attributes.id, function(err, credentials) {
 if(err) {
 return callback(err, credentials||null, artifacts); 
}if(!credentials) {
 return callback(Boom.unauthorized("Unknown credentials", "Hawk"), null, artifacts); 
}if(!credentials.key||!credentials.algorithm) {
 return callback(Boom.internal("Invalid credentials"), credentials, artifacts); 
}if(-1===Crypto.algorithms.indexOf(credentials.algorithm)) {
 return callback(Boom.internal("Unknown algorithm"), credentials, artifacts); 
}var mac=Crypto.calculateMac("header", credentials, artifacts);if(!Cryptiles.fixedTimeComparison(mac, attributes.mac)) {
 return callback(Boom.unauthorized("Bad mac", "Hawk"), credentials, artifacts); 
}if(options.payload||""===options.payload) {
 if(!attributes.hash) {
 return callback(Boom.unauthorized("Missing required payload hash", "Hawk"), credentials, artifacts); 
}var hash=Crypto.calculatePayloadHash(options.payload, credentials.algorithm, request.contentType);if(!Cryptiles.fixedTimeComparison(hash, attributes.hash)) {
 return callback(Boom.unauthorized("Bad payload hash", "Hawk"), credentials, artifacts); 
} 
}options.nonceFunc(attributes.nonce, attributes.ts, function(err) {
 if(err) {
 return callback(Boom.unauthorized("Invalid nonce", "Hawk"), credentials, artifacts); 
}if(Math.abs(1e3*attributes.ts-now)>1e3*options.timestampSkewSec) {
 var tsm=Crypto.timestampMessage(credentials, options.localtimeOffsetMsec);return callback(Boom.unauthorized("Stale timestamp", "Hawk", tsm), credentials, artifacts); 
}return callback(null, credentials, artifacts); 
}); 
}); 
}, exports.authenticatePayload=function(payload, credentials, artifacts, contentType) {
 var calculatedHash=Crypto.calculatePayloadHash(payload, credentials.algorithm, contentType);return Cryptiles.fixedTimeComparison(calculatedHash, artifacts.hash); 
}, exports.authenticatePayloadHash=function(calculatedHash, artifacts) {
 return Cryptiles.fixedTimeComparison(calculatedHash, artifacts.hash); 
}, exports.header=function(credentials, artifacts, options) {
 if(options=options||{}, !artifacts||"object"!==typeof artifacts||"object"!==typeof options) {
 return""; 
}if(delete(artifacts=Hoek.clone(artifacts)).mac, artifacts.hash=options.hash, artifacts.ext=options.ext, !credentials||!credentials.key||!credentials.algorithm) {
 return""; 
}if(-1===Crypto.algorithms.indexOf(credentials.algorithm)) {
 return""; 
}artifacts.hash||!options.payload&&""!==options.payload||(artifacts.hash=Crypto.calculatePayloadHash(options.payload, credentials.algorithm, options.contentType));var header='Hawk mac="'+Crypto.calculateMac("response", credentials, artifacts)+'"'+(artifacts.hash?', hash="'+artifacts.hash+'"':"");return null!==artifacts.ext&&void 0!==artifacts.ext&&""!==artifacts.ext&&(header+=', ext="'+Hoek.escapeHeaderAttribute(artifacts.ext)+'"'), header; 
}, exports.authenticateBewit=function(req, credentialsFunc, options, callback) {
 callback=Hoek.nextTick(callback);var now=Utils.now(options.localtimeOffsetMsec), 
request=Utils.parseRequest(req, options);if(request instanceof Error) {
 return callback(Boom.badRequest(request.message)); 
}var resource=request.url.match(/^(\/.*)([\?&])bewit\=([^&$]*)(?:&(.+))?$/);if(!resource) {
 return callback(Boom.unauthorized(null, "Hawk")); 
}if(!resource[3]) {
 return callback(Boom.unauthorized("Empty bewit", "Hawk")); 
}if("GET"!==request.method&&"HEAD"!==request.method) {
 return callback(Boom.unauthorized("Invalid method", "Hawk")); 
}if(request.authorization) {
 return callback(Boom.badRequest("Multiple authentications")); 
}var bewitString=Hoek.base64urlDecode(resource[3]);if(bewitString instanceof Error) {
 return callback(Boom.badRequest("Invalid bewit encoding")); 
}var bewitParts=bewitString.split("\\");if(4!==bewitParts.length) {
 return callback(Boom.badRequest("Invalid bewit structure")); 
}var bewit={id:bewitParts[0], exp:parseInt(bewitParts[1], 10), mac:bewitParts[2], ext:bewitParts[3]||""};if(!bewit.id||!bewit.exp||!bewit.mac) {
 return callback(Boom.badRequest("Missing bewit attributes")); 
}var url=resource[1];if(resource[4]&&(url+=resource[2]+resource[4]), 1e3*bewit.exp<=now) {
 return callback(Boom.unauthorized("Access expired", "Hawk"), null, bewit); 
}credentialsFunc(bewit.id, function(err, credentials) {
 if(err) {
 return callback(err, credentials||null, bewit.ext); 
}if(!credentials) {
 return callback(Boom.unauthorized("Unknown credentials", "Hawk"), null, bewit); 
}if(!credentials.key||!credentials.algorithm) {
 return callback(Boom.internal("Invalid credentials"), credentials, bewit); 
}if(-1===Crypto.algorithms.indexOf(credentials.algorithm)) {
 return callback(Boom.internal("Unknown algorithm"), credentials, bewit); 
}var mac=Crypto.calculateMac("bewit", credentials, {ts:bewit.exp, nonce:"", method:"GET", resource:url, host:request.host, port:request.port, ext:bewit.ext});return Cryptiles.fixedTimeComparison(mac, bewit.mac)?callback(null, credentials, bewit):callback(Boom.unauthorized("Bad mac", "Hawk"), credentials, bewit); 
}); 
}, exports.authenticateMessage=function(host, port, message, authorization, credentialsFunc, options, callback) {
 callback=Hoek.nextTick(callback), options.nonceFunc=options.nonceFunc||function(nonce, ts, nonceCallback) {
 return nonceCallback(); 
}, options.timestampSkewSec=options.timestampSkewSec||60;var now=Utils.now(options.localtimeOffsetMsec);if(!(authorization.id&&authorization.ts&&authorization.nonce&&authorization.hash&&authorization.mac)) {
 return callback(Boom.badRequest("Invalid authorization")); 
}credentialsFunc(authorization.id, function(err, credentials) {
 if(err) {
 return callback(err, credentials||null); 
}if(!credentials) {
 return callback(Boom.unauthorized("Unknown credentials", "Hawk")); 
}if(!credentials.key||!credentials.algorithm) {
 return callback(Boom.internal("Invalid credentials"), credentials); 
}if(-1===Crypto.algorithms.indexOf(credentials.algorithm)) {
 return callback(Boom.internal("Unknown algorithm"), credentials); 
}var artifacts={ts:authorization.ts, nonce:authorization.nonce, host:host, port:port, hash:authorization.hash}, 
mac=Crypto.calculateMac("message", credentials, artifacts);if(!Cryptiles.fixedTimeComparison(mac, authorization.mac)) {
 return callback(Boom.unauthorized("Bad mac", "Hawk"), credentials); 
}var hash=Crypto.calculatePayloadHash(message, credentials.algorithm);if(!Cryptiles.fixedTimeComparison(hash, authorization.hash)) {
 return callback(Boom.unauthorized("Bad message hash", "Hawk"), credentials); 
}options.nonceFunc(authorization.nonce, authorization.ts, function(err) {
 return err?callback(Boom.unauthorized("Invalid nonce", "Hawk"), credentials):Math.abs(1e3*authorization.ts-now)>1e3*options.timestampSkewSec?callback(Boom.unauthorized("Stale timestamp"), credentials):callback(null, credentials); 
}); 
}); 
}; 
}, {"./crypto":79, "./utils":82, "boom":83, "cryptiles":84, "hoek":86}], 82:[function(require, module, exports) {
 var Sntp=require("sntp"), 
Boom=require("boom"), 
internals={};exports.version=function() {
 return require("../package.json").version; 
}, internals.hostHeaderRegex=/^(?:(?:\r\n)?\s)*((?:[^:]+)|(?:\[[^\]]+\]))(?::(\d+))?(?:(?:\r\n)?\s)*$/, exports.parseHost=function(req, hostHeaderName) {
 hostHeaderName=hostHeaderName?hostHeaderName.toLowerCase():"host";var hostHeader=req.headers[hostHeaderName];if(!hostHeader) {
 return null; 
}var hostParts=hostHeader.match(internals.hostHeaderRegex);return hostParts?{name:hostParts[1], port:hostParts[2]?hostParts[2]:req.connection&&req.connection.encrypted?443:80}:null; 
}, exports.parseContentType=function(header) {
 return header?header.split(";")[0].trim().toLowerCase():""; 
}, exports.parseRequest=function(req, options) {
 if(!req.headers) {
 return req; 
}if(!options.host||!options.port) {
 var host=exports.parseHost(req, options.hostHeaderName);if(!host) {
 return new Error("Invalid Host header"); 
} 
}return{method:req.method, url:req.url, host:options.host||host.name, port:options.port||host.port, authorization:req.headers.authorization, contentType:req.headers["content-type"]||""}; 
}, exports.now=function(localtimeOffsetMsec) {
 return Sntp.now()+(localtimeOffsetMsec||0); 
}, exports.nowSecs=function(localtimeOffsetMsec) {
 return Math.floor(exports.now(localtimeOffsetMsec)/1e3); 
}, exports.parseAuthorizationHeader=function(header, keys) {
 if(keys=keys||["id", "ts", "nonce", "hash", "ext", "mac", "app", "dlg"], !header) {
 return Boom.unauthorized(null, "Hawk"); 
}var headerParts=header.match(/^(\w+)(?:\s+(.*))?$/);if(!headerParts) {
 return Boom.badRequest("Invalid header syntax"); 
}if("hawk"!==headerParts[1].toLowerCase()) {
 return Boom.unauthorized(null, "Hawk"); 
}var attributesString=headerParts[2];if(!attributesString) {
 return Boom.badRequest("Invalid header syntax"); 
}var attributes={}, 
errorMessage="";return""!==attributesString.replace(/(\w+)="([^"\\]*)"\s*(?:,\s*|$)/g, function($0, $1, $2) {
 if(-1!==keys.indexOf($1)) {
 if(null!==$2.match(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~]+$/)) {
 if(!attributes.hasOwnProperty($1)) {
 return attributes[$1]=$2, ""; 
}errorMessage="Duplicate attribute: "+$1; 
}else {
 errorMessage="Bad attribute value: "+$1; 
} 
}else {
 errorMessage="Unknown attribute: "+$1; 
} 
})?Boom.badRequest(errorMessage||"Bad header format"):attributes; 
}, exports.unauthorized=function(message) {
 return Boom.unauthorized(message, "Hawk"); 
}; 
}, {"../package.json":89, "boom":83, "sntp":87}], 83:[function(require, module, exports) {
 var Http=require("http"), 
Hoek=require("hoek"), 
internals={};exports.wrap=function(error, statusCode, message) {
 return Hoek.assert(error instanceof Error, "Cannot wrap non-Error object"), error.isBoom?error:internals.initialize(error, statusCode||500, message); 
}, exports.create=function(statusCode, message, data) {
 return internals.create(statusCode, message, data, exports.create); 
}, internals.create=function(statusCode, message, data, ctor) {
 var error=new Error(message||void 0);return Error.captureStackTrace(error, ctor), error.data=data||null, internals.initialize(error, statusCode), error; 
}, internals.initialize=function(error, statusCode, message) {
 var numberCode=parseInt(statusCode, 10);return Hoek.assert(!isNaN(numberCode)&&numberCode>=400, "First argument must be a number (400+):", statusCode), error.isBoom=!0, error.isServer=numberCode>=500, error.hasOwnProperty("data")||(error.data=null), error.output={statusCode:numberCode, payload:{}, headers:{}}, error.reformat=internals.reformat, error.reformat(), message||error.message||(message=error.output.payload.error), message&&(error.message=message+(error.message?": "+error.message:"")), error; 
}, internals.reformat=function() {
 this.output.payload.statusCode=this.output.statusCode, this.output.payload.error=Http.STATUS_CODES[this.output.statusCode]||"Unknown", 500===this.output.statusCode?this.output.payload.message="An internal server error occurred":this.message&&(this.output.payload.message=this.message); 
}, exports.badRequest=function(message, data) {
 return internals.create(400, message, data, exports.badRequest); 
}, exports.unauthorized=function(message, scheme, attributes) {
 var err=internals.create(401, message, void 0, exports.unauthorized);if(!scheme) {
 return err; 
}var wwwAuthenticate="", 
i=0, 
il=0;if("string"===typeof scheme) {
 if(wwwAuthenticate=scheme, (attributes||message)&&(err.output.payload.attributes={}), attributes) {
 var names=Object.keys(attributes);for(i=0, il=names.length;i<il;++i) {
 var name=names[i];i&&(wwwAuthenticate+=",");var value=attributes[name];null!==value&&void 0!==value||(value=""), wwwAuthenticate+=" "+name+'="'+Hoek.escapeHeaderAttribute(value.toString())+'"', err.output.payload.attributes[name]=value; 
} 
}message?(attributes&&(wwwAuthenticate+=","), wwwAuthenticate+=' error="'+Hoek.escapeHeaderAttribute(message)+'"', err.output.payload.attributes.error=message):err.isMissing=!0; 
}else{
 var wwwArray=scheme;for(i=0, il=wwwArray.length;i<il;++i) {
 i&&(wwwAuthenticate+=", "), wwwAuthenticate+=wwwArray[i]; 
} 
}return err.output.headers["WWW-Authenticate"]=wwwAuthenticate, err; 
}, exports.forbidden=function(message, data) {
 return internals.create(403, message, data, exports.forbidden); 
}, exports.notFound=function(message, data) {
 return internals.create(404, message, data, exports.notFound); 
}, exports.methodNotAllowed=function(message, data) {
 return internals.create(405, message, data, exports.methodNotAllowed); 
}, exports.notAcceptable=function(message, data) {
 return internals.create(406, message, data, exports.notAcceptable); 
}, exports.proxyAuthRequired=function(message, data) {
 return internals.create(407, message, data, exports.proxyAuthRequired); 
}, exports.clientTimeout=function(message, data) {
 return internals.create(408, message, data, exports.clientTimeout); 
}, exports.conflict=function(message, data) {
 return internals.create(409, message, data, exports.conflict); 
}, exports.resourceGone=function(message, data) {
 return internals.create(410, message, data, exports.resourceGone); 
}, exports.lengthRequired=function(message, data) {
 return internals.create(411, message, data, exports.lengthRequired); 
}, exports.preconditionFailed=function(message, data) {
 return internals.create(412, message, data, exports.preconditionFailed); 
}, exports.entityTooLarge=function(message, data) {
 return internals.create(413, message, data, exports.entityTooLarge); 
}, exports.uriTooLong=function(message, data) {
 return internals.create(414, message, data, exports.uriTooLong); 
}, exports.unsupportedMediaType=function(message, data) {
 return internals.create(415, message, data, exports.unsupportedMediaType); 
}, exports.rangeNotSatisfiable=function(message, data) {
 return internals.create(416, message, data, exports.rangeNotSatisfiable); 
}, exports.expectationFailed=function(message, data) {
 return internals.create(417, message, data, exports.expectationFailed); 
}, exports.badData=function(message, data) {
 return internals.create(422, message, data, exports.badData); 
}, exports.preconditionRequired=function(message, data) {
 return internals.create(428, message, data, exports.preconditionRequired); 
}, exports.tooManyRequests=function(message, data) {
 return internals.create(429, message, data, exports.tooManyRequests); 
}, exports.internal=function(message, data, statusCode) {
 return internals.serverError(message, data, statusCode, exports.internal); 
}, internals.serverError=function(message, data, statusCode, ctor) {
 var error;return data instanceof Error?error=exports.wrap(data, statusCode, message):(error=internals.create(statusCode||500, message, void 0, ctor)).data=data, error; 
}, exports.notImplemented=function(message, data) {
 return internals.serverError(message, data, 501, exports.notImplemented); 
}, exports.badGateway=function(message, data) {
 return internals.serverError(message, data, 502, exports.badGateway); 
}, exports.serverTimeout=function(message, data) {
 return internals.serverError(message, data, 503, exports.serverTimeout); 
}, exports.gatewayTimeout=function(message, data) {
 return internals.serverError(message, data, 504, exports.gatewayTimeout); 
}, exports.badImplementation=function(message, data) {
 var err=internals.serverError(message, data, 500, exports.badImplementation);return err.isDeveloperError=!0, err; 
}; 
}, {hoek:86, http:void 0}], 84:[function(require, module, exports) {
 var Crypto=require("crypto"), 
Boom=require("boom");exports.randomString=function(size) {
 var buffer=exports.randomBits(6*(size+1));return buffer instanceof Error?buffer:buffer.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/\=/g, "").slice(0, size); 
}, exports.randomBits=function(bits) {
 if(!bits||bits<0) {
 return Boom.internal("Invalid random bits count"); 
}var bytes=Math.ceil(bits/8);try{
 return Crypto.randomBytes(bytes); 
}catch(err) {
 return Boom.internal("Failed generating random bits: "+err.message); 
} 
}, exports.fixedTimeComparison=function(a, b) {
 if("string"!==typeof a||"string"!==typeof b) {
 return!1; 
}var mismatch=a.length===b.length?0:1;mismatch&&(b=a);for(var i=0, il=a.length;i<il;++i) {
 mismatch|=a.charCodeAt(i)^b.charCodeAt(i); 
}return 0===mismatch; 
}; 
}, {boom:83, crypto:void 0}], 85:[function(require, module, exports) {
 var internals={};exports.escapeJavaScript=function(input) {
 if(!input) {
 return""; 
}for(var escaped="", i=0, il=input.length;i<il;++i) {
 var charCode=input.charCodeAt(i);internals.isSafe(charCode)?escaped+=input[i]:escaped+=internals.escapeJavaScriptChar(charCode); 
}return escaped; 
}, exports.escapeHtml=function(input) {
 if(!input) {
 return""; 
}for(var escaped="", i=0, il=input.length;i<il;++i) {
 var charCode=input.charCodeAt(i);internals.isSafe(charCode)?escaped+=input[i]:escaped+=internals.escapeHtmlChar(charCode); 
}return escaped; 
}, internals.escapeJavaScriptChar=function(charCode) {
 if(charCode>=256) {
 return"\\u"+internals.padLeft(""+charCode, 4); 
}var hexValue=new Buffer(String.fromCharCode(charCode), "ascii").toString("hex");return"\\x"+internals.padLeft(hexValue, 2); 
}, internals.escapeHtmlChar=function(charCode) {
 var namedEscape=internals.namedHtml[charCode];if(void 0!==namedEscape) {
 return namedEscape; 
}if(charCode>=256) {
 return"&#"+charCode+";"; 
}var hexValue=new Buffer(String.fromCharCode(charCode), "ascii").toString("hex");return"&#x"+internals.padLeft(hexValue, 2)+";"; 
}, internals.padLeft=function(str, len) {
 for(;str.length<len;) {
 str="0"+str; 
}return str; 
}, internals.isSafe=function(charCode) {
 return void 0!==internals.safeCharCodes[charCode]; 
}, internals.namedHtml={38:"&amp;", 60:"&lt;", 62:"&gt;", 34:"&quot;", 160:"&nbsp;", 162:"&cent;", 163:"&pound;", 164:"&curren;", 169:"&copy;", 174:"&reg;"}, internals.safeCharCodes=(function() {
 for(var safe={}, i=32;i<123;++i) {
 (i>=97||i>=65&&i<=90||i>=48&&i<=57||32===i||46===i||44===i||45===i||58===i||95===i)&&(safe[i]=null); 
}return safe; 
}()); 
}, {}], 86:[function(require, module, exports) {
 var Crypto=require("crypto"), 
Path=require("path"), 
Util=require("util"), 
Escape=require("./escape"), 
internals={};exports.clone=function(obj, seen) {
 if("object"!==typeof obj||null===obj) {
 return obj; 
}var newObj, 
lookup=(seen=seen||{orig:[], copy:[]}).orig.indexOf(obj);if(-1!==lookup) {
 return seen.copy[lookup]; 
}var cloneDeep=!1;if(Array.isArray(obj)) {
 newObj=[], cloneDeep=!0; 
}else if(Buffer.isBuffer(obj)) {
 newObj=new Buffer(obj); 
}else if(obj instanceof Date) {
 newObj=new Date(obj.getTime()); 
}else if(obj instanceof RegExp) {
 newObj=new RegExp(obj); 
}else{
 var proto=Object.getPrototypeOf(obj);proto&&proto.isImmutable?newObj=obj:(newObj=Object.create(proto), cloneDeep=!0); 
}if(seen.orig.push(obj), seen.copy.push(newObj), cloneDeep) {
 for(var keys=Object.getOwnPropertyNames(obj), i=0, il=keys.length;i<il;++i) {
 var key=keys[i], 
descriptor=Object.getOwnPropertyDescriptor(obj, key);descriptor&&(descriptor.get||descriptor.set)?Object.defineProperty(newObj, key, descriptor):newObj[key]=exports.clone(obj[key], seen); 
} 
}return newObj; 
}, exports.merge=function(target, source, isNullOverride, isMergeArrays) {
 if(exports.assert(target&&"object"===typeof target, "Invalid target value: must be an object"), exports.assert(null===source||void 0===source||"object"===typeof source, "Invalid source value: must be null, undefined, or an object"), !source) {
 return target; 
}if(Array.isArray(source)) {
 exports.assert(Array.isArray(target), "Cannot merge array onto an object"), !1===isMergeArrays&&(target.length=0);for(var i=0, il=source.length;i<il;++i) {
 target.push(exports.clone(source[i])); 
}return target; 
}for(var keys=Object.keys(source), k=0, kl=keys.length;k<kl;++k) {
 var key=keys[k], 
value=source[key];value&&"object"===typeof value?!target[key]||"object"!==typeof target[key]||Array.isArray(target[key])^Array.isArray(value)||value instanceof Date||Buffer.isBuffer(value)||value instanceof RegExp?target[key]=exports.clone(value):exports.merge(target[key], value, isNullOverride, isMergeArrays):null!==value&&void 0!==value?target[key]=value:!1!==isNullOverride&&(target[key]=value); 
}return target; 
}, exports.applyToDefaults=function(defaults, options, isNullOverride) {
 if(exports.assert(defaults&&"object"===typeof defaults, "Invalid defaults value: must be an object"), exports.assert(!options||!0===options||"object"===typeof options, "Invalid options value: must be true, falsy or an object"), !options) {
 return null; 
}var copy=exports.clone(defaults);return!0===options?copy:exports.merge(copy, options, !0===isNullOverride, !1); 
}, exports.cloneWithShallow=function(source, keys) {
 if(!source||"object"!==typeof source) {
 return source; 
}var storage=internals.store(source, keys), 
copy=exports.clone(source);return internals.restore(copy, source, storage), copy; 
}, internals.store=function(source, keys) {
 for(var storage={}, i=0, il=keys.length;i<il;++i) {
 var key=keys[i], 
value=exports.reach(source, key);void 0!==value&&(storage[key]=value, internals.reachSet(source, key, void 0)); 
}return storage; 
}, internals.restore=function(copy, source, storage) {
 for(var keys=Object.keys(storage), i=0, il=keys.length;i<il;++i) {
 var key=keys[i];internals.reachSet(copy, key, storage[key]), internals.reachSet(source, key, storage[key]); 
} 
}, internals.reachSet=function(obj, key, value) {
 for(var path=key.split("."), ref=obj, i=0, il=path.length;i<il;++i) {
 var segment=path[i];i+1===il&&(ref[segment]=value), ref=ref[segment]; 
} 
}, exports.applyToDefaultsWithShallow=function(defaults, options, keys) {
 if(exports.assert(defaults&&"object"===typeof defaults, "Invalid defaults value: must be an object"), exports.assert(!options||!0===options||"object"===typeof options, "Invalid options value: must be true, falsy or an object"), exports.assert(keys&&Array.isArray(keys), "Invalid keys"), !options) {
 return null; 
}var copy=exports.cloneWithShallow(defaults, keys);if(!0===options) {
 return copy; 
}var storage=internals.store(options, keys);return exports.merge(copy, options, !1, !1), internals.restore(copy, options, storage), copy; 
}, exports.deepEqual=function(obj, ref, options, seen) {
 options=options||{prototype:!0};var type=typeof obj;if(type!==typeof ref) {
 return!1; 
}if("object"!==type||null===obj||null===ref) {
 return obj===ref?0!==obj||1/obj==1/ref:obj!=obj&&ref!=ref; 
}if(-1!==(seen=seen||[]).indexOf(obj)) {
 return!0; 
}if(seen.push(obj), Array.isArray(obj)) {
 if(!Array.isArray(ref)) {
 return!1; 
}if(!options.part&&obj.length!==ref.length) {
 return!1; 
}for(var i=0, il=obj.length;i<il;++i) {
 if(options.part) {
 for(var found=!1, r=0, rl=ref.length;r<rl;++r) {
 if(exports.deepEqual(obj[i], ref[r], options, seen)) {
 found=!0;break; 
} 
}return found; 
}if(!exports.deepEqual(obj[i], ref[i], options, seen)) {
 return!1; 
} 
}return!0; 
}if(Buffer.isBuffer(obj)) {
 if(!Buffer.isBuffer(ref)) {
 return!1; 
}if(obj.length!==ref.length) {
 return!1; 
}for(var j=0, jl=obj.length;j<jl;++j) {
 if(obj[j]!==ref[j]) {
 return!1; 
} 
}return!0; 
}if(obj instanceof Date) {
 return ref instanceof Date&&obj.getTime()===ref.getTime(); 
}if(obj instanceof RegExp) {
 return ref instanceof RegExp&&obj.toString()===ref.toString(); 
}if(options.prototype&&Object.getPrototypeOf(obj)!==Object.getPrototypeOf(ref)) {
 return!1; 
}var keys=Object.getOwnPropertyNames(obj);if(!options.part&&keys.length!==Object.getOwnPropertyNames(ref).length) {
 return!1; 
}for(var k=0, kl=keys.length;k<kl;++k) {
 var key=keys[k], 
descriptor=Object.getOwnPropertyDescriptor(obj, key);if(descriptor.get) {
 if(!exports.deepEqual(descriptor, Object.getOwnPropertyDescriptor(ref, key), options, seen)) {
 return!1; 
} 
}else if(!exports.deepEqual(obj[key], ref[key], options, seen)) {
 return!1; 
} 
}return!0; 
}, exports.unique=function(array, key) {
 for(var index={}, result=[], i=0, il=array.length;i<il;++i) {
 var id=key?array[i][key]:array[i];!0!==index[id]&&(result.push(array[i]), index[id]=!0); 
}return result; 
}, exports.mapToObject=function(array, key) {
 if(!array) {
 return null; 
}for(var obj={}, i=0, il=array.length;i<il;++i) {
 key?array[i][key]&&(obj[array[i][key]]=!0):obj[array[i]]=!0; 
}return obj; 
}, exports.intersect=function(array1, array2, justFirst) {
 if(!array1||!array2) {
 return[]; 
}for(var common=[], hash=Array.isArray(array1)?exports.mapToObject(array1):array1, found={}, i=0, il=array2.length;i<il;++i) {
 if(hash[array2[i]]&&!found[array2[i]]) {
 if(justFirst) {
 return array2[i]; 
}common.push(array2[i]), found[array2[i]]=!0; 
} 
}return justFirst?null:common; 
}, exports.contain=function(ref, values, options) {
 var compare, compareFlags, 
valuePairs=null;if("object"!==typeof ref||"object"!==typeof values||Array.isArray(ref)||Array.isArray(values)?values=[].concat(values):(valuePairs=values, values=Object.keys(values)), options=options||{}, exports.assert(arguments.length>=2, "Insufficient arguments"), exports.assert("string"===typeof ref||"object"===typeof ref, "Reference must be string or an object"), exports.assert(values.length, "Values array cannot be empty"), options.deep) {
 compare=exports.deepEqual;var hasOnly=options.hasOwnProperty("only"), 
hasPart=options.hasOwnProperty("part");compareFlags={prototype:hasOnly?options.only:!!hasPart&&!options.part, part:hasOnly?!options.only:!hasPart||options.part}; 
}else {
 compare=function(a, b) {
 return a===b; 
}; 
}for(var misses=!1, matches=new Array(values.length), i=0, il=matches.length;i<il;++i) {
 matches[i]=0; 
}if("string"===typeof ref) {
 var pattern="(";for(i=0, il=values.length;i<il;++i) {
 var value=values[i];exports.assert("string"===typeof value, "Cannot compare string reference to non-string value"), pattern+=(i?"|":"")+exports.escapeRegex(value); 
}var regex=new RegExp(pattern+")", "g");misses=!!ref.replace(regex, function($0, $1) {
 var index=values.indexOf($1);return++matches[index], ""; 
}); 
}else if(Array.isArray(ref)) {
 for(i=0, il=ref.length;i<il;++i) {
 for(var j=0, jl=values.length, matched=!1;j<jl&&!1===matched;++j) {
 matched=compare(values[j], ref[i], compareFlags)&&j; 
}!1!==matched?++matches[matched]:misses=!0; 
} 
}else{
 var keys=Object.keys(ref);for(i=0, il=keys.length;i<il;++i) {
 var key=keys[i], 
pos=values.indexOf(key);if(-1!==pos) {
 if(valuePairs&&!compare(valuePairs[key], ref[key], compareFlags)) {
 return!1; 
}++matches[pos]; 
}else {
 misses=!0; 
} 
} 
}var result=!1;for(i=0, il=matches.length;i<il;++i) {
 if(result=result||!!matches[i], options.once&&matches[i]>1||!options.part&&!matches[i]) {
 return!1; 
} 
}return(!options.only||!misses)&&result; 
}, exports.flatten=function(array, target) {
 for(var result=target||[], i=0, il=array.length;i<il;++i) {
 Array.isArray(array[i])?exports.flatten(array[i], result):result.push(array[i]); 
}return result; 
}, exports.reach=function(obj, chain, options) {
 if(!1===chain||null===chain||void 0===chain) {
 return obj; 
}"string"===typeof(options=options||{})&&(options={separator:options});for(var path=chain.split(options.separator||"."), ref=obj, i=0, il=path.length;i<il;++i) {
 var key=path[i];if("-"===key[0]&&Array.isArray(ref)&&(key=key.slice(1, key.length), key=ref.length-key), !ref||!ref.hasOwnProperty(key)||"object"!==typeof ref&&!1===options.functions) {
 exports.assert(!options.strict||i+1===il, "Missing segment", key, "in reach path ", chain), exports.assert("object"===typeof ref||!0===options.functions||"function"!==typeof ref, "Invalid segment", key, "in reach path ", chain), ref=options.default;break; 
}ref=ref[key]; 
}return ref; 
}, exports.reachTemplate=function(obj, template, options) {
 return template.replace(/{([^}]+)}/g, function($0, chain) {
 var value=exports.reach(obj, chain, options);return void 0===value||null===value?"":value; 
}); 
}, exports.formatStack=function(stack) {
 for(var trace=[], i=0, il=stack.length;i<il;++i) {
 var item=stack[i];trace.push([item.getFileName(), item.getLineNumber(), item.getColumnNumber(), item.getFunctionName(), item.isConstructor()]); 
}return trace; 
}, exports.formatTrace=function(trace) {
 for(var display=[], i=0, il=trace.length;i<il;++i) {
 var row=trace[i];display.push((row[4]?"new ":"")+row[3]+" ("+row[0]+":"+row[1]+":"+row[2]+")"); 
}return display; 
}, exports.callStack=function(slice) {
 var v8=Error.prepareStackTrace;Error.prepareStackTrace=function(err, stack) {
 return stack; 
};var capture={};Error.captureStackTrace(capture, arguments.callee);var stack=capture.stack;Error.prepareStackTrace=v8;var trace=exports.formatStack(stack);return slice?trace.slice(slice):trace; 
}, exports.displayStack=function(slice) {
 var trace=exports.callStack(void 0===slice?1:slice+1);return exports.formatTrace(trace); 
}, exports.abortThrow=!1, exports.abort=function(message, hideStack) {
 if("test"===process.env.NODE_ENV||!0===exports.abortThrow) {
 throw new Error(message||"Unknown error"); 
}hideStack||exports.displayStack(1).join("\n\t"), process.exit(1); 
}, exports.assert=function(condition) {
 if(!condition) {
 if(2===arguments.length&&arguments[1]instanceof Error) {
 throw arguments[1]; 
}for(var msgs=[], i=1, il=arguments.length;i<il;++i) {
 ""!==arguments[i]&&msgs.push(arguments[i]); 
}throw msgs=msgs.map(function(msg) {
 return"string"===typeof msg?msg:msg instanceof Error?msg.message:exports.stringify(msg); 
}), new Error(msgs.join(" ")||"Unknown error"); 
} 
}, exports.Timer=function() {
 this.ts=0, this.reset(); 
}, exports.Timer.prototype.reset=function() {
 this.ts=Date.now(); 
}, exports.Timer.prototype.elapsed=function() {
 return Date.now()-this.ts; 
}, exports.Bench=function() {
 this.ts=0, this.reset(); 
}, exports.Bench.prototype.reset=function() {
 this.ts=exports.Bench.now(); 
}, exports.Bench.prototype.elapsed=function() {
 return exports.Bench.now()-this.ts; 
}, exports.Bench.now=function() {
 var ts=process.hrtime();return 1e3*ts[0]+ts[1]/1e6; 
}, exports.escapeRegex=function(string) {
 return string.replace(/[\^\$\.\*\+\-\?\=\!\:\|\\\/\(\)\[\]\{\}\,]/g, "\\$&"); 
}, exports.base64urlEncode=function(value, encoding) {
 return(Buffer.isBuffer(value)?value:new Buffer(value, encoding||"binary")).toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/\=/g, ""); 
}, exports.base64urlDecode=function(value, encoding) {
 if(value&&!/^[\w\-]*$/.test(value)) {
 return new Error("Invalid character"); 
}try{
 var buf=new Buffer(value, "base64");return"buffer"===encoding?buf:buf.toString(encoding||"binary"); 
}catch(err) {
 return err; 
} 
}, exports.escapeHeaderAttribute=function(attribute) {
 return exports.assert(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~\"\\]*$/.test(attribute), "Bad attribute value ("+attribute+")"), attribute.replace(/\\/g, "\\\\").replace(/\"/g, '\\"'); 
}, exports.escapeHtml=function(string) {
 return Escape.escapeHtml(string); 
}, exports.escapeJavaScript=function(string) {
 return Escape.escapeJavaScript(string); 
}, exports.nextTick=function(callback) {
 return function() {
 var args=arguments;process.nextTick(function() {
 callback.apply(null, args); 
}); 
}; 
}, exports.once=function(method) {
 if(method._hoekOnce) {
 return method; 
}var once=!1, 
wrapped=function() {
 once||(once=!0, method.apply(null, arguments)); 
};return wrapped._hoekOnce=!0, wrapped; 
}, exports.isAbsolutePath=function(path, platform) {
 return!!path&&(Path.isAbsolute?Path.isAbsolute(path):"win32"!==(platform=platform||process.platform)?"/"===path[0]:!!/^(?:[a-zA-Z]:[\\\/])|(?:[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/])/.test(path)); 
}, exports.isInteger=function(value) {
 return"number"===typeof value&&parseFloat(value)===parseInt(value, 10)&&!isNaN(value); 
}, exports.ignore=function() {}, exports.inherits=Util.inherits, exports.format=Util.format, exports.transform=function(source, transform, options) {
 if(exports.assert(null===source||void 0===source||"object"===typeof source||Array.isArray(source), "Invalid source object: must be null, undefined, an object, or an array"), Array.isArray(source)) {
 for(var results=[], i=0, il=source.length;i<il;++i) {
 results.push(exports.transform(source[i], transform, options)); 
}return results; 
}for(var result={}, keys=Object.keys(transform), k=0, kl=keys.length;k<kl;++k) {
 var segment, 
key=keys[k], 
path=key.split("."), 
sourcePath=transform[key];exports.assert("string"===typeof sourcePath, 'All mappings must be "." delineated strings');for(var res=result;path.length>1;) {
 res[segment=path.shift()]||(res[segment]={}), res=res[segment]; 
}res[segment=path.shift()]=exports.reach(source, sourcePath, options); 
}return result; 
}, exports.uniqueFilename=function(path, extension) {
 extension=extension?"."!==extension[0]?"."+extension:extension:"", path=Path.resolve(path);var name=[Date.now(), process.pid, Crypto.randomBytes(8).toString("hex")].join("-")+extension;return Path.join(path, name); 
}, exports.stringify=function() {
 try{
 return JSON.stringify.apply(null, arguments); 
}catch(err) {
 return"[Cannot display object: "+err.message+"]"; 
} 
}, exports.shallow=function(source) {
 for(var target={}, keys=Object.keys(source), i=0, il=keys.length;i<il;++i) {
 var key=keys[i];target[key]=source[key]; 
}return target; 
}; 
}, {"./escape":85, "crypto":void 0, "path":void 0, "util":void 0}], 87:[function(require, module, exports) {
 arguments[4][77][0].apply(exports, arguments); 
}, {"./lib":88, "dup":77}], 88:[function(require, module, exports) {
 var Dgram=require("dgram"), 
Dns=require("dns"), 
Hoek=require("hoek"), 
internals={};exports.time=function(options, callback) {
 2!==arguments.length&&(callback=arguments[0], options={});var settings=Hoek.clone(options);settings.host=settings.host||"pool.ntp.org", settings.port=settings.port||123, settings.resolveReference=settings.resolveReference||!1;var timeoutId=0, 
sent=0, 
finish=function(err, result) {
 return timeoutId&&(clearTimeout(timeoutId), timeoutId=0), socket.removeAllListeners(), socket.once("error", internals.ignore), socket.close(), callback(err, result); 
};finish=Hoek.once(finish);var socket=Dgram.createSocket("udp4");socket.once("error", function(err) {
 return finish(err); 
}), socket.on("message", function(buffer, rinfo) {
 var received=Date.now(), 
message=new internals.NtpMessage(buffer);if(!message.isValid) {
 return finish(new Error("Invalid server response"), message); 
}if(message.originateTimestamp!==sent) {
 return finish(new Error("Wrong originate timestamp"), message); 
}var T1=message.originateTimestamp, 
T2=message.receiveTimestamp, 
T3=message.transmitTimestamp, 
T4=received;if(message.d=T4-T1-(T3-T2), message.t=(T2-T1+(T3-T4))/2, message.receivedLocally=received, !settings.resolveReference||"secondary"!==message.stratum) {
 return finish(null, message); 
}Dns.reverse(message.referenceId, function(err, domains) {
 return err||(message.referenceHost=domains[0]), finish(null, message); 
}); 
}), settings.timeout&&(timeoutId=setTimeout(function() {
 return timeoutId=0, finish(new Error("Timeout")); 
}, settings.timeout));for(var message=new Buffer(48), i=0;i<48;i++) {
 message[i]=0; 
}message[0]=35, sent=Date.now(), internals.fromMsecs(sent, message, 40), socket.send(message, 0, message.length, settings.port, settings.host, function(err, bytes) {
 if(err||48!==bytes) {
 return finish(err||new Error("Could not send entire message")); 
} 
}); 
}, internals.NtpMessage=function(buffer) {
 if(this.isValid=!1, 48===buffer.length) {
 switch(buffer[0]>>6) {
 case 0:this.leapIndicator="no-warning";break;case 1:this.leapIndicator="last-minute-61";break;case 2:this.leapIndicator="last-minute-59";break;case 3:this.leapIndicator="alarm"; 
}var vn=(56&buffer[0])>>3;switch(this.version=vn, 7&buffer[0]) {
 case 1:this.mode="symmetric-active";break;case 2:this.mode="symmetric-passive";break;case 3:this.mode="client";break;case 4:this.mode="server";break;case 5:this.mode="broadcast";break;case 0:case 6:case 7:this.mode="reserved"; 
}var stratum=buffer[1];this.stratum=0===stratum?"death":1===stratum?"primary":stratum<=15?"secondary":"reserved", this.pollInterval=1e3*Math.round(Math.pow(2, buffer[2])), this.precision=1e3*Math.pow(2, buffer[3]);var rootDelay=256*(256*(256*buffer[4]+buffer[5])+buffer[6])+buffer[7];switch(this.rootDelay=rootDelay/65536*1e3, this.rootDispersion=1e3*((buffer[8]<<8)+buffer[9]+((buffer[10]<<8)+buffer[11])/Math.pow(2, 16)), this.referenceId="", this.stratum) {
 case"death":case"primary":this.referenceId=String.fromCharCode(buffer[12])+String.fromCharCode(buffer[13])+String.fromCharCode(buffer[14])+String.fromCharCode(buffer[15]);break;case"secondary":this.referenceId=buffer[12]+"."+buffer[13]+"."+buffer[14]+"."+buffer[15]; 
}return this.referenceTimestamp=internals.toMsecs(buffer, 16), this.originateTimestamp=internals.toMsecs(buffer, 24), this.receiveTimestamp=internals.toMsecs(buffer, 32), this.transmitTimestamp=internals.toMsecs(buffer, 40), 4===this.version&&"reserved"!==this.stratum&&"server"===this.mode&&this.originateTimestamp&&this.receiveTimestamp&&this.transmitTimestamp&&(this.isValid=!0), this; 
} 
}, internals.toMsecs=function(buffer, offset) {
 for(var seconds=0, fraction=0, i=0;i<4;++i) {
 seconds=256*seconds+buffer[offset+i]; 
}for(i=4;i<8;++i) {
 fraction=256*fraction+buffer[offset+i]; 
}return 1e3*(seconds-2208988800+fraction/Math.pow(2, 32)); 
}, internals.fromMsecs=function(ts, buffer, offset) {
 var seconds=Math.floor(ts/1e3)+2208988800, 
fraction=Math.round(ts%1e3/1e3*Math.pow(2, 32));buffer[offset+0]=(4278190080&seconds)>>24, buffer[offset+1]=(16711680&seconds)>>16, buffer[offset+2]=(65280&seconds)>>8, buffer[offset+3]=255&seconds, buffer[offset+4]=(4278190080&fraction)>>24, buffer[offset+5]=(16711680&fraction)>>16, buffer[offset+6]=(65280&fraction)>>8, buffer[offset+7]=255&fraction; 
}, internals.last={offset:0, expires:0, host:"", port:0}, exports.offset=function(options, callback) {
 2!==arguments.length&&(callback=arguments[0], options={});var now=Date.now(), 
clockSyncRefresh=options.clockSyncRefresh||864e5;internals.last.offset&&internals.last.host===options.host&&internals.last.port===options.port&&now<internals.last.expires?process.nextTick(function() {
 callback(null, internals.last.offset); 
}):exports.time(options, function(err, time) {
 return err?callback(err, 0):(internals.last={offset:Math.round(time.t), expires:now+clockSyncRefresh, host:options.host, port:options.port}, callback(null, internals.last.offset)); 
}); 
}, internals.now={intervalId:0}, exports.start=function(options, callback) {
 2!==arguments.length&&(callback=arguments[0], options={}), internals.now.intervalId?process.nextTick(function() {
 callback(); 
}):exports.offset(options, function(err, offset) {
 return internals.now.intervalId=setInterval(function() {
 exports.offset(options, function() {}); 
}, options.clockSyncRefresh||864e5), callback(); 
}); 
}, exports.stop=function() {
 internals.now.intervalId&&(clearInterval(internals.now.intervalId), internals.now.intervalId=0); 
}, exports.isLive=function() {
 return!!internals.now.intervalId; 
}, exports.now=function() {
 var now=Date.now();return!exports.isLive()||now>=internals.last.expires?now:now+internals.last.offset; 
}, internals.ignore=function() {}; 
}, {dgram:void 0, dns:void 0, hoek:86}], 89:[function(require, module, exports) {
 module.exports={name:"hawk", description:"HTTP Hawk Authentication Scheme", version:"2.3.1", author:{name:"Eran Hammer", email:"eran@hammer.io", url:"http://hueniverse.com"}, contributors:[], repository:{type:"git", url:"git://github.com/hueniverse/hawk"}, main:"index", keywords:["http", "authentication", "scheme", "hawk"], engines:{node:">=0.8.0"}, browser:"./lib/browser.js", dependencies:{hoek:"2.x.x", boom:"2.x.x", cryptiles:"2.x.x", sntp:"1.x.x"}, devDependencies:{code:"1.x.x", lab:"5.x.x"}, scripts:{test:"make test-cov"}, licenses:[{type:"BSD", url:"http://github.com/hueniverse/hawk/raw/master/LICENSE"}], gitHead:"492632da51ecedd5f59ce96f081860ad24ce6532", bugs:{url:"https://github.com/hueniverse/hawk/issues"}, homepage:"https://github.com/hueniverse/hawk", _id:"hawk@2.3.1", _shasum:"1e731ce39447fa1d0f6d707f7bceebec0fd1ec1f", _from:"hawk@~2.3.0", _npmVersion:"1.4.28", _npmUser:{name:"hueniverse", email:"eran@hueniverse.com"}, maintainers:[{name:"hueniverse", email:"eran@hueniverse.com"}], dist:{shasum:"1e731ce39447fa1d0f6d707f7bceebec0fd1ec1f", tarball:"https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz"}, directories:{}, deprecated:"This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", _resolved:"https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz"}; 
}, {}], 90:[function(require, module, exports) {
 var parser=require("./parser"), 
signer=require("./signer"), 
verify=require("./verify"), 
util=require("./util");module.exports={parse:parser.parseRequest, parseRequest:parser.parseRequest, sign:signer.signRequest, signRequest:signer.signRequest, sshKeyToPEM:util.sshKeyToPEM, sshKeyFingerprint:util.fingerprint, pemToRsaSSHKey:util.pemToRsaSSHKey, verify:verify.verifySignature, verifySignature:verify.verifySignature}; 
}, {"./parser":91, "./signer":92, "./util":93, "./verify":94}], 91:[function(require, module, exports) {
 var assert=require("assert-plus"), 
util=require("util"), 
Algorithms={"rsa-sha1":!0, "rsa-sha256":!0, "rsa-sha512":!0, "dsa-sha1":!0, "hmac-sha1":!0, "hmac-sha256":!0, "hmac-sha512":!0}, 
State_New=0, 
State_Params=1, 
ParamsState_Name=0, 
ParamsState_Quote=1, 
ParamsState_Value=2, 
ParamsState_Comma=3;function HttpSignatureError(message, caller) {
 Error.captureStackTrace&&Error.captureStackTrace(this, caller||HttpSignatureError), this.message=message, this.name=caller.name; 
}function ExpiredRequestError(message) {
 HttpSignatureError.call(this, message, ExpiredRequestError); 
}function InvalidHeaderError(message) {
 HttpSignatureError.call(this, message, InvalidHeaderError); 
}function InvalidParamsError(message) {
 HttpSignatureError.call(this, message, InvalidParamsError); 
}function MissingHeaderError(message) {
 HttpSignatureError.call(this, message, MissingHeaderError); 
}util.inherits(HttpSignatureError, Error), util.inherits(ExpiredRequestError, HttpSignatureError), util.inherits(InvalidHeaderError, HttpSignatureError), util.inherits(InvalidParamsError, HttpSignatureError), util.inherits(MissingHeaderError, HttpSignatureError), module.exports={parseRequest:function(request, options) {
 if(assert.object(request, "request"), assert.object(request.headers, "request.headers"), void 0===options&&(options={}), void 0===options.headers&&(options.headers=[request.headers["x-date"]?"x-date":"date"]), assert.object(options, "options"), assert.arrayOfString(options.headers, "options.headers"), assert.optionalNumber(options.clockSkew, "options.clockSkew"), !request.headers.authorization) {
 throw new MissingHeaderError("no authorization header present in the request"); 
}options.clockSkew=options.clockSkew||300;var date, 
i=0, 
state=State_New, 
substate=ParamsState_Name, 
tmpName="", 
tmpValue="", 
parsed={scheme:"", params:{}, signingString:"", get algorithm() {
 return this.params.algorithm.toUpperCase(); 
}, get keyId() {
 return this.params.keyId; 
}}, 
authz=request.headers.authorization;for(i=0;i<authz.length;i++) {
 var c=authz.charAt(i);switch(Number(state)) {
 case State_New:" "!==c?parsed.scheme+=c:state=State_Params;break;case State_Params:switch(Number(substate)) {
 case ParamsState_Name:var code=c.charCodeAt(0);if(code>=65&&code<=90||code>=97&&code<=122) {
 tmpName+=c; 
}else{
 if("="!==c) {
 throw new InvalidHeaderError("bad param format"); 
}if(0===tmpName.length) {
 throw new InvalidHeaderError("bad param format"); 
}substate=ParamsState_Quote; 
}break;case ParamsState_Quote:if('"'!==c) {
 throw new InvalidHeaderError("bad param format"); 
}tmpValue="", substate=ParamsState_Value;break;case ParamsState_Value:'"'===c?(parsed.params[tmpName]=tmpValue, substate=ParamsState_Comma):tmpValue+=c;break;case ParamsState_Comma:if(","!==c) {
 throw new InvalidHeaderError("bad param format"); 
}tmpName="", substate=ParamsState_Name;break;default:throw new Error("Invalid substate"); 
}break;default:throw new Error("Invalid substate"); 
} 
}if(parsed.params.headers&&""!==parsed.params.headers?parsed.params.headers=parsed.params.headers.split(" "):request.headers["x-date"]?parsed.params.headers=["x-date"]:parsed.params.headers=["date"], !parsed.scheme||"Signature"!==parsed.scheme) {
 throw new InvalidHeaderError('scheme was not "Signature"'); 
}if(!parsed.params.keyId) {
 throw new InvalidHeaderError("keyId was not specified"); 
}if(!parsed.params.algorithm) {
 throw new InvalidHeaderError("algorithm was not specified"); 
}if(!parsed.params.signature) {
 throw new InvalidHeaderError("signature was not specified"); 
}if(parsed.params.algorithm=parsed.params.algorithm.toLowerCase(), !Algorithms[parsed.params.algorithm]) {
 throw new InvalidParamsError(parsed.params.algorithm+" is not supported"); 
}for(i=0;i<parsed.params.headers.length;i++) {
 var h=parsed.params.headers[i].toLowerCase();if(parsed.params.headers[i]=h, "request-line"!==h) {
 var value=request.headers[h];if(!value) {
 throw new MissingHeaderError(h+" was not in the request"); 
}parsed.signingString+=h+": "+value; 
}else {
 parsed.signingString+=request.method+" "+request.url+" HTTP/"+request.httpVersion; 
}i+1<parsed.params.headers.length&&(parsed.signingString+="\n"); 
}if(request.headers.date||request.headers["x-date"]) {
 date=request.headers["x-date"]?new Date(request.headers["x-date"]):new Date(request.headers.date);var now=new Date, 
skew=Math.abs(now.getTime()-date.getTime());if(skew>1e3*options.clockSkew) {
 throw new ExpiredRequestError("clock skew of "+skew/1e3+"s was greater than "+options.clockSkew+"s"); 
} 
}if(options.headers.forEach(function(hdr) {
 if(parsed.params.headers.indexOf(hdr)<0) {
 throw new MissingHeaderError(hdr+" was not a signed header"); 
} 
}), options.algorithms&&-1===options.algorithms.indexOf(parsed.params.algorithm)) {
 throw new InvalidParamsError(parsed.params.algorithm+" is not a supported algorithm"); 
}return parsed; 
}}; 
}, {"assert-plus":101, "util":void 0}], 92:[function(require, module, exports) {
 var assert=require("assert-plus"), 
crypto=require("crypto"), 
sprintf=(require("http"), require("util").format), 
Algorithms={"rsa-sha1":!0, "rsa-sha256":!0, "rsa-sha512":!0, "dsa-sha1":!0, "hmac-sha1":!0, "hmac-sha256":!0, "hmac-sha512":!0};function MissingHeaderError(message) {
 this.name="MissingHeaderError", this.message=message, this.stack=(new Error).stack; 
}function InvalidAlgorithmError(message) {
 this.name="InvalidAlgorithmError", this.message=message, this.stack=(new Error).stack; 
}function _pad(val) {
 return parseInt(val, 10)<10&&(val="0"+val), val; 
}MissingHeaderError.prototype=new Error, InvalidAlgorithmError.prototype=new Error, module.exports={signRequest:function(request, options) {
 var date, i;if(assert.object(request, "request"), assert.object(options, "options"), assert.optionalString(options.algorithm, "options.algorithm"), assert.string(options.keyId, "options.keyId"), assert.optionalArrayOfString(options.headers, "options.headers"), assert.optionalString(options.httpVersion, "options.httpVersion"), request.getHeader("Date")||request.setHeader("Date", ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][(date=new Date).getUTCDay()]+", "+_pad(date.getUTCDate())+" "+["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][date.getUTCMonth()]+" "+date.getUTCFullYear()+" "+_pad(date.getUTCHours())+":"+_pad(date.getUTCMinutes())+":"+_pad(date.getUTCSeconds())+" GMT"), options.headers||(options.headers=["date"]), options.algorithm||(options.algorithm="rsa-sha256"), options.httpVersion||(options.httpVersion="1.1"), options.algorithm=options.algorithm.toLowerCase(), !Algorithms[options.algorithm]) {
 throw new InvalidAlgorithmError(options.algorithm+" is not supported"); 
}var stringToSign="";for(i=0;i<options.headers.length;i++) {
 if("string"!==typeof options.headers[i]) {
 throw new TypeError("options.headers must be an array of Strings"); 
}var h=options.headers[i].toLowerCase();if("request-line"!==h) {
 var value=request.getHeader(h);if(!value) {
 throw new MissingHeaderError(h+" was not in the request"); 
}stringToSign+=h+": "+value; 
}else {
 stringToSign+=request.method+" "+request.path+" HTTP/"+options.httpVersion; 
}i+1<options.headers.length&&(stringToSign+="\n"); 
}var signature, 
alg=options.algorithm.match(/(hmac|rsa)-(\w+)/);if("hmac"===alg[1]) {
 var hmac=crypto.createHmac(alg[2].toUpperCase(), options.key);hmac.update(stringToSign), signature=hmac.digest("base64"); 
}else{
 var signer=crypto.createSign(options.algorithm.toUpperCase());signer.update(stringToSign), signature=signer.sign(options.key, "base64"); 
}return request.setHeader("Authorization", sprintf('Signature keyId="%s",algorithm="%s",headers="%s",signature="%s"', options.keyId, options.algorithm, options.headers.join(" "), signature)), !0; 
}}; 
}, {"assert-plus":101, "crypto":void 0, "http":void 0, "util":void 0}], 93:[function(require, module, exports) {
 var assert=require("assert-plus"), 
crypto=require("crypto"), 
asn1=require("asn1"), 
ctype=require("ctype");function readNext(buffer, offset) {
 var len=ctype.ruint32(buffer, "big", offset), 
newOffset=(offset+=4)+len;return{data:buffer.slice(offset, newOffset), offset:newOffset}; 
}function writeInt(writer, buffer) {
 writer.writeByte(2), writer.writeLength(buffer.length);for(var i=0;i<buffer.length;i++) {
 writer.writeByte(buffer[i]); 
}return writer; 
}module.exports={sshKeyToPEM:function(key) {
 if(assert.string(key, "ssh_key"), /^ssh-rsa.*/.test(key)) {
 return (function(key) {
 var buffer, der, exponent, i, modulus, type, tmp, 
newKey="", 
offset=0;try{
 if(type=(tmp=readNext(buffer=new Buffer(key.split(" ")[1], "base64"), offset)).data.toString(), offset=tmp.offset, "ssh-rsa"!==type) {
 throw new Error("Invalid ssh key type: "+type); 
}exponent=(tmp=readNext(buffer, offset)).data, modulus=(tmp=readNext(buffer, offset=tmp.offset)).data; 
}catch(e) {
 throw new Error("Invalid ssh key: "+key); 
}for((der=new asn1.BerWriter).startSequence(), der.startSequence(), der.writeOID("1.2.840.113549.1.1.1"), der.writeNull(), der.endSequence(), der.startSequence(3), der.writeByte(0), der.startSequence(), writeInt(der, modulus), writeInt(der, exponent), der.endSequence(), der.endSequence(), der.endSequence(), tmp=der.buffer.toString("base64"), i=0;i<tmp.length;i++) {
 i%64==0&&(newKey+="\n"), newKey+=tmp.charAt(i); 
}return/\\n$/.test(newKey)||(newKey+="\n"), "-----BEGIN PUBLIC KEY-----"+newKey+"-----END PUBLIC KEY-----\n"; 
}(key)); 
}if(/^ssh-ds[as].*/.test(key)) {
 return (function(key) {
 var buffer, tmp, der, type, p, q, g, y, 
offset=0, 
newKey="";try{
 if(type=(tmp=readNext(buffer=new Buffer(key.split(" ")[1], "base64"), offset)).data.toString(), offset=tmp.offset, !/^ssh-ds[as].*/.test(type)) {
 throw new Error("Invalid ssh key type: "+type); 
}p=(tmp=readNext(buffer, offset)).data, q=(tmp=readNext(buffer, offset=tmp.offset)).data, g=(tmp=readNext(buffer, offset=tmp.offset)).data, y=(tmp=readNext(buffer, offset=tmp.offset)).data; 
}catch(e) {
 throw new Error("Invalid ssh key: "+key); 
}(der=new asn1.BerWriter).startSequence(), der.startSequence(), der.writeOID("1.2.840.10040.4.1"), der.startSequence(), writeInt(der, p), writeInt(der, q), writeInt(der, g), der.endSequence(), der.endSequence(), der.startSequence(3), der.writeByte(0), writeInt(der, y), der.endSequence(), der.endSequence(), tmp=der.buffer.toString("base64");for(var i=0;i<tmp.length;i++) {
 i%64==0&&(newKey+="\n"), newKey+=tmp.charAt(i); 
}return/\\n$/.test(newKey)||(newKey+="\n"), "-----BEGIN PUBLIC KEY-----"+newKey+"-----END PUBLIC KEY-----\n"; 
}(key)); 
}throw new Error("Only RSA and DSA public keys are allowed"); 
}, fingerprint:function(key) {
 assert.string(key, "ssh_key");var pieces=key.split(" ");if(!pieces||!pieces.length||pieces.length<2) {
 throw new Error("invalid ssh key"); 
}var data=new Buffer(pieces[1], "base64"), 
hash=crypto.createHash("md5");hash.update(data);for(var digest=hash.digest("hex"), fp="", i=0;i<digest.length;i++) {
 i&&i%2==0&&(fp+=":"), fp+=digest[i]; 
}return fp; 
}, pemToRsaSSHKey:function(pem, comment) {
 assert.equal("string", typeof pem, "typeof pem");var cleaned=pem.split("\n").slice(1, -2).join(""), 
buf=new Buffer(cleaned, "base64"), 
der=new asn1.BerReader(buf);der.readSequence(), der.readSequence();var oid=der.readOID();assert.equal(oid, "1.2.840.113549.1.1.1", "pem not in RSA format"), der.readByte(), der.readByte(), der.readSequence(3), der.readByte(), der.readSequence(), assert.equal(der.peek(), asn1.Ber.Integer, "modulus not an integer"), der._offset=der.readLength(der.offset+1);var modulus=der._buf.slice(der.offset, der.offset+der.length);der._offset+=der.length, assert.equal(der.peek(), asn1.Ber.Integer, "exponent not an integer"), der._offset=der.readLength(der.offset+1);var exponent=der._buf.slice(der.offset, der.offset+der.length);der._offset+=der.length;var type=new Buffer("ssh-rsa"), 
buffer=new Buffer(4+type.length+4+modulus.length+4+exponent.length), 
i=0;return buffer.writeUInt32BE(type.length, i), i+=4, type.copy(buffer, i), i+=type.length, buffer.writeUInt32BE(exponent.length, i), i+=4, exponent.copy(buffer, i), i+=exponent.length, buffer.writeUInt32BE(modulus.length, i), i+=4, modulus.copy(buffer, i), i+=modulus.length, type.toString()+" "+buffer.toString("base64")+" "+(comment||""); 
}}; 
}, {"asn1":100, "assert-plus":101, "crypto":void 0, "ctype":104}], 94:[function(require, module, exports) {
 var assert=require("assert-plus"), 
crypto=require("crypto");module.exports={verifySignature:function(parsedSignature, key) {
 assert.object(parsedSignature, "parsedSignature"), assert.string(key, "key");var alg=parsedSignature.algorithm.match(/(HMAC|RSA|DSA)-(\w+)/);if(!alg||3!==alg.length) {
 throw new TypeError("parsedSignature: unsupported algorithm "+parsedSignature.algorithm); 
}if("HMAC"===alg[1]) {
 var hmac=crypto.createHmac(alg[2].toUpperCase(), key);return hmac.update(parsedSignature.signingString), hmac.digest("base64")===parsedSignature.params.signature; 
}var verify=crypto.createVerify(alg[0]);return verify.update(parsedSignature.signingString), verify.verify(key, parsedSignature.params.signature, "base64"); 
}}; 
}, {"assert-plus":101, "crypto":void 0}], 95:[function(require, module, exports) {
 module.exports={newInvalidAsn1Error:function(msg) {
 var e=new Error;return e.name="InvalidAsn1Error", e.message=msg||"", e; 
}}; 
}, {}], 96:[function(require, module, exports) {
 var errors=require("./errors"), 
types=require("./types"), 
Reader=require("./reader"), 
Writer=require("./writer");for(var t in module.exports={Reader:Reader, Writer:Writer}, types) {
 types.hasOwnProperty(t)&&(module.exports[t]=types[t]); 
}for(var e in errors) {
 errors.hasOwnProperty(e)&&(module.exports[e]=errors[e]); 
} 
}, {"./errors":95, "./reader":97, "./types":98, "./writer":99}], 97:[function(require, module, exports) {
 var assert=require("assert"), 
ASN1=require("./types"), 
newInvalidAsn1Error=require("./errors").newInvalidAsn1Error;function Reader(data) {
 if(!data||!Buffer.isBuffer(data)) {
 throw new TypeError("data must be a node Buffer"); 
}this._buf=data, this._size=data.length, this._len=0, this._offset=0;var self=this;this.__defineGetter__("length", function() {
 return self._len; 
}), this.__defineGetter__("offset", function() {
 return self._offset; 
}), this.__defineGetter__("remain", function() {
 return self._size-self._offset; 
}), this.__defineGetter__("buffer", function() {
 return self._buf.slice(self._offset); 
}); 
}Reader.prototype.readByte=function(peek) {
 if(this._size-this._offset<1) {
 return null; 
}var b=255&this._buf[this._offset];return peek||(this._offset+=1), b; 
}, Reader.prototype.peek=function() {
 return this.readByte(!0); 
}, Reader.prototype.readLength=function(offset) {
 if(void 0===offset&&(offset=this._offset), offset>=this._size) {
 return null; 
}var lenB=255&this._buf[offset++];if(null===lenB) {
 return null; 
}if(128==(128&lenB)) {
 if(0==(lenB&=127)) {
 throw newInvalidAsn1Error("Indefinite length not supported"); 
}if(lenB>4) {
 throw newInvalidAsn1Error("encoding too long"); 
}if(this._size-offset<lenB) {
 return null; 
}this._len=0;for(var i=0;i<lenB;i++) {
 this._len=(this._len<<8)+(255&this._buf[offset++]); 
} 
}else {
 this._len=lenB; 
}return offset; 
}, Reader.prototype.readSequence=function(tag) {
 var seq=this.peek();if(null===seq) {
 return null; 
}if(void 0!==tag&&tag!==seq) {
 throw newInvalidAsn1Error("Expected 0x"+tag.toString(16)+": got 0x"+seq.toString(16)); 
}var o=this.readLength(this._offset+1);return null===o?null:(this._offset=o, seq); 
}, Reader.prototype.readInt=function() {
 return this._readTag(ASN1.Integer); 
}, Reader.prototype.readBoolean=function() {
 return 0!==this._readTag(ASN1.Boolean); 
}, Reader.prototype.readEnumeration=function() {
 return this._readTag(ASN1.Enumeration); 
}, Reader.prototype.readString=function(tag, retbuf) {
 tag||(tag=ASN1.OctetString);var b=this.peek();if(null===b) {
 return null; 
}if(b!==tag) {
 throw newInvalidAsn1Error("Expected 0x"+tag.toString(16)+": got 0x"+b.toString(16)); 
}var o=this.readLength(this._offset+1);if(null===o) {
 return null; 
}if(this.length>this._size-o) {
 return null; 
}if(this._offset=o, 0===this.length) {
 return""; 
}var str=this._buf.slice(this._offset, this._offset+this.length);return this._offset+=this.length, retbuf?str:str.toString("utf8"); 
}, Reader.prototype.readOID=function(tag) {
 tag||(tag=ASN1.OID);var b=this.peek();if(null===b) {
 return null; 
}if(b!==tag) {
 throw newInvalidAsn1Error("Expected 0x"+tag.toString(16)+": got 0x"+b.toString(16)); 
}var o=this.readLength(this._offset+1);if(null===o) {
 return null; 
}if(this.length>this._size-o) {
 return null; 
}this._offset=o;for(var values=[], value=0, i=0;i<this.length;i++) {
 var byte=255&this._buf[this._offset++];value<<=7, value+=127&byte, 0==(128&byte)&&(values.push(value), value=0); 
}return value=values.shift(), values.unshift(value%40), values.unshift(value/40>>0), values.join("."); 
}, Reader.prototype._readTag=function(tag) {
 assert.ok(void 0!==tag);var b=this.peek();if(null===b) {
 return null; 
}if(b!==tag) {
 throw newInvalidAsn1Error("Expected 0x"+tag.toString(16)+": got 0x"+b.toString(16)); 
}var o=this.readLength(this._offset+1);if(null===o) {
 return null; 
}if(this.length>4) {
 throw newInvalidAsn1Error("Integer too long: "+this.length); 
}if(this.length>this._size-o) {
 return null; 
}this._offset=o;var fb=this._buf[this._offset++], 
value=0;value=127&fb;for(var i=1;i<this.length;i++) {
 value<<=8, value|=255&this._buf[this._offset++]; 
}return 128==(128&fb)&&(value=-value), value; 
}, module.exports=Reader; 
}, {"./errors":95, "./types":98, "assert":void 0}], 98:[function(require, module, exports) {
 module.exports={EOC:0, Boolean:1, Integer:2, BitString:3, OctetString:4, Null:5, OID:6, ObjectDescriptor:7, External:8, Real:9, Enumeration:10, PDV:11, Utf8String:12, RelativeOID:13, Sequence:16, Set:17, NumericString:18, PrintableString:19, T61String:20, VideotexString:21, IA5String:22, UTCTime:23, GeneralizedTime:24, GraphicString:25, VisibleString:26, GeneralString:28, UniversalString:29, CharacterString:30, BMPString:31, Constructor:32, Context:128}; 
}, {}], 99:[function(require, module, exports) {
 var assert=require("assert"), 
ASN1=require("./types"), 
DEFAULT_OPTS=(require("./errors").newInvalidAsn1Error, {size:1024, growthFactor:8});function Writer(options) {
 var from, to;from=DEFAULT_OPTS, to=options||{}, assert.ok(from), assert.equal(typeof from, "object"), assert.ok(to), assert.equal(typeof to, "object"), Object.getOwnPropertyNames(from).forEach(function(key) {
 if(!to[key]) {
 var value=Object.getOwnPropertyDescriptor(from, key);Object.defineProperty(to, key, value); 
} 
}), options=to, this._buf=new Buffer(options.size||1024), this._size=this._buf.length, this._offset=0, this._options=options, this._seq=[];var self=this;this.__defineGetter__("buffer", function() {
 if(self._seq.length) {
 throw new InvalidAsn1Error(self._seq.length+" unended sequence(s)"); 
}return self._buf.slice(0, self._offset); 
}); 
}Writer.prototype.writeByte=function(b) {
 if("number"!==typeof b) {
 throw new TypeError("argument must be a Number"); 
}this._ensure(1), this._buf[this._offset++]=b; 
}, Writer.prototype.writeInt=function(i, tag) {
 if("number"!==typeof i) {
 throw new TypeError("argument must be a Number"); 
}"number"!==typeof tag&&(tag=ASN1.Integer);for(var sz=4;(0==(4286578688&i)||4286578688==(4286578688&i))&&sz>1;) {
 sz--, i<<=8; 
}if(sz>4) {
 throw new InvalidAsn1Error("BER ints cannot be > 0xffffffff"); 
}for(this._ensure(2+sz), this._buf[this._offset++]=tag, this._buf[this._offset++]=sz;sz-- >0;) {
 this._buf[this._offset++]=(4278190080&i)>>24, i<<=8; 
} 
}, Writer.prototype.writeNull=function() {
 this.writeByte(ASN1.Null), this.writeByte(0); 
}, Writer.prototype.writeEnumeration=function(i, tag) {
 if("number"!==typeof i) {
 throw new TypeError("argument must be a Number"); 
}return"number"!==typeof tag&&(tag=ASN1.Enumeration), this.writeInt(i, tag); 
}, Writer.prototype.writeBoolean=function(b, tag) {
 if("boolean"!==typeof b) {
 throw new TypeError("argument must be a Boolean"); 
}"number"!==typeof tag&&(tag=ASN1.Boolean), this._ensure(3), this._buf[this._offset++]=tag, this._buf[this._offset++]=1, this._buf[this._offset++]=b?255:0; 
}, Writer.prototype.writeString=function(s, tag) {
 if("string"!==typeof s) {
 throw new TypeError("argument must be a string (was: "+typeof s+")"); 
}"number"!==typeof tag&&(tag=ASN1.OctetString);var len=Buffer.byteLength(s);this.writeByte(tag), this.writeLength(len), len&&(this._ensure(len), this._buf.write(s, this._offset), this._offset+=len); 
}, Writer.prototype.writeBuffer=function(buf, tag) {
 if("number"!==typeof tag) {
 throw new TypeError("tag must be a number"); 
}if(!Buffer.isBuffer(buf)) {
 throw new TypeError("argument must be a buffer"); 
}this.writeByte(tag), this.writeLength(buf.length), this._ensure(buf.length), buf.copy(this._buf, this._offset, 0, buf.length), this._offset+=buf.length; 
}, Writer.prototype.writeStringArray=function(strings) {
 if(!strings instanceof Array) {
 throw new TypeError("argument must be an Array[String]"); 
}var self=this;strings.forEach(function(s) {
 self.writeString(s); 
}); 
}, Writer.prototype.writeOID=function(s, tag) {
 if("string"!==typeof s) {
 throw new TypeError("argument must be a string"); 
}if("number"!==typeof tag&&(tag=ASN1.OID), !/^([0-9]+\.){3,}[0-9]+$/.test(s)) {
 throw new Error("argument is not a valid OID string"); 
}var tmp=s.split("."), 
bytes=[];bytes.push(40*parseInt(tmp[0], 10)+parseInt(tmp[1], 10)), tmp.slice(2).forEach(function(b) {
 !(function(bytes, octet) {
 octet<128?bytes.push(octet):octet<16384?(bytes.push(octet>>>7|128), bytes.push(127&octet)):octet<2097152?(bytes.push(octet>>>14|128), bytes.push(255&(octet>>>7|128)), bytes.push(127&octet)):octet<268435456?(bytes.push(octet>>>21|128), bytes.push(255&(octet>>>14|128)), bytes.push(255&(octet>>>7|128)), bytes.push(127&octet)):(bytes.push(255&(octet>>>28|128)), bytes.push(255&(octet>>>21|128)), bytes.push(255&(octet>>>14|128)), bytes.push(255&(octet>>>7|128)), bytes.push(127&octet)); 
}(bytes, parseInt(b, 10))); 
});var self=this;this._ensure(2+bytes.length), this.writeByte(tag), this.writeLength(bytes.length), bytes.forEach(function(b) {
 self.writeByte(b); 
}); 
}, Writer.prototype.writeLength=function(len) {
 if("number"!==typeof len) {
 throw new TypeError("argument must be a Number"); 
}if(this._ensure(4), len<=127) {
 this._buf[this._offset++]=len; 
}else if(len<=255) {
 this._buf[this._offset++]=129, this._buf[this._offset++]=len; 
}else if(len<=65535) {
 this._buf[this._offset++]=130, this._buf[this._offset++]=len>>8, this._buf[this._offset++]=len; 
}else{
 if(!(len<=16777215)) {
 throw new InvalidAsn1ERror("Length too long (> 4 bytes)"); 
}this._shift(start, len, 1), this._buf[this._offset++]=131, this._buf[this._offset++]=len>>16, this._buf[this._offset++]=len>>8, this._buf[this._offset++]=len; 
} 
}, Writer.prototype.startSequence=function(tag) {
 "number"!==typeof tag&&(tag=ASN1.Sequence|ASN1.Constructor), this.writeByte(tag), this._seq.push(this._offset), this._ensure(3), this._offset+=3; 
}, Writer.prototype.endSequence=function() {
 var seq=this._seq.pop(), 
start=seq+3, 
len=this._offset-start;if(len<=127) {
 this._shift(start, len, -2), this._buf[seq]=len; 
}else if(len<=255) {
 this._shift(start, len, -1), this._buf[seq]=129, this._buf[seq+1]=len; 
}else if(len<=65535) {
 this._buf[seq]=130, this._buf[seq+1]=len>>8, this._buf[seq+2]=len; 
}else{
 if(!(len<=16777215)) {
 throw new InvalidAsn1Error("Sequence too long"); 
}this._shift(start, len, 1), this._buf[seq]=131, this._buf[seq+1]=len>>16, this._buf[seq+2]=len>>8, this._buf[seq+3]=len; 
} 
}, Writer.prototype._shift=function(start, len, shift) {
 assert.ok(void 0!==start), assert.ok(void 0!==len), assert.ok(shift), this._buf.copy(this._buf, start+shift, start, start+len), this._offset+=shift; 
}, Writer.prototype._ensure=function(len) {
 if(assert.ok(len), this._size-this._offset<len) {
 var sz=this._size*this._options.growthFactor;sz-this._offset<len&&(sz+=len);var buf=new Buffer(sz);this._buf.copy(buf, 0, 0, this._offset), this._buf=buf, this._size=sz; 
} 
}, module.exports=Writer; 
}, {"./errors":95, "./types":98, "assert":void 0}], 100:[function(require, module, exports) {
 var Ber=require("./ber/index");module.exports={Ber:Ber, BerReader:Ber.Reader, BerWriter:Ber.Writer}; 
}, {"./ber/index":96}], 101:[function(require, module, exports) {
 var assert=require("assert"), 
Stream=require("stream").Stream, 
util=require("util"), 
NDEBUG=process.env.NODE_NDEBUG||!1, 
UUID_REGEXP=/^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/, 
ARRAY_TYPE_REQUIRED="%s ([%s]) required", 
TYPE_REQUIRED="%s (%s) is required";function capitalize(str) {
 return str.charAt(0).toUpperCase()+str.slice(1); 
}function _() {
 return util.format.apply(util, arguments); 
}function _assert(arg, type, name, stackFunc) {
 if(!NDEBUG) {
 name=name||type, stackFunc=stackFunc||_assert.caller;var t=typeof arg;if(t!==type) {
 throw new assert.AssertionError({message:_(TYPE_REQUIRED, name, type), actual:t, expected:type, operator:"===", stackStartFunction:stackFunc}); 
} 
} 
}function _instanceof(arg, type, name, stackFunc) {
 if(!(NDEBUG||(name=name||type, stackFunc=stackFunc||_instanceof.caller, arg instanceof type))) {
 throw new assert.AssertionError({message:_(TYPE_REQUIRED, name, type.name), actual:(object=arg, Object.prototype.toString.call(object).slice(8, -1)), expected:type.name, operator:"instanceof", stackStartFunction:stackFunc}); 
}var object; 
}function array(arr, type, name) {
 if(!NDEBUG) {
 if(name=name||type, !Array.isArray(arr)) {
 throw new assert.AssertionError({message:_(ARRAY_TYPE_REQUIRED, name, type), actual:typeof arr, expected:"array", operator:"Array.isArray", stackStartFunction:array.caller}); 
}for(var i=0;i<arr.length;i++) {
 _assert(arr[i], type, name, array); 
} 
} 
}function string(arg, name) {
 _assert(arg, "string", name); 
}module.exports={bool:function bool(arg, name) {
 _assert(arg, "boolean", name, bool); 
}, buffer:function buffer(arg, name) {
 if(!Buffer.isBuffer(arg)) {
 throw new assert.AssertionError({message:_(TYPE_REQUIRED, name||"", "Buffer"), actual:typeof arg, expected:"buffer", operator:"Buffer.isBuffer", stackStartFunction:buffer}); 
} 
}, date:function(arg, name) {
 _instanceof(arg, Date, name); 
}, func:function(arg, name) {
 _assert(arg, "function", name); 
}, number:function number(arg, name) {
 if(_assert(arg, "number", name), !NDEBUG&&(isNaN(arg)||!isFinite(arg))) {
 throw new assert.AssertionError({message:_(TYPE_REQUIRED, name, "number"), actual:arg, expected:"number", operator:"isNaN", stackStartFunction:number}); 
} 
}, object:function(arg, name) {
 _assert(arg, "object", name); 
}, regexp:function(arg, name) {
 _instanceof(arg, RegExp, name); 
}, stream:function(arg, name) {
 _instanceof(arg, Stream, name); 
}, string:string, uuid:function uuid(arg, name) {
 if(string(arg, name), !NDEBUG&&!UUID_REGEXP.test(arg)) {
 throw new assert.AssertionError({message:_(TYPE_REQUIRED, name, "uuid"), actual:"string", expected:"uuid", operator:"test", stackStartFunction:uuid}); 
} 
}}, Object.keys(module.exports).forEach(function(k) {
 if("buffer"!==k) {
 var name="arrayOf"+capitalize(k);"bool"===k&&(k="boolean"), "func"===k&&(k="function"), module.exports[name]=function(arg, name) {
 array(arg, k, name); 
}; 
} 
}), Object.keys(module.exports).forEach(function(k) {
 var str, 
_name="optional"+capitalize(k), 
s=(str=k.replace("arrayOf", "")).charAt(0).toLowerCase()+str.slice(1);"bool"===s&&(s="boolean"), "func"===s&&(s="function"), -1!==k.indexOf("arrayOf")?module.exports[_name]=function(arg, name) {
 NDEBUG||void 0===arg||array(arg, s, name); 
}:module.exports[_name]=function(arg, name) {
 NDEBUG||void 0===arg||_assert(arg, s, name); 
}; 
}), Object.keys(assert).forEach(function(k) {
 module.exports[k]="AssertionError"!==k?function() {
 NDEBUG||assert[k].apply(assert[k], arguments); 
}:assert[k]; 
}); 
}, {assert:void 0, stream:void 0, util:void 0}], 102:[function(require, module, exports) {
 var ASSERT=require("assert").ok, 
ctf_versions=["1.0"], 
ctf_entries=["integer", "float", "typedef", "struct"], 
ctf_deftypes=["int8_t", "uint8_t", "int16_t", "uint16_t", "int32_t", "uint32_t", "float", "double"];function ctfParseEntry(entry, ctype) {
 var ii, found;if(!("name"in entry)) {
 throw new Error('Malformed CTF JSON: entry missing "name" section'); 
}for(ii=0;ii<ctf_entries.length;ii++) {
 ctf_entries[ii]in entry&&found++; 
}if(0===found) {
 throw new Error("Malformed CTF JSON: found no entries"); 
}if(found>=2) {
 throw new Error("Malformed CTF JSON: found more than one entry"); 
}"integer"in entry?(function(entry, ctype) {
 var name, sign, len, type;if(name=entry.name, !("signed"in entry.integer)) {
 throw new Error("Malformed CTF JSON: integer missing signed value"); 
}if(!("length"in entry.integer)) {
 throw new Error("Malformed CTF JSON: integer missing length value"); 
}if(sign=entry.integer.signed, len=entry.integer.length, type=null, sign&&1==len?type="int8_t":1==len?type="uint8_t":sign&&2==len?type="int16_t":2==len?type="uint16_t":sign&&4==len?type="int32_t":4==len?type="uint32_t":sign&&8==len?type="int64_t":8==len&&(type="uint64_t"), null===type) {
 throw new Error("Malformed CTF JSON: integer has unsupported length and sign - "+len+"/"+sign); 
}name!=type&&("char"!=name?ctype.typedef(name, type):ASSERT("int8_t"==type)); 
}(entry, ctype)):"float"in entry?(function(entry, ctype) {
 var name, len;if(name=entry.name, !("length"in entry.float)) {
 throw new Error("Malformed CTF JSON: float missing length value"); 
}if(4!=(len=entry.float.length)&&8!=len) {
 throw new Error("Malformed CTF JSON: float has invalid length value"); 
}if(4==len) {
 if("float"==name) {
 return; 
}ctype.typedef(name, "float"); 
}else if(8==len) {
 if("double"==name) {
 return; 
}ctype.typedef(name, "double"); 
} 
}(entry, ctype)):"typedef"in entry?(function(entry, ctype) {
 var name, type, ii;if(name=entry.name, "string"!==typeof entry.typedef) {
 throw new Error("Malformed CTF JSON: typedef value in not a string"); 
}for(type=entry.typedef, ii=0;ii<ctf_deftypes.length;ii++) {
 if(name==ctf_deftypes[ii]) {
 return; 
} 
}ctype.typedef(name, type); 
}(entry, ctype)):"struct"in entry?(function(entry, ctype) {
 var name, type, ii, val, index, member, push;if(member=[], !Array.isArray(entry.struct)) {
 throw new Error("Malformed CTF JSON: struct value is not an array"); 
}for(ii=0;ii<entry.struct.length;ii++) {
 if(!("name"in(val=entry.struct[ii]))) {
 throw new Error("Malformed CTF JSON: struct member missing name"); 
}if(!("type"in val)) {
 throw new Error("Malformed CTF JSON: struct member missing type"); 
}if("string"!==typeof val.name) {
 throw new Error("Malformed CTF JSON: struct member name isn't a string"); 
}if("string"!==typeof val.type) {
 throw new Error("Malformed CTF JSON: struct member type isn't a string"); 
}name=val.name, -1!=(index=(type=val.type).indexOf(" ["))&&(type=type.substring(0, index)+type.substring(index+1, type.length)), (push={})[name]={type:type}, member.push(push); 
}name=entry.name, ctype.typedef(name, member); 
}(entry, ctype)):ASSERT(!1, "shouldn't reach here"); 
}exports.ctfParseJson=function(json, ctype) {
 var version, ii;if(ASSERT(json), ASSERT(ctype), !("metadata"in json)) {
 throw new Error("Invalid CTF JSON: missing metadata section"); 
}if(!("ctf2json_version"in json.metadata)) {
 throw new Error("Invalid CTF JSON: missing ctf2json_version"); 
}for(version=json.metadata.ctf2json_version, ii=0;ii<ctf_versions.length&&ctf_versions[ii]!=version;ii++) { }if(ii==ctf_versions.length) {
 throw new Error("Unsuported ctf2json_version: "+version); 
}if(!("data"in json)) {
 throw new Error("Invalid CTF JSON: missing data section"); 
}if(!Array.isArray(json.data)) {
 throw new Error("Malformed CTF JSON: data section is not an array"); 
}for(ii=0;ii<json.data.length;ii++) {
 ctfParseEntry(json.data[ii], ctype); 
} 
}; 
}, {assert:void 0}], 103:[function(require, module, exports) {
 var mod_assert=require("assert");function rgint16(buffer, endian, offset) {
 var val=0;return"big"==endian?(val=buffer[offset]<<8, val|=buffer[offset+1]):(val=buffer[offset], val|=buffer[offset+1]<<8), val; 
}function rgint32(buffer, endian, offset) {
 var val=0;return"big"==endian?(val=buffer[offset+1]<<16, val|=buffer[offset+2]<<8, val|=buffer[offset+3], val+=buffer[offset]<<24>>>0):(val=buffer[offset+2]<<16, val|=buffer[offset+1]<<8, val|=buffer[offset], val+=buffer[offset+3]<<24>>>0), val; 
}function ruint32(buffer, endian, offset) {
 if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+3>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}return rgint32(buffer, endian, offset); 
}function rgint64(buffer, endian, offset) {
 var val=new Array(2);return"big"==endian?(val[0]=ruint32(buffer, endian, offset), val[1]=ruint32(buffer, endian, offset+4)):(val[0]=ruint32(buffer, endian, offset+4), val[1]=ruint32(buffer, endian, offset)), val; 
}function prepuint(value, max) {
 if("number"!==typeof value) {
 throw new(Error("cannot write a non-number as a number")); 
}if(value<0) {
 throw new Error("specified a negative value for writing an unsigned value"); 
}if(value>max) {
 throw new Error("value is larger than maximum value for type"); 
}if(Math.floor(value)!==value) {
 throw new Error("value has a fractional component"); 
}return value; 
}function wuint8(value, endian, buffer, offset) {
 var val;if(void 0===value) {
 throw new Error("missing value"); 
}if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}val=prepuint(value, 255), buffer[offset]=val; 
}function wgint16(val, endian, buffer, offset) {
 "big"==endian?(buffer[offset]=(65280&val)>>>8, buffer[offset+1]=255&val):(buffer[offset+1]=(65280&val)>>>8, buffer[offset]=255&val); 
}function wgint32(val, endian, buffer, offset) {
 "big"==endian?(buffer[offset]=(val-(16777215&val))/Math.pow(2, 24), buffer[offset+1]=val>>>16&255, buffer[offset+2]=val>>>8&255, buffer[offset+3]=255&val):(buffer[offset+3]=(val-(16777215&val))/Math.pow(2, 24), buffer[offset+2]=val>>>16&255, buffer[offset+1]=val>>>8&255, buffer[offset]=255&val); 
}function wgint64(value, endian, buffer, offset) {
 "big"==endian?(wgint32(value[0], endian, buffer, offset), wgint32(value[1], endian, buffer, offset+4)):(wgint32(value[0], endian, buffer, offset+4), wgint32(value[1], endian, buffer, offset)); 
}function prepsint(value, max, min) {
 if("number"!==typeof value) {
 throw new(Error("cannot write a non-number as a number")); 
}if(value>max) {
 throw new Error("value larger than maximum allowed value"); 
}if(value<min) {
 throw new Error("value smaller than minimum allowed value"); 
}if(Math.floor(value)!==value) {
 throw new Error("value has a fractional component"); 
}return value; 
}function log2(value) {
 return Math.log(value)/Math.log(2); 
}function intexp(value) {
 return Math.floor(log2(value)); 
}function fracexp(value) {
 return Math.floor(log2(value)); 
}exports.ruint8=function(buffer, endian, offset) {
 if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}return buffer[offset]; 
}, exports.ruint16=function(buffer, endian, offset) {
 if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+1>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}return rgint16(buffer, endian, offset); 
}, exports.ruint32=ruint32, exports.ruint64=function(buffer, endian, offset) {
 if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+7>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}return rgint64(buffer, endian, offset); 
}, exports.wuint8=wuint8, exports.wuint16=function(value, endian, buffer, offset) {
 if(void 0===value) {
 throw new Error("missing value"); 
}if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+1>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}wgint16(prepuint(value, 65535), endian, buffer, offset); 
}, exports.wuint32=function(value, endian, buffer, offset) {
 if(void 0===value) {
 throw new Error("missing value"); 
}if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+3>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}wgint32(prepuint(value, 4294967295), endian, buffer, offset); 
}, exports.wuint64=function(value, endian, buffer, offset) {
 if(void 0===value) {
 throw new Error("missing value"); 
}if(!(value instanceof Array)) {
 throw new Error("value must be an array"); 
}if(2!=value.length) {
 throw new Error("value must be an array of length 2"); 
}if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+7>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}prepuint(value[0], 4294967295), prepuint(value[1], 4294967295), wgint64(value, endian, buffer, offset); 
}, exports.rsint8=function(buffer, endian, offset) {
 if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}return 128&buffer[offset]?-1*(255-buffer[offset]+1):buffer[offset]; 
}, exports.rsint16=function(buffer, endian, offset) {
 var val;if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+1>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}return 32768&(val=rgint16(buffer, endian, offset))?-1*(65535-val+1):val; 
}, exports.rsint32=function(buffer, endian, offset) {
 var val;if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+3>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}return 2147483648&(val=rgint32(buffer, endian, offset))?-1*(4294967295-val+1):val; 
}, exports.rsint64=function(buffer, endian, offset) {
 var val;if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+3>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}return 2147483648&(val=rgint64(buffer, endian, offset))[0]?(val[0]=-1*(4294967295-val[0]), val[1]=-1*(4294967295-val[1]+1), mod_assert.ok(val[1]<=4294967296), -4294967296==val[1]&&(val[1]=0, val[0]--), val):val; 
}, exports.wsint8=function(value, endian, buffer, offset) {
 var val;if(void 0===value) {
 throw new Error("missing value"); 
}if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}wuint8((val=prepsint(value, 127, -128))>=0?val:255+val+1, endian, buffer, offset); 
}, exports.wsint16=function(value, endian, buffer, offset) {
 var val;if(void 0===value) {
 throw new Error("missing value"); 
}if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+1>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}wgint16((val=prepsint(value, 32767, -32768))>=0?val:65535+val+1, endian, buffer, offset); 
}, exports.wsint32=function(value, endian, buffer, offset) {
 var val;if(void 0===value) {
 throw new Error("missing value"); 
}if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+3>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}wgint32((val=prepsint(value, 2147483647, -2147483648))>=0?val:4294967295+val+1, endian, buffer, offset); 
}, exports.wsint64=function(value, endian, buffer, offset) {
 var vzpos, vopos, 
vals=new Array(2);if(void 0===value) {
 throw new Error("missing value"); 
}if(!(value instanceof Array)) {
 throw new Error("value must be an array"); 
}if(2!=value.length) {
 throw new Error("value must be an array of length 2"); 
}if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+7>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}if(vzpos=value[0]*Number.POSITIVE_INFINITY==Number.POSITIVE_INFINITY, vopos=value[1]*Number.POSITIVE_INFINITY==Number.POSITIVE_INFINITY, 0!=value[0]&&0!=value[1]&&vzpos!=vopos) {
 throw new Error("Both entries in the array must have the same sign"); 
}if(vzpos) {
 prepuint(value[0], 2147483647), prepuint(value[1], 4294967295); 
}else if(prepsint(value[0], 0, -2147483648), prepsint(value[1], 0, -4294967295), -2147483648==value[0]&&0!=value[1]) {
 throw new Error("value smaller than minimum allowed value"); 
}value[0]<0||value[1]<0?(vals[0]=4294967295-Math.abs(value[0]), vals[1]=4294967296-Math.abs(value[1]), 4294967296==vals[1]&&(vals[1]=0, vals[0]++)):(vals[0]=value[0], vals[1]=value[1]), wgint64(vals, endian, buffer, offset); 
}, exports.rfloat=function(buffer, endian, offset) {
 var sign, exponent, mantissa, val, 
bytes=[];if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+3>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}return"big"==endian?(bytes[0]=buffer[offset], bytes[1]=buffer[offset+1], bytes[2]=buffer[offset+2], bytes[3]=buffer[offset+3]):(bytes[3]=buffer[offset], bytes[2]=buffer[offset+1], bytes[1]=buffer[offset+2], bytes[0]=buffer[offset+3]), sign=128&bytes[0], exponent=(127&bytes[0])<<1, exponent|=(128&bytes[1])>>>7, mantissa=(127&bytes[1])<<16, mantissa|=bytes[2]<<8, mantissa|=bytes[3], sign||255!=exponent||0!==mantissa?sign&&255==exponent&&0===mantissa?Number.NEGATIVE_INFINITY:255==exponent&&0!==mantissa?Number.NaN:0===exponent&&0===mantissa?0:(-127==(exponent-=127)?(exponent++, val=0):val=1, val=(val+mantissa*Math.pow(2, -23))*Math.pow(2, exponent), sign&&(val*=-1), val):Number.POSITIVE_INFINITY; 
}, exports.rdouble=function(buffer, endian, offset) {
 var sign, exponent, mantissa, val, lowmant, 
bytes=[];if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+7>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}return"big"==endian?(bytes[0]=buffer[offset], bytes[1]=buffer[offset+1], bytes[2]=buffer[offset+2], bytes[3]=buffer[offset+3], bytes[4]=buffer[offset+4], bytes[5]=buffer[offset+5], bytes[6]=buffer[offset+6], bytes[7]=buffer[offset+7]):(bytes[7]=buffer[offset], bytes[6]=buffer[offset+1], bytes[5]=buffer[offset+2], bytes[4]=buffer[offset+3], bytes[3]=buffer[offset+4], bytes[2]=buffer[offset+5], bytes[1]=buffer[offset+6], bytes[0]=buffer[offset+7]), sign=128&bytes[0], exponent=(127&bytes[0])<<4, exponent|=(240&bytes[1])>>>4, lowmant=bytes[7], lowmant|=bytes[6]<<8, lowmant|=bytes[5]<<16, mantissa=bytes[4], mantissa|=bytes[3]<<8, mantissa|=bytes[2]<<16, mantissa|=(15&bytes[1])<<24, mantissa*=Math.pow(2, 24), mantissa+=lowmant, sign||2047!=exponent||0!==mantissa?sign&&2047==exponent&&0===mantissa?Number.NEGATIVE_INFINITY:2047==exponent&&0!==mantissa?Number.NaN:0===exponent&&0===mantissa?0:(-1023==(exponent-=1023)?(exponent++, val=0):val=1, val=(val+mantissa*Math.pow(2, -52))*Math.pow(2, exponent), sign&&(val*=-1), val):Number.POSITIVE_INFINITY; 
}, exports.wfloat=function(value, endian, buffer, offset) {
 var sign, exponent, mantissa, ebits, 
bytes=[];if(void 0===value) {
 throw new Error("missing value"); 
}if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+3>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}isNaN(value)?(sign=0, exponent=255, mantissa=23):value==Number.POSITIVE_INFINITY?(sign=0, exponent=255, mantissa=0):value==Number.NEGATIVE_INFINITY?(sign=1, exponent=255, mantissa=0):(value<0?(sign=1, value=Math.abs(value)):sign=0, (ebits=value<1?fracexp(value):intexp(value))<=-127?(exponent=0, mantissa=value*Math.pow(2, 149)&8388607):(exponent=127+ebits, mantissa=value*Math.pow(2, 23-ebits), mantissa&=8388607)), bytes[0]=sign<<7|(254&exponent)>>>1, bytes[1]=(1&exponent)<<7|(8323072&mantissa)>>>16, bytes[2]=(65280&mantissa)>>>8, bytes[3]=255&mantissa, "big"==endian?(buffer[offset]=bytes[0], buffer[offset+1]=bytes[1], buffer[offset+2]=bytes[2], buffer[offset+3]=bytes[3]):(buffer[offset]=bytes[3], buffer[offset+1]=bytes[2], buffer[offset+2]=bytes[1], buffer[offset+3]=bytes[0]); 
}, exports.wdouble=function(value, endian, buffer, offset) {
 var sign, exponent, mantissa, ebits, 
bytes=[];if(void 0===value) {
 throw new Error("missing value"); 
}if(void 0===endian) {
 throw new Error("missing endian"); 
}if(void 0===buffer) {
 throw new Error("missing buffer"); 
}if(void 0===offset) {
 throw new Error("missing offset"); 
}if(offset+7>=buffer.length) {
 throw new Error("Trying to read beyond buffer length"); 
}isNaN(value)?(sign=0, exponent=2047, mantissa=23):value==Number.POSITIVE_INFINITY?(sign=0, exponent=2047, mantissa=0):value==Number.NEGATIVE_INFINITY?(sign=1, exponent=2047, mantissa=0):(value<0?(sign=1, value=Math.abs(value)):sign=0, ebits=value<1?fracexp(value):intexp(value), value<=2.225073858507201e-308||ebits<=-1023?(exponent=0, mantissa=value*Math.pow(2, 1023)*Math.pow(2, 51), mantissa%=Math.pow(2, 52)):(ebits>1023&&(ebits=1023), exponent=1023+ebits, mantissa=value*Math.pow(2, -ebits), mantissa*=Math.pow(2, 52), mantissa%=Math.pow(2, 52))), bytes[7]=255&mantissa, bytes[6]=mantissa>>>8&255, bytes[5]=mantissa>>>16&255, mantissa=(mantissa-(16777215&mantissa))/Math.pow(2, 24), bytes[4]=255&mantissa, bytes[3]=mantissa>>>8&255, bytes[2]=mantissa>>>16&255, bytes[1]=(15&exponent)<<4|mantissa>>>24, bytes[0]=sign<<7|(2032&exponent)>>>4, "big"==endian?(buffer[offset]=bytes[0], buffer[offset+1]=bytes[1], buffer[offset+2]=bytes[2], buffer[offset+3]=bytes[3], buffer[offset+4]=bytes[4], buffer[offset+5]=bytes[5], buffer[offset+6]=bytes[6], buffer[offset+7]=bytes[7]):(buffer[offset+7]=bytes[0], buffer[offset+6]=bytes[1], buffer[offset+5]=bytes[2], buffer[offset+4]=bytes[3], buffer[offset+3]=bytes[4], buffer[offset+2]=bytes[5], buffer[offset+1]=bytes[6], buffer[offset]=bytes[7]); 
}; 
}, {assert:void 0}], 104:[function(require, module, exports) {
 var mod_ctf=require("./ctf.js"), 
mod_ctio=require("./ctio.js"), 
mod_assert=require("assert"), 
deftypes={"uint8_t":{read:function(endian, buffer, offset) {
 return{value:mod_ctio.ruint8(buffer, endian, offset), size:1}; 
}, write:function(value, endian, buffer, offset) {
 return mod_ctio.wuint8(value, endian, buffer, offset), 1; 
}}, "uint16_t":{read:function(endian, buffer, offset) {
 return{value:mod_ctio.ruint16(buffer, endian, offset), size:2}; 
}, write:function(value, endian, buffer, offset) {
 return mod_ctio.wuint16(value, endian, buffer, offset), 2; 
}}, "uint32_t":{read:function(endian, buffer, offset) {
 return{value:mod_ctio.ruint32(buffer, endian, offset), size:4}; 
}, write:function(value, endian, buffer, offset) {
 return mod_ctio.wuint32(value, endian, buffer, offset), 4; 
}}, "uint64_t":{read:function(endian, buffer, offset) {
 return{value:mod_ctio.ruint64(buffer, endian, offset), size:8}; 
}, write:function(value, endian, buffer, offset) {
 return mod_ctio.wuint64(value, endian, buffer, offset), 8; 
}}, "int8_t":{read:function(endian, buffer, offset) {
 return{value:mod_ctio.rsint8(buffer, endian, offset), size:1}; 
}, write:function(value, endian, buffer, offset) {
 return mod_ctio.wsint8(value, endian, buffer, offset), 1; 
}}, "int16_t":{read:function(endian, buffer, offset) {
 return{value:mod_ctio.rsint16(buffer, endian, offset), size:2}; 
}, write:function(value, endian, buffer, offset) {
 return mod_ctio.wsint16(value, endian, buffer, offset), 2; 
}}, "int32_t":{read:function(endian, buffer, offset) {
 return{value:mod_ctio.rsint32(buffer, endian, offset), size:4}; 
}, write:function(value, endian, buffer, offset) {
 return mod_ctio.wsint32(value, endian, buffer, offset), 4; 
}}, "int64_t":{read:function(endian, buffer, offset) {
 return{value:mod_ctio.rsint64(buffer, endian, offset), size:8}; 
}, write:function(value, endian, buffer, offset) {
 return mod_ctio.wsint64(value, endian, buffer, offset), 8; 
}}, "float":{read:function(endian, buffer, offset) {
 return{value:mod_ctio.rfloat(buffer, endian, offset), size:4}; 
}, write:function(value, endian, buffer, offset) {
 return mod_ctio.wfloat(value, endian, buffer, offset), 4; 
}}, "double":{read:function(endian, buffer, offset) {
 return{value:mod_ctio.rdouble(buffer, endian, offset), size:8}; 
}, write:function(value, endian, buffer, offset) {
 return mod_ctio.wdouble(value, endian, buffer, offset), 8; 
}}, "char":{read:function(endian, buffer, offset) {
 var res=new Buffer(1);return res[0]=mod_ctio.ruint8(buffer, endian, offset), {value:res, size:1}; 
}, write:function(value, endian, buffer, offset) {
 if(!(value instanceof Buffer)) {
 throw new Error("Input must be a buffer"); 
}return mod_ctio.ruint8(value[0], endian, buffer, offset), 1; 
}}, "char[]":{read:function(length, endian, buffer, offset) {
 var ii, 
res=new Buffer(length);for(ii=0;ii<length;ii++) {
 res[ii]=mod_ctio.ruint8(buffer, endian, offset+ii); 
}return{value:res, size:length}; 
}, write:function(value, length, endian, buffer, offset) {
 var ii;if(!(value instanceof Buffer)) {
 throw new Error("Input must be a buffer"); 
}if(value.length>length) {
 throw new Error("value length greater than array length"); 
}for(ii=0;ii<value.length&&ii<length;ii++) {
 mod_ctio.wuint8(value[ii], endian, buffer, offset+ii); 
}for(;ii<length;ii++) {
 mod_ctio.wuint8(0, endian, offset+ii); 
}return length; 
}}};function ctParseType(str) {
 var begInd, endInd;if("string"!==typeof str) {
 throw new Error("type must be a Javascript string"); 
}if(-1==(endInd=str.lastIndexOf("]"))) {
 if(-1!=str.lastIndexOf("[")) {
 throw new Error("found invalid type with '[' but no corresponding ']'"); 
}return{type:str}; 
}if(-1==(begInd=str.lastIndexOf("["))) {
 throw new Error("found invalid type with ']' but no corresponding '['"); 
}if(begInd>=endInd) {
 throw new Error("malformed type, ']' appears before '['"); 
}return{type:str.substring(0, begInd), len:str.substring(begInd+1, endInd)}; 
}function ctCheckReq(def, types, fields) {
 var ii, jj, req, keys, key, 
found={};if(!(def instanceof Array)) {
 throw new Error("definition is not an array"); 
}if(0===def.length) {
 throw new Error("definition must have at least one element"); 
}for(ii=0;ii<def.length;ii++) {
 if(!((req=def[ii])instanceof Object)) {
 throw new Error("definition must be an array ofobjects"); 
}if(1!=(keys=Object.keys(req)).length) {
 throw new Error("definition entry must only have one key"); 
}if(keys[0]in found) {
 throw new Error("Specified name already specified: "+keys[0]); 
}if(!("type"in req[keys[0]])) {
 throw new Error("missing required type definition"); 
}for(key=ctParseType(req[keys[0]].type);void 0!==key.len;) {
 if(isNaN(parseInt(key.len, 10))&&!(key.len in found)) {
 throw new Error("Given an array length without a matching type"); 
}key=ctParseType(key.type); 
}if(!(key.type in types)) {
 throw new Error("type not found or typdefed: "+key.type); 
}if(void 0!==fields) {
 for(jj=0;jj<fields.length;jj++) {
 if(!(fields[jj]in req[keys[0]])) {
 throw new Error("Missing required field: "+fields[jj]); 
} 
} 
}found[keys[0]]=!0; 
} 
}function CTypeParser(conf) {
 if(!conf) {
 throw new Error("missing required argument"); 
}if(!("endian"in conf)) {
 throw new Error("missing required endian value"); 
}if("big"!=conf.endian&&"little"!=conf.endian) {
 throw new Error("Invalid endian type"); 
}if("char-type"in conf&&"uint8"!=conf["char-type"]&&"int8"!=conf["char-type"]) {
 throw new Error("invalid option for char-type: "+conf["char-type"]); 
}this.endian=conf.endian, this.types=(function() {
 var key, 
ret={};for(key in deftypes) {
 ret[key]=deftypes[key]; 
}return ret; 
}()), "char-type"in conf&&"uint8"==conf["char-type"]&&(this.types.char=this.types.uint8_t), "char-type"in conf&&"int8"==conf["char-type"]&&(this.types.char=this.types.int8_t); 
}function ctResolveArray(str, values) {
 for(var ret="", type=ctParseType(str);void 0!==type.len;) {
 if(isNaN(parseInt(type.len, 10))) {
 if("number"!==typeof values[type.len]) {
 throw new Error("cannot sawp in non-number for array value"); 
}ret="["+values[type.len]+"]"+ret; 
}else {
 ret="["+type.len+"]"+ret; 
}type=ctParseType(type.type); 
}return ret=type.type+ret; 
}CTypeParser.prototype.setEndian=function(endian) {
 if("big"!=endian&&"little"!=endian) {
 throw new Error("invalid endian type, must be big or little"); 
}this.endian=endian; 
}, CTypeParser.prototype.getEndian=function() {
 return this.endian; 
}, CTypeParser.prototype.typedef=function(name, value) {
 var type;if(void 0===name) {
 throw new(Error("missing required typedef argument: name")); 
}if(void 0===value) {
 throw new(Error("missing required typedef argument: value")); 
}if("string"!==typeof name) {
 throw new(Error("the name of a type must be a string")); 
}if(void 0!==(type=ctParseType(name)).len) {
 throw new Error("Cannot have an array in the typedef name"); 
}if(name in this.types) {
 throw new Error("typedef name already present: "+name); 
}if("string"!==typeof value&&!(value instanceof Array)) {
 throw new Error("typedef value must either be a string or struct"); 
}if("string"===typeof value) {
 if(void 0!==(type=ctParseType(value)).len&&isNaN(parseInt(type.len, 10))) {
 throw new(Error("typedef value must use fixed size array when outside of a struct")); 
}this.types[name]=value; 
}else {
 ctCheckReq(value, this.types), this.types[name]=value; 
} 
}, CTypeParser.prototype.lstypes=function() {
 var key, 
ret={};for(key in this.types) {
 key in deftypes||(ret[key]=this.types[key]); 
}return ret; 
}, CTypeParser.prototype.resolveTypedef=function(type, dispatch, buffer, offset, value) {
 var pt;if(mod_assert.ok(type in this.types), "string"===typeof this.types[type]) {
 if(pt=ctParseType(this.types[type]), "read"==dispatch) {
 return this.readEntry(pt, buffer, offset); 
}if("write"==dispatch) {
 return this.writeEntry(value, pt, buffer, offset); 
}throw new Error("invalid dispatch type to resolveTypedef"); 
}if("read"==dispatch) {
 return this.readStruct(this.types[type], buffer, offset); 
}if("write"==dispatch) {
 return this.writeStruct(value, this.types[type], buffer, offset); 
}throw new Error("invalid dispatch type to resolveTypedef"); 
}, CTypeParser.prototype.readEntry=function(type, buffer, offset) {
 var parse, len;if(void 0!==type.len) {
 if(len=parseInt(type.len, 10), isNaN(len)) {
 throw new Error("somehow got a non-numeric length"); 
}parse="char"==type.type?this.types["char[]"].read(len, this.endian, buffer, offset):this.readArray(type.type, len, buffer, offset); 
}else {
 parse=type.type in deftypes?this.types[type.type].read(this.endian, buffer, offset):this.resolveTypedef(type.type, "read", buffer, offset); 
}return parse; 
}, CTypeParser.prototype.readArray=function(type, length, buffer, offset) {
 var ii, ent, pt, 
baseOffset=offset, 
ret=new Array(length);for(pt=ctParseType(type), ii=0;ii<length;ii++) {
 offset+=(ent=this.readEntry(pt, buffer, offset)).size, ret[ii]=ent.value; 
}return{value:ret, size:offset-baseOffset}; 
}, CTypeParser.prototype.readStruct=function(def, buffer, offset) {
 var parse, ii, type, entry, key, 
baseOffset=offset, 
ret={};for(ii=0;ii<def.length;ii++) {
 key=Object.keys(def[ii])[0], type=ctParseType(ctResolveArray((entry=def[ii][key]).type, ret)), "offset"in entry&&(offset=baseOffset+entry.offset), offset+=(parse=this.readEntry(type, buffer, offset)).size, ret[key]=parse.value; 
}return{value:ret, size:offset-baseOffset}; 
}, CTypeParser.prototype.readData=function(def, buffer, offset) {
 if(void 0===def) {
 throw new Error("missing definition for what we should beparsing"); 
}if(void 0===buffer) {
 throw new Error("missing buffer for what we should be parsing"); 
}if(void 0===offset) {
 throw new Error("missing offset for what we should be parsing"); 
}return ctCheckReq(def, this.types), this.readStruct(def, buffer, offset).value; 
}, CTypeParser.prototype.writeArray=function(value, type, length, buffer, offset) {
 var ii, pt, 
baseOffset=offset;if(!(value instanceof Array)) {
 throw new Error("asked to write an array, but value is not an array"); 
}if(value.length!=length) {
 throw new Error("asked to write array of length "+length+" but that does not match value length: "+value.length); 
}for(pt=ctParseType(type), ii=0;ii<length;ii++) {
 offset+=this.writeEntry(value[ii], pt, buffer, offset); 
}return offset-baseOffset; 
}, CTypeParser.prototype.writeEntry=function(value, type, buffer, offset) {
 var len, ret;if(void 0!==type.len) {
 if(len=parseInt(type.len, 10), isNaN(len)) {
 throw new Error("somehow got a non-numeric length"); 
}ret="char"==type.type?this.types["char[]"].write(value, len, this.endian, buffer, offset):this.writeArray(value, type.type, len, buffer, offset); 
}else {
 ret=type.type in deftypes?this.types[type.type].write(value, this.endian, buffer, offset):this.resolveTypedef(type.type, "write", buffer, offset, value); 
}return ret; 
}, CTypeParser.prototype.writeStruct=function(value, def, buffer, offset) {
 var ii, entry, type, key, 
baseOffset=offset, 
vals={};for(ii=0;ii<def.length;ii++) {
 key=Object.keys(def[ii])[0], type=ctParseType(ctResolveArray((entry=def[ii][key]).type, vals)), "offset"in entry&&(offset=baseOffset+entry.offset), offset+=this.writeEntry(value[ii], type, buffer, offset), vals[key]=value[ii]; 
}return offset; 
}, CTypeParser.prototype.writeData=function(def, buffer, offset, values) {
 var hv;if(void 0===def) {
 throw new Error("missing definition for what we should beparsing"); 
}if(void 0===buffer) {
 throw new Error("missing buffer for what we should be parsing"); 
}if(void 0===offset) {
 throw new Error("missing offset for what we should be parsing"); 
}if(hv=null!=values&&void 0!=values) {
 if(!Array.isArray(values)) {
 throw new Error("missing values for writing"); 
}ctCheckReq(def, this.types); 
}else {
 ctCheckReq(def, this.types, ["value"]); 
}this.writeStruct(hv?values:(function(def) {
 var ii, out, key;for(out=[], ii=0;ii<def.length;ii++) {
 key=Object.keys(def[ii])[0], mod_assert.ok("value"in def[ii][key]), out.push(def[ii][key].value); 
}return out; 
}(def)), def, buffer, offset); 
}, exports.Parser=CTypeParser, exports.toAbs64=function(val) {
 if(void 0===val) {
 throw new Error("missing required arg: value"); 
}if(!Array.isArray(val)) {
 throw new Error("value must be an array"); 
}if(2!=val.length) {
 throw new Error("value must be an array of length 2"); 
}if(val[0]>=1048576) {
 throw new Error("value would become approximated"); 
}return val[0]*Math.pow(2, 32)+val[1]; 
}, exports.toApprox64=function(val) {
 if(void 0===val) {
 throw new Error("missing required arg: value"); 
}if(!Array.isArray(val)) {
 throw new Error("value must be an array"); 
}if(2!=val.length) {
 throw new Error("value must be an array of length 2"); 
}return Math.pow(2, 32)*val[0]+val[1]; 
}, exports.parseCTF=function(json, conf) {
 var ctype=new CTypeParser(conf);return mod_ctf.ctfParseJson(json, ctype), ctype; 
}, exports.ruint8=mod_ctio.ruint8, exports.ruint16=mod_ctio.ruint16, exports.ruint32=mod_ctio.ruint32, exports.ruint64=mod_ctio.ruint64, exports.wuint8=mod_ctio.wuint8, exports.wuint16=mod_ctio.wuint16, exports.wuint32=mod_ctio.wuint32, exports.wuint64=mod_ctio.wuint64, exports.rsint8=mod_ctio.rsint8, exports.rsint16=mod_ctio.rsint16, exports.rsint32=mod_ctio.rsint32, exports.rsint64=mod_ctio.rsint64, exports.wsint8=mod_ctio.wsint8, exports.wsint16=mod_ctio.wsint16, exports.wsint32=mod_ctio.wsint32, exports.wsint64=mod_ctio.wsint64, exports.rfloat=mod_ctio.rfloat, exports.rdouble=mod_ctio.rdouble, exports.wfloat=mod_ctio.wfloat, exports.wdouble=mod_ctio.wdouble; 
}, {"./ctf.js":102, "./ctio.js":103, "assert":void 0}], 105:[function(require, module, exports) {
 var db=require("mime-db");exports.types=Object.create(null), exports.extensions=Object.create(null), Object.keys(db).forEach(function(name) {
 var exts=db[name].extensions;exts&&exts.length&&(exports.extensions[name]=exts, exts.forEach(function(ext) {
 exports.types[ext]=name; 
})); 
}), exports.lookup=function(string) {
 return string&&"string"===typeof string&&(string=string.replace(/.*[\.\/\\]/, "").toLowerCase())&&exports.types[string]||!1; 
}, exports.extension=function(type) {
 if(!type||"string"!==typeof type) {
 return!1; 
}if(!(type=type.match(/^\s*([^;\s]*)(?:;|\s|$)/))) {
 return!1; 
}var exts=exports.extensions[type[1].toLowerCase()];return!(!exts||!exts.length)&&exts[0]; 
}, exports.charset=function(type) {
 var mime=db[type];return mime&&mime.charset?mime.charset:!!/^text\//.test(type)&&"UTF-8"; 
}, exports.charsets={lookup:exports.charset}, exports.contentType=function(type) {
 if(!type||"string"!==typeof type) {
 return!1; 
}if(~type.indexOf("/")||(type=exports.lookup(type)), !type) {
 return!1; 
}if(!~type.indexOf("charset")) {
 var charset=exports.charset(type);charset&&(type+="; charset="+charset.toLowerCase()); 
}return type; 
}; 
}, {"mime-db":107}], 106:[function(require, module, exports) {
 module.exports={"application/1d-interleaved-parityfec":{source:"iana"}, "application/3gpdash-qoe-report+xml":{source:"iana"}, "application/3gpp-ims+xml":{source:"iana"}, "application/a2l":{source:"iana"}, "application/activemessage":{source:"iana"}, "application/alto-costmap+json":{source:"iana", compressible:!0}, "application/alto-costmapfilter+json":{source:"iana", compressible:!0}, "application/alto-directory+json":{source:"iana", compressible:!0}, "application/alto-endpointcost+json":{source:"iana", compressible:!0}, "application/alto-endpointcostparams+json":{source:"iana", compressible:!0}, "application/alto-endpointprop+json":{source:"iana", compressible:!0}, "application/alto-endpointpropparams+json":{source:"iana", compressible:!0}, "application/alto-error+json":{source:"iana", compressible:!0}, "application/alto-networkmap+json":{source:"iana", compressible:!0}, "application/alto-networkmapfilter+json":{source:"iana", compressible:!0}, "application/aml":{source:"iana"}, "application/andrew-inset":{source:"iana", extensions:["ez"]}, "application/applefile":{source:"iana"}, "application/applixware":{source:"apache", extensions:["aw"]}, "application/atf":{source:"iana"}, "application/atfx":{source:"iana"}, "application/atom+xml":{source:"iana", compressible:!0, extensions:["atom"]}, "application/atomcat+xml":{source:"iana", extensions:["atomcat"]}, "application/atomdeleted+xml":{source:"iana"}, "application/atomicmail":{source:"iana"}, "application/atomsvc+xml":{source:"iana", extensions:["atomsvc"]}, "application/atxml":{source:"iana"}, "application/auth-policy+xml":{source:"iana"}, "application/bacnet-xdd+zip":{source:"iana"}, "application/batch-smtp":{source:"iana"}, "application/bdoc":{compressible:!1, extensions:["bdoc"]}, "application/beep+xml":{source:"iana"}, "application/calendar+json":{source:"iana", compressible:!0}, "application/calendar+xml":{source:"iana"}, "application/call-completion":{source:"iana"}, "application/cals-1840":{source:"iana"}, "application/cbor":{source:"iana"}, "application/ccmp+xml":{source:"iana"}, "application/ccxml+xml":{source:"iana", extensions:["ccxml"]}, "application/cdfx+xml":{source:"iana"}, "application/cdmi-capability":{source:"iana", extensions:["cdmia"]}, "application/cdmi-container":{source:"iana", extensions:["cdmic"]}, "application/cdmi-domain":{source:"iana", extensions:["cdmid"]}, "application/cdmi-object":{source:"iana", extensions:["cdmio"]}, "application/cdmi-queue":{source:"iana", extensions:["cdmiq"]}, "application/cea":{source:"iana"}, "application/cea-2018+xml":{source:"iana"}, "application/cellml+xml":{source:"iana"}, "application/cfw":{source:"iana"}, "application/cms":{source:"iana"}, "application/cnrp+xml":{source:"iana"}, "application/coap-group+json":{source:"iana", compressible:!0}, "application/commonground":{source:"iana"}, "application/conference-info+xml":{source:"iana"}, "application/cpl+xml":{source:"iana"}, "application/csrattrs":{source:"iana"}, "application/csta+xml":{source:"iana"}, "application/cstadata+xml":{source:"iana"}, "application/cu-seeme":{source:"apache", extensions:["cu"]}, "application/cybercash":{source:"iana"}, "application/dart":{compressible:!0}, "application/dash+xml":{source:"iana", extensions:["mdp"]}, "application/dashdelta":{source:"iana"}, "application/davmount+xml":{source:"iana", extensions:["davmount"]}, "application/dca-rft":{source:"iana"}, "application/dcd":{source:"iana"}, "application/dec-dx":{source:"iana"}, "application/dialog-info+xml":{source:"iana"}, "application/dicom":{source:"iana"}, "application/dii":{source:"iana"}, "application/dit":{source:"iana"}, "application/dns":{source:"iana"}, "application/docbook+xml":{source:"apache", extensions:["dbk"]}, "application/dskpp+xml":{source:"iana"}, "application/dssc+der":{source:"iana", extensions:["dssc"]}, "application/dssc+xml":{source:"iana", extensions:["xdssc"]}, "application/dvcs":{source:"iana"}, "application/ecmascript":{source:"iana", compressible:!0, extensions:["ecma"]}, "application/edi-consent":{source:"iana"}, "application/edi-x12":{source:"iana", compressible:!1}, "application/edifact":{source:"iana", compressible:!1}, "application/emma+xml":{source:"iana", extensions:["emma"]}, "application/emotionml+xml":{source:"iana"}, "application/encaprtp":{source:"iana"}, "application/epp+xml":{source:"iana"}, "application/epub+zip":{source:"iana", extensions:["epub"]}, "application/eshop":{source:"iana"}, "application/exi":{source:"iana", extensions:["exi"]}, "application/fastinfoset":{source:"iana"}, "application/fastsoap":{source:"iana"}, "application/fdt+xml":{source:"iana"}, "application/fits":{source:"iana"}, "application/font-sfnt":{source:"iana"}, "application/font-tdpfr":{source:"iana", extensions:["pfr"]}, "application/font-woff":{source:"iana", compressible:!1, extensions:["woff"]}, "application/font-woff2":{compressible:!1, extensions:["woff2"]}, "application/framework-attributes+xml":{source:"iana"}, "application/gml+xml":{source:"apache", extensions:["gml"]}, "application/gpx+xml":{source:"apache", extensions:["gpx"]}, "application/gxf":{source:"apache", extensions:["gxf"]}, "application/gzip":{source:"iana", compressible:!1}, "application/h224":{source:"iana"}, "application/held+xml":{source:"iana"}, "application/http":{source:"iana"}, "application/hyperstudio":{source:"iana", extensions:["stk"]}, "application/ibe-key-request+xml":{source:"iana"}, "application/ibe-pkg-reply+xml":{source:"iana"}, "application/ibe-pp-data":{source:"iana"}, "application/iges":{source:"iana"}, "application/im-iscomposing+xml":{source:"iana"}, "application/index":{source:"iana"}, "application/index.cmd":{source:"iana"}, "application/index.obj":{source:"iana"}, "application/index.response":{source:"iana"}, "application/index.vnd":{source:"iana"}, "application/inkml+xml":{source:"iana", extensions:["ink", "inkml"]}, "application/iotp":{source:"iana"}, "application/ipfix":{source:"iana", extensions:["ipfix"]}, "application/ipp":{source:"iana"}, "application/isup":{source:"iana"}, "application/its+xml":{source:"iana"}, "application/java-archive":{source:"apache", compressible:!1, extensions:["jar"]}, "application/java-serialized-object":{source:"apache", compressible:!1, extensions:["ser"]}, "application/java-vm":{source:"apache", compressible:!1, extensions:["class"]}, "application/javascript":{source:"iana", charset:"UTF-8", compressible:!0, extensions:["js"]}, "application/jose":{source:"iana"}, "application/jose+json":{source:"iana", compressible:!0}, "application/jrd+json":{source:"iana", compressible:!0}, "application/json":{source:"iana", charset:"UTF-8", compressible:!0, extensions:["json", "map"]}, "application/json-patch+json":{source:"iana", compressible:!0}, "application/json-seq":{source:"iana"}, "application/json5":{extensions:["json5"]}, "application/jsonml+json":{source:"apache", compressible:!0, extensions:["jsonml"]}, "application/jwk+json":{source:"iana", compressible:!0}, "application/jwk-set+json":{source:"iana", compressible:!0}, "application/jwt":{source:"iana"}, "application/kpml-request+xml":{source:"iana"}, "application/kpml-response+xml":{source:"iana"}, "application/ld+json":{source:"iana", compressible:!0, extensions:["jsonld"]}, "application/link-format":{source:"iana"}, "application/load-control+xml":{source:"iana"}, "application/lost+xml":{source:"iana", extensions:["lostxml"]}, "application/lostsync+xml":{source:"iana"}, "application/lxf":{source:"iana"}, "application/mac-binhex40":{source:"iana", extensions:["hqx"]}, "application/mac-compactpro":{source:"apache", extensions:["cpt"]}, "application/macwriteii":{source:"iana"}, "application/mads+xml":{source:"iana", extensions:["mads"]}, "application/manifest+json":{charset:"UTF-8", compressible:!0, extensions:["webmanifest"]}, "application/marc":{source:"iana", extensions:["mrc"]}, "application/marcxml+xml":{source:"iana", extensions:["mrcx"]}, "application/mathematica":{source:"iana", extensions:["ma", "nb", "mb"]}, "application/mathml+xml":{source:"iana", extensions:["mathml"]}, "application/mathml-content+xml":{source:"iana"}, "application/mathml-presentation+xml":{source:"iana"}, "application/mbms-associated-procedure-description+xml":{source:"iana"}, "application/mbms-deregister+xml":{source:"iana"}, "application/mbms-envelope+xml":{source:"iana"}, "application/mbms-msk+xml":{source:"iana"}, "application/mbms-msk-response+xml":{source:"iana"}, "application/mbms-protection-description+xml":{source:"iana"}, "application/mbms-reception-report+xml":{source:"iana"}, "application/mbms-register+xml":{source:"iana"}, "application/mbms-register-response+xml":{source:"iana"}, "application/mbms-schedule+xml":{source:"iana"}, "application/mbms-user-service-description+xml":{source:"iana"}, "application/mbox":{source:"iana", extensions:["mbox"]}, "application/media-policy-dataset+xml":{source:"iana"}, "application/media_control+xml":{source:"iana"}, "application/mediaservercontrol+xml":{source:"iana", extensions:["mscml"]}, "application/merge-patch+json":{source:"iana", compressible:!0}, "application/metalink+xml":{source:"apache", extensions:["metalink"]}, "application/metalink4+xml":{source:"iana", extensions:["meta4"]}, "application/mets+xml":{source:"iana", extensions:["mets"]}, "application/mf4":{source:"iana"}, "application/mikey":{source:"iana"}, "application/mods+xml":{source:"iana", extensions:["mods"]}, "application/moss-keys":{source:"iana"}, "application/moss-signature":{source:"iana"}, "application/mosskey-data":{source:"iana"}, "application/mosskey-request":{source:"iana"}, "application/mp21":{source:"iana", extensions:["m21", "mp21"]}, "application/mp4":{source:"iana", extensions:["mp4s", "m4p"]}, "application/mpeg4-generic":{source:"iana"}, "application/mpeg4-iod":{source:"iana"}, "application/mpeg4-iod-xmt":{source:"iana"}, "application/mrb-consumer+xml":{source:"iana"}, "application/mrb-publish+xml":{source:"iana"}, "application/msc-ivr+xml":{source:"iana"}, "application/msc-mixer+xml":{source:"iana"}, "application/msword":{source:"iana", compressible:!1, extensions:["doc", "dot"]}, "application/mxf":{source:"iana", extensions:["mxf"]}, "application/nasdata":{source:"iana"}, "application/news-checkgroups":{source:"iana"}, "application/news-groupinfo":{source:"iana"}, "application/news-transmission":{source:"iana"}, "application/nlsml+xml":{source:"iana"}, "application/nss":{source:"iana"}, "application/ocsp-request":{source:"iana"}, "application/ocsp-response":{source:"iana"}, "application/octet-stream":{source:"iana", compressible:!1, extensions:["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "buffer"]}, "application/oda":{source:"iana", extensions:["oda"]}, "application/odx":{source:"iana"}, "application/oebps-package+xml":{source:"iana", extensions:["opf"]}, "application/ogg":{source:"iana", compressible:!1, extensions:["ogx"]}, "application/omdoc+xml":{source:"apache", extensions:["omdoc"]}, "application/onenote":{source:"apache", extensions:["onetoc", "onetoc2", "onetmp", "onepkg"]}, "application/oxps":{source:"iana", extensions:["oxps"]}, "application/p2p-overlay+xml":{source:"iana"}, "application/parityfec":{source:"iana"}, "application/patch-ops-error+xml":{source:"iana", extensions:["xer"]}, "application/pdf":{source:"iana", compressible:!1, extensions:["pdf"]}, "application/pdx":{source:"iana"}, "application/pgp-encrypted":{source:"iana", compressible:!1, extensions:["pgp"]}, "application/pgp-keys":{source:"iana"}, "application/pgp-signature":{source:"iana", extensions:["asc", "sig"]}, "application/pics-rules":{source:"apache", extensions:["prf"]}, "application/pidf+xml":{source:"iana"}, "application/pidf-diff+xml":{source:"iana"}, "application/pkcs10":{source:"iana", extensions:["p10"]}, "application/pkcs7-mime":{source:"iana", extensions:["p7m", "p7c"]}, "application/pkcs7-signature":{source:"iana", extensions:["p7s"]}, "application/pkcs8":{source:"iana", extensions:["p8"]}, "application/pkix-attr-cert":{source:"iana", extensions:["ac"]}, "application/pkix-cert":{source:"iana", extensions:["cer"]}, "application/pkix-crl":{source:"iana", extensions:["crl"]}, "application/pkix-pkipath":{source:"iana", extensions:["pkipath"]}, "application/pkixcmp":{source:"iana", extensions:["pki"]}, "application/pls+xml":{source:"iana", extensions:["pls"]}, "application/poc-settings+xml":{source:"iana"}, "application/postscript":{source:"iana", compressible:!0, extensions:["ai", "eps", "ps"]}, "application/provenance+xml":{source:"iana"}, "application/prs.alvestrand.titrax-sheet":{source:"iana"}, "application/prs.cww":{source:"iana", extensions:["cww"]}, "application/prs.hpub+zip":{source:"iana"}, "application/prs.nprend":{source:"iana"}, "application/prs.plucker":{source:"iana"}, "application/prs.rdf-xml-crypt":{source:"iana"}, "application/prs.xsf+xml":{source:"iana"}, "application/pskc+xml":{source:"iana", extensions:["pskcxml"]}, "application/qsig":{source:"iana"}, "application/raptorfec":{source:"iana"}, "application/rdap+json":{source:"iana", compressible:!0}, "application/rdf+xml":{source:"iana", compressible:!0, extensions:["rdf"]}, "application/reginfo+xml":{source:"iana", extensions:["rif"]}, "application/relax-ng-compact-syntax":{source:"iana", extensions:["rnc"]}, "application/remote-printing":{source:"iana"}, "application/reputon+json":{source:"iana", compressible:!0}, "application/resource-lists+xml":{source:"iana", extensions:["rl"]}, "application/resource-lists-diff+xml":{source:"iana", extensions:["rld"]}, "application/riscos":{source:"iana"}, "application/rlmi+xml":{source:"iana"}, "application/rls-services+xml":{source:"iana", extensions:["rs"]}, "application/rpki-ghostbusters":{source:"iana", extensions:["gbr"]}, "application/rpki-manifest":{source:"iana", extensions:["mft"]}, "application/rpki-roa":{source:"iana", extensions:["roa"]}, "application/rpki-updown":{source:"iana"}, "application/rsd+xml":{source:"apache", extensions:["rsd"]}, "application/rss+xml":{source:"apache", compressible:!0, extensions:["rss"]}, "application/rtf":{source:"iana", compressible:!0, extensions:["rtf"]}, "application/rtploopback":{source:"iana"}, "application/rtx":{source:"iana"}, "application/samlassertion+xml":{source:"iana"}, "application/samlmetadata+xml":{source:"iana"}, "application/sbml+xml":{source:"iana", extensions:["sbml"]}, "application/scaip+xml":{source:"iana"}, "application/scvp-cv-request":{source:"iana", extensions:["scq"]}, "application/scvp-cv-response":{source:"iana", extensions:["scs"]}, "application/scvp-vp-request":{source:"iana", extensions:["spq"]}, "application/scvp-vp-response":{source:"iana", extensions:["spp"]}, "application/sdp":{source:"iana", extensions:["sdp"]}, "application/sep+xml":{source:"iana"}, "application/sep-exi":{source:"iana"}, "application/session-info":{source:"iana"}, "application/set-payment":{source:"iana"}, "application/set-payment-initiation":{source:"iana", extensions:["setpay"]}, "application/set-registration":{source:"iana"}, "application/set-registration-initiation":{source:"iana", extensions:["setreg"]}, "application/sgml":{source:"iana"}, "application/sgml-open-catalog":{source:"iana"}, "application/shf+xml":{source:"iana", extensions:["shf"]}, "application/sieve":{source:"iana"}, "application/simple-filter+xml":{source:"iana"}, "application/simple-message-summary":{source:"iana"}, "application/simplesymbolcontainer":{source:"iana"}, "application/slate":{source:"iana"}, "application/smil":{source:"iana"}, "application/smil+xml":{source:"iana", extensions:["smi", "smil"]}, "application/smpte336m":{source:"iana"}, "application/soap+fastinfoset":{source:"iana"}, "application/soap+xml":{source:"iana", compressible:!0}, "application/sparql-query":{source:"iana", extensions:["rq"]}, "application/sparql-results+xml":{source:"iana", extensions:["srx"]}, "application/spirits-event+xml":{source:"iana"}, "application/sql":{source:"iana"}, "application/srgs":{source:"iana", extensions:["gram"]}, "application/srgs+xml":{source:"iana", extensions:["grxml"]}, "application/sru+xml":{source:"iana", extensions:["sru"]}, "application/ssdl+xml":{source:"apache", extensions:["ssdl"]}, "application/ssml+xml":{source:"iana", extensions:["ssml"]}, "application/tamp-apex-update":{source:"iana"}, "application/tamp-apex-update-confirm":{source:"iana"}, "application/tamp-community-update":{source:"iana"}, "application/tamp-community-update-confirm":{source:"iana"}, "application/tamp-error":{source:"iana"}, "application/tamp-sequence-adjust":{source:"iana"}, "application/tamp-sequence-adjust-confirm":{source:"iana"}, "application/tamp-status-query":{source:"iana"}, "application/tamp-status-response":{source:"iana"}, "application/tamp-update":{source:"iana"}, "application/tamp-update-confirm":{source:"iana"}, "application/tar":{compressible:!0}, "application/tei+xml":{source:"iana", extensions:["tei", "teicorpus"]}, "application/thraud+xml":{source:"iana", extensions:["tfi"]}, "application/timestamp-query":{source:"iana"}, "application/timestamp-reply":{source:"iana"}, "application/timestamped-data":{source:"iana", extensions:["tsd"]}, "application/ttml+xml":{source:"iana"}, "application/tve-trigger":{source:"iana"}, "application/ulpfec":{source:"iana"}, "application/urc-grpsheet+xml":{source:"iana"}, "application/urc-ressheet+xml":{source:"iana"}, "application/urc-targetdesc+xml":{source:"iana"}, "application/urc-uisocketdesc+xml":{source:"iana"}, "application/vcard+json":{source:"iana", compressible:!0}, "application/vcard+xml":{source:"iana"}, "application/vemmi":{source:"iana"}, "application/vividence.scriptfile":{source:"apache"}, "application/vnd.3gpp.bsf+xml":{source:"iana"}, "application/vnd.3gpp.pic-bw-large":{source:"iana", extensions:["plb"]}, "application/vnd.3gpp.pic-bw-small":{source:"iana", extensions:["psb"]}, "application/vnd.3gpp.pic-bw-var":{source:"iana", extensions:["pvb"]}, "application/vnd.3gpp.sms":{source:"iana"}, "application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana"}, "application/vnd.3gpp2.sms":{source:"iana"}, "application/vnd.3gpp2.tcap":{source:"iana", extensions:["tcap"]}, "application/vnd.3m.post-it-notes":{source:"iana", extensions:["pwn"]}, "application/vnd.accpac.simply.aso":{source:"iana", extensions:["aso"]}, "application/vnd.accpac.simply.imp":{source:"iana", extensions:["imp"]}, "application/vnd.acucobol":{source:"iana", extensions:["acu"]}, "application/vnd.acucorp":{source:"iana", extensions:["atc", "acutc"]}, "application/vnd.adobe.air-application-installer-package+zip":{source:"apache", extensions:["air"]}, "application/vnd.adobe.flash.movie":{source:"iana"}, "application/vnd.adobe.formscentral.fcdt":{source:"iana", extensions:["fcdt"]}, "application/vnd.adobe.fxp":{source:"iana", extensions:["fxp", "fxpl"]}, "application/vnd.adobe.partial-upload":{source:"iana"}, "application/vnd.adobe.xdp+xml":{source:"iana", extensions:["xdp"]}, "application/vnd.adobe.xfdf":{source:"iana", extensions:["xfdf"]}, "application/vnd.aether.imp":{source:"iana"}, "application/vnd.ah-barcode":{source:"iana"}, "application/vnd.ahead.space":{source:"iana", extensions:["ahead"]}, "application/vnd.airzip.filesecure.azf":{source:"iana", extensions:["azf"]}, "application/vnd.airzip.filesecure.azs":{source:"iana", extensions:["azs"]}, "application/vnd.amazon.ebook":{source:"apache", extensions:["azw"]}, "application/vnd.americandynamics.acc":{source:"iana", extensions:["acc"]}, "application/vnd.amiga.ami":{source:"iana", extensions:["ami"]}, "application/vnd.amundsen.maze+xml":{source:"iana"}, "application/vnd.android.package-archive":{source:"apache", compressible:!1, extensions:["apk"]}, "application/vnd.anser-web-certificate-issue-initiation":{source:"iana", extensions:["cii"]}, "application/vnd.anser-web-funds-transfer-initiation":{source:"apache", extensions:["fti"]}, "application/vnd.antix.game-component":{source:"iana", extensions:["atx"]}, "application/vnd.apache.thrift.binary":{source:"iana"}, "application/vnd.apache.thrift.compact":{source:"iana"}, "application/vnd.apache.thrift.json":{source:"iana"}, "application/vnd.api+json":{source:"iana", compressible:!0}, "application/vnd.apple.installer+xml":{source:"iana", extensions:["mpkg"]}, "application/vnd.apple.mpegurl":{source:"iana", extensions:["m3u8"]}, "application/vnd.arastra.swi":{source:"iana"}, "application/vnd.aristanetworks.swi":{source:"iana", extensions:["swi"]}, "application/vnd.artsquare":{source:"iana"}, "application/vnd.astraea-software.iota":{source:"iana", extensions:["iota"]}, "application/vnd.audiograph":{source:"iana", extensions:["aep"]}, "application/vnd.autopackage":{source:"iana"}, "application/vnd.avistar+xml":{source:"iana"}, "application/vnd.balsamiq.bmml+xml":{source:"iana"}, "application/vnd.balsamiq.bmpr":{source:"iana"}, "application/vnd.bekitzur-stech+json":{source:"iana", compressible:!0}, "application/vnd.blueice.multipass":{source:"iana", extensions:["mpm"]}, "application/vnd.bluetooth.ep.oob":{source:"iana"}, "application/vnd.bluetooth.le.oob":{source:"iana"}, "application/vnd.bmi":{source:"iana", extensions:["bmi"]}, "application/vnd.businessobjects":{source:"iana", extensions:["rep"]}, "application/vnd.cab-jscript":{source:"iana"}, "application/vnd.canon-cpdl":{source:"iana"}, "application/vnd.canon-lips":{source:"iana"}, "application/vnd.cendio.thinlinc.clientconf":{source:"iana"}, "application/vnd.century-systems.tcp_stream":{source:"iana"}, "application/vnd.chemdraw+xml":{source:"iana", extensions:["cdxml"]}, "application/vnd.chipnuts.karaoke-mmd":{source:"iana", extensions:["mmd"]}, "application/vnd.cinderella":{source:"iana", extensions:["cdy"]}, "application/vnd.cirpack.isdn-ext":{source:"iana"}, "application/vnd.citationstyles.style+xml":{source:"iana"}, "application/vnd.claymore":{source:"iana", extensions:["cla"]}, "application/vnd.cloanto.rp9":{source:"iana", extensions:["rp9"]}, "application/vnd.clonk.c4group":{source:"iana", extensions:["c4g", "c4d", "c4f", "c4p", "c4u"]}, "application/vnd.cluetrust.cartomobile-config":{source:"iana", extensions:["c11amc"]}, "application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana", extensions:["c11amz"]}, "application/vnd.coffeescript":{source:"iana"}, "application/vnd.collection+json":{source:"iana", compressible:!0}, "application/vnd.collection.doc+json":{source:"iana", compressible:!0}, "application/vnd.collection.next+json":{source:"iana", compressible:!0}, "application/vnd.commerce-battelle":{source:"iana"}, "application/vnd.commonspace":{source:"iana", extensions:["csp"]}, "application/vnd.contact.cmsg":{source:"iana", extensions:["cdbcmsg"]}, "application/vnd.cosmocaller":{source:"iana", extensions:["cmc"]}, "application/vnd.crick.clicker":{source:"iana", extensions:["clkx"]}, "application/vnd.crick.clicker.keyboard":{source:"iana", extensions:["clkk"]}, "application/vnd.crick.clicker.palette":{source:"iana", extensions:["clkp"]}, "application/vnd.crick.clicker.template":{source:"iana", extensions:["clkt"]}, "application/vnd.crick.clicker.wordbank":{source:"iana", extensions:["clkw"]}, "application/vnd.criticaltools.wbs+xml":{source:"iana", extensions:["wbs"]}, "application/vnd.ctc-posml":{source:"iana", extensions:["pml"]}, "application/vnd.ctct.ws+xml":{source:"iana"}, "application/vnd.cups-pdf":{source:"iana"}, "application/vnd.cups-postscript":{source:"iana"}, "application/vnd.cups-ppd":{source:"iana", extensions:["ppd"]}, "application/vnd.cups-raster":{source:"iana"}, "application/vnd.cups-raw":{source:"iana"}, "application/vnd.curl":{source:"iana"}, "application/vnd.curl.car":{source:"apache", extensions:["car"]}, "application/vnd.curl.pcurl":{source:"apache", extensions:["pcurl"]}, "application/vnd.cyan.dean.root+xml":{source:"iana"}, "application/vnd.cybank":{source:"iana"}, "application/vnd.dart":{source:"iana", compressible:!0, extensions:["dart"]}, "application/vnd.data-vision.rdz":{source:"iana", extensions:["rdz"]}, "application/vnd.debian.binary-package":{source:"iana"}, "application/vnd.dece.data":{source:"iana", extensions:["uvf", "uvvf", "uvd", "uvvd"]}, "application/vnd.dece.ttml+xml":{source:"iana", extensions:["uvt", "uvvt"]}, "application/vnd.dece.unspecified":{source:"iana", extensions:["uvx", "uvvx"]}, "application/vnd.dece.zip":{source:"iana", extensions:["uvz", "uvvz"]}, "application/vnd.denovo.fcselayout-link":{source:"iana", extensions:["fe_launch"]}, "application/vnd.desmume-movie":{source:"iana"}, "application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"}, "application/vnd.dm.delegation+xml":{source:"iana"}, "application/vnd.dna":{source:"iana", extensions:["dna"]}, "application/vnd.document+json":{source:"iana", compressible:!0}, "application/vnd.dolby.mlp":{source:"apache", extensions:["mlp"]}, "application/vnd.dolby.mobile.1":{source:"iana"}, "application/vnd.dolby.mobile.2":{source:"iana"}, "application/vnd.doremir.scorecloud-binary-document":{source:"iana"}, "application/vnd.dpgraph":{source:"iana", extensions:["dpg"]}, "application/vnd.dreamfactory":{source:"iana", extensions:["dfac"]}, "application/vnd.ds-keypoint":{source:"apache", extensions:["kpxx"]}, "application/vnd.dtg.local":{source:"iana"}, "application/vnd.dtg.local.flash":{source:"iana"}, "application/vnd.dtg.local.html":{source:"iana"}, "application/vnd.dvb.ait":{source:"iana", extensions:["ait"]}, "application/vnd.dvb.dvbj":{source:"iana"}, "application/vnd.dvb.esgcontainer":{source:"iana"}, "application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"}, "application/vnd.dvb.ipdcesgaccess":{source:"iana"}, "application/vnd.dvb.ipdcesgaccess2":{source:"iana"}, "application/vnd.dvb.ipdcesgpdd":{source:"iana"}, "application/vnd.dvb.ipdcroaming":{source:"iana"}, "application/vnd.dvb.iptv.alfec-base":{source:"iana"}, "application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"}, "application/vnd.dvb.notif-aggregate-root+xml":{source:"iana"}, "application/vnd.dvb.notif-container+xml":{source:"iana"}, "application/vnd.dvb.notif-generic+xml":{source:"iana"}, "application/vnd.dvb.notif-ia-msglist+xml":{source:"iana"}, "application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana"}, "application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana"}, "application/vnd.dvb.notif-init+xml":{source:"iana"}, "application/vnd.dvb.pfr":{source:"iana"}, "application/vnd.dvb.service":{source:"iana", extensions:["svc"]}, "application/vnd.dxr":{source:"iana"}, "application/vnd.dynageo":{source:"iana", extensions:["geo"]}, "application/vnd.dzr":{source:"iana"}, "application/vnd.easykaraoke.cdgdownload":{source:"iana"}, "application/vnd.ecdis-update":{source:"iana"}, "application/vnd.ecowin.chart":{source:"iana", extensions:["mag"]}, "application/vnd.ecowin.filerequest":{source:"iana"}, "application/vnd.ecowin.fileupdate":{source:"iana"}, "application/vnd.ecowin.series":{source:"iana"}, "application/vnd.ecowin.seriesrequest":{source:"iana"}, "application/vnd.ecowin.seriesupdate":{source:"iana"}, "application/vnd.emclient.accessrequest+xml":{source:"iana"}, "application/vnd.enliven":{source:"iana", extensions:["nml"]}, "application/vnd.enphase.envoy":{source:"iana"}, "application/vnd.eprints.data+xml":{source:"iana"}, "application/vnd.epson.esf":{source:"iana", extensions:["esf"]}, "application/vnd.epson.msf":{source:"iana", extensions:["msf"]}, "application/vnd.epson.quickanime":{source:"iana", extensions:["qam"]}, "application/vnd.epson.salt":{source:"iana", extensions:["slt"]}, "application/vnd.epson.ssf":{source:"iana", extensions:["ssf"]}, "application/vnd.ericsson.quickcall":{source:"iana"}, "application/vnd.eszigno3+xml":{source:"iana", extensions:["es3", "et3"]}, "application/vnd.etsi.aoc+xml":{source:"iana"}, "application/vnd.etsi.asic-e+zip":{source:"iana"}, "application/vnd.etsi.asic-s+zip":{source:"iana"}, "application/vnd.etsi.cug+xml":{source:"iana"}, "application/vnd.etsi.iptvcommand+xml":{source:"iana"}, "application/vnd.etsi.iptvdiscovery+xml":{source:"iana"}, "application/vnd.etsi.iptvprofile+xml":{source:"iana"}, "application/vnd.etsi.iptvsad-bc+xml":{source:"iana"}, "application/vnd.etsi.iptvsad-cod+xml":{source:"iana"}, "application/vnd.etsi.iptvsad-npvr+xml":{source:"iana"}, "application/vnd.etsi.iptvservice+xml":{source:"iana"}, "application/vnd.etsi.iptvsync+xml":{source:"iana"}, "application/vnd.etsi.iptvueprofile+xml":{source:"iana"}, "application/vnd.etsi.mcid+xml":{source:"iana"}, "application/vnd.etsi.mheg5":{source:"iana"}, "application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana"}, "application/vnd.etsi.pstn+xml":{source:"iana"}, "application/vnd.etsi.sci+xml":{source:"iana"}, "application/vnd.etsi.simservs+xml":{source:"iana"}, "application/vnd.etsi.timestamp-token":{source:"iana"}, "application/vnd.etsi.tsl+xml":{source:"iana"}, "application/vnd.etsi.tsl.der":{source:"iana"}, "application/vnd.eudora.data":{source:"iana"}, "application/vnd.ezpix-album":{source:"iana", extensions:["ez2"]}, "application/vnd.ezpix-package":{source:"iana", extensions:["ez3"]}, "application/vnd.f-secure.mobile":{source:"iana"}, "application/vnd.fastcopy-disk-image":{source:"iana"}, "application/vnd.fdf":{source:"iana", extensions:["fdf"]}, "application/vnd.fdsn.mseed":{source:"iana", extensions:["mseed"]}, "application/vnd.fdsn.seed":{source:"iana", extensions:["seed", "dataless"]}, "application/vnd.ffsns":{source:"iana"}, "application/vnd.fints":{source:"iana"}, "application/vnd.flographit":{source:"iana", extensions:["gph"]}, "application/vnd.fluxtime.clip":{source:"iana", extensions:["ftc"]}, "application/vnd.font-fontforge-sfd":{source:"iana"}, "application/vnd.framemaker":{source:"iana", extensions:["fm", "frame", "maker", "book"]}, "application/vnd.frogans.fnc":{source:"iana", extensions:["fnc"]}, "application/vnd.frogans.ltf":{source:"iana", extensions:["ltf"]}, "application/vnd.fsc.weblaunch":{source:"iana", extensions:["fsc"]}, "application/vnd.fujitsu.oasys":{source:"iana", extensions:["oas"]}, "application/vnd.fujitsu.oasys2":{source:"iana", extensions:["oa2"]}, "application/vnd.fujitsu.oasys3":{source:"iana", extensions:["oa3"]}, "application/vnd.fujitsu.oasysgp":{source:"iana", extensions:["fg5"]}, "application/vnd.fujitsu.oasysprs":{source:"iana", extensions:["bh2"]}, "application/vnd.fujixerox.art-ex":{source:"iana"}, "application/vnd.fujixerox.art4":{source:"iana"}, "application/vnd.fujixerox.ddd":{source:"iana", extensions:["ddd"]}, "application/vnd.fujixerox.docuworks":{source:"iana", extensions:["xdw"]}, "application/vnd.fujixerox.docuworks.binder":{source:"iana", extensions:["xbd"]}, "application/vnd.fujixerox.docuworks.container":{source:"iana"}, "application/vnd.fujixerox.hbpl":{source:"iana"}, "application/vnd.fut-misnet":{source:"iana"}, "application/vnd.fuzzysheet":{source:"iana", extensions:["fzs"]}, "application/vnd.genomatix.tuxedo":{source:"iana", extensions:["txd"]}, "application/vnd.geo+json":{source:"iana", compressible:!0}, "application/vnd.geocube+xml":{source:"iana"}, "application/vnd.geogebra.file":{source:"iana", extensions:["ggb"]}, "application/vnd.geogebra.tool":{source:"iana", extensions:["ggt"]}, "application/vnd.geometry-explorer":{source:"iana", extensions:["gex", "gre"]}, "application/vnd.geonext":{source:"iana", extensions:["gxt"]}, "application/vnd.geoplan":{source:"iana", extensions:["g2w"]}, "application/vnd.geospace":{source:"iana", extensions:["g3w"]}, "application/vnd.gerber":{source:"iana"}, "application/vnd.globalplatform.card-content-mgt":{source:"iana"}, "application/vnd.globalplatform.card-content-mgt-response":{source:"iana"}, "application/vnd.gmx":{source:"iana", extensions:["gmx"]}, "application/vnd.google-earth.kml+xml":{source:"iana", compressible:!0, extensions:["kml"]}, "application/vnd.google-earth.kmz":{source:"iana", compressible:!1, extensions:["kmz"]}, "application/vnd.gov.sk.e-form+xml":{source:"iana"}, "application/vnd.gov.sk.e-form+zip":{source:"iana"}, "application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana"}, "application/vnd.grafeq":{source:"iana", extensions:["gqf", "gqs"]}, "application/vnd.gridmp":{source:"iana"}, "application/vnd.groove-account":{source:"iana", extensions:["gac"]}, "application/vnd.groove-help":{source:"iana", extensions:["ghf"]}, "application/vnd.groove-identity-message":{source:"iana", extensions:["gim"]}, "application/vnd.groove-injector":{source:"iana", extensions:["grv"]}, "application/vnd.groove-tool-message":{source:"iana", extensions:["gtm"]}, "application/vnd.groove-tool-template":{source:"iana", extensions:["tpl"]}, "application/vnd.groove-vcard":{source:"iana", extensions:["vcg"]}, "application/vnd.hal+json":{source:"iana", compressible:!0}, "application/vnd.hal+xml":{source:"iana", extensions:["hal"]}, "application/vnd.handheld-entertainment+xml":{source:"iana", extensions:["zmm"]}, "application/vnd.hbci":{source:"iana", extensions:["hbci"]}, "application/vnd.hcl-bireports":{source:"iana"}, "application/vnd.heroku+json":{source:"iana", compressible:!0}, "application/vnd.hhe.lesson-player":{source:"iana", extensions:["les"]}, "application/vnd.hp-hpgl":{source:"iana", extensions:["hpgl"]}, "application/vnd.hp-hpid":{source:"iana", extensions:["hpid"]}, "application/vnd.hp-hps":{source:"iana", extensions:["hps"]}, "application/vnd.hp-jlyt":{source:"iana", extensions:["jlt"]}, "application/vnd.hp-pcl":{source:"iana", extensions:["pcl"]}, "application/vnd.hp-pclxl":{source:"iana", extensions:["pclxl"]}, "application/vnd.httphone":{source:"iana"}, "application/vnd.hydrostatix.sof-data":{source:"iana", extensions:["sfd-hdstx"]}, "application/vnd.hyperdrive+json":{source:"iana", compressible:!0}, "application/vnd.hzn-3d-crossword":{source:"iana"}, "application/vnd.ibm.afplinedata":{source:"iana"}, "application/vnd.ibm.electronic-media":{source:"iana"}, "application/vnd.ibm.minipay":{source:"iana", extensions:["mpy"]}, "application/vnd.ibm.modcap":{source:"iana", extensions:["afp", "listafp", "list3820"]}, "application/vnd.ibm.rights-management":{source:"iana", extensions:["irm"]}, "application/vnd.ibm.secure-container":{source:"iana", extensions:["sc"]}, "application/vnd.iccprofile":{source:"iana", extensions:["icc", "icm"]}, "application/vnd.ieee.1905":{source:"iana"}, "application/vnd.igloader":{source:"iana", extensions:["igl"]}, "application/vnd.immervision-ivp":{source:"iana", extensions:["ivp"]}, "application/vnd.immervision-ivu":{source:"iana", extensions:["ivu"]}, "application/vnd.ims.imsccv1p1":{source:"iana"}, "application/vnd.ims.imsccv1p2":{source:"iana"}, "application/vnd.ims.imsccv1p3":{source:"iana"}, "application/vnd.ims.lis.v2.result+json":{source:"iana", compressible:!0}, "application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana", compressible:!0}, "application/vnd.ims.lti.v2.toolproxy+json":{source:"iana", compressible:!0}, "application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana", compressible:!0}, "application/vnd.ims.lti.v2.toolsettings+json":{source:"iana", compressible:!0}, "application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana", compressible:!0}, "application/vnd.informedcontrol.rms+xml":{source:"iana"}, "application/vnd.informix-visionary":{source:"iana"}, "application/vnd.infotech.project":{source:"iana"}, "application/vnd.infotech.project+xml":{source:"iana"}, "application/vnd.innopath.wamp.notification":{source:"iana"}, "application/vnd.insors.igm":{source:"iana", extensions:["igm"]}, "application/vnd.intercon.formnet":{source:"iana", extensions:["xpw", "xpx"]}, "application/vnd.intergeo":{source:"iana", extensions:["i2g"]}, "application/vnd.intertrust.digibox":{source:"iana"}, "application/vnd.intertrust.nncp":{source:"iana"}, "application/vnd.intu.qbo":{source:"iana", extensions:["qbo"]}, "application/vnd.intu.qfx":{source:"iana", extensions:["qfx"]}, "application/vnd.iptc.g2.catalogitem+xml":{source:"iana"}, "application/vnd.iptc.g2.conceptitem+xml":{source:"iana"}, "application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana"}, "application/vnd.iptc.g2.newsitem+xml":{source:"iana"}, "application/vnd.iptc.g2.newsmessage+xml":{source:"iana"}, "application/vnd.iptc.g2.packageitem+xml":{source:"iana"}, "application/vnd.iptc.g2.planningitem+xml":{source:"iana"}, "application/vnd.ipunplugged.rcprofile":{source:"iana", extensions:["rcprofile"]}, "application/vnd.irepository.package+xml":{source:"iana", extensions:["irp"]}, "application/vnd.is-xpr":{source:"iana", extensions:["xpr"]}, "application/vnd.isac.fcs":{source:"iana", extensions:["fcs"]}, "application/vnd.jam":{source:"iana", extensions:["jam"]}, "application/vnd.japannet-directory-service":{source:"iana"}, "application/vnd.japannet-jpnstore-wakeup":{source:"iana"}, "application/vnd.japannet-payment-wakeup":{source:"iana"}, "application/vnd.japannet-registration":{source:"iana"}, "application/vnd.japannet-registration-wakeup":{source:"iana"}, "application/vnd.japannet-setstore-wakeup":{source:"iana"}, "application/vnd.japannet-verification":{source:"iana"}, "application/vnd.japannet-verification-wakeup":{source:"iana"}, "application/vnd.jcp.javame.midlet-rms":{source:"iana", extensions:["rms"]}, "application/vnd.jisp":{source:"iana", extensions:["jisp"]}, "application/vnd.joost.joda-archive":{source:"iana", extensions:["joda"]}, "application/vnd.jsk.isdn-ngn":{source:"iana"}, "application/vnd.kahootz":{source:"iana", extensions:["ktz", "ktr"]}, "application/vnd.kde.karbon":{source:"iana", extensions:["karbon"]}, "application/vnd.kde.kchart":{source:"iana", extensions:["chrt"]}, "application/vnd.kde.kformula":{source:"iana", extensions:["kfo"]}, "application/vnd.kde.kivio":{source:"iana", extensions:["flw"]}, "application/vnd.kde.kontour":{source:"iana", extensions:["kon"]}, "application/vnd.kde.kpresenter":{source:"iana", extensions:["kpr", "kpt"]}, "application/vnd.kde.kspread":{source:"iana", extensions:["ksp"]}, "application/vnd.kde.kword":{source:"iana", extensions:["kwd", "kwt"]}, "application/vnd.kenameaapp":{source:"iana", extensions:["htke"]}, "application/vnd.kidspiration":{source:"iana", extensions:["kia"]}, "application/vnd.kinar":{source:"iana", extensions:["kne", "knp"]}, "application/vnd.koan":{source:"iana", extensions:["skp", "skd", "skt", "skm"]}, "application/vnd.kodak-descriptor":{source:"iana", extensions:["sse"]}, "application/vnd.las.las+xml":{source:"iana", extensions:["lasxml"]}, "application/vnd.liberty-request+xml":{source:"iana"}, "application/vnd.llamagraphics.life-balance.desktop":{source:"iana", extensions:["lbd"]}, "application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana", extensions:["lbe"]}, "application/vnd.lotus-1-2-3":{source:"iana", extensions:["123"]}, "application/vnd.lotus-approach":{source:"iana", extensions:["apr"]}, "application/vnd.lotus-freelance":{source:"iana", extensions:["pre"]}, "application/vnd.lotus-notes":{source:"iana", extensions:["nsf"]}, "application/vnd.lotus-organizer":{source:"iana", extensions:["org"]}, "application/vnd.lotus-screencam":{source:"iana", extensions:["scm"]}, "application/vnd.lotus-wordpro":{source:"iana", extensions:["lwp"]}, "application/vnd.macports.portpkg":{source:"iana", extensions:["portpkg"]}, "application/vnd.marlin.drm.actiontoken+xml":{source:"iana"}, "application/vnd.marlin.drm.conftoken+xml":{source:"iana"}, "application/vnd.marlin.drm.license+xml":{source:"iana"}, "application/vnd.marlin.drm.mdcf":{source:"iana"}, "application/vnd.mason+json":{source:"iana", compressible:!0}, "application/vnd.maxmind.maxmind-db":{source:"iana"}, "application/vnd.mcd":{source:"iana", extensions:["mcd"]}, "application/vnd.medcalcdata":{source:"iana", extensions:["mc1"]}, "application/vnd.mediastation.cdkey":{source:"iana", extensions:["cdkey"]}, "application/vnd.meridian-slingshot":{source:"iana"}, "application/vnd.mfer":{source:"iana", extensions:["mwf"]}, "application/vnd.mfmp":{source:"iana", extensions:["mfm"]}, "application/vnd.micro+json":{source:"iana", compressible:!0}, "application/vnd.micrografx.flo":{source:"iana", extensions:["flo"]}, "application/vnd.micrografx.igx":{source:"iana", extensions:["igx"]}, "application/vnd.microsoft.portable-executable":{source:"iana"}, "application/vnd.miele+json":{source:"iana", compressible:!0}, "application/vnd.mif":{source:"iana", extensions:["mif"]}, "application/vnd.minisoft-hp3000-save":{source:"iana"}, "application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"}, "application/vnd.mobius.daf":{source:"iana", extensions:["daf"]}, "application/vnd.mobius.dis":{source:"iana", extensions:["dis"]}, "application/vnd.mobius.mbk":{source:"iana", extensions:["mbk"]}, "application/vnd.mobius.mqy":{source:"iana", extensions:["mqy"]}, "application/vnd.mobius.msl":{source:"iana", extensions:["msl"]}, "application/vnd.mobius.plc":{source:"iana", extensions:["plc"]}, "application/vnd.mobius.txf":{source:"iana", extensions:["txf"]}, "application/vnd.mophun.application":{source:"iana", extensions:["mpn"]}, "application/vnd.mophun.certificate":{source:"iana", extensions:["mpc"]}, "application/vnd.motorola.flexsuite":{source:"iana"}, "application/vnd.motorola.flexsuite.adsi":{source:"iana"}, "application/vnd.motorola.flexsuite.fis":{source:"iana"}, "application/vnd.motorola.flexsuite.gotap":{source:"iana"}, "application/vnd.motorola.flexsuite.kmr":{source:"iana"}, "application/vnd.motorola.flexsuite.ttc":{source:"iana"}, "application/vnd.motorola.flexsuite.wem":{source:"iana"}, "application/vnd.motorola.iprm":{source:"iana"}, "application/vnd.mozilla.xul+xml":{source:"iana", compressible:!0, extensions:["xul"]}, "application/vnd.ms-3mfdocument":{source:"iana"}, "application/vnd.ms-artgalry":{source:"iana", extensions:["cil"]}, "application/vnd.ms-asf":{source:"iana"}, "application/vnd.ms-cab-compressed":{source:"iana", extensions:["cab"]}, "application/vnd.ms-color.iccprofile":{source:"apache"}, "application/vnd.ms-excel":{source:"iana", compressible:!1, extensions:["xls", "xlm", "xla", "xlc", "xlt", "xlw"]}, "application/vnd.ms-excel.addin.macroenabled.12":{source:"iana", extensions:["xlam"]}, "application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana", extensions:["xlsb"]}, "application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana", extensions:["xlsm"]}, "application/vnd.ms-excel.template.macroenabled.12":{source:"iana", extensions:["xltm"]}, "application/vnd.ms-fontobject":{source:"iana", compressible:!0, extensions:["eot"]}, "application/vnd.ms-htmlhelp":{source:"iana", extensions:["chm"]}, "application/vnd.ms-ims":{source:"iana", extensions:["ims"]}, "application/vnd.ms-lrm":{source:"iana", extensions:["lrm"]}, "application/vnd.ms-office.activex+xml":{source:"iana"}, "application/vnd.ms-officetheme":{source:"iana", extensions:["thmx"]}, "application/vnd.ms-opentype":{source:"apache", compressible:!0}, "application/vnd.ms-package.obfuscated-opentype":{source:"apache"}, "application/vnd.ms-pki.seccat":{source:"apache", extensions:["cat"]}, "application/vnd.ms-pki.stl":{source:"apache", extensions:["stl"]}, "application/vnd.ms-playready.initiator+xml":{source:"iana"}, "application/vnd.ms-powerpoint":{source:"iana", compressible:!1, extensions:["ppt", "pps", "pot"]}, "application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana", extensions:["ppam"]}, "application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana", extensions:["pptm"]}, "application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana", extensions:["sldm"]}, "application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana", extensions:["ppsm"]}, "application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana", extensions:["potm"]}, "application/vnd.ms-printing.printticket+xml":{source:"apache"}, "application/vnd.ms-project":{source:"iana", extensions:["mpp", "mpt"]}, "application/vnd.ms-tnef":{source:"iana"}, "application/vnd.ms-windows.printerpairing":{source:"iana"}, "application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"}, "application/vnd.ms-wmdrm.lic-resp":{source:"iana"}, "application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"}, "application/vnd.ms-wmdrm.meter-resp":{source:"iana"}, "application/vnd.ms-word.document.macroenabled.12":{source:"iana", extensions:["docm"]}, "application/vnd.ms-word.template.macroenabled.12":{source:"iana", extensions:["dotm"]}, "application/vnd.ms-works":{source:"iana", extensions:["wps", "wks", "wcm", "wdb"]}, "application/vnd.ms-wpl":{source:"iana", extensions:["wpl"]}, "application/vnd.ms-xpsdocument":{source:"iana", compressible:!1, extensions:["xps"]}, "application/vnd.msa-disk-image":{source:"iana"}, "application/vnd.mseq":{source:"iana", extensions:["mseq"]}, "application/vnd.msign":{source:"iana"}, "application/vnd.multiad.creator":{source:"iana"}, "application/vnd.multiad.creator.cif":{source:"iana"}, "application/vnd.music-niff":{source:"iana"}, "application/vnd.musician":{source:"iana", extensions:["mus"]}, "application/vnd.muvee.style":{source:"iana", extensions:["msty"]}, "application/vnd.mynfc":{source:"iana", extensions:["taglet"]}, "application/vnd.ncd.control":{source:"iana"}, "application/vnd.ncd.reference":{source:"iana"}, "application/vnd.nervana":{source:"iana"}, "application/vnd.netfpx":{source:"iana"}, "application/vnd.neurolanguage.nlu":{source:"iana", extensions:["nlu"]}, "application/vnd.nintendo.nitro.rom":{source:"iana"}, "application/vnd.nintendo.snes.rom":{source:"iana"}, "application/vnd.nitf":{source:"iana", extensions:["ntf", "nitf"]}, "application/vnd.noblenet-directory":{source:"iana", extensions:["nnd"]}, "application/vnd.noblenet-sealer":{source:"iana", extensions:["nns"]}, "application/vnd.noblenet-web":{source:"iana", extensions:["nnw"]}, "application/vnd.nokia.catalogs":{source:"iana"}, "application/vnd.nokia.conml+wbxml":{source:"iana"}, "application/vnd.nokia.conml+xml":{source:"iana"}, "application/vnd.nokia.iptv.config+xml":{source:"iana"}, "application/vnd.nokia.isds-radio-presets":{source:"iana"}, "application/vnd.nokia.landmark+wbxml":{source:"iana"}, "application/vnd.nokia.landmark+xml":{source:"iana"}, "application/vnd.nokia.landmarkcollection+xml":{source:"iana"}, "application/vnd.nokia.n-gage.ac+xml":{source:"iana"}, "application/vnd.nokia.n-gage.data":{source:"iana", extensions:["ngdat"]}, "application/vnd.nokia.n-gage.symbian.install":{source:"iana", extensions:["n-gage"]}, "application/vnd.nokia.ncd":{source:"iana"}, "application/vnd.nokia.pcd+wbxml":{source:"iana"}, "application/vnd.nokia.pcd+xml":{source:"iana"}, "application/vnd.nokia.radio-preset":{source:"iana", extensions:["rpst"]}, "application/vnd.nokia.radio-presets":{source:"iana", extensions:["rpss"]}, "application/vnd.novadigm.edm":{source:"iana", extensions:["edm"]}, "application/vnd.novadigm.edx":{source:"iana", extensions:["edx"]}, "application/vnd.novadigm.ext":{source:"iana", extensions:["ext"]}, "application/vnd.ntt-local.content-share":{source:"iana"}, "application/vnd.ntt-local.file-transfer":{source:"iana"}, "application/vnd.ntt-local.ogw_remote-access":{source:"iana"}, "application/vnd.ntt-local.sip-ta_remote":{source:"iana"}, "application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"}, "application/vnd.oasis.opendocument.chart":{source:"iana", extensions:["odc"]}, "application/vnd.oasis.opendocument.chart-template":{source:"iana", extensions:["otc"]}, "application/vnd.oasis.opendocument.database":{source:"iana", extensions:["odb"]}, "application/vnd.oasis.opendocument.formula":{source:"iana", extensions:["odf"]}, "application/vnd.oasis.opendocument.formula-template":{source:"iana", extensions:["odft"]}, "application/vnd.oasis.opendocument.graphics":{source:"iana", compressible:!1, extensions:["odg"]}, "application/vnd.oasis.opendocument.graphics-template":{source:"iana", extensions:["otg"]}, "application/vnd.oasis.opendocument.image":{source:"iana", extensions:["odi"]}, "application/vnd.oasis.opendocument.image-template":{source:"iana", extensions:["oti"]}, "application/vnd.oasis.opendocument.presentation":{source:"iana", compressible:!1, extensions:["odp"]}, "application/vnd.oasis.opendocument.presentation-template":{source:"iana", extensions:["otp"]}, "application/vnd.oasis.opendocument.spreadsheet":{source:"iana", compressible:!1, extensions:["ods"]}, "application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana", extensions:["ots"]}, "application/vnd.oasis.opendocument.text":{source:"iana", compressible:!1, extensions:["odt"]}, "application/vnd.oasis.opendocument.text-master":{source:"iana", extensions:["odm"]}, "application/vnd.oasis.opendocument.text-template":{source:"iana", extensions:["ott"]}, "application/vnd.oasis.opendocument.text-web":{source:"iana", extensions:["oth"]}, "application/vnd.obn":{source:"iana"}, "application/vnd.oftn.l10n+json":{source:"iana", compressible:!0}, "application/vnd.oipf.contentaccessdownload+xml":{source:"iana"}, "application/vnd.oipf.contentaccessstreaming+xml":{source:"iana"}, "application/vnd.oipf.cspg-hexbinary":{source:"iana"}, "application/vnd.oipf.dae.svg+xml":{source:"iana"}, "application/vnd.oipf.dae.xhtml+xml":{source:"iana"}, "application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana"}, "application/vnd.oipf.pae.gem":{source:"iana"}, "application/vnd.oipf.spdiscovery+xml":{source:"iana"}, "application/vnd.oipf.spdlist+xml":{source:"iana"}, "application/vnd.oipf.ueprofile+xml":{source:"iana"}, "application/vnd.oipf.userprofile+xml":{source:"iana"}, "application/vnd.olpc-sugar":{source:"iana", extensions:["xo"]}, "application/vnd.oma-scws-config":{source:"iana"}, "application/vnd.oma-scws-http-request":{source:"iana"}, "application/vnd.oma-scws-http-response":{source:"iana"}, "application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana"}, "application/vnd.oma.bcast.drm-trigger+xml":{source:"iana"}, "application/vnd.oma.bcast.imd+xml":{source:"iana"}, "application/vnd.oma.bcast.ltkm":{source:"iana"}, "application/vnd.oma.bcast.notification+xml":{source:"iana"}, "application/vnd.oma.bcast.provisioningtrigger":{source:"iana"}, "application/vnd.oma.bcast.sgboot":{source:"iana"}, "application/vnd.oma.bcast.sgdd+xml":{source:"iana"}, "application/vnd.oma.bcast.sgdu":{source:"iana"}, "application/vnd.oma.bcast.simple-symbol-container":{source:"iana"}, "application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana"}, "application/vnd.oma.bcast.sprov+xml":{source:"iana"}, "application/vnd.oma.bcast.stkm":{source:"iana"}, "application/vnd.oma.cab-address-book+xml":{source:"iana"}, "application/vnd.oma.cab-feature-handler+xml":{source:"iana"}, "application/vnd.oma.cab-pcc+xml":{source:"iana"}, "application/vnd.oma.cab-subs-invite+xml":{source:"iana"}, "application/vnd.oma.cab-user-prefs+xml":{source:"iana"}, "application/vnd.oma.dcd":{source:"iana"}, "application/vnd.oma.dcdc":{source:"iana"}, "application/vnd.oma.dd2+xml":{source:"iana", extensions:["dd2"]}, "application/vnd.oma.drm.risd+xml":{source:"iana"}, "application/vnd.oma.group-usage-list+xml":{source:"iana"}, "application/vnd.oma.pal+xml":{source:"iana"}, "application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana"}, "application/vnd.oma.poc.final-report+xml":{source:"iana"}, "application/vnd.oma.poc.groups+xml":{source:"iana"}, "application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana"}, "application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana"}, "application/vnd.oma.push":{source:"iana"}, "application/vnd.oma.scidm.messages+xml":{source:"iana"}, "application/vnd.oma.xcap-directory+xml":{source:"iana"}, "application/vnd.omads-email+xml":{source:"iana"}, "application/vnd.omads-file+xml":{source:"iana"}, "application/vnd.omads-folder+xml":{source:"iana"}, "application/vnd.omaloc-supl-init":{source:"iana"}, "application/vnd.openeye.oeb":{source:"iana"}, "application/vnd.openofficeorg.extension":{source:"apache", extensions:["oxt"]}, "application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml-template":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana", compressible:!1, extensions:["pptx"]}, "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana", extensions:["sldx"]}, "application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana", extensions:["ppsx"]}, "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.template":{source:"apache", extensions:["potx"]}, "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml-template":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana", compressible:!1, extensions:["xlsx"]}, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"apache", extensions:["xltx"]}, "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"}, "application/vnd.openxmlformats-officedocument.wordprocessingml-template":{source:"iana"}, "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana", compressible:!1, extensions:["docx"]}, "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"apache", extensions:["dotx"]}, "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana"}, "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana"}, "application/vnd.openxmlformats-package.core-properties+xml":{source:"iana"}, "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana"}, "application/vnd.openxmlformats-package.relationships+xml":{source:"iana"}, "application/vnd.oracle.resource+json":{source:"iana", compressible:!0}, "application/vnd.orange.indata":{source:"iana"}, "application/vnd.osa.netdeploy":{source:"iana"}, "application/vnd.osgeo.mapguide.package":{source:"iana", extensions:["mgp"]}, "application/vnd.osgi.bundle":{source:"iana"}, "application/vnd.osgi.dp":{source:"iana", extensions:["dp"]}, "application/vnd.osgi.subsystem":{source:"iana", extensions:["esa"]}, "application/vnd.otps.ct-kip+xml":{source:"iana"}, "application/vnd.palm":{source:"iana", extensions:["pdb", "pqa", "oprc"]}, "application/vnd.panoply":{source:"iana"}, "application/vnd.paos+xml":{source:"iana"}, "application/vnd.paos.xml":{source:"apache"}, "application/vnd.pawaafile":{source:"iana", extensions:["paw"]}, "application/vnd.pcos":{source:"iana"}, "application/vnd.pg.format":{source:"iana", extensions:["str"]}, "application/vnd.pg.osasli":{source:"iana", extensions:["ei6"]}, "application/vnd.piaccess.application-licence":{source:"iana"}, "application/vnd.picsel":{source:"iana", extensions:["efif"]}, "application/vnd.pmi.widget":{source:"iana", extensions:["wg"]}, "application/vnd.poc.group-advertisement+xml":{source:"iana"}, "application/vnd.pocketlearn":{source:"iana", extensions:["plf"]}, "application/vnd.powerbuilder6":{source:"iana", extensions:["pbd"]}, "application/vnd.powerbuilder6-s":{source:"iana"}, "application/vnd.powerbuilder7":{source:"iana"}, "application/vnd.powerbuilder7-s":{source:"iana"}, "application/vnd.powerbuilder75":{source:"iana"}, "application/vnd.powerbuilder75-s":{source:"iana"}, "application/vnd.preminet":{source:"iana"}, "application/vnd.previewsystems.box":{source:"iana", extensions:["box"]}, "application/vnd.proteus.magazine":{source:"iana", extensions:["mgz"]}, "application/vnd.publishare-delta-tree":{source:"iana", extensions:["qps"]}, "application/vnd.pvi.ptid1":{source:"iana", extensions:["ptid"]}, "application/vnd.pwg-multiplexed":{source:"iana"}, "application/vnd.pwg-xhtml-print+xml":{source:"iana"}, "application/vnd.qualcomm.brew-app-res":{source:"iana"}, "application/vnd.quark.quarkxpress":{source:"iana", extensions:["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"]}, "application/vnd.quobject-quoxdocument":{source:"iana"}, "application/vnd.radisys.moml+xml":{source:"iana"}, "application/vnd.radisys.msml+xml":{source:"iana"}, "application/vnd.radisys.msml-audit+xml":{source:"iana"}, "application/vnd.radisys.msml-audit-conf+xml":{source:"iana"}, "application/vnd.radisys.msml-audit-conn+xml":{source:"iana"}, "application/vnd.radisys.msml-audit-dialog+xml":{source:"iana"}, "application/vnd.radisys.msml-audit-stream+xml":{source:"iana"}, "application/vnd.radisys.msml-conf+xml":{source:"iana"}, "application/vnd.radisys.msml-dialog+xml":{source:"iana"}, "application/vnd.radisys.msml-dialog-base+xml":{source:"iana"}, "application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana"}, "application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana"}, "application/vnd.radisys.msml-dialog-group+xml":{source:"iana"}, "application/vnd.radisys.msml-dialog-speech+xml":{source:"iana"}, "application/vnd.radisys.msml-dialog-transform+xml":{source:"iana"}, "application/vnd.rainstor.data":{source:"iana"}, "application/vnd.rapid":{source:"iana"}, "application/vnd.realvnc.bed":{source:"iana", extensions:["bed"]}, "application/vnd.recordare.musicxml":{source:"iana", extensions:["mxl"]}, "application/vnd.recordare.musicxml+xml":{source:"iana", extensions:["musicxml"]}, "application/vnd.renlearn.rlprint":{source:"iana"}, "application/vnd.rig.cryptonote":{source:"iana", extensions:["cryptonote"]}, "application/vnd.rim.cod":{source:"apache", extensions:["cod"]}, "application/vnd.rn-realmedia":{source:"apache", extensions:["rm"]}, "application/vnd.rn-realmedia-vbr":{source:"apache", extensions:["rmvb"]}, "application/vnd.route66.link66+xml":{source:"iana", extensions:["link66"]}, "application/vnd.rs-274x":{source:"iana"}, "application/vnd.ruckus.download":{source:"iana"}, "application/vnd.s3sms":{source:"iana"}, "application/vnd.sailingtracker.track":{source:"iana", extensions:["st"]}, "application/vnd.sbm.cid":{source:"iana"}, "application/vnd.sbm.mid2":{source:"iana"}, "application/vnd.scribus":{source:"iana"}, "application/vnd.sealed.3df":{source:"iana"}, "application/vnd.sealed.csf":{source:"iana"}, "application/vnd.sealed.doc":{source:"iana"}, "application/vnd.sealed.eml":{source:"iana"}, "application/vnd.sealed.mht":{source:"iana"}, "application/vnd.sealed.net":{source:"iana"}, "application/vnd.sealed.ppt":{source:"iana"}, "application/vnd.sealed.tiff":{source:"iana"}, "application/vnd.sealed.xls":{source:"iana"}, "application/vnd.sealedmedia.softseal.html":{source:"iana"}, "application/vnd.sealedmedia.softseal.pdf":{source:"iana"}, "application/vnd.seemail":{source:"iana", extensions:["see"]}, "application/vnd.sema":{source:"iana", extensions:["sema"]}, "application/vnd.semd":{source:"iana", extensions:["semd"]}, "application/vnd.semf":{source:"iana", extensions:["semf"]}, "application/vnd.shana.informed.formdata":{source:"iana", extensions:["ifm"]}, "application/vnd.shana.informed.formtemplate":{source:"iana", extensions:["itp"]}, "application/vnd.shana.informed.interchange":{source:"iana", extensions:["iif"]}, "application/vnd.shana.informed.package":{source:"iana", extensions:["ipk"]}, "application/vnd.simtech-mindmapper":{source:"iana", extensions:["twd", "twds"]}, "application/vnd.siren+json":{source:"iana", compressible:!0}, "application/vnd.smaf":{source:"iana", extensions:["mmf"]}, "application/vnd.smart.notebook":{source:"iana"}, "application/vnd.smart.teacher":{source:"iana", extensions:["teacher"]}, "application/vnd.software602.filler.form+xml":{source:"iana"}, "application/vnd.software602.filler.form-xml-zip":{source:"iana"}, "application/vnd.solent.sdkm+xml":{source:"iana", extensions:["sdkm", "sdkd"]}, "application/vnd.spotfire.dxp":{source:"iana", extensions:["dxp"]}, "application/vnd.spotfire.sfs":{source:"iana", extensions:["sfs"]}, "application/vnd.sss-cod":{source:"iana"}, "application/vnd.sss-dtf":{source:"iana"}, "application/vnd.sss-ntf":{source:"iana"}, "application/vnd.stardivision.calc":{source:"apache", extensions:["sdc"]}, "application/vnd.stardivision.draw":{source:"apache", extensions:["sda"]}, "application/vnd.stardivision.impress":{source:"apache", extensions:["sdd"]}, "application/vnd.stardivision.math":{source:"apache", extensions:["smf"]}, "application/vnd.stardivision.writer":{source:"apache", extensions:["sdw", "vor"]}, "application/vnd.stardivision.writer-global":{source:"apache", extensions:["sgl"]}, "application/vnd.stepmania.package":{source:"iana", extensions:["smzip"]}, "application/vnd.stepmania.stepchart":{source:"iana", extensions:["sm"]}, "application/vnd.street-stream":{source:"iana"}, "application/vnd.sun.wadl+xml":{source:"iana"}, "application/vnd.sun.xml.calc":{source:"apache", extensions:["sxc"]}, "application/vnd.sun.xml.calc.template":{source:"apache", extensions:["stc"]}, "application/vnd.sun.xml.draw":{source:"apache", extensions:["sxd"]}, "application/vnd.sun.xml.draw.template":{source:"apache", extensions:["std"]}, "application/vnd.sun.xml.impress":{source:"apache", extensions:["sxi"]}, "application/vnd.sun.xml.impress.template":{source:"apache", extensions:["sti"]}, "application/vnd.sun.xml.math":{source:"apache", extensions:["sxm"]}, "application/vnd.sun.xml.writer":{source:"apache", extensions:["sxw"]}, "application/vnd.sun.xml.writer.global":{source:"apache", extensions:["sxg"]}, "application/vnd.sun.xml.writer.template":{source:"apache", extensions:["stw"]}, "application/vnd.sus-calendar":{source:"iana", extensions:["sus", "susp"]}, "application/vnd.svd":{source:"iana", extensions:["svd"]}, "application/vnd.swiftview-ics":{source:"iana"}, "application/vnd.symbian.install":{source:"apache", extensions:["sis", "sisx"]}, "application/vnd.syncml+xml":{source:"iana", extensions:["xsm"]}, "application/vnd.syncml.dm+wbxml":{source:"iana", extensions:["bdm"]}, "application/vnd.syncml.dm+xml":{source:"iana", extensions:["xdm"]}, "application/vnd.syncml.dm.notification":{source:"iana"}, "application/vnd.syncml.dmddf+wbxml":{source:"iana"}, "application/vnd.syncml.dmddf+xml":{source:"iana"}, "application/vnd.syncml.dmtnds+wbxml":{source:"iana"}, "application/vnd.syncml.dmtnds+xml":{source:"iana"}, "application/vnd.syncml.ds.notification":{source:"iana"}, "application/vnd.tao.intent-module-archive":{source:"iana", extensions:["tao"]}, "application/vnd.tcpdump.pcap":{source:"iana", extensions:["pcap", "cap", "dmp"]}, "application/vnd.tmd.mediaflex.api+xml":{source:"iana"}, "application/vnd.tmobile-livetv":{source:"iana", extensions:["tmo"]}, "application/vnd.trid.tpt":{source:"iana", extensions:["tpt"]}, "application/vnd.triscape.mxs":{source:"iana", extensions:["mxs"]}, "application/vnd.trueapp":{source:"iana", extensions:["tra"]}, "application/vnd.truedoc":{source:"iana"}, "application/vnd.ubisoft.webplayer":{source:"iana"}, "application/vnd.ufdl":{source:"iana", extensions:["ufd", "ufdl"]}, "application/vnd.uiq.theme":{source:"iana", extensions:["utz"]}, "application/vnd.umajin":{source:"iana", extensions:["umj"]}, "application/vnd.unity":{source:"iana", extensions:["unityweb"]}, "application/vnd.uoml+xml":{source:"iana", extensions:["uoml"]}, "application/vnd.uplanet.alert":{source:"iana"}, "application/vnd.uplanet.alert-wbxml":{source:"iana"}, "application/vnd.uplanet.bearer-choice":{source:"iana"}, "application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"}, "application/vnd.uplanet.cacheop":{source:"iana"}, "application/vnd.uplanet.cacheop-wbxml":{source:"iana"}, "application/vnd.uplanet.channel":{source:"iana"}, "application/vnd.uplanet.channel-wbxml":{source:"iana"}, "application/vnd.uplanet.list":{source:"iana"}, "application/vnd.uplanet.list-wbxml":{source:"iana"}, "application/vnd.uplanet.listcmd":{source:"iana"}, "application/vnd.uplanet.listcmd-wbxml":{source:"iana"}, "application/vnd.uplanet.signal":{source:"iana"}, "application/vnd.valve.source.material":{source:"iana"}, "application/vnd.vcx":{source:"iana", extensions:["vcx"]}, "application/vnd.vd-study":{source:"iana"}, "application/vnd.vectorworks":{source:"iana"}, "application/vnd.verimatrix.vcas":{source:"iana"}, "application/vnd.vidsoft.vidconference":{source:"iana"}, "application/vnd.visio":{source:"iana", extensions:["vsd", "vst", "vss", "vsw"]}, "application/vnd.visionary":{source:"iana", extensions:["vis"]}, "application/vnd.vividence.scriptfile":{source:"iana"}, "application/vnd.vsf":{source:"iana", extensions:["vsf"]}, "application/vnd.wap.sic":{source:"iana"}, "application/vnd.wap.slc":{source:"iana"}, "application/vnd.wap.wbxml":{source:"iana", extensions:["wbxml"]}, "application/vnd.wap.wmlc":{source:"iana", extensions:["wmlc"]}, "application/vnd.wap.wmlscriptc":{source:"iana", extensions:["wmlsc"]}, "application/vnd.webturbo":{source:"iana", extensions:["wtb"]}, "application/vnd.wfa.p2p":{source:"iana"}, "application/vnd.wfa.wsc":{source:"iana"}, "application/vnd.windows.devicepairing":{source:"iana"}, "application/vnd.wmc":{source:"iana"}, "application/vnd.wmf.bootstrap":{source:"iana"}, "application/vnd.wolfram.mathematica":{source:"iana"}, "application/vnd.wolfram.mathematica.package":{source:"iana"}, "application/vnd.wolfram.player":{source:"iana", extensions:["nbp"]}, "application/vnd.wordperfect":{source:"iana", extensions:["wpd"]}, "application/vnd.wqd":{source:"iana", extensions:["wqd"]}, "application/vnd.wrq-hp3000-labelled":{source:"iana"}, "application/vnd.wt.stf":{source:"iana", extensions:["stf"]}, "application/vnd.wv.csp+wbxml":{source:"iana"}, "application/vnd.wv.csp+xml":{source:"iana"}, "application/vnd.wv.ssp+xml":{source:"iana"}, "application/vnd.xacml+json":{source:"iana", compressible:!0}, "application/vnd.xara":{source:"iana", extensions:["xar"]}, "application/vnd.xfdl":{source:"iana", extensions:["xfdl"]}, "application/vnd.xfdl.webform":{source:"iana"}, "application/vnd.xmi+xml":{source:"iana"}, "application/vnd.xmpie.cpkg":{source:"iana"}, "application/vnd.xmpie.dpkg":{source:"iana"}, "application/vnd.xmpie.plan":{source:"iana"}, "application/vnd.xmpie.ppkg":{source:"iana"}, "application/vnd.xmpie.xlim":{source:"iana"}, "application/vnd.yamaha.hv-dic":{source:"iana", extensions:["hvd"]}, "application/vnd.yamaha.hv-script":{source:"iana", extensions:["hvs"]}, "application/vnd.yamaha.hv-voice":{source:"iana", extensions:["hvp"]}, "application/vnd.yamaha.openscoreformat":{source:"iana", extensions:["osf"]}, "application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana", extensions:["osfpvg"]}, "application/vnd.yamaha.remote-setup":{source:"iana"}, "application/vnd.yamaha.smaf-audio":{source:"iana", extensions:["saf"]}, "application/vnd.yamaha.smaf-phrase":{source:"iana", extensions:["spf"]}, "application/vnd.yamaha.through-ngn":{source:"iana"}, "application/vnd.yamaha.tunnel-udpencap":{source:"iana"}, "application/vnd.yaoweme":{source:"iana"}, "application/vnd.yellowriver-custom-menu":{source:"iana", extensions:["cmp"]}, "application/vnd.zul":{source:"iana", extensions:["zir", "zirz"]}, "application/vnd.zzazz.deck+xml":{source:"iana", extensions:["zaz"]}, "application/voicexml+xml":{source:"iana", extensions:["vxml"]}, "application/vq-rtcpxr":{source:"iana"}, "application/watcherinfo+xml":{source:"iana"}, "application/whoispp-query":{source:"iana"}, "application/whoispp-response":{source:"iana"}, "application/widget":{source:"iana", extensions:["wgt"]}, "application/winhlp":{source:"apache", extensions:["hlp"]}, "application/wita":{source:"iana"}, "application/wordperfect5.1":{source:"iana"}, "application/wsdl+xml":{source:"iana", extensions:["wsdl"]}, "application/wspolicy+xml":{source:"iana", extensions:["wspolicy"]}, "application/x-7z-compressed":{source:"apache", compressible:!1, extensions:["7z"]}, "application/x-abiword":{source:"apache", extensions:["abw"]}, "application/x-ace-compressed":{source:"apache", extensions:["ace"]}, "application/x-amf":{source:"apache"}, "application/x-apple-diskimage":{source:"apache", extensions:["dmg"]}, "application/x-authorware-bin":{source:"apache", extensions:["aab", "x32", "u32", "vox"]}, "application/x-authorware-map":{source:"apache", extensions:["aam"]}, "application/x-authorware-seg":{source:"apache", extensions:["aas"]}, "application/x-bcpio":{source:"apache", extensions:["bcpio"]}, "application/x-bdoc":{compressible:!1, extensions:["bdoc"]}, "application/x-bittorrent":{source:"apache", extensions:["torrent"]}, "application/x-blorb":{source:"apache", extensions:["blb", "blorb"]}, "application/x-bzip":{source:"apache", compressible:!1, extensions:["bz"]}, "application/x-bzip2":{source:"apache", compressible:!1, extensions:["bz2", "boz"]}, "application/x-cbr":{source:"apache", extensions:["cbr", "cba", "cbt", "cbz", "cb7"]}, "application/x-cdlink":{source:"apache", extensions:["vcd"]}, "application/x-cfs-compressed":{source:"apache", extensions:["cfs"]}, "application/x-chat":{source:"apache", extensions:["chat"]}, "application/x-chess-pgn":{source:"apache", extensions:["pgn"]}, "application/x-chrome-extension":{extensions:["crx"]}, "application/x-compress":{source:"apache"}, "application/x-conference":{source:"apache", extensions:["nsc"]}, "application/x-cpio":{source:"apache", extensions:["cpio"]}, "application/x-csh":{source:"apache", extensions:["csh"]}, "application/x-deb":{compressible:!1}, "application/x-debian-package":{source:"apache", extensions:["deb", "udeb"]}, "application/x-dgc-compressed":{source:"apache", extensions:["dgc"]}, "application/x-director":{source:"apache", extensions:["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"]}, "application/x-doom":{source:"apache", extensions:["wad"]}, "application/x-dtbncx+xml":{source:"apache", extensions:["ncx"]}, "application/x-dtbook+xml":{source:"apache", extensions:["dtb"]}, "application/x-dtbresource+xml":{source:"apache", extensions:["res"]}, "application/x-dvi":{source:"apache", compressible:!1, extensions:["dvi"]}, "application/x-envoy":{source:"apache", extensions:["evy"]}, "application/x-eva":{source:"apache", extensions:["eva"]}, "application/x-font-bdf":{source:"apache", extensions:["bdf"]}, "application/x-font-dos":{source:"apache"}, "application/x-font-framemaker":{source:"apache"}, "application/x-font-ghostscript":{source:"apache", extensions:["gsf"]}, "application/x-font-libgrx":{source:"apache"}, "application/x-font-linux-psf":{source:"apache", extensions:["psf"]}, "application/x-font-otf":{source:"apache", compressible:!0, extensions:["otf"]}, "application/x-font-pcf":{source:"apache", extensions:["pcf"]}, "application/x-font-snf":{source:"apache", extensions:["snf"]}, "application/x-font-speedo":{source:"apache"}, "application/x-font-sunos-news":{source:"apache"}, "application/x-font-ttf":{source:"apache", compressible:!0, extensions:["ttf", "ttc"]}, "application/x-font-type1":{source:"apache", extensions:["pfa", "pfb", "pfm", "afm"]}, "application/x-font-vfont":{source:"apache"}, "application/x-freearc":{source:"apache", extensions:["arc"]}, "application/x-futuresplash":{source:"apache", extensions:["spl"]}, "application/x-gca-compressed":{source:"apache", extensions:["gca"]}, "application/x-glulx":{source:"apache", extensions:["ulx"]}, "application/x-gnumeric":{source:"apache", extensions:["gnumeric"]}, "application/x-gramps-xml":{source:"apache", extensions:["gramps"]}, "application/x-gtar":{source:"apache", extensions:["gtar"]}, "application/x-gzip":{source:"apache"}, "application/x-hdf":{source:"apache", extensions:["hdf"]}, "application/x-install-instructions":{source:"apache", extensions:["install"]}, "application/x-iso9660-image":{source:"apache", extensions:["iso"]}, "application/x-java-jnlp-file":{source:"apache", compressible:!1, extensions:["jnlp"]}, "application/x-javascript":{compressible:!0}, "application/x-latex":{source:"apache", compressible:!1, extensions:["latex"]}, "application/x-lua-bytecode":{extensions:["luac"]}, "application/x-lzh-compressed":{source:"apache", extensions:["lzh", "lha"]}, "application/x-mie":{source:"apache", extensions:["mie"]}, "application/x-mobipocket-ebook":{source:"apache", extensions:["prc", "mobi"]}, "application/x-mpegurl":{compressible:!1}, "application/x-ms-application":{source:"apache", extensions:["application"]}, "application/x-ms-shortcut":{source:"apache", extensions:["lnk"]}, "application/x-ms-wmd":{source:"apache", extensions:["wmd"]}, "application/x-ms-wmz":{source:"apache", extensions:["wmz"]}, "application/x-ms-xbap":{source:"apache", extensions:["xbap"]}, "application/x-msaccess":{source:"apache", extensions:["mdb"]}, "application/x-msbinder":{source:"apache", extensions:["obd"]}, "application/x-mscardfile":{source:"apache", extensions:["crd"]}, "application/x-msclip":{source:"apache", extensions:["clp"]}, "application/x-msdownload":{source:"apache", extensions:["exe", "dll", "com", "bat", "msi"]}, "application/x-msmediaview":{source:"apache", extensions:["mvb", "m13", "m14"]}, "application/x-msmetafile":{source:"apache", extensions:["wmf", "wmz", "emf", "emz"]}, "application/x-msmoney":{source:"apache", extensions:["mny"]}, "application/x-mspublisher":{source:"apache", extensions:["pub"]}, "application/x-msschedule":{source:"apache", extensions:["scd"]}, "application/x-msterminal":{source:"apache", extensions:["trm"]}, "application/x-mswrite":{source:"apache", extensions:["wri"]}, "application/x-netcdf":{source:"apache", extensions:["nc", "cdf"]}, "application/x-ns-proxy-autoconfig":{compressible:!0, extensions:["pac"]}, "application/x-nzb":{source:"apache", extensions:["nzb"]}, "application/x-pkcs12":{source:"apache", compressible:!1, extensions:["p12", "pfx"]}, "application/x-pkcs7-certificates":{source:"apache", extensions:["p7b", "spc"]}, "application/x-pkcs7-certreqresp":{source:"apache", extensions:["p7r"]}, "application/x-rar-compressed":{source:"apache", compressible:!1, extensions:["rar"]}, "application/x-research-info-systems":{source:"apache", extensions:["ris"]}, "application/x-sh":{source:"apache", compressible:!0, extensions:["sh"]}, "application/x-shar":{source:"apache", extensions:["shar"]}, "application/x-shockwave-flash":{source:"apache", compressible:!1, extensions:["swf"]}, "application/x-silverlight-app":{source:"apache", extensions:["xap"]}, "application/x-sql":{source:"apache", extensions:["sql"]}, "application/x-stuffit":{source:"apache", compressible:!1, extensions:["sit"]}, "application/x-stuffitx":{source:"apache", extensions:["sitx"]}, "application/x-subrip":{source:"apache", extensions:["srt"]}, "application/x-sv4cpio":{source:"apache", extensions:["sv4cpio"]}, "application/x-sv4crc":{source:"apache", extensions:["sv4crc"]}, "application/x-t3vm-image":{source:"apache", extensions:["t3"]}, "application/x-tads":{source:"apache", extensions:["gam"]}, "application/x-tar":{source:"apache", compressible:!0, extensions:["tar"]}, "application/x-tcl":{source:"apache", extensions:["tcl"]}, "application/x-tex":{source:"apache", extensions:["tex"]}, "application/x-tex-tfm":{source:"apache", extensions:["tfm"]}, "application/x-texinfo":{source:"apache", extensions:["texinfo", "texi"]}, "application/x-tgif":{source:"apache", extensions:["obj"]}, "application/x-ustar":{source:"apache", extensions:["ustar"]}, "application/x-wais-source":{source:"apache", extensions:["src"]}, "application/x-web-app-manifest+json":{compressible:!0, extensions:["webapp"]}, "application/x-www-form-urlencoded":{source:"iana", compressible:!0}, "application/x-x509-ca-cert":{source:"apache", extensions:["der", "crt"]}, "application/x-xfig":{source:"apache", extensions:["fig"]}, "application/x-xliff+xml":{source:"apache", extensions:["xlf"]}, "application/x-xpinstall":{source:"apache", compressible:!1, extensions:["xpi"]}, "application/x-xz":{source:"apache", extensions:["xz"]}, "application/x-zmachine":{source:"apache", extensions:["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"]}, "application/x400-bp":{source:"iana"}, "application/xacml+xml":{source:"iana"}, "application/xaml+xml":{source:"apache", extensions:["xaml"]}, "application/xcap-att+xml":{source:"iana"}, "application/xcap-caps+xml":{source:"iana"}, "application/xcap-diff+xml":{source:"iana", extensions:["xdf"]}, "application/xcap-el+xml":{source:"iana"}, "application/xcap-error+xml":{source:"iana"}, "application/xcap-ns+xml":{source:"iana"}, "application/xcon-conference-info+xml":{source:"iana"}, "application/xcon-conference-info-diff+xml":{source:"iana"}, "application/xenc+xml":{source:"iana", extensions:["xenc"]}, "application/xhtml+xml":{source:"iana", compressible:!0, extensions:["xhtml", "xht"]}, "application/xhtml-voice+xml":{source:"apache"}, "application/xml":{source:"iana", compressible:!0, extensions:["xml", "xsl", "xsd"]}, "application/xml-dtd":{source:"iana", compressible:!0, extensions:["dtd"]}, "application/xml-external-parsed-entity":{source:"iana"}, "application/xml-patch+xml":{source:"iana"}, "application/xmpp+xml":{source:"iana"}, "application/xop+xml":{source:"iana", compressible:!0, extensions:["xop"]}, "application/xproc+xml":{source:"apache", extensions:["xpl"]}, "application/xslt+xml":{source:"iana", extensions:["xslt"]}, "application/xspf+xml":{source:"apache", extensions:["xspf"]}, "application/xv+xml":{source:"iana", extensions:["mxml", "xhvml", "xvml", "xvm"]}, "application/yang":{source:"iana", extensions:["yang"]}, "application/yin+xml":{source:"iana", extensions:["yin"]}, "application/zip":{source:"iana", compressible:!1, extensions:["zip"]}, "application/zlib":{source:"iana"}, "audio/1d-interleaved-parityfec":{source:"iana"}, "audio/32kadpcm":{source:"iana"}, "audio/3gpp":{source:"iana"}, "audio/3gpp2":{source:"iana"}, "audio/ac3":{source:"iana"}, "audio/adpcm":{source:"apache", extensions:["adp"]}, "audio/amr":{source:"iana"}, "audio/amr-wb":{source:"iana"}, "audio/amr-wb+":{source:"iana"}, "audio/aptx":{source:"iana"}, "audio/asc":{source:"iana"}, "audio/atrac-advanced-lossless":{source:"iana"}, "audio/atrac-x":{source:"iana"}, "audio/atrac3":{source:"iana"}, "audio/basic":{source:"iana", compressible:!1, extensions:["au", "snd"]}, "audio/bv16":{source:"iana"}, "audio/bv32":{source:"iana"}, "audio/clearmode":{source:"iana"}, "audio/cn":{source:"iana"}, "audio/dat12":{source:"iana"}, "audio/dls":{source:"iana"}, "audio/dsr-es201108":{source:"iana"}, "audio/dsr-es202050":{source:"iana"}, "audio/dsr-es202211":{source:"iana"}, "audio/dsr-es202212":{source:"iana"}, "audio/dv":{source:"iana"}, "audio/dvi4":{source:"iana"}, "audio/eac3":{source:"iana"}, "audio/encaprtp":{source:"iana"}, "audio/evrc":{source:"iana"}, "audio/evrc-qcp":{source:"iana"}, "audio/evrc0":{source:"iana"}, "audio/evrc1":{source:"iana"}, "audio/evrcb":{source:"iana"}, "audio/evrcb0":{source:"iana"}, "audio/evrcb1":{source:"iana"}, "audio/evrcnw":{source:"iana"}, "audio/evrcnw0":{source:"iana"}, "audio/evrcnw1":{source:"iana"}, "audio/evrcwb":{source:"iana"}, "audio/evrcwb0":{source:"iana"}, "audio/evrcwb1":{source:"iana"}, "audio/fwdred":{source:"iana"}, "audio/g719":{source:"iana"}, "audio/g722":{source:"iana"}, "audio/g7221":{source:"iana"}, "audio/g723":{source:"iana"}, "audio/g726-16":{source:"iana"}, "audio/g726-24":{source:"iana"}, "audio/g726-32":{source:"iana"}, "audio/g726-40":{source:"iana"}, "audio/g728":{source:"iana"}, "audio/g729":{source:"iana"}, "audio/g7291":{source:"iana"}, "audio/g729d":{source:"iana"}, "audio/g729e":{source:"iana"}, "audio/gsm":{source:"iana"}, "audio/gsm-efr":{source:"iana"}, "audio/gsm-hr-08":{source:"iana"}, "audio/ilbc":{source:"iana"}, "audio/ip-mr_v2.5":{source:"iana"}, "audio/isac":{source:"apache"}, "audio/l16":{source:"iana"}, "audio/l20":{source:"iana"}, "audio/l24":{source:"iana", compressible:!1}, "audio/l8":{source:"iana"}, "audio/lpc":{source:"iana"}, "audio/midi":{source:"apache", extensions:["mid", "midi", "kar", "rmi"]}, "audio/mobile-xmf":{source:"iana"}, "audio/mp4":{source:"iana", compressible:!1, extensions:["mp4a", "m4a"]}, "audio/mp4a-latm":{source:"iana"}, "audio/mpa":{source:"iana"}, "audio/mpa-robust":{source:"iana"}, "audio/mpeg":{source:"iana", compressible:!1, extensions:["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"]}, "audio/mpeg4-generic":{source:"iana"}, "audio/musepack":{source:"apache"}, "audio/ogg":{source:"iana", compressible:!1, extensions:["oga", "ogg", "spx"]}, "audio/opus":{source:"iana"}, "audio/parityfec":{source:"iana"}, "audio/pcma":{source:"iana"}, "audio/pcma-wb":{source:"iana"}, "audio/pcmu":{source:"iana"}, "audio/pcmu-wb":{source:"iana"}, "audio/prs.sid":{source:"iana"}, "audio/qcelp":{source:"iana"}, "audio/raptorfec":{source:"iana"}, "audio/red":{source:"iana"}, "audio/rtp-enc-aescm128":{source:"iana"}, "audio/rtp-midi":{source:"iana"}, "audio/rtploopback":{source:"iana"}, "audio/rtx":{source:"iana"}, "audio/s3m":{source:"apache", extensions:["s3m"]}, "audio/silk":{source:"apache", extensions:["sil"]}, "audio/smv":{source:"iana"}, "audio/smv-qcp":{source:"iana"}, "audio/smv0":{source:"iana"}, "audio/sp-midi":{source:"iana"}, "audio/speex":{source:"iana"}, "audio/t140c":{source:"iana"}, "audio/t38":{source:"iana"}, "audio/telephone-event":{source:"iana"}, "audio/tone":{source:"iana"}, "audio/uemclip":{source:"iana"}, "audio/ulpfec":{source:"iana"}, "audio/vdvi":{source:"iana"}, "audio/vmr-wb":{source:"iana"}, "audio/vnd.3gpp.iufp":{source:"iana"}, "audio/vnd.4sb":{source:"iana"}, "audio/vnd.audiokoz":{source:"iana"}, "audio/vnd.celp":{source:"iana"}, "audio/vnd.cisco.nse":{source:"iana"}, "audio/vnd.cmles.radio-events":{source:"iana"}, "audio/vnd.cns.anp1":{source:"iana"}, "audio/vnd.cns.inf1":{source:"iana"}, "audio/vnd.dece.audio":{source:"iana", extensions:["uva", "uvva"]}, "audio/vnd.digital-winds":{source:"iana", extensions:["eol"]}, "audio/vnd.dlna.adts":{source:"iana"}, "audio/vnd.dolby.heaac.1":{source:"iana"}, "audio/vnd.dolby.heaac.2":{source:"iana"}, "audio/vnd.dolby.mlp":{source:"iana"}, "audio/vnd.dolby.mps":{source:"iana"}, "audio/vnd.dolby.pl2":{source:"iana"}, "audio/vnd.dolby.pl2x":{source:"iana"}, "audio/vnd.dolby.pl2z":{source:"iana"}, "audio/vnd.dolby.pulse.1":{source:"iana"}, "audio/vnd.dra":{source:"iana", extensions:["dra"]}, "audio/vnd.dts":{source:"iana", extensions:["dts"]}, "audio/vnd.dts.hd":{source:"iana", extensions:["dtshd"]}, "audio/vnd.dvb.file":{source:"iana"}, "audio/vnd.everad.plj":{source:"iana"}, "audio/vnd.hns.audio":{source:"iana"}, "audio/vnd.lucent.voice":{source:"iana", extensions:["lvp"]}, "audio/vnd.ms-playready.media.pya":{source:"iana", extensions:["pya"]}, "audio/vnd.nokia.mobile-xmf":{source:"iana"}, "audio/vnd.nortel.vbk":{source:"iana"}, "audio/vnd.nuera.ecelp4800":{source:"iana", extensions:["ecelp4800"]}, "audio/vnd.nuera.ecelp7470":{source:"iana", extensions:["ecelp7470"]}, "audio/vnd.nuera.ecelp9600":{source:"iana", extensions:["ecelp9600"]}, "audio/vnd.octel.sbc":{source:"iana"}, "audio/vnd.qcelp":{source:"iana"}, "audio/vnd.rhetorex.32kadpcm":{source:"iana"}, "audio/vnd.rip":{source:"iana", extensions:["rip"]}, "audio/vnd.rn-realaudio":{compressible:!1}, "audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"}, "audio/vnd.vmx.cvsd":{source:"iana"}, "audio/vnd.wave":{compressible:!1}, "audio/vorbis":{source:"iana", compressible:!1}, "audio/vorbis-config":{source:"iana"}, "audio/wav":{compressible:!1, extensions:["wav"]}, "audio/wave":{compressible:!1, extensions:["wav"]}, "audio/webm":{source:"apache", compressible:!1, extensions:["weba"]}, "audio/x-aac":{source:"apache", compressible:!1, extensions:["aac"]}, "audio/x-aiff":{source:"apache", extensions:["aif", "aiff", "aifc"]}, "audio/x-caf":{source:"apache", compressible:!1, extensions:["caf"]}, "audio/x-flac":{source:"apache", extensions:["flac"]}, "audio/x-matroska":{source:"apache", extensions:["mka"]}, "audio/x-mpegurl":{source:"apache", extensions:["m3u"]}, "audio/x-ms-wax":{source:"apache", extensions:["wax"]}, "audio/x-ms-wma":{source:"apache", extensions:["wma"]}, "audio/x-pn-realaudio":{source:"apache", extensions:["ram", "ra"]}, "audio/x-pn-realaudio-plugin":{source:"apache", extensions:["rmp"]}, "audio/x-tta":{source:"apache"}, "audio/x-wav":{source:"apache", extensions:["wav"]}, "audio/xm":{source:"apache", extensions:["xm"]}, "chemical/x-cdx":{source:"apache", extensions:["cdx"]}, "chemical/x-cif":{source:"apache", extensions:["cif"]}, "chemical/x-cmdf":{source:"apache", extensions:["cmdf"]}, "chemical/x-cml":{source:"apache", extensions:["cml"]}, "chemical/x-csml":{source:"apache", extensions:["csml"]}, "chemical/x-pdb":{source:"apache"}, "chemical/x-xyz":{source:"apache", extensions:["xyz"]}, "font/opentype":{compressible:!0, extensions:["otf"]}, "image/bmp":{source:"apache", compressible:!0, extensions:["bmp"]}, "image/cgm":{source:"iana", extensions:["cgm"]}, "image/fits":{source:"iana"}, "image/g3fax":{source:"iana", extensions:["g3"]}, "image/gif":{source:"iana", compressible:!1, extensions:["gif"]}, "image/ief":{source:"iana", extensions:["ief"]}, "image/jp2":{source:"iana"}, "image/jpeg":{source:"iana", compressible:!1, extensions:["jpeg", "jpg", "jpe"]}, "image/jpm":{source:"iana"}, "image/jpx":{source:"iana"}, "image/ktx":{source:"iana", extensions:["ktx"]}, "image/naplps":{source:"iana"}, "image/pjpeg":{compressible:!1}, "image/png":{source:"iana", compressible:!1, extensions:["png"]}, "image/prs.btif":{source:"iana", extensions:["btif"]}, "image/prs.pti":{source:"iana"}, "image/pwg-raster":{source:"iana"}, "image/sgi":{source:"apache", extensions:["sgi"]}, "image/svg+xml":{source:"iana", compressible:!0, extensions:["svg", "svgz"]}, "image/t38":{source:"iana"}, "image/tiff":{source:"iana", compressible:!1, extensions:["tiff", "tif"]}, "image/tiff-fx":{source:"iana"}, "image/vnd.adobe.photoshop":{source:"iana", compressible:!0, extensions:["psd"]}, "image/vnd.airzip.accelerator.azv":{source:"iana"}, "image/vnd.cns.inf2":{source:"iana"}, "image/vnd.dece.graphic":{source:"iana", extensions:["uvi", "uvvi", "uvg", "uvvg"]}, "image/vnd.djvu":{source:"iana", extensions:["djvu", "djv"]}, "image/vnd.dvb.subtitle":{source:"iana", extensions:["sub"]}, "image/vnd.dwg":{source:"iana", extensions:["dwg"]}, "image/vnd.dxf":{source:"iana", extensions:["dxf"]}, "image/vnd.fastbidsheet":{source:"iana", extensions:["fbs"]}, "image/vnd.fpx":{source:"iana", extensions:["fpx"]}, "image/vnd.fst":{source:"iana", extensions:["fst"]}, "image/vnd.fujixerox.edmics-mmr":{source:"iana", extensions:["mmr"]}, "image/vnd.fujixerox.edmics-rlc":{source:"iana", extensions:["rlc"]}, "image/vnd.globalgraphics.pgb":{source:"iana"}, "image/vnd.microsoft.icon":{source:"iana"}, "image/vnd.mix":{source:"iana"}, "image/vnd.ms-modi":{source:"iana", extensions:["mdi"]}, "image/vnd.ms-photo":{source:"apache", extensions:["wdp"]}, "image/vnd.net-fpx":{source:"iana", extensions:["npx"]}, "image/vnd.radiance":{source:"iana"}, "image/vnd.sealed.png":{source:"iana"}, "image/vnd.sealedmedia.softseal.gif":{source:"iana"}, "image/vnd.sealedmedia.softseal.jpg":{source:"iana"}, "image/vnd.svf":{source:"iana"}, "image/vnd.tencent.tap":{source:"iana"}, "image/vnd.valve.source.texture":{source:"iana"}, "image/vnd.wap.wbmp":{source:"iana", extensions:["wbmp"]}, "image/vnd.xiff":{source:"iana", extensions:["xif"]}, "image/vnd.zbrush.pcx":{source:"iana"}, "image/webp":{source:"apache", extensions:["webp"]}, "image/x-3ds":{source:"apache", extensions:["3ds"]}, "image/x-cmu-raster":{source:"apache", extensions:["ras"]}, "image/x-cmx":{source:"apache", extensions:["cmx"]}, "image/x-freehand":{source:"apache", extensions:["fh", "fhc", "fh4", "fh5", "fh7"]}, "image/x-icon":{source:"apache", compressible:!0, extensions:["ico"]}, "image/x-mrsid-image":{source:"apache", extensions:["sid"]}, "image/x-ms-bmp":{compressible:!0, extensions:["bmp"]}, "image/x-pcx":{source:"apache", extensions:["pcx"]}, "image/x-pict":{source:"apache", extensions:["pic", "pct"]}, "image/x-portable-anymap":{source:"apache", extensions:["pnm"]}, "image/x-portable-bitmap":{source:"apache", extensions:["pbm"]}, "image/x-portable-graymap":{source:"apache", extensions:["pgm"]}, "image/x-portable-pixmap":{source:"apache", extensions:["ppm"]}, "image/x-rgb":{source:"apache", extensions:["rgb"]}, "image/x-tga":{source:"apache", extensions:["tga"]}, "image/x-xbitmap":{source:"apache", extensions:["xbm"]}, "image/x-xcf":{compressible:!1}, "image/x-xpixmap":{source:"apache", extensions:["xpm"]}, "image/x-xwindowdump":{source:"apache", extensions:["xwd"]}, "message/cpim":{source:"iana"}, "message/delivery-status":{source:"iana"}, "message/disposition-notification":{source:"iana"}, "message/external-body":{source:"iana"}, "message/feedback-report":{source:"iana"}, "message/global":{source:"iana"}, "message/global-delivery-status":{source:"iana"}, "message/global-disposition-notification":{source:"iana"}, "message/global-headers":{source:"iana"}, "message/http":{source:"iana", compressible:!1}, "message/imdn+xml":{source:"iana", compressible:!0}, "message/news":{source:"iana"}, "message/partial":{source:"iana", compressible:!1}, "message/rfc822":{source:"iana", compressible:!0, extensions:["eml", "mime"]}, "message/s-http":{source:"iana"}, "message/sip":{source:"iana"}, "message/sipfrag":{source:"iana"}, "message/tracking-status":{source:"iana"}, "message/vnd.si.simp":{source:"iana"}, "message/vnd.wfa.wsc":{source:"iana"}, "model/iges":{source:"iana", compressible:!1, extensions:["igs", "iges"]}, "model/mesh":{source:"iana", compressible:!1, extensions:["msh", "mesh", "silo"]}, "model/vnd.collada+xml":{source:"iana", extensions:["dae"]}, "model/vnd.dwf":{source:"iana", extensions:["dwf"]}, "model/vnd.flatland.3dml":{source:"iana"}, "model/vnd.gdl":{source:"iana", extensions:["gdl"]}, "model/vnd.gs-gdl":{source:"apache"}, "model/vnd.gs.gdl":{source:"iana"}, "model/vnd.gtw":{source:"iana", extensions:["gtw"]}, "model/vnd.moml+xml":{source:"iana"}, "model/vnd.mts":{source:"iana", extensions:["mts"]}, "model/vnd.opengex":{source:"iana"}, "model/vnd.parasolid.transmit.binary":{source:"iana"}, "model/vnd.parasolid.transmit.text":{source:"iana"}, "model/vnd.valve.source.compiled-map":{source:"iana"}, "model/vnd.vtu":{source:"iana", extensions:["vtu"]}, "model/vrml":{source:"iana", compressible:!1, extensions:["wrl", "vrml"]}, "model/x3d+binary":{source:"apache", compressible:!1, extensions:["x3db", "x3dbz"]}, "model/x3d+fastinfoset":{source:"iana"}, "model/x3d+vrml":{source:"apache", compressible:!1, extensions:["x3dv", "x3dvz"]}, "model/x3d+xml":{source:"iana", compressible:!0, extensions:["x3d", "x3dz"]}, "model/x3d-vrml":{source:"iana"}, "multipart/alternative":{source:"iana", compressible:!1}, "multipart/appledouble":{source:"iana"}, "multipart/byteranges":{source:"iana"}, "multipart/digest":{source:"iana"}, "multipart/encrypted":{source:"iana", compressible:!1}, "multipart/form-data":{source:"iana", compressible:!1}, "multipart/header-set":{source:"iana"}, "multipart/mixed":{source:"iana", compressible:!1}, "multipart/parallel":{source:"iana"}, "multipart/related":{source:"iana", compressible:!1}, "multipart/report":{source:"iana"}, "multipart/signed":{source:"iana", compressible:!1}, "multipart/voice-message":{source:"iana"}, "multipart/x-mixed-replace":{source:"iana"}, "text/1d-interleaved-parityfec":{source:"iana"}, "text/cache-manifest":{source:"iana", compressible:!0, extensions:["appcache", "manifest"]}, "text/calendar":{source:"iana", extensions:["ics", "ifb"]}, "text/calender":{compressible:!0}, "text/cmd":{compressible:!0}, "text/coffeescript":{extensions:["coffee", "litcoffee"]}, "text/css":{source:"iana", compressible:!0, extensions:["css"]}, "text/csv":{source:"iana", compressible:!0, extensions:["csv"]}, "text/csv-schema":{source:"iana"}, "text/directory":{source:"iana"}, "text/dns":{source:"iana"}, "text/ecmascript":{source:"iana"}, "text/encaprtp":{source:"iana"}, "text/enriched":{source:"iana"}, "text/fwdred":{source:"iana"}, "text/grammar-ref-list":{source:"iana"}, "text/hjson":{extensions:["hjson"]}, "text/html":{source:"iana", compressible:!0, extensions:["html", "htm"]}, "text/jade":{extensions:["jade"]}, "text/javascript":{source:"iana", compressible:!0}, "text/jcr-cnd":{source:"iana"}, "text/jsx":{compressible:!0, extensions:["jsx"]}, "text/less":{extensions:["less"]}, "text/markdown":{source:"iana"}, "text/mizar":{source:"iana"}, "text/n3":{source:"iana", compressible:!0, extensions:["n3"]}, "text/parameters":{source:"iana"}, "text/parityfec":{source:"iana"}, "text/plain":{source:"iana", compressible:!0, extensions:["txt", "text", "conf", "def", "list", "log", "in", "ini"]}, "text/provenance-notation":{source:"iana"}, "text/prs.fallenstein.rst":{source:"iana"}, "text/prs.lines.tag":{source:"iana", extensions:["dsc"]}, "text/raptorfec":{source:"iana"}, "text/red":{source:"iana"}, "text/rfc822-headers":{source:"iana"}, "text/richtext":{source:"iana", compressible:!0, extensions:["rtx"]}, "text/rtf":{source:"iana", compressible:!0, extensions:["rtf"]}, "text/rtp-enc-aescm128":{source:"iana"}, "text/rtploopback":{source:"iana"}, "text/rtx":{source:"iana"}, "text/sgml":{source:"iana", extensions:["sgml", "sgm"]}, "text/stylus":{extensions:["stylus", "styl"]}, "text/t140":{source:"iana"}, "text/tab-separated-values":{source:"iana", compressible:!0, extensions:["tsv"]}, "text/troff":{source:"iana", extensions:["t", "tr", "roff", "man", "me", "ms"]}, "text/turtle":{source:"iana", extensions:["ttl"]}, "text/ulpfec":{source:"iana"}, "text/uri-list":{source:"iana", compressible:!0, extensions:["uri", "uris", "urls"]}, "text/vcard":{source:"iana", compressible:!0, extensions:["vcard"]}, "text/vnd.a":{source:"iana"}, "text/vnd.abc":{source:"iana"}, "text/vnd.curl":{source:"iana", extensions:["curl"]}, "text/vnd.curl.dcurl":{source:"apache", extensions:["dcurl"]}, "text/vnd.curl.mcurl":{source:"apache", extensions:["mcurl"]}, "text/vnd.curl.scurl":{source:"apache", extensions:["scurl"]}, "text/vnd.debian.copyright":{source:"iana"}, "text/vnd.dmclientscript":{source:"iana"}, "text/vnd.dvb.subtitle":{source:"iana", extensions:["sub"]}, "text/vnd.esmertec.theme-descriptor":{source:"iana"}, "text/vnd.fly":{source:"iana", extensions:["fly"]}, "text/vnd.fmi.flexstor":{source:"iana", extensions:["flx"]}, "text/vnd.graphviz":{source:"iana", extensions:["gv"]}, "text/vnd.in3d.3dml":{source:"iana", extensions:["3dml"]}, "text/vnd.in3d.spot":{source:"iana", extensions:["spot"]}, "text/vnd.iptc.newsml":{source:"iana"}, "text/vnd.iptc.nitf":{source:"iana"}, "text/vnd.latex-z":{source:"iana"}, "text/vnd.motorola.reflex":{source:"iana"}, "text/vnd.ms-mediapackage":{source:"iana"}, "text/vnd.net2phone.commcenter.command":{source:"iana"}, "text/vnd.radisys.msml-basic-layout":{source:"iana"}, "text/vnd.si.uricatalogue":{source:"iana"}, "text/vnd.sun.j2me.app-descriptor":{source:"iana", extensions:["jad"]}, "text/vnd.trolltech.linguist":{source:"iana"}, "text/vnd.wap.si":{source:"iana"}, "text/vnd.wap.sl":{source:"iana"}, "text/vnd.wap.wml":{source:"iana", extensions:["wml"]}, "text/vnd.wap.wmlscript":{source:"iana", extensions:["wmls"]}, "text/vtt":{charset:"UTF-8", compressible:!0, extensions:["vtt"]}, "text/x-asm":{source:"apache", extensions:["s", "asm"]}, "text/x-c":{source:"apache", extensions:["c", "cc", "cxx", "cpp", "h", "hh", "dic"]}, "text/x-component":{extensions:["htc"]}, "text/x-fortran":{source:"apache", extensions:["f", "for", "f77", "f90"]}, "text/x-gwt-rpc":{compressible:!0}, "text/x-handlebars-template":{extensions:["hbs"]}, "text/x-java-source":{source:"apache", extensions:["java"]}, "text/x-jquery-tmpl":{compressible:!0}, "text/x-lua":{extensions:["lua"]}, "text/x-markdown":{compressible:!0, extensions:["markdown", "md", "mkd"]}, "text/x-nfo":{source:"apache", extensions:["nfo"]}, "text/x-opml":{source:"apache", extensions:["opml"]}, "text/x-pascal":{source:"apache", extensions:["p", "pas"]}, "text/x-sass":{extensions:["sass"]}, "text/x-scss":{extensions:["scss"]}, "text/x-setext":{source:"apache", extensions:["etx"]}, "text/x-sfv":{source:"apache", extensions:["sfv"]}, "text/x-uuencode":{source:"apache", extensions:["uu"]}, "text/x-vcalendar":{source:"apache", extensions:["vcs"]}, "text/x-vcard":{source:"apache", extensions:["vcf"]}, "text/xml":{source:"iana", compressible:!0}, "text/xml-external-parsed-entity":{source:"iana"}, "text/yaml":{extensions:["yaml", "yml"]}, "video/1d-interleaved-parityfec":{source:"apache"}, "video/3gpp":{source:"apache", extensions:["3gp"]}, "video/3gpp-tt":{source:"apache"}, "video/3gpp2":{source:"apache", extensions:["3g2"]}, "video/bmpeg":{source:"apache"}, "video/bt656":{source:"apache"}, "video/celb":{source:"apache"}, "video/dv":{source:"apache"}, "video/h261":{source:"apache", extensions:["h261"]}, "video/h263":{source:"apache", extensions:["h263"]}, "video/h263-1998":{source:"apache"}, "video/h263-2000":{source:"apache"}, "video/h264":{source:"apache", extensions:["h264"]}, "video/h264-rcdo":{source:"apache"}, "video/h264-svc":{source:"apache"}, "video/jpeg":{source:"apache", extensions:["jpgv"]}, "video/jpeg2000":{source:"apache"}, "video/jpm":{source:"apache", extensions:["jpm", "jpgm"]}, "video/mj2":{source:"apache", extensions:["mj2", "mjp2"]}, "video/mp1s":{source:"apache"}, "video/mp2p":{source:"apache"}, "video/mp2t":{source:"apache", extensions:["ts"]}, "video/mp4":{source:"apache", compressible:!1, extensions:["mp4", "mp4v", "mpg4"]}, "video/mp4v-es":{source:"apache"}, "video/mpeg":{source:"apache", compressible:!1, extensions:["mpeg", "mpg", "mpe", "m1v", "m2v"]}, "video/mpeg4-generic":{source:"apache"}, "video/mpv":{source:"apache"}, "video/nv":{source:"apache"}, "video/ogg":{source:"apache", compressible:!1, extensions:["ogv"]}, "video/parityfec":{source:"apache"}, "video/pointer":{source:"apache"}, "video/quicktime":{source:"apache", compressible:!1, extensions:["qt", "mov"]}, "video/raw":{source:"apache"}, "video/rtp-enc-aescm128":{source:"apache"}, "video/rtx":{source:"apache"}, "video/smpte292m":{source:"apache"}, "video/ulpfec":{source:"apache"}, "video/vc1":{source:"apache"}, "video/vnd.cctv":{source:"apache"}, "video/vnd.dece.hd":{source:"apache", extensions:["uvh", "uvvh"]}, "video/vnd.dece.mobile":{source:"apache", extensions:["uvm", "uvvm"]}, "video/vnd.dece.mp4":{source:"apache"}, "video/vnd.dece.pd":{source:"apache", extensions:["uvp", "uvvp"]}, "video/vnd.dece.sd":{source:"apache", extensions:["uvs", "uvvs"]}, "video/vnd.dece.video":{source:"apache", extensions:["uvv", "uvvv"]}, "video/vnd.directv.mpeg":{source:"apache"}, "video/vnd.directv.mpeg-tts":{source:"apache"}, "video/vnd.dlna.mpeg-tts":{source:"apache"}, "video/vnd.dvb.file":{source:"apache", extensions:["dvb"]}, "video/vnd.fvt":{source:"apache", extensions:["fvt"]}, "video/vnd.hns.video":{source:"apache"}, "video/vnd.iptvforum.1dparityfec-1010":{source:"apache"}, "video/vnd.iptvforum.1dparityfec-2005":{source:"apache"}, "video/vnd.iptvforum.2dparityfec-1010":{source:"apache"}, "video/vnd.iptvforum.2dparityfec-2005":{source:"apache"}, "video/vnd.iptvforum.ttsavc":{source:"apache"}, "video/vnd.iptvforum.ttsmpeg2":{source:"apache"}, "video/vnd.motorola.video":{source:"apache"}, "video/vnd.motorola.videop":{source:"apache"}, "video/vnd.mpegurl":{source:"apache", extensions:["mxu", "m4u"]}, "video/vnd.ms-playready.media.pyv":{source:"apache", extensions:["pyv"]}, "video/vnd.nokia.interleaved-multimedia":{source:"apache"}, "video/vnd.nokia.videovoip":{source:"apache"}, "video/vnd.objectvideo":{source:"apache"}, "video/vnd.sealed.mpeg1":{source:"apache"}, "video/vnd.sealed.mpeg4":{source:"apache"}, "video/vnd.sealed.swf":{source:"apache"}, "video/vnd.sealedmedia.softseal.mov":{source:"apache"}, "video/vnd.uvvu.mp4":{source:"apache", extensions:["uvu", "uvvu"]}, "video/vnd.vivo":{source:"apache", extensions:["viv"]}, "video/webm":{source:"apache", compressible:!1, extensions:["webm"]}, "video/x-f4v":{source:"apache", extensions:["f4v"]}, "video/x-fli":{source:"apache", extensions:["fli"]}, "video/x-flv":{source:"apache", compressible:!1, extensions:["flv"]}, "video/x-m4v":{source:"apache", extensions:["m4v"]}, "video/x-matroska":{source:"apache", compressible:!1, extensions:["mkv", "mk3d", "mks"]}, "video/x-mng":{source:"apache", extensions:["mng"]}, "video/x-ms-asf":{source:"apache", extensions:["asf", "asx"]}, "video/x-ms-vob":{source:"apache", extensions:["vob"]}, "video/x-ms-wm":{source:"apache", extensions:["wm"]}, "video/x-ms-wmv":{source:"apache", compressible:!1, extensions:["wmv"]}, "video/x-ms-wmx":{source:"apache", extensions:["wmx"]}, "video/x-ms-wvx":{source:"apache", extensions:["wvx"]}, "video/x-msvideo":{source:"apache", extensions:["avi"]}, "video/x-sgi-movie":{source:"apache", extensions:["movie"]}, "video/x-smv":{source:"apache", extensions:["smv"]}, "x-conference/x-cooltalk":{source:"apache", extensions:["ice"]}, "x-shader/x-fragment":{compressible:!0}, "x-shader/x-vertex":{compressible:!0}}; 
}, {}], 107:[function(require, module, exports) {
 module.exports=require("./db.json"); 
}, {"./db.json":106}], 108:[function(require, module, exports) {
 !(function(_window) {
 "use strict";var _rng, _mathRNG, _nodeRNG, _whatwgRNG, _previousRoot;_window?(function() {
 var _crypto=_window.crypto||_window.msCrypto;if(!_rng&&_crypto&&_crypto.getRandomValues) {
 try{
 var _rnds8=new Uint8Array(16);_whatwgRNG=_rng=function() {
 return _crypto.getRandomValues(_rnds8), _rnds8; 
}, _rng(); 
}catch(e) {} 
}if(!_rng) {
 var _rnds=new Array(16);_mathRNG=_rng=function() {
 for(var r, i=0;i<16;i++) {
 0==(3&i)&&(r=4294967296*Math.random()), _rnds[i]=r>>>((3&i)<<3)&255; 
}return _rnds; 
}, "undefined"!==typeof console&&console.warn; 
} 
}()):(function() {
 if("function"===typeof require) {
 try{
 var _rb=require("crypto").randomBytes;_nodeRNG=_rng=_rb&&function() {
 return _rb(16); 
}, _rng(); 
}catch(e) {} 
} 
}());for(var BufferClass="function"===typeof Buffer?Buffer:Array, _byteToHex=[], _hexToByte={}, i=0;i<256;i++) {
 _byteToHex[i]=(i+256).toString(16).substr(1), _hexToByte[_byteToHex[i]]=i; 
}function unparse(buf, offset) {
 var i=offset||0, 
bth=_byteToHex;return bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]; 
}var _seedBytes=_rng(), 
_nodeId=[1|_seedBytes[0], _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]], 
_clockseq=16383&(_seedBytes[6]<<8|_seedBytes[7]), 
_lastMSecs=0, 
_lastNSecs=0;function v4(options, buf, offset) {
 var i=buf&&offset||0;"string"===typeof options&&(buf="binary"===options?new BufferClass(16):null, options=null);var rnds=(options=options||{}).random||(options.rng||_rng)();if(rnds[6]=15&rnds[6]|64, rnds[8]=63&rnds[8]|128, buf) {
 for(var ii=0;ii<16;ii++) {
 buf[i+ii]=rnds[ii]; 
} 
}return buf||unparse(rnds); 
}var uuid=v4;uuid.v1=function(options, buf, offset) {
 var i=buf&&offset||0, 
b=buf||[], 
clockseq=null!=(options=options||{}).clockseq?options.clockseq:_clockseq, 
msecs=null!=options.msecs?options.msecs:(new Date).getTime(), 
nsecs=null!=options.nsecs?options.nsecs:_lastNSecs+1, 
dt=msecs-_lastMSecs+(nsecs-_lastNSecs)/1e4;if(dt<0&&null==options.clockseq&&(clockseq=clockseq+1&16383), (dt<0||msecs>_lastMSecs)&&null==options.nsecs&&(nsecs=0), nsecs>=1e4) {
 throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); 
}_lastMSecs=msecs, _lastNSecs=nsecs, _clockseq=clockseq;var tl=(1e4*(268435455&(msecs+=122192928e5))+nsecs)%4294967296;b[i++]=tl>>>24&255, b[i++]=tl>>>16&255, b[i++]=tl>>>8&255, b[i++]=255&tl;var tmh=msecs/4294967296*1e4&268435455;b[i++]=tmh>>>8&255, b[i++]=255&tmh, b[i++]=tmh>>>24&15|16, b[i++]=tmh>>>16&255, b[i++]=clockseq>>>8|128, b[i++]=255&clockseq;for(var node=options.node||_nodeId, n=0;n<6;n++) {
 b[i+n]=node[n]; 
}return buf||unparse(b); 
}, uuid.v4=v4, uuid.parse=function(s, buf, offset) {
 var i=buf&&offset||0, 
ii=0;for(buf=buf||[], s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) {
 ii<16&&(buf[i+ii++]=_hexToByte[oct]); 
});ii<16;) {
 buf[i+ii++]=0; 
}return buf; 
}, uuid.unparse=unparse, uuid.BufferClass=BufferClass, uuid._rng=_rng, uuid._mathRNG=_mathRNG, uuid._nodeRNG=_nodeRNG, uuid._whatwgRNG=_whatwgRNG, void 0!==module&&module.exports?module.exports=uuid:(_previousRoot=_window.uuid, uuid.noConflict=function() {
 return _window.uuid=_previousRoot, uuid; 
}, _window.uuid=uuid); 
}("undefined"!==typeof window?window:null)); 
}, {crypto:void 0}], 109:[function(require, module, exports) {
 var crypto=require("crypto");require("querystring");function rfc3986(str) {
 return encodeURIComponent(str).replace(/!/g, "%21").replace(/\*/g, "%2A").replace(/\(/g, "%28").replace(/\)/g, "%29").replace(/'/g, "%27"); 
}function compare(a, b) {
 return a>b?1:a<b?-1:0; 
}function generateBase(httpMethod, base_uri, params) {
 var normalized=(function(obj) {
 var key, val, 
arr=[];for(key in obj) {
 if(val=obj[key], Array.isArray(val)) {
 for(var i=0;i<val.length;i++) {
 arr.push([key, val[i]]); 
} 
}else {
 arr.push([key, val]); 
} 
}return arr; 
}(params)).map(function(p) {
 return[rfc3986(p[0]), rfc3986(p[1]||"")]; 
}).sort(function(a, b) {
 return compare(a[0], b[0])||compare(a[1], b[1]); 
}).map(function(p) {
 return p.join("="); 
}).join("&");return[rfc3986(httpMethod?httpMethod.toUpperCase():"GET"), rfc3986(base_uri), rfc3986(normalized)].join("&"); 
}function hmacsign(httpMethod, base_uri, params, consumer_secret, token_secret) {
 var base=generateBase(httpMethod, base_uri, params);return (function(key, body) {
 return crypto.createHmac("sha1", key).update(body).digest("base64"); 
}([consumer_secret||"", token_secret||""].map(rfc3986).join("&"), base)); 
}function rsasign(httpMethod, base_uri, params, private_key, token_secret) {
 var base=generateBase(httpMethod, base_uri, params);return (function(key, body) {
 return crypto.createSign("RSA-SHA1").update(body).sign(key, "base64"); 
}(private_key||"", base)); 
}function plaintext(consumer_secret, token_secret) {
 return[consumer_secret||"", token_secret||""].map(rfc3986).join("&"); 
}exports.hmacsign=hmacsign, exports.rsasign=rsasign, exports.plaintext=plaintext, exports.sign=function(signMethod, httpMethod, base_uri, params, consumer_secret, token_secret) {
 var method, 
skipArgs=1;switch(signMethod) {
 case"RSA-SHA1":method=rsasign;break;case"HMAC-SHA1":method=hmacsign;break;case"PLAINTEXT":method=plaintext, skipArgs=4;break;default:throw new Error("Signature method not supported: "+signMethod); 
}return method.apply(null, [].slice.call(arguments, skipArgs)); 
}, exports.rfc3986=rfc3986; 
}, {crypto:void 0, querystring:void 0}], 110:[function(require, module, exports) {
 module.exports=require("./lib/"); 
}, {"./lib/":111}], 111:[function(require, module, exports) {
 var Stringify=require("./stringify"), 
Parse=require("./parse");module.exports={stringify:Stringify, parse:Parse}; 
}, {"./parse":112, "./stringify":113}], 112:[function(require, module, exports) {
 var Utils=require("./utils"), 
internals={delimiter:"&", depth:5, arrayLimit:20, parameterLimit:1e3, parseValues:function(str, options) {
 for(var obj={}, parts=str.split(options.delimiter, options.parameterLimit===1/0?void 0:options.parameterLimit), i=0, il=parts.length;i<il;++i) {
 var part=parts[i], 
pos=-1===part.indexOf("]=")?part.indexOf("="):part.indexOf("]=")+1;if(-1===pos) {
 obj[Utils.decode(part)]=""; 
}else{
 var key=Utils.decode(part.slice(0, pos)), 
val=Utils.decode(part.slice(pos+1));Object.prototype.hasOwnProperty.call(obj, key)?obj[key]=[].concat(obj[key]).concat(val):obj[key]=val; 
} 
}return obj; 
}, parseObject:function(chain, val, options) {
 if(!chain.length) {
 return val; 
}var root=chain.shift(), 
obj={};if("[]"===root) {
 obj=(obj=[]).concat(internals.parseObject(chain, val, options)); 
}else{
 var cleanRoot="["===root[0]&&"]"===root[root.length-1]?root.slice(1, root.length-1):root, 
index=parseInt(cleanRoot, 10), 
indexString=""+index;!isNaN(index)&&root!==cleanRoot&&indexString===cleanRoot&&index>=0&&index<=options.arrayLimit?(obj=[])[index]=internals.parseObject(chain, val, options):obj[cleanRoot]=internals.parseObject(chain, val, options); 
}return obj; 
}, parseKeys:function(key, val, options) {
 if(key) {
 var child=/(\[[^\[\]]*\])/g, 
segment=/^([^\[\]]*)/.exec(key);if(!Object.prototype.hasOwnProperty(segment[1])) {
 var keys=[];segment[1]&&keys.push(segment[1]);for(var i=0;null!==(segment=child.exec(key))&&i<options.depth;) {
 ++i, Object.prototype.hasOwnProperty(segment[1].replace(/\[|\]/g, ""))||keys.push(segment[1]); 
}return segment&&keys.push("["+key.slice(segment.index)+"]"), internals.parseObject(keys, val, options); 
} 
} 
}};module.exports=function(str, options) {
 if(""===str||null===str||void 0===str) {
 return{}; 
}(options=options||{}).delimiter="string"===typeof options.delimiter||Utils.isRegExp(options.delimiter)?options.delimiter:internals.delimiter, options.depth="number"===typeof options.depth?options.depth:internals.depth, options.arrayLimit="number"===typeof options.arrayLimit?options.arrayLimit:internals.arrayLimit, options.parameterLimit="number"===typeof options.parameterLimit?options.parameterLimit:internals.parameterLimit;for(var tempObj="string"===typeof str?internals.parseValues(str, options):str, obj={}, keys=Object.keys(tempObj), i=0, il=keys.length;i<il;++i) {
 var key=keys[i], 
newObj=internals.parseKeys(key, tempObj[key], options);obj=Utils.merge(obj, newObj); 
}return Utils.compact(obj); 
}; 
}, {"./utils":114}], 113:[function(require, module, exports) {
 var Utils=require("./utils"), 
internals={delimiter:"&", arrayPrefixGenerators:{brackets:function(prefix, key) {
 return prefix+"[]"; 
}, indices:function(prefix, key) {
 return prefix+"["+key+"]"; 
}, repeat:function(prefix, key) {
 return prefix; 
}}, stringify:function(obj, prefix, generateArrayPrefix) {
 if(Utils.isBuffer(obj)?obj=obj.toString():obj instanceof Date?obj=obj.toISOString():null===obj&&(obj=""), "string"===typeof obj||"number"===typeof obj||"boolean"===typeof obj) {
 return[encodeURIComponent(prefix)+"="+encodeURIComponent(obj)]; 
}var values=[];if(void 0===obj) {
 return values; 
}for(var objKeys=Object.keys(obj), i=0, il=objKeys.length;i<il;++i) {
 var key=objKeys[i];values=Array.isArray(obj)?values.concat(internals.stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix)):values.concat(internals.stringify(obj[key], prefix+"["+key+"]", generateArrayPrefix)); 
}return values; 
}};module.exports=function(obj, options) {
 var arrayFormat, 
delimiter=void 0===(options=options||{}).delimiter?internals.delimiter:options.delimiter, 
keys=[];if("object"!==typeof obj||null===obj) {
 return""; 
}arrayFormat=options.arrayFormat in internals.arrayPrefixGenerators?options.arrayFormat:"indices"in options?options.indices?"indices":"repeat":"indices";for(var generateArrayPrefix=internals.arrayPrefixGenerators[arrayFormat], objKeys=Object.keys(obj), i=0, il=objKeys.length;i<il;++i) {
 var key=objKeys[i];keys=keys.concat(internals.stringify(obj[key], key, generateArrayPrefix)); 
}return keys.join(delimiter); 
}; 
}, {"./utils":114}], 114:[function(require, module, exports) {
 exports.arrayToObject=function(source) {
 for(var obj={}, i=0, il=source.length;i<il;++i) {
 void 0!==source[i]&&(obj[i]=source[i]); 
}return obj; 
}, exports.merge=function(target, source) {
 if(!source) {
 return target; 
}if("object"!==typeof source) {
 return Array.isArray(target)?target.push(source):target[source]=!0, target; 
}if("object"!==typeof target) {
 return target=[target].concat(source); 
}Array.isArray(target)&&!Array.isArray(source)&&(target=exports.arrayToObject(target));for(var keys=Object.keys(source), k=0, kl=keys.length;k<kl;++k) {
 var key=keys[k], 
value=source[key];target[key]?target[key]=exports.merge(target[key], value):target[key]=value; 
}return target; 
}, exports.decode=function(str) {
 try{
 return decodeURIComponent(str.replace(/\+/g, " ")); 
}catch(e) {
 return str; 
} 
}, exports.compact=function(obj, refs) {
 if("object"!==typeof obj||null===obj) {
 return obj; 
}var lookup=(refs=refs||[]).indexOf(obj);if(-1!==lookup) {
 return refs[lookup]; 
}if(refs.push(obj), Array.isArray(obj)) {
 for(var compacted=[], i=0, il=obj.length;i<il;++i) {
 void 0!==obj[i]&&compacted.push(obj[i]); 
}return compacted; 
}var keys=Object.keys(obj);for(i=0, il=keys.length;i<il;++i) {
 var key=keys[i];obj[key]=exports.compact(obj[key], refs); 
}return obj; 
}, exports.isRegExp=function(obj) {
 return"[object RegExp]"===Object.prototype.toString.call(obj); 
}, exports.isBuffer=function(obj) {
 return null!==obj&&void 0!==obj&&!!(obj.constructor&&obj.constructor.isBuffer&&obj.constructor.isBuffer(obj)); 
}; 
}, {}], 115:[function(require, module, exports) {
 "use strict";require("net");var debug, 
tls=require("tls"), 
http=require("http"), 
https=require("https"), 
events=require("events"), 
assert=require("assert"), 
util=require("util");function TunnelingAgent(options) {
 var self=this;self.options=options||{}, self.proxyOptions=self.options.proxy||{}, self.maxSockets=self.options.maxSockets||http.Agent.defaultMaxSockets, self.requests=[], self.sockets=[], self.on("free", function(socket, host, port) {
 for(var i=0, len=self.requests.length;i<len;++i) {
 var pending=self.requests[i];if(pending.host===host&&pending.port===port) {
 return self.requests.splice(i, 1), void pending.request.onSocket(socket); 
} 
}socket.destroy(), self.removeSocket(socket); 
}); 
}function createSecureSocket(options, cb) {
 var self=this;TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
 var secureSocket=tls.connect(0, mergeOptions({}, self.options, {servername:options.host, socket:socket}));self.sockets[self.sockets.indexOf(socket)]=secureSocket, cb(secureSocket); 
}); 
}function mergeOptions(target) {
 for(var i=1, len=arguments.length;i<len;++i) {
 var overrides=arguments[i];if("object"===typeof overrides) {
 for(var keys=Object.keys(overrides), j=0, keyLen=keys.length;j<keyLen;++j) {
 var k=keys[j];void 0!==overrides[k]&&(target[k]=overrides[k]); 
} 
} 
}return target; 
}exports.httpOverHttp=function(options) {
 var agent=new TunnelingAgent(options);return agent.request=http.request, agent; 
}, exports.httpsOverHttp=function(options) {
 var agent=new TunnelingAgent(options);return agent.request=http.request, agent.createSocket=createSecureSocket, agent.defaultPort=443, agent; 
}, exports.httpOverHttps=function(options) {
 var agent=new TunnelingAgent(options);return agent.request=https.request, agent; 
}, exports.httpsOverHttps=function(options) {
 var agent=new TunnelingAgent(options);return agent.request=https.request, agent.createSocket=createSecureSocket, agent.defaultPort=443, agent; 
}, util.inherits(TunnelingAgent, events.EventEmitter), TunnelingAgent.prototype.addRequest=function(req, options) {
 "string"===typeof options&&(options={host:options, port:arguments[2], path:arguments[3]}), this.sockets.length>=this.maxSockets?this.requests.push({host:options.host, port:options.port, request:req}):this.createConnection({host:options.host, port:options.port, request:req}); 
}, TunnelingAgent.prototype.createConnection=function(pending) {
 var self=this;self.createSocket(pending, function(socket) {
 function onFree() {
 self.emit("free", socket, pending.host, pending.port); 
}function onCloseOrRemove(err) {
 self.removeSocket(socket), socket.removeListener("free", onFree), socket.removeListener("close", onCloseOrRemove), socket.removeListener("agentRemove", onCloseOrRemove); 
}socket.on("free", onFree), socket.on("close", onCloseOrRemove), socket.on("agentRemove", onCloseOrRemove), pending.request.onSocket(socket); 
}); 
}, TunnelingAgent.prototype.createSocket=function(options, cb) {
 var self=this, 
placeholder={};self.sockets.push(placeholder);var connectOptions=mergeOptions({}, self.proxyOptions, {method:"CONNECT", path:options.host+":"+options.port, agent:!1});connectOptions.proxyAuth&&(connectOptions.headers=connectOptions.headers||{}, connectOptions.headers["Proxy-Authorization"]="Basic "+new Buffer(connectOptions.proxyAuth).toString("base64")), debug("making CONNECT request");var connectReq=self.request(connectOptions);function onConnect(res, socket, head) {
 if(connectReq.removeAllListeners(), socket.removeAllListeners(), 200===res.statusCode) {
 assert.equal(head.length, 0), debug("tunneling connection has established"), self.sockets[self.sockets.indexOf(placeholder)]=socket, cb(socket); 
}else{
 debug("tunneling socket could not be established, statusCode=%d", res.statusCode);var error=new Error("tunneling socket could not be established, statusCode="+res.statusCode);error.code="ECONNRESET", options.request.emit("error", error), self.removeSocket(placeholder); 
} 
}connectReq.useChunkedEncodingByDefault=!1, connectReq.once("response", function(res) {
 res.upgrade=!0; 
}), connectReq.once("upgrade", function(res, socket, head) {
 process.nextTick(function() {
 onConnect(res, socket, head); 
}); 
}), connectReq.once("connect", onConnect), connectReq.once("error", function(cause) {
 connectReq.removeAllListeners(), debug("tunneling socket could not be established, cause=%s\n", cause.message, cause.stack);var error=new Error("tunneling socket could not be established, cause="+cause.message);error.code="ECONNRESET", options.request.emit("error", error), self.removeSocket(placeholder); 
}), connectReq.end(); 
}, TunnelingAgent.prototype.removeSocket=function(socket) {
 var pos=this.sockets.indexOf(socket);if(-1!==pos) {
 this.sockets.splice(pos, 1);var pending=this.requests.shift();pending&&this.createConnection(pending); 
} 
}, debug=process.env.NODE_DEBUG&&/\btunnel\b/.test(process.env.NODE_DEBUG)?function() {
 var args=Array.prototype.slice.call(arguments);"string"===typeof args[0]?args[0]="TUNNEL: "+args[0]:args.unshift("TUNNEL:"); 
}:function() {}, exports.debug=debug; 
}, {assert:void 0, events:void 0, http:void 0, https:void 0, net:void 0, tls:void 0, util:void 0}], 116:[function(require, module, exports) {
 "use strict";var http=require("http"), 
https=require("https"), 
url=require("url"), 
util=require("util"), 
stream=require("stream"), 
qs=require("qs"), 
querystring=require("querystring"), 
zlib=require("zlib"), 
helpers=require("./lib/helpers"), 
bl=require("bl"), 
hawk=require("hawk"), 
aws=require("aws-sign2"), 
httpSignature=require("http-signature"), 
mime=require("mime-types"), 
tunnel=require("tunnel-agent"), 
stringstream=require("stringstream"), 
caseless=require("caseless"), 
ForeverAgent=require("forever-agent"), 
FormData=require("form-data"), 
cookies=require("./lib/cookies"), 
copy=require("./lib/copy"), 
getProxyFromURI=require("./lib/getProxyFromURI"), 
Har=require("./lib/har").Har, 
Auth=require("./lib/auth").Auth, 
OAuth=require("./lib/oauth").OAuth, 
Multipart=require("./lib/multipart").Multipart, 
Redirect=require("./lib/redirect").Redirect, 
safeStringify=helpers.safeStringify, 
isReadStream=helpers.isReadStream, 
toBase64=helpers.toBase64, 
defer=helpers.defer, 
globalCookieJar=cookies.jar(), 
globalPool={}, 
defaultProxyHeaderWhiteList=["accept", "accept-charset", "accept-encoding", "accept-language", "accept-ranges", "cache-control", "content-encoding", "content-language", "content-length", "content-location", "content-md5", "content-range", "content-type", "connection", "date", "expect", "max-forwards", "pragma", "referer", "te", "transfer-encoding", "user-agent", "via"], 
defaultProxyHeaderExclusiveList=["proxy-authorization"];function connectionErrorHandler(error) {
 this.res?this.res.request?this.res.request.emit("error", error):this.res.emit("error", error):this._httpMessage.emit("error", error); 
}function requestToJSON() {
 return{uri:this.uri, method:this.method, headers:this.headers}; 
}function responseToJSON() {
 return{statusCode:this.statusCode, body:this.body, headers:this.headers, request:requestToJSON.call(this.request)}; 
}function rfc3986(str) {
 return str.replace(/[!'()*]/g, function(c) {
 return"%"+c.charCodeAt(0).toString(16).toUpperCase(); 
}); 
}function Request(options) {
 options.har&&(this._har=new Har(this), options=this._har.options(options)), stream.Stream.call(this);var reserved=Object.keys(Request.prototype), 
nonReserved=(function(reserved, options) {
 var object={};for(var i in options) {
 -1===reserved.indexOf(i)&&(object[i]=options[i]); 
}return object; 
}(reserved, options));stream.Stream.call(this), util._extend(this, nonReserved), options=(function(reserved, options) {
 var object={};for(var i in options) {
 var isReserved=!(-1===reserved.indexOf(i)), 
isFunction="function"===typeof options[i];isReserved&&isFunction||(object[i]=options[i]); 
}return object; 
}(reserved, options)), this.readable=!0, this.writable=!0, options.method&&(this.explicitMethod=!0), this._auth=new Auth(this), this._oauth=new OAuth(this), this._multipart=new Multipart(this), this._redirect=new Redirect(this), this.init(options); 
}function debug() {
 Request.debug; 
}util.inherits(Request, stream.Stream), Request.debug=process.env.NODE_DEBUG&&/\brequest\b/.test(process.env.NODE_DEBUG), Request.prototype.setupTunnel=function() {
 if("string"===typeof this.proxy&&(this.proxy=url.parse(this.proxy)), !this.proxy||!this.tunnel) {
 return!1; 
}this.proxyHeaderExclusiveList=this.proxyHeaderExclusiveList||[], this.proxyHeaderWhiteList=this.proxyHeaderWhiteList||defaultProxyHeaderWhiteList;var uriObject, port, protocol, proxyHost, 
proxyHeaderExclusiveList=this.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList), 
proxyHeaderWhiteList=this.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList);this.proxyHeaders=(function(headers, proxyHeaderWhiteList) {
 var whiteList=proxyHeaderWhiteList.reduce(function(set, header) {
 return set[header.toLowerCase()]=!0, set; 
}, {});return Object.keys(headers).filter(function(header) {
 return whiteList[header.toLowerCase()]; 
}).reduce(function(set, header) {
 return set[header]=headers[header], set; 
}, {}); 
}(this.headers, proxyHeaderWhiteList)), this.proxyHeaders.host=(uriObject=this.uri, port=uriObject.portA, protocol=uriObject.protocol, proxyHost=uriObject.hostname+":", proxyHost+=port||("https:"===protocol?"443":"80")), proxyHeaderExclusiveList.forEach(this.removeHeader, this);var request, tunnelFnName, 
tunnelFn=(tunnelFnName=(function(uri, proxy) {
 return["https:"===uri.protocol?"https":"http", "https:"===proxy.protocol?"Https":"Http"].join("Over"); 
}((request=this).uri, request.proxy)), tunnel[tunnelFnName]), 
tunnelOptions=(function(request) {
 var proxy=request.proxy;return{proxy:{host:proxy.hostname, port:+proxy.port, proxyAuth:proxy.auth, headers:request.proxyHeaders}, headers:request.headers, ca:request.ca, cert:request.cert, key:request.key, passphrase:request.passphrase, pfx:request.pfx, ciphers:request.ciphers, rejectUnauthorized:request.rejectUnauthorized, secureOptions:request.secureOptions, secureProtocol:request.secureProtocol}; 
}(this));return this.agent=tunnelFn(tunnelOptions), !0; 
}, Request.prototype.init=function(options) {
 var self=this;if(options||(options={}), self.headers=self.headers?copy(self.headers):{}, caseless.httpify(self, self.headers), self.method||(self.method=options.method||"GET"), self.localAddress||(self.localAddress=options.localAddress), self.qsLib||(self.qsLib=options.useQuerystring?querystring:qs), self.qsParseOptions||(self.qsParseOptions=options.qsParseOptions), self.qsStringifyOptions||(self.qsStringifyOptions=options.qsStringifyOptions), debug(options), self.pool||!1===self.pool||(self.pool=globalPool), self.dests=self.dests||[], self.__isRequestRequest=!0, !self._callback&&self.callback&&(self._callback=self.callback, self.callback=function() {
 self._callbackCalled||(self._callbackCalled=!0, self._callback.apply(self, arguments)); 
}, self.on("error", self.callback.bind()), self.on("complete", self.callback.bind(self, null))), !self.uri&&self.url&&(self.uri=self.url, delete self.url), self.baseUrl) {
 if("string"!==typeof self.baseUrl) {
 return self.emit("error", new Error("options.baseUrl must be a string")); 
}if("string"!==typeof self.uri) {
 return self.emit("error", new Error("options.uri must be a string when using options.baseUrl")); 
}if(0===self.uri.indexOf("//")||-1!==self.uri.indexOf("://")) {
 return self.emit("error", new Error("options.uri must be a path when using options.baseUrl")); 
}var baseUrlEndsWithSlash=self.baseUrl.lastIndexOf("/")===self.baseUrl.length-1, 
uriStartsWithSlash=0===self.uri.indexOf("/");baseUrlEndsWithSlash&&uriStartsWithSlash?self.uri=self.baseUrl+self.uri.slice(1):baseUrlEndsWithSlash||uriStartsWithSlash?self.uri=self.baseUrl+self.uri:""===self.uri?self.uri=self.baseUrl:self.uri=self.baseUrl+"/"+self.uri, delete self.baseUrl; 
}if(!self.uri) {
 return self.emit("error", new Error("options.uri is a required argument")); 
}if("string"===typeof self.uri&&(self.uri=url.parse(self.uri)), "unix:"===self.uri.protocol) {
 return self.emit("error", new Error("`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`")); 
}if("unix"===self.uri.host) {
 var unixParts=self.uri.path.split(":"), 
host=unixParts[0], 
path=unixParts[1];self.socketPath=host, self.uri.pathname=path, self.uri.path=path, self.uri.host=host, self.uri.hostname=host, self.uri.isUnix=!0; 
}if(!1===self.strictSSL&&(self.rejectUnauthorized=!1), self.hasOwnProperty("proxy")||(self.proxy=getProxyFromURI(self.uri)), self.tunnel=(function(self, options) {
 return void 0!==self.tunnel?self.tunnel:void 0!==options.tunnel?options.tunnel:"https:"===self.uri.protocol||void 0; 
}(self, options)), self.proxy&&self.setupTunnel(), self.uri.pathname||(self.uri.pathname="/"), !(self.uri.host||self.uri.hostname&&self.uri.port||self.uri.isUnix)) {
 var message='Invalid URI "'+url.format(self.uri)+'"';return 0===Object.keys(options).length&&(message+=". This can be caused by a crappy redirection."), self.emit("error", new Error(message)); 
}if(self._redirect.onRequest(), self.setHost=!1, !self.hasHeader("host")) {
 var hostHeaderName=self.originalHostHeaderName||"host";self.setHeader(hostHeaderName, self.uri.hostname), self.uri.port&&(80===self.uri.port&&"http:"===self.uri.protocol||443===self.uri.port&&"https:"===self.uri.protocol||self.setHeader(hostHeaderName, self.getHeader("host")+":"+self.uri.port)), self.setHost=!0; 
}if(self.jar(self._jar||options.jar), self.uri.port||("http:"===self.uri.protocol?self.uri.port=80:"https:"===self.uri.protocol&&(self.uri.port=443)), self.proxy&&!self.tunnel?(self.port=self.proxy.port, self.host=self.proxy.hostname):(self.port=self.uri.port, self.host=self.uri.hostname), options.form&&self.form(options.form), options.formData) {
 var formData=options.formData, 
requestForm=self.form(), 
appendFormValue=function(key, value) {
 value.hasOwnProperty("value")&&value.hasOwnProperty("options")?requestForm.append(key, value.value, value.options):requestForm.append(key, value); 
};for(var formKey in formData) {
 if(formData.hasOwnProperty(formKey)) {
 var formValue=formData[formKey];if(formValue instanceof Array) {
 for(var j=0;j<formValue.length;j++) {
 appendFormValue(formKey, formValue[j]); 
} 
}else {
 appendFormValue(formKey, formValue); 
} 
} 
} 
}if(options.qs&&self.qs(options.qs), self.uri.path?self.path=self.uri.path:self.path=self.uri.pathname+(self.uri.search||""), 0===self.path.length&&(self.path="/"), options.oauth&&self.oauth(options.oauth), options.aws&&self.aws(options.aws), options.hawk&&self.hawk(options.hawk), options.httpSignature&&self.httpSignature(options.httpSignature), options.auth&&(Object.prototype.hasOwnProperty.call(options.auth, "username")&&(options.auth.user=options.auth.username), Object.prototype.hasOwnProperty.call(options.auth, "password")&&(options.auth.pass=options.auth.password), self.auth(options.auth.user, options.auth.pass, options.auth.sendImmediately, options.auth.bearer)), self.gzip&&!self.hasHeader("accept-encoding")&&self.setHeader("accept-encoding", "gzip"), self.uri.auth&&!self.hasHeader("authorization")) {
 var uriAuthPieces=self.uri.auth.split(":").map(function(item) {
 return querystring.unescape(item); 
});self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(":"), !0); 
}if(!self.tunnel&&self.proxy&&self.proxy.auth&&!self.hasHeader("proxy-authorization")) {
 var proxyAuthPieces=self.proxy.auth.split(":").map(function(item) {
 return querystring.unescape(item); 
}), 
authHeader="Basic "+toBase64(proxyAuthPieces.join(":"));self.setHeader("proxy-authorization", authHeader); 
}if(self.proxy&&!self.tunnel&&(self.path=self.uri.protocol+"//"+self.uri.host+self.path), options.json&&self.json(options.json), options.multipart&&self.multipart(options.multipart), options.time&&(self.timing=!0, self.elapsedTime=self.elapsedTime||0), self.body) {
 var length=0;if(Buffer.isBuffer(self.body)) {
 length=self.body.length; 
}else if(Array.isArray(self.body)) {
 for(var i=0;i<self.body.length;i++) {
 length+=self.body[i].length; 
} 
}else {
 self.body=new Buffer(self.body), length=self.body.length; 
}if(!length) {
 throw new Error("Argument error, options.body."); 
}self.hasHeader("content-length")||self.setHeader("content-length", length); 
}var protocol=self.proxy&&!self.tunnel?self.proxy.protocol:self.uri.protocol, 
defaultModules={"http:":http, "https:":https}, 
httpModules=self.httpModules||{};if(self.httpModule=httpModules[protocol]||defaultModules[protocol], !self.httpModule) {
 return self.emit("error", new Error("Invalid protocol: "+protocol)); 
}options.ca&&(self.ca=options.ca), self.agent||(options.agentOptions&&(self.agentOptions=options.agentOptions), options.agentClass?self.agentClass=options.agentClass:options.forever?self.agentClass="http:"===protocol?ForeverAgent:ForeverAgent.SSL:self.agentClass=self.httpModule.Agent), !1===self.pool?self.agent=!1:self.agent=self.agent||self.getNewAgent(), self.on("pipe", function(src) {
 if(self.ntick&&self._started) {
 throw new Error("You cannot pipe to this stream after the outbound request has started."); 
}if(self.src=src, isReadStream(src)) {
 self.hasHeader("content-type")||self.setHeader("content-type", mime.lookup(src.path)); 
}else{
 if(src.headers) {
 for(var i in src.headers) {
 self.hasHeader(i)||self.setHeader(i, src.headers[i]); 
} 
}self._json&&!self.hasHeader("content-type")&&self.setHeader("content-type", "application/json"), src.method&&!self.explicitMethod&&(self.method=src.method); 
} 
}), defer(function() {
 if(!self._aborted) {
 var end=function() {
 self._form&&self._form.pipe(self), self._multipart&&self._multipart.chunked&&self._multipart.body.pipe(self), self.body?(Array.isArray(self.body)?self.body.forEach(function(part) {
 self.write(part); 
}):self.write(self.body), self.end()):self.requestBodyStream?self.requestBodyStream.pipe(self):self.src||("GET"!==self.method&&void 0!==self.method&&self.setHeader("content-length", 0), self.end()); 
};self._form&&!self.hasHeader("content-length")?(self.setHeader(self._form.getHeaders()), self._form.getLength(function(err, length) {
 err||self.setHeader("content-length", length), end(); 
})):end(), self.ntick=!0; 
} 
}); 
}, Request.prototype._updateProtocol=function() {
 if("https:"===this.uri.protocol||this.tunnel) {
 if(this.proxy&&this.setupTunnel()) {
 return; 
}switch(this.httpModule=https, this.agentClass) {
 case ForeverAgent:this.agentClass=ForeverAgent.SSL;break;case http.Agent:this.agentClass=https.Agent;break;default:return; 
}this.agent&&(this.agent=this.getNewAgent()); 
}else{
 switch(this.httpModule=http, this.agentClass) {
 case ForeverAgent.SSL:this.agentClass=ForeverAgent;break;case https.Agent:this.agentClass=http.Agent;break;default:return; 
}this.agent&&(this.agent=null, this.agent=this.getNewAgent()); 
} 
}, Request.prototype.getNewAgent=function() {
 var Agent=this.agentClass, 
options={};if(this.agentOptions) {
 for(var i in this.agentOptions) {
 options[i]=this.agentOptions[i]; 
} 
}this.ca&&(options.ca=this.ca), this.ciphers&&(options.ciphers=this.ciphers), this.secureProtocol&&(options.secureProtocol=this.secureProtocol), this.secureOptions&&(options.secureOptions=this.secureOptions), void 0!==this.rejectUnauthorized&&(options.rejectUnauthorized=this.rejectUnauthorized), this.cert&&this.key&&(options.key=this.key, options.cert=this.cert), this.pfx&&(options.pfx=this.pfx), this.passphrase&&(options.passphrase=this.passphrase);var poolKey="";Agent!==this.httpModule.Agent&&(poolKey+=Agent.name);var proxy=this.proxy;return"string"===typeof proxy&&(proxy=url.parse(proxy)), (proxy&&"https:"===proxy.protocol||"https:"===this.uri.protocol)&&(options.ca&&(poolKey&&(poolKey+=":"), poolKey+=options.ca), void 0!==options.rejectUnauthorized&&(poolKey&&(poolKey+=":"), poolKey+=options.rejectUnauthorized), options.cert&&(poolKey&&(poolKey+=":"), poolKey+=options.cert.toString("ascii")+options.key.toString("ascii")), options.pfx&&(poolKey&&(poolKey+=":"), poolKey+=options.pfx.toString("ascii")), options.ciphers&&(poolKey&&(poolKey+=":"), poolKey+=options.ciphers), options.secureProtocol&&(poolKey&&(poolKey+=":"), poolKey+=options.secureProtocol), options.secureOptions&&(poolKey&&(poolKey+=":"), poolKey+=options.secureOptions)), this.pool===globalPool&&!poolKey&&0===Object.keys(options).length&&this.httpModule.globalAgent?this.httpModule.globalAgent:(poolKey=this.uri.protocol+poolKey, this.pool[poolKey]||(this.pool[poolKey]=new Agent(options), this.pool.maxSockets&&(this.pool[poolKey].maxSockets=this.pool.maxSockets)), this.pool[poolKey]); 
}, Request.prototype.start=function() {
 var self=this;if(!self._aborted) {
 self._started=!0, self.method=self.method||"GET", self.href=self.uri.href, self.src&&self.src.stat&&self.src.stat.size&&!self.hasHeader("content-length")&&self.setHeader("content-length", self.src.stat.size), self._aws&&self.aws(self._aws, !0);var reqOptions=copy(self);if(delete reqOptions.auth, debug("make request", self.uri.href), self.req=self.httpModule.request(reqOptions), self.timing&&(self.startTime=(new Date).getTime()), self.timeout&&!self.timeoutTimer) {
 var timeout=self.timeout<0?0:self.timeout;self.timeoutTimer=setTimeout(function() {
 self.abort();var e=new Error("ETIMEDOUT");e.code="ETIMEDOUT", self.emit("error", e); 
}, timeout), self.req.setTimeout&&self.req.setTimeout(timeout, function() {
 if(self.req) {
 self.req.abort();var e=new Error("ESOCKETTIMEDOUT");e.code="ESOCKETTIMEDOUT", self.emit("error", e); 
} 
}); 
}self.req.on("response", self.onRequestResponse.bind(self)), self.req.on("error", self.onRequestError.bind(self)), self.req.on("drain", function() {
 self.emit("drain"); 
}), self.req.on("socket", function(socket) {
 self.emit("socket", socket); 
}), self.on("end", function() {
 self.req.connection&&self.req.connection.removeListener("error", connectionErrorHandler); 
}), self.emit("request", self.req); 
} 
}, Request.prototype.onRequestError=function(error) {
 if(!this._aborted) {
 if(this.req&&this.req._reusedSocket&&"ECONNRESET"===error.code&&this.agent.addRequestNoreuse) {
 return this.agent={addRequest:this.agent.addRequestNoreuse.bind(this.agent)}, this.start(), void this.req.end(); 
}this.timeout&&this.timeoutTimer&&(clearTimeout(this.timeoutTimer), this.timeoutTimer=null), this.emit("error", error); 
} 
}, Request.prototype.onRequestResponse=function(response) {
 var self=this;if(debug("onRequestResponse", self.uri.href, response.statusCode, response.headers), response.on("end", function() {
 self.timing&&(self.elapsedTime+=(new Date).getTime()-self.startTime, debug("elapsed time", self.elapsedTime), response.elapsedTime=self.elapsedTime), debug("response end", self.uri.href, response.statusCode, response.headers); 
}), response.connection&&-1===response.connection.listeners("error").indexOf(connectionErrorHandler)&&(response.connection.setMaxListeners(0), response.connection.once("error", connectionErrorHandler)), self._aborted) {
 return debug("aborted", self.uri.href), void response.resume(); 
}if(self._paused?response.pause():response.resume&&response.resume(), self.response=response, response.request=self, response.toJSON=responseToJSON, self.httpModule!==https||!self.strictSSL||response.hasOwnProperty("client")&&response.client.authorized) {
 self.originalHost=self.getHeader("host"), self.originalHostHeaderName||(self.originalHostHeaderName=self.hasHeader("host")), self.setHost&&self.removeHeader("host"), self.timeout&&self.timeoutTimer&&(clearTimeout(self.timeoutTimer), self.timeoutTimer=null);var targetCookieJar=self._jar&&self._jar.setCookie?self._jar:globalCookieJar, 
addCookie=function(cookie) {
 try{
 targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError:!0}); 
}catch(e) {
 self.emit("error", e); 
} 
};if(response.caseless=caseless(response.headers), response.caseless.has("set-cookie")&&!self._disableCookies) {
 var headerName=response.caseless.has("set-cookie");Array.isArray(response.headers[headerName])?response.headers[headerName].forEach(addCookie):addCookie(response.headers[headerName]); 
}if(!self._redirect.onResponse(response)) {
 var dataStream;if(response.on("close", function() {
 self._ended||self.response.emit("end"); 
}), response.on("end", function() {
 self._ended=!0; 
}), self.gzip) {
 var contentEncoding=response.headers["content-encoding"]||"identity";"gzip"===(contentEncoding=contentEncoding.trim().toLowerCase())?(dataStream=zlib.createGunzip(), response.pipe(dataStream)):("identity"!==contentEncoding&&debug("ignoring unrecognized Content-Encoding "+contentEncoding), dataStream=response); 
}else {
 dataStream=response; 
}if(self.encoding&&(0!==self.dests.length||(dataStream.setEncoding?dataStream.setEncoding(self.encoding):dataStream=dataStream.pipe(stringstream(self.encoding)))), self.emit("response", response), self.dests.forEach(function(dest) {
 self.pipeDest(dest); 
}), dataStream.on("data", function(chunk) {
 self._destdata=!0, self.emit("data", chunk); 
}), dataStream.on("end", function(chunk) {
 self.emit("end", chunk); 
}), dataStream.on("error", function(error) {
 self.emit("error", error); 
}), dataStream.on("close", function() {
 self.emit("close"); 
}), self.callback) {
 var buffer=bl(), 
strings=[];self.on("data", function(chunk) {
 Buffer.isBuffer(chunk)?buffer.append(chunk):strings.push(chunk); 
}), self.on("end", function() {
 if(debug("end event", self.uri.href), self._aborted) {
 debug("aborted", self.uri.href); 
}else{
 if(buffer.length?(debug("has body", self.uri.href, buffer.length), null===self.encoding?response.body=buffer.slice():response.body=buffer.toString(self.encoding)):strings.length&&("utf8"===self.encoding&&strings[0].length>0&&"\ufeff"===strings[0][0]&&(strings[0]=strings[0].substring(1)), response.body=strings.join("")), self._json) {
 try{
 response.body=JSON.parse(response.body, self._jsonReviver); 
}catch(e) {} 
}debug("emitting complete", self.uri.href), void 0!==response.body||self._json||(response.body=null===self.encoding?new Buffer(0):""), self.emit("complete", response, response.body); 
} 
}); 
}else {
 self.on("end", function() {
 self._aborted?debug("aborted", self.uri.href):self.emit("complete", response); 
}); 
}debug("finish init function", self.uri.href); 
} 
}else{
 debug("strict ssl error", self.uri.href);var sslErr=response.hasOwnProperty("client")?response.client.authorizationError:self.uri.href+" does not support SSL";self.emit("error", new Error("SSL Error: "+sslErr)); 
} 
}, Request.prototype.abort=function() {
 this._aborted=!0, this.req?this.req.abort():this.response&&this.response.abort(), this.emit("abort"); 
}, Request.prototype.pipeDest=function(dest) {
 var response=this.response;if(dest.headers&&!dest.headersSent) {
 if(response.caseless.has("content-type")) {
 var ctname=response.caseless.has("content-type");dest.setHeader?dest.setHeader(ctname, response.headers[ctname]):dest.headers[ctname]=response.headers[ctname]; 
}if(response.caseless.has("content-length")) {
 var clname=response.caseless.has("content-length");dest.setHeader?dest.setHeader(clname, response.headers[clname]):dest.headers[clname]=response.headers[clname]; 
} 
}if(dest.setHeader&&!dest.headersSent) {
 for(var i in response.headers) {
 this.gzip&&"content-encoding"===i||dest.setHeader(i, response.headers[i]); 
}dest.statusCode=response.statusCode; 
}this.pipefilter&&this.pipefilter(response, dest); 
}, Request.prototype.qs=function(q, clobber) {
 var base;for(var i in base=!clobber&&this.uri.query?this.qsLib.parse(this.uri.query, this.qsParseOptions):{}, q) {
 base[i]=q[i]; 
}if(""===this.qsLib.stringify(base, this.qsStringifyOptions)) {
 return this; 
}var qs=this.qsLib.stringify(base, this.qsStringifyOptions);return this.uri=url.parse(this.uri.href.split("?")[0]+"?"+rfc3986(qs)), this.url=this.uri, this.path=this.uri.path, this; 
}, Request.prototype.form=function(form) {
 var self=this;return form?(self.setHeader("content-type", "application/x-www-form-urlencoded"), self.body="string"===typeof form?form.toString("utf8"):self.qsLib.stringify(form, self.qsStringifyOptions).toString("utf8"), self.body=rfc3986(self.body), self):(self._form=new FormData, self._form.on("error", function(err) {
 err.message="form-data: "+err.message, self.emit("error", err), self.abort(); 
}), self._form); 
}, Request.prototype.multipart=function(multipart) {
 return this._multipart.onRequest(multipart), this._multipart.chunked||(this.body=this._multipart.body), this; 
}, Request.prototype.json=function(val) {
 return this.hasHeader("accept")||this.setHeader("accept", "application/json"), this._json=!0, "boolean"===typeof val?void 0!==this.body&&(/^application\/x-www-form-urlencoded\b/.test(this.getHeader("content-type"))?this.body=rfc3986(this.body):this.body=safeStringify(this.body), this.hasHeader("content-type")||this.setHeader("content-type", "application/json")):(this.body=safeStringify(val), this.hasHeader("content-type")||this.setHeader("content-type", "application/json")), "function"===typeof this.jsonReviver&&(this._jsonReviver=this.jsonReviver), this; 
}, Request.prototype.getHeader=function(name, headers) {
 var result, re;return headers||(headers=this.headers), Object.keys(headers).forEach(function(key) {
 key.length===name.length&&(re=new RegExp(name, "i"), key.match(re)&&(result=headers[key])); 
}), result; 
}, Request.prototype.auth=function(user, pass, sendImmediately, bearer) {
 return this._auth.onRequest(user, pass, sendImmediately, bearer), this; 
}, Request.prototype.aws=function(opts, now) {
 if(!now) {
 return this._aws=opts, this; 
}var date=new Date;this.setHeader("date", date.toUTCString());var auth={key:opts.key, secret:opts.secret, verb:this.method.toUpperCase(), date:date, contentType:this.getHeader("content-type")||"", md5:this.getHeader("content-md5")||"", amazonHeaders:aws.canonicalizeHeaders(this.headers)}, 
path=this.uri.path;return opts.bucket&&path?auth.resource="/"+opts.bucket+path:opts.bucket&&!path?auth.resource="/"+opts.bucket:!opts.bucket&&path?auth.resource=path:opts.bucket||path||(auth.resource="/"), auth.resource=aws.canonicalizeResource(auth.resource), this.setHeader("authorization", aws.authorization(auth)), this; 
}, Request.prototype.httpSignature=function(opts) {
 var self=this;return httpSignature.signRequest({getHeader:function(header) {
 return self.getHeader(header, self.headers); 
}, setHeader:function(header, value) {
 self.setHeader(header, value); 
}, method:self.method, path:self.path}, opts), debug("httpSignature authorization", self.getHeader("authorization")), self; 
}, Request.prototype.hawk=function(opts) {
 this.setHeader("Authorization", hawk.client.header(this.uri, this.method, opts).field); 
}, Request.prototype.oauth=function(_oauth) {
 return this._oauth.onRequest(_oauth), this; 
}, Request.prototype.jar=function(jar) {
 var cookies;if(0===this._redirect.redirectsFollowed&&(this.originalCookieHeader=this.getHeader("cookie")), jar) {
 var targetCookieJar=jar&&jar.getCookieString?jar:globalCookieJar, 
urihref=this.uri.href;targetCookieJar&&(cookies=targetCookieJar.getCookieString(urihref)); 
}else {
 cookies=!1, this._disableCookies=!0; 
}return cookies&&cookies.length&&(this.originalCookieHeader?this.setHeader("cookie", this.originalCookieHeader+"; "+cookies):this.setHeader("cookie", cookies)), this._jar=jar, this; 
}, Request.prototype.pipe=function(dest, opts) {
 if(this.response) {
 if(this._destdata) {
 throw new Error("You cannot pipe after data has been emitted from the response."); 
}if(this._ended) {
 throw new Error("You cannot pipe after the response has been ended."); 
}return stream.Stream.prototype.pipe.call(this, dest, opts), this.pipeDest(dest), dest; 
}return this.dests.push(dest), stream.Stream.prototype.pipe.call(this, dest, opts), dest; 
}, Request.prototype.write=function() {
 return this._started||this.start(), this.req.write.apply(this.req, arguments); 
}, Request.prototype.end=function(chunk) {
 chunk&&this.write(chunk), this._started||this.start(), this.req.end(); 
}, Request.prototype.pause=function() {
 this.response?this.response.pause.apply(this.response, arguments):this._paused=!0; 
}, Request.prototype.resume=function() {
 this.response?this.response.resume.apply(this.response, arguments):this._paused=!1; 
}, Request.prototype.destroy=function() {
 this._ended?this.response&&this.response.destroy():this.end(); 
}, Request.defaultProxyHeaderWhiteList=defaultProxyHeaderWhiteList.slice(), Request.defaultProxyHeaderExclusiveList=defaultProxyHeaderExclusiveList.slice(), Request.prototype.toJSON=requestToJSON, module.exports=Request; 
}, {"./lib/auth":29, "./lib/cookies":30, "./lib/copy":31, "./lib/getProxyFromURI":32, "./lib/har":33, "./lib/helpers":34, "./lib/multipart":35, "./lib/oauth":36, "./lib/redirect":37, "aws-sign2":38, "bl":39, "caseless":46, "forever-agent":18, "form-data":49, "hawk":77, "http":void 0, "http-signature":90, "https":void 0, "mime-types":105, "qs":110, "querystring":void 0, "stream":void 0, "stringstream":117, "tunnel-agent":115, "url":void 0, "util":void 0, "zlib":void 0}], 117:[function(require, module, exports) {
 var util=require("util"), 
Stream=require("stream"), 
StringDecoder=require("string_decoder").StringDecoder;function StringStream(from, to) {
 if(!(this instanceof StringStream)) {
 return new StringStream(from, to); 
}Stream.call(this), null==from&&(from="utf8"), this.readable=this.writable=!0, this.paused=!1, this.toEncoding=null==to?from:to, this.fromEncoding=null==to?"":from, this.decoder=new AlignedStringDecoder(this.toEncoding); 
}function AlignedStringDecoder(encoding) {
 switch(StringDecoder.call(this, encoding), this.encoding) {
 case"base64":this.write=alignedWrite, this.alignedBuffer=new Buffer(3), this.alignedBytes=0; 
} 
}function alignedWrite(buffer) {
 var rem=(this.alignedBytes+buffer.length)%this.alignedBuffer.length;if(!rem&&!this.alignedBytes) {
 return buffer.toString(this.encoding); 
}var returnBuffer=new Buffer(this.alignedBytes+buffer.length-rem);return this.alignedBuffer.copy(returnBuffer, 0, 0, this.alignedBytes), buffer.copy(returnBuffer, this.alignedBytes, 0, buffer.length-rem), buffer.copy(this.alignedBuffer, 0, buffer.length-rem, buffer.length), this.alignedBytes=rem, returnBuffer.toString(this.encoding); 
}module.exports=StringStream, module.exports.AlignedStringDecoder=AlignedStringDecoder, util.inherits(StringStream, Stream), StringStream.prototype.write=function(data) {
 if(!this.writable) {
 var err=new Error("stream not writable");return err.code="EPIPE", this.emit("error", err), !1; 
}this.fromEncoding&&(Buffer.isBuffer(data)&&(data=data.toString()), data=new Buffer(data, this.fromEncoding));var string=this.decoder.write(data);return string.length&&this.emit("data", string), !this.paused; 
}, StringStream.prototype.flush=function() {
 if(this.decoder.flush) {
 var string=this.decoder.flush();string.length&&this.emit("data", string); 
} 
}, StringStream.prototype.end=function() {
 (this.writable||this.readable)&&(this.flush(), this.emit("end"), this.writable=this.readable=!1, this.destroy()); 
}, StringStream.prototype.destroy=function() {
 this.decoder=null, this.writable=this.readable=!1, this.emit("close"); 
}, StringStream.prototype.pause=function() {
 this.paused=!0; 
}, StringStream.prototype.resume=function() {
 this.paused&&this.emit("drain"), this.paused=!1; 
}, util.inherits(AlignedStringDecoder, StringDecoder), AlignedStringDecoder.prototype.flush=function() {
 if(!this.alignedBuffer||!this.alignedBytes) {
 return""; 
}var leftover=this.alignedBuffer.toString(this.encoding, 0, this.alignedBytes);return this.alignedBytes=0, leftover; 
}; 
}, {stream:void 0, string_decoder:void 0, util:void 0}], 118:[function(require, module, exports) {
 module.exports=function(func, wait) {
 var ctx, args, rtn, timeoutID, 
last=0;return function() {
 ctx=this, args=arguments;var delta=new Date-last;return timeoutID||(delta>=wait?call():timeoutID=setTimeout(call, wait-delta)), rtn; 
};function call() {
 timeoutID=0, last=+new Date, rtn=func.apply(ctx, args), ctx=null, args=null; 
} 
}; 
}, {}], 119:[function(require, module, exports) {
 "use strict";var punycode, 
net=require("net"), 
urlParse=require("url").parse, 
pubsuffix=require("./pubsuffix"), 
Store=require("./store").Store, 
MemoryCookieStore=require("./memstore").MemoryCookieStore, 
pathMatch=require("./pathMatch").pathMatch, 
VERSION=require("../package.json").version;try{
 punycode=require("punycode"); 
}catch(e) {}var DATE_DELIM=/[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/, 
COOKIE_OCTETS=new RegExp("^"+/[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]/.source+"+$"), 
CONTROL_CHARS=/[\x00-\x1F]/, 
COOKIE_PAIR=/^(([^=;]+))\s{0,256}=\s*([^\n\r\0]*)/, 
LOOSE_COOKIE_PAIR=/^((?:=)?([^=;]*)\s{0,256}=\s*)?([^\n\r\0]*)/, 
PATH_VALUE=/[\x20-\x3A\x3C-\x7E]+/, 
DAY_OF_MONTH=/^(\d{1,2})[^\d]*$/, 
TIME=/^(\d{1,2})[^\d]*:(\d{1,2})[^\d]*:(\d{1,2})[^\d]*$/, 
MONTH=/^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i, 
MONTH_TO_NUM={jan:0, feb:1, mar:2, apr:3, may:4, jun:5, jul:6, aug:7, sep:8, oct:9, nov:10, dec:11}, 
NUM_TO_MONTH=["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], 
NUM_TO_DAY=["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], 
YEAR=/^(\d{2}|\d{4})$/, 
MAX_TIME=2147483647e3;function parseDate(str) {
 if(str) {
 var tokens=str.split(DATE_DELIM);if(tokens) {
 for(var hour=null, minutes=null, seconds=null, day=null, month=null, year=null, i=0;i<tokens.length;i++) {
 var result, 
token=tokens[i].trim();if(token.length) {
 if(null===seconds&&(result=TIME.exec(token))) {
 if(hour=parseInt(result[1], 10), minutes=parseInt(result[2], 10), seconds=parseInt(result[3], 10), hour>23||minutes>59||seconds>59) {
 return; 
} 
}else if(null===day&&(result=DAY_OF_MONTH.exec(token))) {
 if((day=parseInt(result, 10))<1||day>31) {
 return; 
} 
}else if(null===month&&(result=MONTH.exec(token))) {
 month=MONTH_TO_NUM[result[1].toLowerCase()]; 
}else if(null===year&&(result=YEAR.exec(token))&&(70<=(year=parseInt(result[0], 10))&&year<=99?year+=1900:0<=year&&year<=69&&(year+=2e3), year<1601)) {
 return; 
} 
} 
}if(null!==seconds&&null!==day&&null!==month&&null!==year) {
 return new Date(Date.UTC(year, month, day, hour, minutes, seconds)); 
} 
} 
} 
}function formatDate(date) {
 var d=date.getUTCDate();d=d>=10?d:"0"+d;var h=date.getUTCHours();h=h>=10?h:"0"+h;var m=date.getUTCMinutes();m=m>=10?m:"0"+m;var s=date.getUTCSeconds();return s=s>=10?s:"0"+s, NUM_TO_DAY[date.getUTCDay()]+", "+d+" "+NUM_TO_MONTH[date.getUTCMonth()]+" "+date.getUTCFullYear()+" "+h+":"+m+":"+s+" GMT"; 
}function canonicalDomain(str) {
 return null==str?null:(str=str.trim().replace(/^\./, ""), punycode&&/[^\u0001-\u007f]/.test(str)&&(str=punycode.toASCII(str)), str.toLowerCase()); 
}function domainMatch(str, domStr, canonicalize) {
 if(null==str||null==domStr) {
 return null; 
}if(!1!==canonicalize&&(str=canonicalDomain(str), domStr=canonicalDomain(domStr)), str==domStr) {
 return!0; 
}if(net.isIP(str)) {
 return!1; 
}var idx=str.indexOf(domStr);return!(idx<=0)&&(str.length===domStr.length+idx&&"."===str.substr(idx-1, 1)); 
}function defaultPath(path) {
 if(!path||"/"!==path.substr(0, 1)) {
 return"/"; 
}if("/"===path) {
 return path; 
}var rightSlash=path.lastIndexOf("/");return 0===rightSlash?"/":path.slice(0, rightSlash); 
}function parse(str, options) {
 options&&"object"===typeof options||(options={});var firstSemi=(str=str.trim()).indexOf(";"), 
result=(options.loose?LOOSE_COOKIE_PAIR:COOKIE_PAIR).exec(-1===firstSemi?str:str.substr(0, firstSemi));if(result) {
 var c=new Cookie;if(result[1]?c.key=result[2].trim():c.key="", c.value=result[3].trim(), !CONTROL_CHARS.test(c.key)&&!CONTROL_CHARS.test(c.value)) {
 if(-1===firstSemi) {
 return c; 
}var unparsed=str.slice(firstSemi+1).trim();if(0===unparsed.length) {
 return c; 
}for(var cookie_avs=unparsed.split(";");cookie_avs.length;) {
 var av=cookie_avs.shift().trim();if(0!==av.length) {
 var av_key, av_value, 
av_sep=av.indexOf("=");switch(-1===av_sep?(av_key=av, av_value=null):(av_key=av.substr(0, av_sep), av_value=av.substr(av_sep+1)), av_key=av_key.trim().toLowerCase(), av_value&&(av_value=av_value.trim()), av_key) {
 case"expires":if(av_value) {
 var exp=parseDate(av_value);exp&&(c.expires=exp); 
}break;case"max-age":if(av_value&&/^-?[0-9]+$/.test(av_value)) {
 var delta=parseInt(av_value, 10);c.setMaxAge(delta); 
}break;case"domain":if(av_value) {
 var domain=av_value.trim().replace(/^\./, "");domain&&(c.domain=domain.toLowerCase()); 
}break;case"path":c.path=av_value&&"/"===av_value[0]?av_value:null;break;case"secure":c.secure=!0;break;case"httponly":c.httpOnly=!0;break;default:c.extensions=c.extensions||[], c.extensions.push(av); 
} 
} 
}return c; 
} 
} 
}function jsonParse(str) {
 var obj;try{
 obj=JSON.parse(str); 
}catch(e) {
 return e; 
}return obj; 
}function fromJSON(str) {
 if(!str) {
 return null; 
}var obj;if("string"===typeof str) {
 if((obj=jsonParse(str))instanceof Error) {
 return null; 
} 
}else {
 obj=str; 
}for(var c=new Cookie, i=0;i<Cookie.serializableProperties.length;i++) {
 var prop=Cookie.serializableProperties[i];void 0!==obj[prop]&&obj[prop]!==Cookie.prototype[prop]&&("expires"===prop||"creation"===prop||"lastAccessed"===prop?null===obj[prop]?c[prop]=null:c[prop]="Infinity"==obj[prop]?"Infinity":new Date(obj[prop]):c[prop]=obj[prop]); 
}return c; 
}function cookieCompare(a, b) {
 var cmp=0, 
aPathLen=a.path?a.path.length:0;return 0!==(cmp=(b.path?b.path.length:0)-aPathLen)?cmp:0!==(cmp=(a.creation?a.creation.getTime():MAX_TIME)-(b.creation?b.creation.getTime():MAX_TIME))?cmp:cmp=a.creationIndex-b.creationIndex; 
}function getCookieContext(url) {
 if(url instanceof Object) {
 return url; 
}try{
 url=decodeURI(url); 
}catch(err) {}return urlParse(url); 
}function Cookie(options) {
 options=options||{}, Object.keys(options).forEach(function(prop) {
 Cookie.prototype.hasOwnProperty(prop)&&Cookie.prototype[prop]!==options[prop]&&"_"!==prop.substr(0, 1)&&(this[prop]=options[prop]); 
}, this), this.creation=this.creation||new Date, Object.defineProperty(this, "creationIndex", {configurable:!1, enumerable:!1, writable:!0, value:++Cookie.cookiesCreated}); 
}function CookieJar(store, options) {
 "boolean"===typeof options?options={rejectPublicSuffixes:options}:null==options&&(options={}), null!=options.rejectPublicSuffixes&&(this.rejectPublicSuffixes=options.rejectPublicSuffixes), null!=options.looseMode&&(this.enableLooseMode=options.looseMode), store||(store=new MemoryCookieStore), this.store=store; 
}Cookie.cookiesCreated=0, Cookie.parse=parse, Cookie.fromJSON=fromJSON, Cookie.prototype.key="", Cookie.prototype.value="", Cookie.prototype.expires="Infinity", Cookie.prototype.maxAge=null, Cookie.prototype.domain=null, Cookie.prototype.path=null, Cookie.prototype.secure=!1, Cookie.prototype.httpOnly=!1, Cookie.prototype.extensions=null, Cookie.prototype.hostOnly=null, Cookie.prototype.pathIsDefault=null, Cookie.prototype.creation=null, Cookie.prototype.lastAccessed=null, Object.defineProperty(Cookie.prototype, "creationIndex", {configurable:!0, enumerable:!1, writable:!0, value:0}), Cookie.serializableProperties=Object.keys(Cookie.prototype).filter(function(prop) {
 return!(Cookie.prototype[prop]instanceof Function||"creationIndex"===prop||"_"===prop.substr(0, 1)); 
}), Cookie.prototype.inspect=function() {
 var now=Date.now();return'Cookie="'+this.toString()+"; hostOnly="+(null!=this.hostOnly?this.hostOnly:"?")+"; aAge="+(this.lastAccessed?now-this.lastAccessed.getTime()+"ms":"?")+"; cAge="+(this.creation?now-this.creation.getTime()+"ms":"?")+'"'; 
}, Cookie.prototype.toJSON=function() {
 for(var obj={}, props=Cookie.serializableProperties, i=0;i<props.length;i++) {
 var prop=props[i];this[prop]!==Cookie.prototype[prop]&&("expires"===prop||"creation"===prop||"lastAccessed"===prop?null===this[prop]?obj[prop]=null:obj[prop]="Infinity"==this[prop]?"Infinity":this[prop].toISOString():"maxAge"===prop?null!==this[prop]&&(obj[prop]=this[prop]==1/0||this[prop]==-1/0?this[prop].toString():this[prop]):this[prop]!==Cookie.prototype[prop]&&(obj[prop]=this[prop])); 
}return obj; 
}, Cookie.prototype.clone=function() {
 return fromJSON(this.toJSON()); 
}, Cookie.prototype.validate=function() {
 if(!COOKIE_OCTETS.test(this.value)) {
 return!1; 
}if(!(this.expires==1/0||this.expires instanceof Date||parseDate(this.expires))) {
 return!1; 
}if(null!=this.maxAge&&this.maxAge<=0) {
 return!1; 
}if(null!=this.path&&!PATH_VALUE.test(this.path)) {
 return!1; 
}var cdomain=this.cdomain();if(cdomain) {
 if(cdomain.match(/\.$/)) {
 return!1; 
}if(null==pubsuffix.getPublicSuffix(cdomain)) {
 return!1; 
} 
}return!0; 
}, Cookie.prototype.setExpires=function(exp) {
 exp instanceof Date?this.expires=exp:this.expires=parseDate(exp)||"Infinity"; 
}, Cookie.prototype.setMaxAge=function(age) {
 this.maxAge=age===1/0||age===-1/0?age.toString():age; 
}, Cookie.prototype.cookieString=function() {
 var val=this.value;return null==val&&(val=""), ""===this.key?val:this.key+"="+val; 
}, Cookie.prototype.toString=function() {
 var str=this.cookieString();return this.expires!=1/0&&(this.expires instanceof Date?str+="; Expires="+formatDate(this.expires):str+="; Expires="+this.expires), null!=this.maxAge&&this.maxAge!=1/0&&(str+="; Max-Age="+this.maxAge), this.domain&&!this.hostOnly&&(str+="; Domain="+this.domain), this.path&&(str+="; Path="+this.path), this.secure&&(str+="; Secure"), this.httpOnly&&(str+="; HttpOnly"), this.extensions&&this.extensions.forEach(function(ext) {
 str+="; "+ext; 
}), str; 
}, Cookie.prototype.TTL=function(now) {
 if(null!=this.maxAge) {
 return this.maxAge<=0?0:1e3*this.maxAge; 
}var expires=this.expires;return expires!=1/0?(expires instanceof Date||(expires=parseDate(expires)||1/0), expires==1/0?1/0:expires.getTime()-(now||Date.now())):1/0; 
}, Cookie.prototype.expiryTime=function(now) {
 if(null!=this.maxAge) {
 var relativeTo=now||this.creation||new Date, 
age=this.maxAge<=0?-1/0:1e3*this.maxAge;return relativeTo.getTime()+age; 
}return this.expires==1/0?1/0:this.expires.getTime(); 
}, Cookie.prototype.expiryDate=function(now) {
 var millisec=this.expiryTime(now);return millisec==1/0?new Date(MAX_TIME):millisec==-1/0?new Date(0):new Date(millisec); 
}, Cookie.prototype.isPersistent=function() {
 return null!=this.maxAge||this.expires!=1/0; 
}, Cookie.prototype.cdomain=Cookie.prototype.canonicalizedDomain=function() {
 return null==this.domain?null:canonicalDomain(this.domain); 
}, CookieJar.prototype.store=null, CookieJar.prototype.rejectPublicSuffixes=!0, CookieJar.prototype.enableLooseMode=!1;var CAN_BE_SYNC=[];CAN_BE_SYNC.push("setCookie"), CookieJar.prototype.setCookie=function(cookie, url, options, cb) {
 var err, 
context=getCookieContext(url);options instanceof Function&&(cb=options, options={});var host=canonicalDomain(context.hostname), 
loose=this.enableLooseMode;if(null!=options.loose&&(loose=options.loose), cookie instanceof Cookie||(cookie=Cookie.parse(cookie, {loose:loose})), !cookie) {
 return err=new Error("Cookie failed to parse"), cb(options.ignoreError?null:err); 
}var now=options.now||new Date;if(this.rejectPublicSuffixes&&cookie.domain&&null==pubsuffix.getPublicSuffix(cookie.cdomain())) {
 return err=new Error("Cookie has domain set to a public suffix"), cb(options.ignoreError?null:err); 
}if(cookie.domain) {
 if(!domainMatch(host, cookie.cdomain(), !1)) {
 return err=new Error("Cookie not in this host's domain. Cookie:"+cookie.cdomain()+" Request:"+host), cb(options.ignoreError?null:err); 
}null==cookie.hostOnly&&(cookie.hostOnly=!1); 
}else {
 cookie.hostOnly=!0, cookie.domain=host; 
}if(cookie.path&&"/"===cookie.path[0]||(cookie.path=defaultPath(context.pathname), cookie.pathIsDefault=!0), !1===options.http&&cookie.httpOnly) {
 return err=new Error("Cookie is HttpOnly and this isn't an HTTP API"), cb(options.ignoreError?null:err); 
}var store=this.store;store.updateCookie||(store.updateCookie=function(oldCookie, newCookie, cb) {
 this.putCookie(newCookie, cb); 
}), store.findCookie(cookie.domain, cookie.path, cookie.key, function(err, oldCookie) {
 if(err) {
 return cb(err); 
}var next=function(err) {
 if(err) {
 return cb(err); 
}cb(null, cookie); 
};if(oldCookie) {
 if(!1===options.http&&oldCookie.httpOnly) {
 return err=new Error("old Cookie is HttpOnly and this isn't an HTTP API"), cb(options.ignoreError?null:err); 
}cookie.creation=oldCookie.creation, cookie.creationIndex=oldCookie.creationIndex, cookie.lastAccessed=now, store.updateCookie(oldCookie, cookie, next); 
}else {
 cookie.creation=cookie.lastAccessed=now, store.putCookie(cookie, next); 
} 
}); 
}, CAN_BE_SYNC.push("getCookies"), CookieJar.prototype.getCookies=function(url, options, cb) {
 var context=getCookieContext(url);options instanceof Function&&(cb=options, options={});var host=canonicalDomain(context.hostname), 
path=context.pathname||"/", 
secure=options.secure;null!=secure||!context.protocol||"https:"!=context.protocol&&"wss:"!=context.protocol||(secure=!0);var http=options.http;null==http&&(http=!0);var now=options.now||Date.now(), 
expireCheck=!1!==options.expire, 
allPaths=!!options.allPaths, 
store=this.store;function matchingCookie(c) {
 if(c.hostOnly) {
 if(c.domain!=host) {
 return!1; 
} 
}else if(!domainMatch(host, c.domain, !1)) {
 return!1; 
}return!(!allPaths&&!pathMatch(path, c.path))&&(!(c.secure&&!secure)&&(!(c.httpOnly&&!http)&&(!(expireCheck&&c.expiryTime()<=now)||(store.removeCookie(c.domain, c.path, c.key, function() {}), !1)))); 
}store.findCookies(host, allPaths?null:path, function(err, cookies) {
 if(err) {
 return cb(err); 
}cookies=cookies.filter(matchingCookie), !1!==options.sort&&(cookies=cookies.sort(cookieCompare));var now=new Date;cookies.forEach(function(c) {
 c.lastAccessed=now; 
}), cb(null, cookies); 
}); 
}, CAN_BE_SYNC.push("getCookieString"), CookieJar.prototype.getCookieString=function() {
 var args=Array.prototype.slice.call(arguments, 0), 
cb=args.pop();args.push(function(err, cookies) {
 err?cb(err):cb(null, cookies.sort(cookieCompare).map(function(c) {
 return c.cookieString(); 
}).join("; ")); 
}), this.getCookies.apply(this, args); 
}, CAN_BE_SYNC.push("getSetCookieStrings"), CookieJar.prototype.getSetCookieStrings=function() {
 var args=Array.prototype.slice.call(arguments, 0), 
cb=args.pop();args.push(function(err, cookies) {
 err?cb(err):cb(null, cookies.map(function(c) {
 return c.toString(); 
})); 
}), this.getCookies.apply(this, args); 
}, CAN_BE_SYNC.push("serialize"), CookieJar.prototype.serialize=function(cb) {
 var type=this.store.constructor.name;"Object"===type&&(type=null);var serialized={version:"tough-cookie@"+VERSION, storeType:type, rejectPublicSuffixes:!!this.rejectPublicSuffixes, cookies:[]};if(!this.store.getAllCookies||"function"!==typeof this.store.getAllCookies) {
 return cb(new Error("store does not support getAllCookies and cannot be serialized")); 
}this.store.getAllCookies(function(err, cookies) {
 return err?cb(err):(serialized.cookies=cookies.map(function(cookie) {
 return delete(cookie=cookie instanceof Cookie?cookie.toJSON():cookie).creationIndex, cookie; 
}), cb(null, serialized)); 
}); 
}, CookieJar.prototype.toJSON=function() {
 return this.serializeSync(); 
}, CAN_BE_SYNC.push("_importCookies"), CookieJar.prototype._importCookies=function(serialized, cb) {
 var jar=this, 
cookies=serialized.cookies;if(!cookies||!Array.isArray(cookies)) {
 return cb(new Error("serialized jar has no cookies array")); 
}cookies=cookies.slice(), (function putNext(err) {
 if(err) {
 return cb(err); 
}if(!cookies.length) {
 return cb(err, jar); 
}var cookie;try{
 cookie=fromJSON(cookies.shift()); 
}catch(e) {
 return cb(e); 
}if(null===cookie) {
 return putNext(null); 
}jar.store.putCookie(cookie, putNext); 
}()); 
}, CookieJar.deserialize=function(strOrObj, store, cb) {
 var serialized;if(3!==arguments.length&&(cb=store, store=null), "string"===typeof strOrObj) {
 if((serialized=jsonParse(strOrObj))instanceof Error) {
 return cb(serialized); 
} 
}else {
 serialized=strOrObj; 
}var jar=new CookieJar(store, serialized.rejectPublicSuffixes);jar._importCookies(serialized, function(err) {
 if(err) {
 return cb(err); 
}cb(null, jar); 
}); 
}, CookieJar.deserializeSync=function(strOrObj, store) {
 var serialized="string"===typeof strOrObj?JSON.parse(strOrObj):strOrObj, 
jar=new CookieJar(store, serialized.rejectPublicSuffixes);if(!jar.store.synchronous) {
 throw new Error("CookieJar store is not synchronous; use async API instead."); 
}return jar._importCookiesSync(serialized), jar; 
}, CookieJar.fromJSON=CookieJar.deserializeSync, CAN_BE_SYNC.push("clone"), CookieJar.prototype.clone=function(newStore, cb) {
 1===arguments.length&&(cb=newStore, newStore=null), this.serialize(function(err, serialized) {
 if(err) {
 return cb(err); 
}CookieJar.deserialize(newStore, serialized, cb); 
}); 
}, CAN_BE_SYNC.forEach(function(method) {
 CookieJar.prototype[method+"Sync"]=(function(method) {
 return function() {
 if(!this.store.synchronous) {
 throw new Error("CookieJar store is not synchronous; use async API instead."); 
}var syncErr, syncResult, 
args=Array.prototype.slice.call(arguments);if(args.push(function(err, result) {
 syncErr=err, syncResult=result; 
}), this[method].apply(this, args), syncErr) {
 throw syncErr; 
}return syncResult; 
}; 
}(method)); 
}), module.exports={CookieJar:CookieJar, Cookie:Cookie, Store:Store, MemoryCookieStore:MemoryCookieStore, parseDate:parseDate, formatDate:formatDate, parse:parse, fromJSON:fromJSON, domainMatch:domainMatch, defaultPath:defaultPath, pathMatch:pathMatch, getPublicSuffix:pubsuffix.getPublicSuffix, cookieCompare:cookieCompare, permuteDomain:require("./permuteDomain").permuteDomain, permutePath:function(path) {
 if("/"===path) {
 return["/"]; 
}path.lastIndexOf("/")===path.length-1&&(path=path.substr(0, path.length-1));for(var permutations=[path];path.length>1;) {
 var lindex=path.lastIndexOf("/");if(0===lindex) {
 break; 
}path=path.substr(0, lindex), permutations.push(path); 
}return permutations.push("/"), permutations; 
}, canonicalDomain:canonicalDomain}; 
}, {"../package.json":125, "./memstore":120, "./pathMatch":121, "./permuteDomain":122, "./pubsuffix":123, "./store":124, "net":void 0, "punycode":void 0, "url":void 0}], 120:[function(require, module, exports) {
 "use strict";var Store=require("./store").Store, 
permuteDomain=require("./permuteDomain").permuteDomain, 
pathMatch=require("./pathMatch").pathMatch, 
util=require("util");function MemoryCookieStore() {
 Store.call(this), this.idx={}; 
}util.inherits(MemoryCookieStore, Store), exports.MemoryCookieStore=MemoryCookieStore, MemoryCookieStore.prototype.idx=null, MemoryCookieStore.prototype.synchronous=!0, MemoryCookieStore.prototype.inspect=function() {
 return"{ idx: "+util.inspect(this.idx, !1, 2)+" }"; 
}, MemoryCookieStore.prototype.findCookie=function(domain, path, key, cb) {
 return this.idx[domain]&&this.idx[domain][path]?cb(null, this.idx[domain][path][key]||null):cb(null, void 0); 
}, MemoryCookieStore.prototype.findCookies=function(domain, path, cb) {
 var pathMatcher, 
results=[];if(!domain) {
 return cb(null, []); 
}pathMatcher=path?function(domainIndex) {
 Object.keys(domainIndex).forEach(function(cookiePath) {
 if(pathMatch(path, cookiePath)) {
 var pathIndex=domainIndex[cookiePath];for(var key in pathIndex) {
 results.push(pathIndex[key]); 
} 
} 
}); 
}:function(domainIndex) {
 for(var curPath in domainIndex) {
 var pathIndex=domainIndex[curPath];for(var key in pathIndex) {
 results.push(pathIndex[key]); 
} 
} 
};var domains=permuteDomain(domain)||[domain], 
idx=this.idx;domains.forEach(function(curDomain) {
 var domainIndex=idx[curDomain];domainIndex&&pathMatcher(domainIndex); 
}), cb(null, results); 
}, MemoryCookieStore.prototype.putCookie=function(cookie, cb) {
 this.idx[cookie.domain]||(this.idx[cookie.domain]={}), this.idx[cookie.domain][cookie.path]||(this.idx[cookie.domain][cookie.path]={}), this.idx[cookie.domain][cookie.path][cookie.key]=cookie, cb(null); 
}, MemoryCookieStore.prototype.updateCookie=function(oldCookie, newCookie, cb) {
 this.putCookie(newCookie, cb); 
}, MemoryCookieStore.prototype.removeCookie=function(domain, path, key, cb) {
 this.idx[domain]&&this.idx[domain][path]&&this.idx[domain][path][key]&&delete this.idx[domain][path][key], cb(null); 
}, MemoryCookieStore.prototype.removeCookies=function(domain, path, cb) {
 return this.idx[domain]&&(path?delete this.idx[domain][path]:delete this.idx[domain]), cb(null); 
}, MemoryCookieStore.prototype.getAllCookies=function(cb) {
 var cookies=[], 
idx=this.idx;Object.keys(idx).forEach(function(domain) {
 Object.keys(idx[domain]).forEach(function(path) {
 Object.keys(idx[domain][path]).forEach(function(key) {
 null!==key&&cookies.push(idx[domain][path][key]); 
}); 
}); 
}), cookies.sort(function(a, b) {
 return(a.creationIndex||0)-(b.creationIndex||0); 
}), cb(null, cookies); 
}; 
}, {"./pathMatch":121, "./permuteDomain":122, "./store":124, "util":void 0}], 121:[function(require, module, exports) {
 "use strict";exports.pathMatch=function(reqPath, cookiePath) {
 if(cookiePath===reqPath) {
 return!0; 
}if(0===reqPath.indexOf(cookiePath)) {
 if("/"===cookiePath.substr(-1)) {
 return!0; 
}if("/"===reqPath.substr(cookiePath.length, 1)) {
 return!0; 
} 
}return!1; 
}; 
}, {}], 122:[function(require, module, exports) {
 "use strict";var pubsuffix=require("./pubsuffix");exports.permuteDomain=function(domain) {
 var pubSuf=pubsuffix.getPublicSuffix(domain);if(!pubSuf) {
 return null; 
}if(pubSuf==domain) {
 return[domain]; 
}for(var parts=domain.slice(0, -(pubSuf.length+1)).split(".").reverse(), cur=pubSuf, permutations=[cur];parts.length;) {
 cur=parts.shift()+"."+cur, permutations.push(cur); 
}return permutations; 
}; 
}, {"./pubsuffix":123}], 123:[function(require, module, exports) {
 "use strict";var punycode=require("punycode");module.exports.getPublicSuffix=function(domain) {
 if(!domain) {
 return null; 
}if(domain.match(/^\./)) {
 return null; 
}var asciiDomain=punycode.toASCII(domain), 
converted=!1;if(asciiDomain!==domain&&(domain=asciiDomain, converted=!0), index[domain]) {
 return null; 
}for(var parts=(domain=domain.toLowerCase()).split(".").reverse(), suffix="", suffixLen=0, i=0;i<parts.length;i++) {
 var partstr=parts[i]+suffix;index["*"+suffix]?(suffixLen=i+1, !1===index[partstr]&&suffixLen--):index[partstr]&&(suffixLen=i+1), suffix="."+partstr; 
}if(index["*"+suffix]) {
 return null; 
}if(suffixLen=suffixLen||1, parts.length>suffixLen) {
 var publicSuffix=parts.slice(0, suffixLen+1).reverse().join(".");return converted?punycode.toUnicode(publicSuffix):publicSuffix; 
}return null; 
};var index=module.exports.index=Object.freeze({"ac":!0, "com.ac":!0, "edu.ac":!0, "gov.ac":!0, "net.ac":!0, "mil.ac":!0, "org.ac":!0, "ad":!0, "nom.ad":!0, "ae":!0, "co.ae":!0, "net.ae":!0, "org.ae":!0, "sch.ae":!0, "ac.ae":!0, "gov.ae":!0, "mil.ae":!0, "aero":!0, "accident-investigation.aero":!0, "accident-prevention.aero":!0, "aerobatic.aero":!0, "aeroclub.aero":!0, "aerodrome.aero":!0, "agents.aero":!0, "aircraft.aero":!0, "airline.aero":!0, "airport.aero":!0, "air-surveillance.aero":!0, "airtraffic.aero":!0, "air-traffic-control.aero":!0, "ambulance.aero":!0, "amusement.aero":!0, "association.aero":!0, "author.aero":!0, "ballooning.aero":!0, "broker.aero":!0, "caa.aero":!0, "cargo.aero":!0, "catering.aero":!0, "certification.aero":!0, "championship.aero":!0, "charter.aero":!0, "civilaviation.aero":!0, "club.aero":!0, "conference.aero":!0, "consultant.aero":!0, "consulting.aero":!0, "control.aero":!0, "council.aero":!0, "crew.aero":!0, "design.aero":!0, "dgca.aero":!0, "educator.aero":!0, "emergency.aero":!0, "engine.aero":!0, "engineer.aero":!0, "entertainment.aero":!0, "equipment.aero":!0, "exchange.aero":!0, "express.aero":!0, "federation.aero":!0, "flight.aero":!0, "freight.aero":!0, "fuel.aero":!0, "gliding.aero":!0, "government.aero":!0, "groundhandling.aero":!0, "group.aero":!0, "hanggliding.aero":!0, "homebuilt.aero":!0, "insurance.aero":!0, "journal.aero":!0, "journalist.aero":!0, "leasing.aero":!0, "logistics.aero":!0, "magazine.aero":!0, "maintenance.aero":!0, "media.aero":!0, "microlight.aero":!0, "modelling.aero":!0, "navigation.aero":!0, "parachuting.aero":!0, "paragliding.aero":!0, "passenger-association.aero":!0, "pilot.aero":!0, "press.aero":!0, "production.aero":!0, "recreation.aero":!0, "repbody.aero":!0, "res.aero":!0, "research.aero":!0, "rotorcraft.aero":!0, "safety.aero":!0, "scientist.aero":!0, "services.aero":!0, "show.aero":!0, "skydiving.aero":!0, "software.aero":!0, "student.aero":!0, "trader.aero":!0, "trading.aero":!0, "trainer.aero":!0, "union.aero":!0, "workinggroup.aero":!0, "works.aero":!0, "af":!0, "gov.af":!0, "com.af":!0, "org.af":!0, "net.af":!0, "edu.af":!0, "ag":!0, "com.ag":!0, "org.ag":!0, "net.ag":!0, "co.ag":!0, "nom.ag":!0, "ai":!0, "off.ai":!0, "com.ai":!0, "net.ai":!0, "org.ai":!0, "al":!0, "com.al":!0, "edu.al":!0, "gov.al":!0, "mil.al":!0, "net.al":!0, "org.al":!0, "am":!0, "ao":!0, "ed.ao":!0, "gv.ao":!0, "og.ao":!0, "co.ao":!0, "pb.ao":!0, "it.ao":!0, "aq":!0, "ar":!0, "com.ar":!0, "edu.ar":!0, "gob.ar":!0, "gov.ar":!0, "int.ar":!0, "mil.ar":!0, "net.ar":!0, "org.ar":!0, "tur.ar":!0, "arpa":!0, "e164.arpa":!0, "in-addr.arpa":!0, "ip6.arpa":!0, "iris.arpa":!0, "uri.arpa":!0, "urn.arpa":!0, "as":!0, "gov.as":!0, "asia":!0, "at":!0, "ac.at":!0, "co.at":!0, "gv.at":!0, "or.at":!0, "au":!0, "com.au":!0, "net.au":!0, "org.au":!0, "edu.au":!0, "gov.au":!0, "asn.au":!0, "id.au":!0, "info.au":!0, "conf.au":!0, "oz.au":!0, "act.au":!0, "nsw.au":!0, "nt.au":!0, "qld.au":!0, "sa.au":!0, "tas.au":!0, "vic.au":!0, "wa.au":!0, "act.edu.au":!0, "nsw.edu.au":!0, "nt.edu.au":!0, "qld.edu.au":!0, "sa.edu.au":!0, "tas.edu.au":!0, "vic.edu.au":!0, "wa.edu.au":!0, "qld.gov.au":!0, "sa.gov.au":!0, "tas.gov.au":!0, "vic.gov.au":!0, "wa.gov.au":!0, "aw":!0, "com.aw":!0, "ax":!0, "az":!0, "com.az":!0, "net.az":!0, "int.az":!0, "gov.az":!0, "org.az":!0, "edu.az":!0, "info.az":!0, "pp.az":!0, "mil.az":!0, "name.az":!0, "pro.az":!0, "biz.az":!0, "ba":!0, "com.ba":!0, "edu.ba":!0, "gov.ba":!0, "mil.ba":!0, "net.ba":!0, "org.ba":!0, "bb":!0, "biz.bb":!0, "co.bb":!0, "com.bb":!0, "edu.bb":!0, "gov.bb":!0, "info.bb":!0, "net.bb":!0, "org.bb":!0, "store.bb":!0, "tv.bb":!0, "*.bd":!0, "be":!0, "ac.be":!0, "bf":!0, "gov.bf":!0, "bg":!0, "a.bg":!0, "b.bg":!0, "c.bg":!0, "d.bg":!0, "e.bg":!0, "f.bg":!0, "g.bg":!0, "h.bg":!0, "i.bg":!0, "j.bg":!0, "k.bg":!0, "l.bg":!0, "m.bg":!0, "n.bg":!0, "o.bg":!0, "p.bg":!0, "q.bg":!0, "r.bg":!0, "s.bg":!0, "t.bg":!0, "u.bg":!0, "v.bg":!0, "w.bg":!0, "x.bg":!0, "y.bg":!0, "z.bg":!0, "0.bg":!0, "1.bg":!0, "2.bg":!0, "3.bg":!0, "4.bg":!0, "5.bg":!0, "6.bg":!0, "7.bg":!0, "8.bg":!0, "9.bg":!0, "bh":!0, "com.bh":!0, "edu.bh":!0, "net.bh":!0, "org.bh":!0, "gov.bh":!0, "bi":!0, "co.bi":!0, "com.bi":!0, "edu.bi":!0, "or.bi":!0, "org.bi":!0, "biz":!0, "bj":!0, "asso.bj":!0, "barreau.bj":!0, "gouv.bj":!0, "bm":!0, "com.bm":!0, "edu.bm":!0, "gov.bm":!0, "net.bm":!0, "org.bm":!0, "*.bn":!0, "bo":!0, "com.bo":!0, "edu.bo":!0, "gov.bo":!0, "gob.bo":!0, "int.bo":!0, "org.bo":!0, "net.bo":!0, "mil.bo":!0, "tv.bo":!0, "br":!0, "adm.br":!0, "adv.br":!0, "agr.br":!0, "am.br":!0, "arq.br":!0, "art.br":!0, "ato.br":!0, "b.br":!0, "bio.br":!0, "blog.br":!0, "bmd.br":!0, "cim.br":!0, "cng.br":!0, "cnt.br":!0, "com.br":!0, "coop.br":!0, "ecn.br":!0, "eco.br":!0, "edu.br":!0, "emp.br":!0, "eng.br":!0, "esp.br":!0, "etc.br":!0, "eti.br":!0, "far.br":!0, "flog.br":!0, "fm.br":!0, "fnd.br":!0, "fot.br":!0, "fst.br":!0, "g12.br":!0, "ggf.br":!0, "gov.br":!0, "imb.br":!0, "ind.br":!0, "inf.br":!0, "jor.br":!0, "jus.br":!0, "leg.br":!0, "lel.br":!0, "mat.br":!0, "med.br":!0, "mil.br":!0, "mp.br":!0, "mus.br":!0, "net.br":!0, "*.nom.br":!0, "not.br":!0, "ntr.br":!0, "odo.br":!0, "org.br":!0, "ppg.br":!0, "pro.br":!0, "psc.br":!0, "psi.br":!0, "qsl.br":!0, "radio.br":!0, "rec.br":!0, "slg.br":!0, "srv.br":!0, "taxi.br":!0, "teo.br":!0, "tmp.br":!0, "trd.br":!0, "tur.br":!0, "tv.br":!0, "vet.br":!0, "vlog.br":!0, "wiki.br":!0, "zlg.br":!0, "bs":!0, "com.bs":!0, "net.bs":!0, "org.bs":!0, "edu.bs":!0, "gov.bs":!0, "bt":!0, "com.bt":!0, "edu.bt":!0, "gov.bt":!0, "net.bt":!0, "org.bt":!0, "bv":!0, "bw":!0, "co.bw":!0, "org.bw":!0, "by":!0, "gov.by":!0, "mil.by":!0, "com.by":!0, "of.by":!0, "bz":!0, "com.bz":!0, "net.bz":!0, "org.bz":!0, "edu.bz":!0, "gov.bz":!0, "ca":!0, "ab.ca":!0, "bc.ca":!0, "mb.ca":!0, "nb.ca":!0, "nf.ca":!0, "nl.ca":!0, "ns.ca":!0, "nt.ca":!0, "nu.ca":!0, "on.ca":!0, "pe.ca":!0, "qc.ca":!0, "sk.ca":!0, "yk.ca":!0, "gc.ca":!0, "cat":!0, "cc":!0, "cd":!0, "gov.cd":!0, "cf":!0, "cg":!0, "ch":!0, "ci":!0, "org.ci":!0, "or.ci":!0, "com.ci":!0, "co.ci":!0, "edu.ci":!0, "ed.ci":!0, "ac.ci":!0, "net.ci":!0, "go.ci":!0, "asso.ci":!0, "xn--aroport-bya.ci":!0, "int.ci":!0, "presse.ci":!0, "md.ci":!0, "gouv.ci":!0, "*.ck":!0, "www.ck":!1, "cl":!0, "gov.cl":!0, "gob.cl":!0, "co.cl":!0, "mil.cl":!0, "cm":!0, "co.cm":!0, "com.cm":!0, "gov.cm":!0, "net.cm":!0, "cn":!0, "ac.cn":!0, "com.cn":!0, "edu.cn":!0, "gov.cn":!0, "net.cn":!0, "org.cn":!0, "mil.cn":!0, "xn--55qx5d.cn":!0, "xn--io0a7i.cn":!0, "xn--od0alg.cn":!0, "ah.cn":!0, "bj.cn":!0, "cq.cn":!0, "fj.cn":!0, "gd.cn":!0, "gs.cn":!0, "gz.cn":!0, "gx.cn":!0, "ha.cn":!0, "hb.cn":!0, "he.cn":!0, "hi.cn":!0, "hl.cn":!0, "hn.cn":!0, "jl.cn":!0, "js.cn":!0, "jx.cn":!0, "ln.cn":!0, "nm.cn":!0, "nx.cn":!0, "qh.cn":!0, "sc.cn":!0, "sd.cn":!0, "sh.cn":!0, "sn.cn":!0, "sx.cn":!0, "tj.cn":!0, "xj.cn":!0, "xz.cn":!0, "yn.cn":!0, "zj.cn":!0, "hk.cn":!0, "mo.cn":!0, "tw.cn":!0, "co":!0, "arts.co":!0, "com.co":!0, "edu.co":!0, "firm.co":!0, "gov.co":!0, "info.co":!0, "int.co":!0, "mil.co":!0, "net.co":!0, "nom.co":!0, "org.co":!0, "rec.co":!0, "web.co":!0, "com":!0, "coop":!0, "cr":!0, "ac.cr":!0, "co.cr":!0, "ed.cr":!0, "fi.cr":!0, "go.cr":!0, "or.cr":!0, "sa.cr":!0, "cu":!0, "com.cu":!0, "edu.cu":!0, "org.cu":!0, "net.cu":!0, "gov.cu":!0, "inf.cu":!0, "cv":!0, "cw":!0, "com.cw":!0, "edu.cw":!0, "net.cw":!0, "org.cw":!0, "cx":!0, "gov.cx":!0, "cy":!0, "ac.cy":!0, "biz.cy":!0, "com.cy":!0, "ekloges.cy":!0, "gov.cy":!0, "ltd.cy":!0, "name.cy":!0, "net.cy":!0, "org.cy":!0, "parliament.cy":!0, "press.cy":!0, "pro.cy":!0, "tm.cy":!0, "cz":!0, "de":!0, "dj":!0, "dk":!0, "dm":!0, "com.dm":!0, "net.dm":!0, "org.dm":!0, "edu.dm":!0, "gov.dm":!0, "do":!0, "art.do":!0, "com.do":!0, "edu.do":!0, "gob.do":!0, "gov.do":!0, "mil.do":!0, "net.do":!0, "org.do":!0, "sld.do":!0, "web.do":!0, "dz":!0, "com.dz":!0, "org.dz":!0, "net.dz":!0, "gov.dz":!0, "edu.dz":!0, "asso.dz":!0, "pol.dz":!0, "art.dz":!0, "ec":!0, "com.ec":!0, "info.ec":!0, "net.ec":!0, "fin.ec":!0, "k12.ec":!0, "med.ec":!0, "pro.ec":!0, "org.ec":!0, "edu.ec":!0, "gov.ec":!0, "gob.ec":!0, "mil.ec":!0, "edu":!0, "ee":!0, "edu.ee":!0, "gov.ee":!0, "riik.ee":!0, "lib.ee":!0, "med.ee":!0, "com.ee":!0, "pri.ee":!0, "aip.ee":!0, "org.ee":!0, "fie.ee":!0, "eg":!0, "com.eg":!0, "edu.eg":!0, "eun.eg":!0, "gov.eg":!0, "mil.eg":!0, "name.eg":!0, "net.eg":!0, "org.eg":!0, "sci.eg":!0, "*.er":!0, "es":!0, "com.es":!0, "nom.es":!0, "org.es":!0, "gob.es":!0, "edu.es":!0, "et":!0, "com.et":!0, "gov.et":!0, "org.et":!0, "edu.et":!0, "biz.et":!0, "name.et":!0, "info.et":!0, "net.et":!0, "eu":!0, "fi":!0, "aland.fi":!0, "*.fj":!0, "*.fk":!0, "fm":!0, "fo":!0, "fr":!0, "com.fr":!0, "asso.fr":!0, "nom.fr":!0, "prd.fr":!0, "presse.fr":!0, "tm.fr":!0, "aeroport.fr":!0, "assedic.fr":!0, "avocat.fr":!0, "avoues.fr":!0, "cci.fr":!0, "chambagri.fr":!0, "chirurgiens-dentistes.fr":!0, "experts-comptables.fr":!0, "geometre-expert.fr":!0, "gouv.fr":!0, "greta.fr":!0, "huissier-justice.fr":!0, "medecin.fr":!0, "notaires.fr":!0, "pharmacien.fr":!0, "port.fr":!0, "veterinaire.fr":!0, "ga":!0, "gb":!0, "gd":!0, "ge":!0, "com.ge":!0, "edu.ge":!0, "gov.ge":!0, "org.ge":!0, "mil.ge":!0, "net.ge":!0, "pvt.ge":!0, "gf":!0, "gg":!0, "co.gg":!0, "net.gg":!0, "org.gg":!0, "gh":!0, "com.gh":!0, "edu.gh":!0, "gov.gh":!0, "org.gh":!0, "mil.gh":!0, "gi":!0, "com.gi":!0, "ltd.gi":!0, "gov.gi":!0, "mod.gi":!0, "edu.gi":!0, "org.gi":!0, "gl":!0, "co.gl":!0, "com.gl":!0, "edu.gl":!0, "net.gl":!0, "org.gl":!0, "gm":!0, "gn":!0, "ac.gn":!0, "com.gn":!0, "edu.gn":!0, "gov.gn":!0, "org.gn":!0, "net.gn":!0, "gov":!0, "gp":!0, "com.gp":!0, "net.gp":!0, "mobi.gp":!0, "edu.gp":!0, "org.gp":!0, "asso.gp":!0, "gq":!0, "gr":!0, "com.gr":!0, "edu.gr":!0, "net.gr":!0, "org.gr":!0, "gov.gr":!0, "gs":!0, "gt":!0, "com.gt":!0, "edu.gt":!0, "gob.gt":!0, "ind.gt":!0, "mil.gt":!0, "net.gt":!0, "org.gt":!0, "*.gu":!0, "gw":!0, "gy":!0, "co.gy":!0, "com.gy":!0, "edu.gy":!0, "gov.gy":!0, "net.gy":!0, "org.gy":!0, "hk":!0, "com.hk":!0, "edu.hk":!0, "gov.hk":!0, "idv.hk":!0, "net.hk":!0, "org.hk":!0, "xn--55qx5d.hk":!0, "xn--wcvs22d.hk":!0, "xn--lcvr32d.hk":!0, "xn--mxtq1m.hk":!0, "xn--gmqw5a.hk":!0, "xn--ciqpn.hk":!0, "xn--gmq050i.hk":!0, "xn--zf0avx.hk":!0, "xn--io0a7i.hk":!0, "xn--mk0axi.hk":!0, "xn--od0alg.hk":!0, "xn--od0aq3b.hk":!0, "xn--tn0ag.hk":!0, "xn--uc0atv.hk":!0, "xn--uc0ay4a.hk":!0, "hm":!0, "hn":!0, "com.hn":!0, "edu.hn":!0, "org.hn":!0, "net.hn":!0, "mil.hn":!0, "gob.hn":!0, "hr":!0, "iz.hr":!0, "from.hr":!0, "name.hr":!0, "com.hr":!0, "ht":!0, "com.ht":!0, "shop.ht":!0, "firm.ht":!0, "info.ht":!0, "adult.ht":!0, "net.ht":!0, "pro.ht":!0, "org.ht":!0, "med.ht":!0, "art.ht":!0, "coop.ht":!0, "pol.ht":!0, "asso.ht":!0, "edu.ht":!0, "rel.ht":!0, "gouv.ht":!0, "perso.ht":!0, "hu":!0, "co.hu":!0, "info.hu":!0, "org.hu":!0, "priv.hu":!0, "sport.hu":!0, "tm.hu":!0, "2000.hu":!0, "agrar.hu":!0, "bolt.hu":!0, "casino.hu":!0, "city.hu":!0, "erotica.hu":!0, "erotika.hu":!0, "film.hu":!0, "forum.hu":!0, "games.hu":!0, "hotel.hu":!0, "ingatlan.hu":!0, "jogasz.hu":!0, "konyvelo.hu":!0, "lakas.hu":!0, "media.hu":!0, "news.hu":!0, "reklam.hu":!0, "sex.hu":!0, "shop.hu":!0, "suli.hu":!0, "szex.hu":!0, "tozsde.hu":!0, "utazas.hu":!0, "video.hu":!0, "id":!0, "ac.id":!0, "biz.id":!0, "co.id":!0, "desa.id":!0, "go.id":!0, "mil.id":!0, "my.id":!0, "net.id":!0, "or.id":!0, "sch.id":!0, "web.id":!0, "ie":!0, "gov.ie":!0, "il":!0, "ac.il":!0, "co.il":!0, "gov.il":!0, "idf.il":!0, "k12.il":!0, "muni.il":!0, "net.il":!0, "org.il":!0, "im":!0, "ac.im":!0, "co.im":!0, "com.im":!0, "ltd.co.im":!0, "net.im":!0, "org.im":!0, "plc.co.im":!0, "tt.im":!0, "tv.im":!0, "in":!0, "co.in":!0, "firm.in":!0, "net.in":!0, "org.in":!0, "gen.in":!0, "ind.in":!0, "nic.in":!0, "ac.in":!0, "edu.in":!0, "res.in":!0, "gov.in":!0, "mil.in":!0, "info":!0, "int":!0, "eu.int":!0, "io":!0, "com.io":!0, "iq":!0, "gov.iq":!0, "edu.iq":!0, "mil.iq":!0, "com.iq":!0, "org.iq":!0, "net.iq":!0, "ir":!0, "ac.ir":!0, "co.ir":!0, "gov.ir":!0, "id.ir":!0, "net.ir":!0, "org.ir":!0, "sch.ir":!0, "xn--mgba3a4f16a.ir":!0, "xn--mgba3a4fra.ir":!0, "is":!0, "net.is":!0, "com.is":!0, "edu.is":!0, "gov.is":!0, "org.is":!0, "int.is":!0, "it":!0, "gov.it":!0, "edu.it":!0, "abr.it":!0, "abruzzo.it":!0, "aosta-valley.it":!0, "aostavalley.it":!0, "bas.it":!0, "basilicata.it":!0, "cal.it":!0, "calabria.it":!0, "cam.it":!0, "campania.it":!0, "emilia-romagna.it":!0, "emiliaromagna.it":!0, "emr.it":!0, "friuli-v-giulia.it":!0, "friuli-ve-giulia.it":!0, "friuli-vegiulia.it":!0, "friuli-venezia-giulia.it":!0, "friuli-veneziagiulia.it":!0, "friuli-vgiulia.it":!0, "friuliv-giulia.it":!0, "friulive-giulia.it":!0, "friulivegiulia.it":!0, "friulivenezia-giulia.it":!0, "friuliveneziagiulia.it":!0, "friulivgiulia.it":!0, "fvg.it":!0, "laz.it":!0, "lazio.it":!0, "lig.it":!0, "liguria.it":!0, "lom.it":!0, "lombardia.it":!0, "lombardy.it":!0, "lucania.it":!0, "mar.it":!0, "marche.it":!0, "mol.it":!0, "molise.it":!0, "piedmont.it":!0, "piemonte.it":!0, "pmn.it":!0, "pug.it":!0, "puglia.it":!0, "sar.it":!0, "sardegna.it":!0, "sardinia.it":!0, "sic.it":!0, "sicilia.it":!0, "sicily.it":!0, "taa.it":!0, "tos.it":!0, "toscana.it":!0, "trentino-a-adige.it":!0, "trentino-aadige.it":!0, "trentino-alto-adige.it":!0, "trentino-altoadige.it":!0, "trentino-s-tirol.it":!0, "trentino-stirol.it":!0, "trentino-sud-tirol.it":!0, "trentino-sudtirol.it":!0, "trentino-sued-tirol.it":!0, "trentino-suedtirol.it":!0, "trentinoa-adige.it":!0, "trentinoaadige.it":!0, "trentinoalto-adige.it":!0, "trentinoaltoadige.it":!0, "trentinos-tirol.it":!0, "trentinostirol.it":!0, "trentinosud-tirol.it":!0, "trentinosudtirol.it":!0, "trentinosued-tirol.it":!0, "trentinosuedtirol.it":!0, "tuscany.it":!0, "umb.it":!0, "umbria.it":!0, "val-d-aosta.it":!0, "val-daosta.it":!0, "vald-aosta.it":!0, "valdaosta.it":!0, "valle-aosta.it":!0, "valle-d-aosta.it":!0, "valle-daosta.it":!0, "valleaosta.it":!0, "valled-aosta.it":!0, "valledaosta.it":!0, "vallee-aoste.it":!0, "valleeaoste.it":!0, "vao.it":!0, "vda.it":!0, "ven.it":!0, "veneto.it":!0, "ag.it":!0, "agrigento.it":!0, "al.it":!0, "alessandria.it":!0, "alto-adige.it":!0, "altoadige.it":!0, "an.it":!0, "ancona.it":!0, "andria-barletta-trani.it":!0, "andria-trani-barletta.it":!0, "andriabarlettatrani.it":!0, "andriatranibarletta.it":!0, "ao.it":!0, "aosta.it":!0, "aoste.it":!0, "ap.it":!0, "aq.it":!0, "aquila.it":!0, "ar.it":!0, "arezzo.it":!0, "ascoli-piceno.it":!0, "ascolipiceno.it":!0, "asti.it":!0, "at.it":!0, "av.it":!0, "avellino.it":!0, "ba.it":!0, "balsan.it":!0, "bari.it":!0, "barletta-trani-andria.it":!0, "barlettatraniandria.it":!0, "belluno.it":!0, "benevento.it":!0, "bergamo.it":!0, "bg.it":!0, "bi.it":!0, "biella.it":!0, "bl.it":!0, "bn.it":!0, "bo.it":!0, "bologna.it":!0, "bolzano.it":!0, "bozen.it":!0, "br.it":!0, "brescia.it":!0, "brindisi.it":!0, "bs.it":!0, "bt.it":!0, "bz.it":!0, "ca.it":!0, "cagliari.it":!0, "caltanissetta.it":!0, "campidano-medio.it":!0, "campidanomedio.it":!0, "campobasso.it":!0, "carbonia-iglesias.it":!0, "carboniaiglesias.it":!0, "carrara-massa.it":!0, "carraramassa.it":!0, "caserta.it":!0, "catania.it":!0, "catanzaro.it":!0, "cb.it":!0, "ce.it":!0, "cesena-forli.it":!0, "cesenaforli.it":!0, "ch.it":!0, "chieti.it":!0, "ci.it":!0, "cl.it":!0, "cn.it":!0, "co.it":!0, "como.it":!0, "cosenza.it":!0, "cr.it":!0, "cremona.it":!0, "crotone.it":!0, "cs.it":!0, "ct.it":!0, "cuneo.it":!0, "cz.it":!0, "dell-ogliastra.it":!0, "dellogliastra.it":!0, "en.it":!0, "enna.it":!0, "fc.it":!0, "fe.it":!0, "fermo.it":!0, "ferrara.it":!0, "fg.it":!0, "fi.it":!0, "firenze.it":!0, "florence.it":!0, "fm.it":!0, "foggia.it":!0, "forli-cesena.it":!0, "forlicesena.it":!0, "fr.it":!0, "frosinone.it":!0, "ge.it":!0, "genoa.it":!0, "genova.it":!0, "go.it":!0, "gorizia.it":!0, "gr.it":!0, "grosseto.it":!0, "iglesias-carbonia.it":!0, "iglesiascarbonia.it":!0, "im.it":!0, "imperia.it":!0, "is.it":!0, "isernia.it":!0, "kr.it":!0, "la-spezia.it":!0, "laquila.it":!0, "laspezia.it":!0, "latina.it":!0, "lc.it":!0, "le.it":!0, "lecce.it":!0, "lecco.it":!0, "li.it":!0, "livorno.it":!0, "lo.it":!0, "lodi.it":!0, "lt.it":!0, "lu.it":!0, "lucca.it":!0, "macerata.it":!0, "mantova.it":!0, "massa-carrara.it":!0, "massacarrara.it":!0, "matera.it":!0, "mb.it":!0, "mc.it":!0, "me.it":!0, "medio-campidano.it":!0, "mediocampidano.it":!0, "messina.it":!0, "mi.it":!0, "milan.it":!0, "milano.it":!0, "mn.it":!0, "mo.it":!0, "modena.it":!0, "monza-brianza.it":!0, "monza-e-della-brianza.it":!0, "monza.it":!0, "monzabrianza.it":!0, "monzaebrianza.it":!0, "monzaedellabrianza.it":!0, "ms.it":!0, "mt.it":!0, "na.it":!0, "naples.it":!0, "napoli.it":!0, "no.it":!0, "novara.it":!0, "nu.it":!0, "nuoro.it":!0, "og.it":!0, "ogliastra.it":!0, "olbia-tempio.it":!0, "olbiatempio.it":!0, "or.it":!0, "oristano.it":!0, "ot.it":!0, "pa.it":!0, "padova.it":!0, "padua.it":!0, "palermo.it":!0, "parma.it":!0, "pavia.it":!0, "pc.it":!0, "pd.it":!0, "pe.it":!0, "perugia.it":!0, "pesaro-urbino.it":!0, "pesarourbino.it":!0, "pescara.it":!0, "pg.it":!0, "pi.it":!0, "piacenza.it":!0, "pisa.it":!0, "pistoia.it":!0, "pn.it":!0, "po.it":!0, "pordenone.it":!0, "potenza.it":!0, "pr.it":!0, "prato.it":!0, "pt.it":!0, "pu.it":!0, "pv.it":!0, "pz.it":!0, "ra.it":!0, "ragusa.it":!0, "ravenna.it":!0, "rc.it":!0, "re.it":!0, "reggio-calabria.it":!0, "reggio-emilia.it":!0, "reggiocalabria.it":!0, "reggioemilia.it":!0, "rg.it":!0, "ri.it":!0, "rieti.it":!0, "rimini.it":!0, "rm.it":!0, "rn.it":!0, "ro.it":!0, "roma.it":!0, "rome.it":!0, "rovigo.it":!0, "sa.it":!0, "salerno.it":!0, "sassari.it":!0, "savona.it":!0, "si.it":!0, "siena.it":!0, "siracusa.it":!0, "so.it":!0, "sondrio.it":!0, "sp.it":!0, "sr.it":!0, "ss.it":!0, "suedtirol.it":!0, "sv.it":!0, "ta.it":!0, "taranto.it":!0, "te.it":!0, "tempio-olbia.it":!0, "tempioolbia.it":!0, "teramo.it":!0, "terni.it":!0, "tn.it":!0, "to.it":!0, "torino.it":!0, "tp.it":!0, "tr.it":!0, "trani-andria-barletta.it":!0, "trani-barletta-andria.it":!0, "traniandriabarletta.it":!0, "tranibarlettaandria.it":!0, "trapani.it":!0, "trentino.it":!0, "trento.it":!0, "treviso.it":!0, "trieste.it":!0, "ts.it":!0, "turin.it":!0, "tv.it":!0, "ud.it":!0, "udine.it":!0, "urbino-pesaro.it":!0, "urbinopesaro.it":!0, "va.it":!0, "varese.it":!0, "vb.it":!0, "vc.it":!0, "ve.it":!0, "venezia.it":!0, "venice.it":!0, "verbania.it":!0, "vercelli.it":!0, "verona.it":!0, "vi.it":!0, "vibo-valentia.it":!0, "vibovalentia.it":!0, "vicenza.it":!0, "viterbo.it":!0, "vr.it":!0, "vs.it":!0, "vt.it":!0, "vv.it":!0, "je":!0, "co.je":!0, "net.je":!0, "org.je":!0, "*.jm":!0, "jo":!0, "com.jo":!0, "org.jo":!0, "net.jo":!0, "edu.jo":!0, "sch.jo":!0, "gov.jo":!0, "mil.jo":!0, "name.jo":!0, "jobs":!0, "jp":!0, "ac.jp":!0, "ad.jp":!0, "co.jp":!0, "ed.jp":!0, "go.jp":!0, "gr.jp":!0, "lg.jp":!0, "ne.jp":!0, "or.jp":!0, "aichi.jp":!0, "akita.jp":!0, "aomori.jp":!0, "chiba.jp":!0, "ehime.jp":!0, "fukui.jp":!0, "fukuoka.jp":!0, "fukushima.jp":!0, "gifu.jp":!0, "gunma.jp":!0, "hiroshima.jp":!0, "hokkaido.jp":!0, "hyogo.jp":!0, "ibaraki.jp":!0, "ishikawa.jp":!0, "iwate.jp":!0, "kagawa.jp":!0, "kagoshima.jp":!0, "kanagawa.jp":!0, "kochi.jp":!0, "kumamoto.jp":!0, "kyoto.jp":!0, "mie.jp":!0, "miyagi.jp":!0, "miyazaki.jp":!0, "nagano.jp":!0, "nagasaki.jp":!0, "nara.jp":!0, "niigata.jp":!0, "oita.jp":!0, "okayama.jp":!0, "okinawa.jp":!0, "osaka.jp":!0, "saga.jp":!0, "saitama.jp":!0, "shiga.jp":!0, "shimane.jp":!0, "shizuoka.jp":!0, "tochigi.jp":!0, "tokushima.jp":!0, "tokyo.jp":!0, "tottori.jp":!0, "toyama.jp":!0, "wakayama.jp":!0, "yamagata.jp":!0, "yamaguchi.jp":!0, "yamanashi.jp":!0, "xn--4pvxs.jp":!0, "xn--vgu402c.jp":!0, "xn--c3s14m.jp":!0, "xn--f6qx53a.jp":!0, "xn--8pvr4u.jp":!0, "xn--uist22h.jp":!0, "xn--djrs72d6uy.jp":!0, "xn--mkru45i.jp":!0, "xn--0trq7p7nn.jp":!0, "xn--8ltr62k.jp":!0, "xn--2m4a15e.jp":!0, "xn--efvn9s.jp":!0, "xn--32vp30h.jp":!0, "xn--4it797k.jp":!0, "xn--1lqs71d.jp":!0, "xn--5rtp49c.jp":!0, "xn--5js045d.jp":!0, "xn--ehqz56n.jp":!0, "xn--1lqs03n.jp":!0, "xn--qqqt11m.jp":!0, "xn--kbrq7o.jp":!0, "xn--pssu33l.jp":!0, "xn--ntsq17g.jp":!0, "xn--uisz3g.jp":!0, "xn--6btw5a.jp":!0, "xn--1ctwo.jp":!0, "xn--6orx2r.jp":!0, "xn--rht61e.jp":!0, "xn--rht27z.jp":!0, "xn--djty4k.jp":!0, "xn--nit225k.jp":!0, "xn--rht3d.jp":!0, "xn--klty5x.jp":!0, "xn--kltx9a.jp":!0, "xn--kltp7d.jp":!0, "xn--uuwu58a.jp":!0, "xn--zbx025d.jp":!0, "xn--ntso0iqx3a.jp":!0, "xn--elqq16h.jp":!0, "xn--4it168d.jp":!0, "xn--klt787d.jp":!0, "xn--rny31h.jp":!0, "xn--7t0a264c.jp":!0, "xn--5rtq34k.jp":!0, "xn--k7yn95e.jp":!0, "xn--tor131o.jp":!0, "xn--d5qv7z876c.jp":!0, "*.kawasaki.jp":!0, "*.kitakyushu.jp":!0, "*.kobe.jp":!0, "*.nagoya.jp":!0, "*.sapporo.jp":!0, "*.sendai.jp":!0, "*.yokohama.jp":!0, "city.kawasaki.jp":!1, "city.kitakyushu.jp":!1, "city.kobe.jp":!1, "city.nagoya.jp":!1, "city.sapporo.jp":!1, "city.sendai.jp":!1, "city.yokohama.jp":!1, "aisai.aichi.jp":!0, "ama.aichi.jp":!0, "anjo.aichi.jp":!0, "asuke.aichi.jp":!0, "chiryu.aichi.jp":!0, "chita.aichi.jp":!0, "fuso.aichi.jp":!0, "gamagori.aichi.jp":!0, "handa.aichi.jp":!0, "hazu.aichi.jp":!0, "hekinan.aichi.jp":!0, "higashiura.aichi.jp":!0, "ichinomiya.aichi.jp":!0, "inazawa.aichi.jp":!0, "inuyama.aichi.jp":!0, "isshiki.aichi.jp":!0, "iwakura.aichi.jp":!0, "kanie.aichi.jp":!0, "kariya.aichi.jp":!0, "kasugai.aichi.jp":!0, "kira.aichi.jp":!0, "kiyosu.aichi.jp":!0, "komaki.aichi.jp":!0, "konan.aichi.jp":!0, "kota.aichi.jp":!0, "mihama.aichi.jp":!0, "miyoshi.aichi.jp":!0, "nishio.aichi.jp":!0, "nisshin.aichi.jp":!0, "obu.aichi.jp":!0, "oguchi.aichi.jp":!0, "oharu.aichi.jp":!0, "okazaki.aichi.jp":!0, "owariasahi.aichi.jp":!0, "seto.aichi.jp":!0, "shikatsu.aichi.jp":!0, "shinshiro.aichi.jp":!0, "shitara.aichi.jp":!0, "tahara.aichi.jp":!0, "takahama.aichi.jp":!0, "tobishima.aichi.jp":!0, "toei.aichi.jp":!0, "togo.aichi.jp":!0, "tokai.aichi.jp":!0, "tokoname.aichi.jp":!0, "toyoake.aichi.jp":!0, "toyohashi.aichi.jp":!0, "toyokawa.aichi.jp":!0, "toyone.aichi.jp":!0, "toyota.aichi.jp":!0, "tsushima.aichi.jp":!0, "yatomi.aichi.jp":!0, "akita.akita.jp":!0, "daisen.akita.jp":!0, "fujisato.akita.jp":!0, "gojome.akita.jp":!0, "hachirogata.akita.jp":!0, "happou.akita.jp":!0, "higashinaruse.akita.jp":!0, "honjo.akita.jp":!0, "honjyo.akita.jp":!0, "ikawa.akita.jp":!0, "kamikoani.akita.jp":!0, "kamioka.akita.jp":!0, "katagami.akita.jp":!0, "kazuno.akita.jp":!0, "kitaakita.akita.jp":!0, "kosaka.akita.jp":!0, "kyowa.akita.jp":!0, "misato.akita.jp":!0, "mitane.akita.jp":!0, "moriyoshi.akita.jp":!0, "nikaho.akita.jp":!0, "noshiro.akita.jp":!0, "odate.akita.jp":!0, "oga.akita.jp":!0, "ogata.akita.jp":!0, "semboku.akita.jp":!0, "yokote.akita.jp":!0, "yurihonjo.akita.jp":!0, "aomori.aomori.jp":!0, "gonohe.aomori.jp":!0, "hachinohe.aomori.jp":!0, "hashikami.aomori.jp":!0, "hiranai.aomori.jp":!0, "hirosaki.aomori.jp":!0, "itayanagi.aomori.jp":!0, "kuroishi.aomori.jp":!0, "misawa.aomori.jp":!0, "mutsu.aomori.jp":!0, "nakadomari.aomori.jp":!0, "noheji.aomori.jp":!0, "oirase.aomori.jp":!0, "owani.aomori.jp":!0, "rokunohe.aomori.jp":!0, "sannohe.aomori.jp":!0, "shichinohe.aomori.jp":!0, "shingo.aomori.jp":!0, "takko.aomori.jp":!0, "towada.aomori.jp":!0, "tsugaru.aomori.jp":!0, "tsuruta.aomori.jp":!0, "abiko.chiba.jp":!0, "asahi.chiba.jp":!0, "chonan.chiba.jp":!0, "chosei.chiba.jp":!0, "choshi.chiba.jp":!0, "chuo.chiba.jp":!0, "funabashi.chiba.jp":!0, "futtsu.chiba.jp":!0, "hanamigawa.chiba.jp":!0, "ichihara.chiba.jp":!0, "ichikawa.chiba.jp":!0, "ichinomiya.chiba.jp":!0, "inzai.chiba.jp":!0, "isumi.chiba.jp":!0, "kamagaya.chiba.jp":!0, "kamogawa.chiba.jp":!0, "kashiwa.chiba.jp":!0, "katori.chiba.jp":!0, "katsuura.chiba.jp":!0, "kimitsu.chiba.jp":!0, "kisarazu.chiba.jp":!0, "kozaki.chiba.jp":!0, "kujukuri.chiba.jp":!0, "kyonan.chiba.jp":!0, "matsudo.chiba.jp":!0, "midori.chiba.jp":!0, "mihama.chiba.jp":!0, "minamiboso.chiba.jp":!0, "mobara.chiba.jp":!0, "mutsuzawa.chiba.jp":!0, "nagara.chiba.jp":!0, "nagareyama.chiba.jp":!0, "narashino.chiba.jp":!0, "narita.chiba.jp":!0, "noda.chiba.jp":!0, "oamishirasato.chiba.jp":!0, "omigawa.chiba.jp":!0, "onjuku.chiba.jp":!0, "otaki.chiba.jp":!0, "sakae.chiba.jp":!0, "sakura.chiba.jp":!0, "shimofusa.chiba.jp":!0, "shirako.chiba.jp":!0, "shiroi.chiba.jp":!0, "shisui.chiba.jp":!0, "sodegaura.chiba.jp":!0, "sosa.chiba.jp":!0, "tako.chiba.jp":!0, "tateyama.chiba.jp":!0, "togane.chiba.jp":!0, "tohnosho.chiba.jp":!0, "tomisato.chiba.jp":!0, "urayasu.chiba.jp":!0, "yachimata.chiba.jp":!0, "yachiyo.chiba.jp":!0, "yokaichiba.chiba.jp":!0, "yokoshibahikari.chiba.jp":!0, "yotsukaido.chiba.jp":!0, "ainan.ehime.jp":!0, "honai.ehime.jp":!0, "ikata.ehime.jp":!0, "imabari.ehime.jp":!0, "iyo.ehime.jp":!0, "kamijima.ehime.jp":!0, "kihoku.ehime.jp":!0, "kumakogen.ehime.jp":!0, "masaki.ehime.jp":!0, "matsuno.ehime.jp":!0, "matsuyama.ehime.jp":!0, "namikata.ehime.jp":!0, "niihama.ehime.jp":!0, "ozu.ehime.jp":!0, "saijo.ehime.jp":!0, "seiyo.ehime.jp":!0, "shikokuchuo.ehime.jp":!0, "tobe.ehime.jp":!0, "toon.ehime.jp":!0, "uchiko.ehime.jp":!0, "uwajima.ehime.jp":!0, "yawatahama.ehime.jp":!0, "echizen.fukui.jp":!0, "eiheiji.fukui.jp":!0, "fukui.fukui.jp":!0, "ikeda.fukui.jp":!0, "katsuyama.fukui.jp":!0, "mihama.fukui.jp":!0, "minamiechizen.fukui.jp":!0, "obama.fukui.jp":!0, "ohi.fukui.jp":!0, "ono.fukui.jp":!0, "sabae.fukui.jp":!0, "sakai.fukui.jp":!0, "takahama.fukui.jp":!0, "tsuruga.fukui.jp":!0, "wakasa.fukui.jp":!0, "ashiya.fukuoka.jp":!0, "buzen.fukuoka.jp":!0, "chikugo.fukuoka.jp":!0, "chikuho.fukuoka.jp":!0, "chikujo.fukuoka.jp":!0, "chikushino.fukuoka.jp":!0, "chikuzen.fukuoka.jp":!0, "chuo.fukuoka.jp":!0, "dazaifu.fukuoka.jp":!0, "fukuchi.fukuoka.jp":!0, "hakata.fukuoka.jp":!0, "higashi.fukuoka.jp":!0, "hirokawa.fukuoka.jp":!0, "hisayama.fukuoka.jp":!0, "iizuka.fukuoka.jp":!0, "inatsuki.fukuoka.jp":!0, "kaho.fukuoka.jp":!0, "kasuga.fukuoka.jp":!0, "kasuya.fukuoka.jp":!0, "kawara.fukuoka.jp":!0, "keisen.fukuoka.jp":!0, "koga.fukuoka.jp":!0, "kurate.fukuoka.jp":!0, "kurogi.fukuoka.jp":!0, "kurume.fukuoka.jp":!0, "minami.fukuoka.jp":!0, "miyako.fukuoka.jp":!0, "miyama.fukuoka.jp":!0, "miyawaka.fukuoka.jp":!0, "mizumaki.fukuoka.jp":!0, "munakata.fukuoka.jp":!0, "nakagawa.fukuoka.jp":!0, "nakama.fukuoka.jp":!0, "nishi.fukuoka.jp":!0, "nogata.fukuoka.jp":!0, "ogori.fukuoka.jp":!0, "okagaki.fukuoka.jp":!0, "okawa.fukuoka.jp":!0, "oki.fukuoka.jp":!0, "omuta.fukuoka.jp":!0, "onga.fukuoka.jp":!0, "onojo.fukuoka.jp":!0, "oto.fukuoka.jp":!0, "saigawa.fukuoka.jp":!0, "sasaguri.fukuoka.jp":!0, "shingu.fukuoka.jp":!0, "shinyoshitomi.fukuoka.jp":!0, "shonai.fukuoka.jp":!0, "soeda.fukuoka.jp":!0, "sue.fukuoka.jp":!0, "tachiarai.fukuoka.jp":!0, "tagawa.fukuoka.jp":!0, "takata.fukuoka.jp":!0, "toho.fukuoka.jp":!0, "toyotsu.fukuoka.jp":!0, "tsuiki.fukuoka.jp":!0, "ukiha.fukuoka.jp":!0, "umi.fukuoka.jp":!0, "usui.fukuoka.jp":!0, "yamada.fukuoka.jp":!0, "yame.fukuoka.jp":!0, "yanagawa.fukuoka.jp":!0, "yukuhashi.fukuoka.jp":!0, "aizubange.fukushima.jp":!0, "aizumisato.fukushima.jp":!0, "aizuwakamatsu.fukushima.jp":!0, "asakawa.fukushima.jp":!0, "bandai.fukushima.jp":!0, "date.fukushima.jp":!0, "fukushima.fukushima.jp":!0, "furudono.fukushima.jp":!0, "futaba.fukushima.jp":!0, "hanawa.fukushima.jp":!0, "higashi.fukushima.jp":!0, "hirata.fukushima.jp":!0, "hirono.fukushima.jp":!0, "iitate.fukushima.jp":!0, "inawashiro.fukushima.jp":!0, "ishikawa.fukushima.jp":!0, "iwaki.fukushima.jp":!0, "izumizaki.fukushima.jp":!0, "kagamiishi.fukushima.jp":!0, "kaneyama.fukushima.jp":!0, "kawamata.fukushima.jp":!0, "kitakata.fukushima.jp":!0, "kitashiobara.fukushima.jp":!0, "koori.fukushima.jp":!0, "koriyama.fukushima.jp":!0, "kunimi.fukushima.jp":!0, "miharu.fukushima.jp":!0, "mishima.fukushima.jp":!0, "namie.fukushima.jp":!0, "nango.fukushima.jp":!0, "nishiaizu.fukushima.jp":!0, "nishigo.fukushima.jp":!0, "okuma.fukushima.jp":!0, "omotego.fukushima.jp":!0, "ono.fukushima.jp":!0, "otama.fukushima.jp":!0, "samegawa.fukushima.jp":!0, "shimogo.fukushima.jp":!0, "shirakawa.fukushima.jp":!0, "showa.fukushima.jp":!0, "soma.fukushima.jp":!0, "sukagawa.fukushima.jp":!0, "taishin.fukushima.jp":!0, "tamakawa.fukushima.jp":!0, "tanagura.fukushima.jp":!0, "tenei.fukushima.jp":!0, "yabuki.fukushima.jp":!0, "yamato.fukushima.jp":!0, "yamatsuri.fukushima.jp":!0, "yanaizu.fukushima.jp":!0, "yugawa.fukushima.jp":!0, "anpachi.gifu.jp":!0, "ena.gifu.jp":!0, "gifu.gifu.jp":!0, "ginan.gifu.jp":!0, "godo.gifu.jp":!0, "gujo.gifu.jp":!0, "hashima.gifu.jp":!0, "hichiso.gifu.jp":!0, "hida.gifu.jp":!0, "higashishirakawa.gifu.jp":!0, "ibigawa.gifu.jp":!0, "ikeda.gifu.jp":!0, "kakamigahara.gifu.jp":!0, "kani.gifu.jp":!0, "kasahara.gifu.jp":!0, "kasamatsu.gifu.jp":!0, "kawaue.gifu.jp":!0, "kitagata.gifu.jp":!0, "mino.gifu.jp":!0, "minokamo.gifu.jp":!0, "mitake.gifu.jp":!0, "mizunami.gifu.jp":!0, "motosu.gifu.jp":!0, "nakatsugawa.gifu.jp":!0, "ogaki.gifu.jp":!0, "sakahogi.gifu.jp":!0, "seki.gifu.jp":!0, "sekigahara.gifu.jp":!0, "shirakawa.gifu.jp":!0, "tajimi.gifu.jp":!0, "takayama.gifu.jp":!0, "tarui.gifu.jp":!0, "toki.gifu.jp":!0, "tomika.gifu.jp":!0, "wanouchi.gifu.jp":!0, "yamagata.gifu.jp":!0, "yaotsu.gifu.jp":!0, "yoro.gifu.jp":!0, "annaka.gunma.jp":!0, "chiyoda.gunma.jp":!0, "fujioka.gunma.jp":!0, "higashiagatsuma.gunma.jp":!0, "isesaki.gunma.jp":!0, "itakura.gunma.jp":!0, "kanna.gunma.jp":!0, "kanra.gunma.jp":!0, "katashina.gunma.jp":!0, "kawaba.gunma.jp":!0, "kiryu.gunma.jp":!0, "kusatsu.gunma.jp":!0, "maebashi.gunma.jp":!0, "meiwa.gunma.jp":!0, "midori.gunma.jp":!0, "minakami.gunma.jp":!0, "naganohara.gunma.jp":!0, "nakanojo.gunma.jp":!0, "nanmoku.gunma.jp":!0, "numata.gunma.jp":!0, "oizumi.gunma.jp":!0, "ora.gunma.jp":!0, "ota.gunma.jp":!0, "shibukawa.gunma.jp":!0, "shimonita.gunma.jp":!0, "shinto.gunma.jp":!0, "showa.gunma.jp":!0, "takasaki.gunma.jp":!0, "takayama.gunma.jp":!0, "tamamura.gunma.jp":!0, "tatebayashi.gunma.jp":!0, "tomioka.gunma.jp":!0, "tsukiyono.gunma.jp":!0, "tsumagoi.gunma.jp":!0, "ueno.gunma.jp":!0, "yoshioka.gunma.jp":!0, "asaminami.hiroshima.jp":!0, "daiwa.hiroshima.jp":!0, "etajima.hiroshima.jp":!0, "fuchu.hiroshima.jp":!0, "fukuyama.hiroshima.jp":!0, "hatsukaichi.hiroshima.jp":!0, "higashihiroshima.hiroshima.jp":!0, "hongo.hiroshima.jp":!0, "jinsekikogen.hiroshima.jp":!0, "kaita.hiroshima.jp":!0, "kui.hiroshima.jp":!0, "kumano.hiroshima.jp":!0, "kure.hiroshima.jp":!0, "mihara.hiroshima.jp":!0, "miyoshi.hiroshima.jp":!0, "naka.hiroshima.jp":!0, "onomichi.hiroshima.jp":!0, "osakikamijima.hiroshima.jp":!0, "otake.hiroshima.jp":!0, "saka.hiroshima.jp":!0, "sera.hiroshima.jp":!0, "seranishi.hiroshima.jp":!0, "shinichi.hiroshima.jp":!0, "shobara.hiroshima.jp":!0, "takehara.hiroshima.jp":!0, "abashiri.hokkaido.jp":!0, "abira.hokkaido.jp":!0, "aibetsu.hokkaido.jp":!0, "akabira.hokkaido.jp":!0, "akkeshi.hokkaido.jp":!0, "asahikawa.hokkaido.jp":!0, "ashibetsu.hokkaido.jp":!0, "ashoro.hokkaido.jp":!0, "assabu.hokkaido.jp":!0, "atsuma.hokkaido.jp":!0, "bibai.hokkaido.jp":!0, "biei.hokkaido.jp":!0, "bifuka.hokkaido.jp":!0, "bihoro.hokkaido.jp":!0, "biratori.hokkaido.jp":!0, "chippubetsu.hokkaido.jp":!0, "chitose.hokkaido.jp":!0, "date.hokkaido.jp":!0, "ebetsu.hokkaido.jp":!0, "embetsu.hokkaido.jp":!0, "eniwa.hokkaido.jp":!0, "erimo.hokkaido.jp":!0, "esan.hokkaido.jp":!0, "esashi.hokkaido.jp":!0, "fukagawa.hokkaido.jp":!0, "fukushima.hokkaido.jp":!0, "furano.hokkaido.jp":!0, "furubira.hokkaido.jp":!0, "haboro.hokkaido.jp":!0, "hakodate.hokkaido.jp":!0, "hamatonbetsu.hokkaido.jp":!0, "hidaka.hokkaido.jp":!0, "higashikagura.hokkaido.jp":!0, "higashikawa.hokkaido.jp":!0, "hiroo.hokkaido.jp":!0, "hokuryu.hokkaido.jp":!0, "hokuto.hokkaido.jp":!0, "honbetsu.hokkaido.jp":!0, "horokanai.hokkaido.jp":!0, "horonobe.hokkaido.jp":!0, "ikeda.hokkaido.jp":!0, "imakane.hokkaido.jp":!0, "ishikari.hokkaido.jp":!0, "iwamizawa.hokkaido.jp":!0, "iwanai.hokkaido.jp":!0, "kamifurano.hokkaido.jp":!0, "kamikawa.hokkaido.jp":!0, "kamishihoro.hokkaido.jp":!0, "kamisunagawa.hokkaido.jp":!0, "kamoenai.hokkaido.jp":!0, "kayabe.hokkaido.jp":!0, "kembuchi.hokkaido.jp":!0, "kikonai.hokkaido.jp":!0, "kimobetsu.hokkaido.jp":!0, "kitahiroshima.hokkaido.jp":!0, "kitami.hokkaido.jp":!0, "kiyosato.hokkaido.jp":!0, "koshimizu.hokkaido.jp":!0, "kunneppu.hokkaido.jp":!0, "kuriyama.hokkaido.jp":!0, "kuromatsunai.hokkaido.jp":!0, "kushiro.hokkaido.jp":!0, "kutchan.hokkaido.jp":!0, "kyowa.hokkaido.jp":!0, "mashike.hokkaido.jp":!0, "matsumae.hokkaido.jp":!0, "mikasa.hokkaido.jp":!0, "minamifurano.hokkaido.jp":!0, "mombetsu.hokkaido.jp":!0, "moseushi.hokkaido.jp":!0, "mukawa.hokkaido.jp":!0, "muroran.hokkaido.jp":!0, "naie.hokkaido.jp":!0, "nakagawa.hokkaido.jp":!0, "nakasatsunai.hokkaido.jp":!0, "nakatombetsu.hokkaido.jp":!0, "nanae.hokkaido.jp":!0, "nanporo.hokkaido.jp":!0, "nayoro.hokkaido.jp":!0, "nemuro.hokkaido.jp":!0, "niikappu.hokkaido.jp":!0, "niki.hokkaido.jp":!0, "nishiokoppe.hokkaido.jp":!0, "noboribetsu.hokkaido.jp":!0, "numata.hokkaido.jp":!0, "obihiro.hokkaido.jp":!0, "obira.hokkaido.jp":!0, "oketo.hokkaido.jp":!0, "okoppe.hokkaido.jp":!0, "otaru.hokkaido.jp":!0, "otobe.hokkaido.jp":!0, "otofuke.hokkaido.jp":!0, "otoineppu.hokkaido.jp":!0, "oumu.hokkaido.jp":!0, "ozora.hokkaido.jp":!0, "pippu.hokkaido.jp":!0, "rankoshi.hokkaido.jp":!0, "rebun.hokkaido.jp":!0, "rikubetsu.hokkaido.jp":!0, "rishiri.hokkaido.jp":!0, "rishirifuji.hokkaido.jp":!0, "saroma.hokkaido.jp":!0, "sarufutsu.hokkaido.jp":!0, "shakotan.hokkaido.jp":!0, "shari.hokkaido.jp":!0, "shibecha.hokkaido.jp":!0, "shibetsu.hokkaido.jp":!0, "shikabe.hokkaido.jp":!0, "shikaoi.hokkaido.jp":!0, "shimamaki.hokkaido.jp":!0, "shimizu.hokkaido.jp":!0, "shimokawa.hokkaido.jp":!0, "shinshinotsu.hokkaido.jp":!0, "shintoku.hokkaido.jp":!0, "shiranuka.hokkaido.jp":!0, "shiraoi.hokkaido.jp":!0, "shiriuchi.hokkaido.jp":!0, "sobetsu.hokkaido.jp":!0, "sunagawa.hokkaido.jp":!0, "taiki.hokkaido.jp":!0, "takasu.hokkaido.jp":!0, "takikawa.hokkaido.jp":!0, "takinoue.hokkaido.jp":!0, "teshikaga.hokkaido.jp":!0, "tobetsu.hokkaido.jp":!0, "tohma.hokkaido.jp":!0, "tomakomai.hokkaido.jp":!0, "tomari.hokkaido.jp":!0, "toya.hokkaido.jp":!0, "toyako.hokkaido.jp":!0, "toyotomi.hokkaido.jp":!0, "toyoura.hokkaido.jp":!0, "tsubetsu.hokkaido.jp":!0, "tsukigata.hokkaido.jp":!0, "urakawa.hokkaido.jp":!0, "urausu.hokkaido.jp":!0, "uryu.hokkaido.jp":!0, "utashinai.hokkaido.jp":!0, "wakkanai.hokkaido.jp":!0, "wassamu.hokkaido.jp":!0, "yakumo.hokkaido.jp":!0, "yoichi.hokkaido.jp":!0, "aioi.hyogo.jp":!0, "akashi.hyogo.jp":!0, "ako.hyogo.jp":!0, "amagasaki.hyogo.jp":!0, "aogaki.hyogo.jp":!0, "asago.hyogo.jp":!0, "ashiya.hyogo.jp":!0, "awaji.hyogo.jp":!0, "fukusaki.hyogo.jp":!0, "goshiki.hyogo.jp":!0, "harima.hyogo.jp":!0, "himeji.hyogo.jp":!0, "ichikawa.hyogo.jp":!0, "inagawa.hyogo.jp":!0, "itami.hyogo.jp":!0, "kakogawa.hyogo.jp":!0, "kamigori.hyogo.jp":!0, "kamikawa.hyogo.jp":!0, "kasai.hyogo.jp":!0, "kasuga.hyogo.jp":!0, "kawanishi.hyogo.jp":!0, "miki.hyogo.jp":!0, "minamiawaji.hyogo.jp":!0, "nishinomiya.hyogo.jp":!0, "nishiwaki.hyogo.jp":!0, "ono.hyogo.jp":!0, "sanda.hyogo.jp":!0, "sannan.hyogo.jp":!0, "sasayama.hyogo.jp":!0, "sayo.hyogo.jp":!0, "shingu.hyogo.jp":!0, "shinonsen.hyogo.jp":!0, "shiso.hyogo.jp":!0, "sumoto.hyogo.jp":!0, "taishi.hyogo.jp":!0, "taka.hyogo.jp":!0, "takarazuka.hyogo.jp":!0, "takasago.hyogo.jp":!0, "takino.hyogo.jp":!0, "tamba.hyogo.jp":!0, "tatsuno.hyogo.jp":!0, "toyooka.hyogo.jp":!0, "yabu.hyogo.jp":!0, "yashiro.hyogo.jp":!0, "yoka.hyogo.jp":!0, "yokawa.hyogo.jp":!0, "ami.ibaraki.jp":!0, "asahi.ibaraki.jp":!0, "bando.ibaraki.jp":!0, "chikusei.ibaraki.jp":!0, "daigo.ibaraki.jp":!0, "fujishiro.ibaraki.jp":!0, "hitachi.ibaraki.jp":!0, "hitachinaka.ibaraki.jp":!0, "hitachiomiya.ibaraki.jp":!0, "hitachiota.ibaraki.jp":!0, "ibaraki.ibaraki.jp":!0, "ina.ibaraki.jp":!0, "inashiki.ibaraki.jp":!0, "itako.ibaraki.jp":!0, "iwama.ibaraki.jp":!0, "joso.ibaraki.jp":!0, "kamisu.ibaraki.jp":!0, "kasama.ibaraki.jp":!0, "kashima.ibaraki.jp":!0, "kasumigaura.ibaraki.jp":!0, "koga.ibaraki.jp":!0, "miho.ibaraki.jp":!0, "mito.ibaraki.jp":!0, "moriya.ibaraki.jp":!0, "naka.ibaraki.jp":!0, "namegata.ibaraki.jp":!0, "oarai.ibaraki.jp":!0, "ogawa.ibaraki.jp":!0, "omitama.ibaraki.jp":!0, "ryugasaki.ibaraki.jp":!0, "sakai.ibaraki.jp":!0, "sakuragawa.ibaraki.jp":!0, "shimodate.ibaraki.jp":!0, "shimotsuma.ibaraki.jp":!0, "shirosato.ibaraki.jp":!0, "sowa.ibaraki.jp":!0, "suifu.ibaraki.jp":!0, "takahagi.ibaraki.jp":!0, "tamatsukuri.ibaraki.jp":!0, "tokai.ibaraki.jp":!0, "tomobe.ibaraki.jp":!0, "tone.ibaraki.jp":!0, "toride.ibaraki.jp":!0, "tsuchiura.ibaraki.jp":!0, "tsukuba.ibaraki.jp":!0, "uchihara.ibaraki.jp":!0, "ushiku.ibaraki.jp":!0, "yachiyo.ibaraki.jp":!0, "yamagata.ibaraki.jp":!0, "yawara.ibaraki.jp":!0, "yuki.ibaraki.jp":!0, "anamizu.ishikawa.jp":!0, "hakui.ishikawa.jp":!0, "hakusan.ishikawa.jp":!0, "kaga.ishikawa.jp":!0, "kahoku.ishikawa.jp":!0, "kanazawa.ishikawa.jp":!0, "kawakita.ishikawa.jp":!0, "komatsu.ishikawa.jp":!0, "nakanoto.ishikawa.jp":!0, "nanao.ishikawa.jp":!0, "nomi.ishikawa.jp":!0, "nonoichi.ishikawa.jp":!0, "noto.ishikawa.jp":!0, "shika.ishikawa.jp":!0, "suzu.ishikawa.jp":!0, "tsubata.ishikawa.jp":!0, "tsurugi.ishikawa.jp":!0, "uchinada.ishikawa.jp":!0, "wajima.ishikawa.jp":!0, "fudai.iwate.jp":!0, "fujisawa.iwate.jp":!0, "hanamaki.iwate.jp":!0, "hiraizumi.iwate.jp":!0, "hirono.iwate.jp":!0, "ichinohe.iwate.jp":!0, "ichinoseki.iwate.jp":!0, "iwaizumi.iwate.jp":!0, "iwate.iwate.jp":!0, "joboji.iwate.jp":!0, "kamaishi.iwate.jp":!0, "kanegasaki.iwate.jp":!0, "karumai.iwate.jp":!0, "kawai.iwate.jp":!0, "kitakami.iwate.jp":!0, "kuji.iwate.jp":!0, "kunohe.iwate.jp":!0, "kuzumaki.iwate.jp":!0, "miyako.iwate.jp":!0, "mizusawa.iwate.jp":!0, "morioka.iwate.jp":!0, "ninohe.iwate.jp":!0, "noda.iwate.jp":!0, "ofunato.iwate.jp":!0, "oshu.iwate.jp":!0, "otsuchi.iwate.jp":!0, "rikuzentakata.iwate.jp":!0, "shiwa.iwate.jp":!0, "shizukuishi.iwate.jp":!0, "sumita.iwate.jp":!0, "tanohata.iwate.jp":!0, "tono.iwate.jp":!0, "yahaba.iwate.jp":!0, "yamada.iwate.jp":!0, "ayagawa.kagawa.jp":!0, "higashikagawa.kagawa.jp":!0, "kanonji.kagawa.jp":!0, "kotohira.kagawa.jp":!0, "manno.kagawa.jp":!0, "marugame.kagawa.jp":!0, "mitoyo.kagawa.jp":!0, "naoshima.kagawa.jp":!0, "sanuki.kagawa.jp":!0, "tadotsu.kagawa.jp":!0, "takamatsu.kagawa.jp":!0, "tonosho.kagawa.jp":!0, "uchinomi.kagawa.jp":!0, "utazu.kagawa.jp":!0, "zentsuji.kagawa.jp":!0, "akune.kagoshima.jp":!0, "amami.kagoshima.jp":!0, "hioki.kagoshima.jp":!0, "isa.kagoshima.jp":!0, "isen.kagoshima.jp":!0, "izumi.kagoshima.jp":!0, "kagoshima.kagoshima.jp":!0, "kanoya.kagoshima.jp":!0, "kawanabe.kagoshima.jp":!0, "kinko.kagoshima.jp":!0, "kouyama.kagoshima.jp":!0, "makurazaki.kagoshima.jp":!0, "matsumoto.kagoshima.jp":!0, "minamitane.kagoshima.jp":!0, "nakatane.kagoshima.jp":!0, "nishinoomote.kagoshima.jp":!0, "satsumasendai.kagoshima.jp":!0, "soo.kagoshima.jp":!0, "tarumizu.kagoshima.jp":!0, "yusui.kagoshima.jp":!0, "aikawa.kanagawa.jp":!0, "atsugi.kanagawa.jp":!0, "ayase.kanagawa.jp":!0, "chigasaki.kanagawa.jp":!0, "ebina.kanagawa.jp":!0, "fujisawa.kanagawa.jp":!0, "hadano.kanagawa.jp":!0, "hakone.kanagawa.jp":!0, "hiratsuka.kanagawa.jp":!0, "isehara.kanagawa.jp":!0, "kaisei.kanagawa.jp":!0, "kamakura.kanagawa.jp":!0, "kiyokawa.kanagawa.jp":!0, "matsuda.kanagawa.jp":!0, "minamiashigara.kanagawa.jp":!0, "miura.kanagawa.jp":!0, "nakai.kanagawa.jp":!0, "ninomiya.kanagawa.jp":!0, "odawara.kanagawa.jp":!0, "oi.kanagawa.jp":!0, "oiso.kanagawa.jp":!0, "sagamihara.kanagawa.jp":!0, "samukawa.kanagawa.jp":!0, "tsukui.kanagawa.jp":!0, "yamakita.kanagawa.jp":!0, "yamato.kanagawa.jp":!0, "yokosuka.kanagawa.jp":!0, "yugawara.kanagawa.jp":!0, "zama.kanagawa.jp":!0, "zushi.kanagawa.jp":!0, "aki.kochi.jp":!0, "geisei.kochi.jp":!0, "hidaka.kochi.jp":!0, "higashitsuno.kochi.jp":!0, "ino.kochi.jp":!0, "kagami.kochi.jp":!0, "kami.kochi.jp":!0, "kitagawa.kochi.jp":!0, "kochi.kochi.jp":!0, "mihara.kochi.jp":!0, "motoyama.kochi.jp":!0, "muroto.kochi.jp":!0, "nahari.kochi.jp":!0, "nakamura.kochi.jp":!0, "nankoku.kochi.jp":!0, "nishitosa.kochi.jp":!0, "niyodogawa.kochi.jp":!0, "ochi.kochi.jp":!0, "okawa.kochi.jp":!0, "otoyo.kochi.jp":!0, "otsuki.kochi.jp":!0, "sakawa.kochi.jp":!0, "sukumo.kochi.jp":!0, "susaki.kochi.jp":!0, "tosa.kochi.jp":!0, "tosashimizu.kochi.jp":!0, "toyo.kochi.jp":!0, "tsuno.kochi.jp":!0, "umaji.kochi.jp":!0, "yasuda.kochi.jp":!0, "yusuhara.kochi.jp":!0, "amakusa.kumamoto.jp":!0, "arao.kumamoto.jp":!0, "aso.kumamoto.jp":!0, "choyo.kumamoto.jp":!0, "gyokuto.kumamoto.jp":!0, "kamiamakusa.kumamoto.jp":!0, "kikuchi.kumamoto.jp":!0, "kumamoto.kumamoto.jp":!0, "mashiki.kumamoto.jp":!0, "mifune.kumamoto.jp":!0, "minamata.kumamoto.jp":!0, "minamioguni.kumamoto.jp":!0, "nagasu.kumamoto.jp":!0, "nishihara.kumamoto.jp":!0, "oguni.kumamoto.jp":!0, "ozu.kumamoto.jp":!0, "sumoto.kumamoto.jp":!0, "takamori.kumamoto.jp":!0, "uki.kumamoto.jp":!0, "uto.kumamoto.jp":!0, "yamaga.kumamoto.jp":!0, "yamato.kumamoto.jp":!0, "yatsushiro.kumamoto.jp":!0, "ayabe.kyoto.jp":!0, "fukuchiyama.kyoto.jp":!0, "higashiyama.kyoto.jp":!0, "ide.kyoto.jp":!0, "ine.kyoto.jp":!0, "joyo.kyoto.jp":!0, "kameoka.kyoto.jp":!0, "kamo.kyoto.jp":!0, "kita.kyoto.jp":!0, "kizu.kyoto.jp":!0, "kumiyama.kyoto.jp":!0, "kyotamba.kyoto.jp":!0, "kyotanabe.kyoto.jp":!0, "kyotango.kyoto.jp":!0, "maizuru.kyoto.jp":!0, "minami.kyoto.jp":!0, "minamiyamashiro.kyoto.jp":!0, "miyazu.kyoto.jp":!0, "muko.kyoto.jp":!0, "nagaokakyo.kyoto.jp":!0, "nakagyo.kyoto.jp":!0, "nantan.kyoto.jp":!0, "oyamazaki.kyoto.jp":!0, "sakyo.kyoto.jp":!0, "seika.kyoto.jp":!0, "tanabe.kyoto.jp":!0, "uji.kyoto.jp":!0, "ujitawara.kyoto.jp":!0, "wazuka.kyoto.jp":!0, "yamashina.kyoto.jp":!0, "yawata.kyoto.jp":!0, "asahi.mie.jp":!0, "inabe.mie.jp":!0, "ise.mie.jp":!0, "kameyama.mie.jp":!0, "kawagoe.mie.jp":!0, "kiho.mie.jp":!0, "kisosaki.mie.jp":!0, "kiwa.mie.jp":!0, "komono.mie.jp":!0, "kumano.mie.jp":!0, "kuwana.mie.jp":!0, "matsusaka.mie.jp":!0, "meiwa.mie.jp":!0, "mihama.mie.jp":!0, "minamiise.mie.jp":!0, "misugi.mie.jp":!0, "miyama.mie.jp":!0, "nabari.mie.jp":!0, "shima.mie.jp":!0, "suzuka.mie.jp":!0, "tado.mie.jp":!0, "taiki.mie.jp":!0, "taki.mie.jp":!0, "tamaki.mie.jp":!0, "toba.mie.jp":!0, "tsu.mie.jp":!0, "udono.mie.jp":!0, "ureshino.mie.jp":!0, "watarai.mie.jp":!0, "yokkaichi.mie.jp":!0, "furukawa.miyagi.jp":!0, "higashimatsushima.miyagi.jp":!0, "ishinomaki.miyagi.jp":!0, "iwanuma.miyagi.jp":!0, "kakuda.miyagi.jp":!0, "kami.miyagi.jp":!0, "kawasaki.miyagi.jp":!0, "marumori.miyagi.jp":!0, "matsushima.miyagi.jp":!0, "minamisanriku.miyagi.jp":!0, "misato.miyagi.jp":!0, "murata.miyagi.jp":!0, "natori.miyagi.jp":!0, "ogawara.miyagi.jp":!0, "ohira.miyagi.jp":!0, "onagawa.miyagi.jp":!0, "osaki.miyagi.jp":!0, "rifu.miyagi.jp":!0, "semine.miyagi.jp":!0, "shibata.miyagi.jp":!0, "shichikashuku.miyagi.jp":!0, "shikama.miyagi.jp":!0, "shiogama.miyagi.jp":!0, "shiroishi.miyagi.jp":!0, "tagajo.miyagi.jp":!0, "taiwa.miyagi.jp":!0, "tome.miyagi.jp":!0, "tomiya.miyagi.jp":!0, "wakuya.miyagi.jp":!0, "watari.miyagi.jp":!0, "yamamoto.miyagi.jp":!0, "zao.miyagi.jp":!0, "aya.miyazaki.jp":!0, "ebino.miyazaki.jp":!0, "gokase.miyazaki.jp":!0, "hyuga.miyazaki.jp":!0, "kadogawa.miyazaki.jp":!0, "kawaminami.miyazaki.jp":!0, "kijo.miyazaki.jp":!0, "kitagawa.miyazaki.jp":!0, "kitakata.miyazaki.jp":!0, "kitaura.miyazaki.jp":!0, "kobayashi.miyazaki.jp":!0, "kunitomi.miyazaki.jp":!0, "kushima.miyazaki.jp":!0, "mimata.miyazaki.jp":!0, "miyakonojo.miyazaki.jp":!0, "miyazaki.miyazaki.jp":!0, "morotsuka.miyazaki.jp":!0, "nichinan.miyazaki.jp":!0, "nishimera.miyazaki.jp":!0, "nobeoka.miyazaki.jp":!0, "saito.miyazaki.jp":!0, "shiiba.miyazaki.jp":!0, "shintomi.miyazaki.jp":!0, "takaharu.miyazaki.jp":!0, "takanabe.miyazaki.jp":!0, "takazaki.miyazaki.jp":!0, "tsuno.miyazaki.jp":!0, "achi.nagano.jp":!0, "agematsu.nagano.jp":!0, "anan.nagano.jp":!0, "aoki.nagano.jp":!0, "asahi.nagano.jp":!0, "azumino.nagano.jp":!0, "chikuhoku.nagano.jp":!0, "chikuma.nagano.jp":!0, "chino.nagano.jp":!0, "fujimi.nagano.jp":!0, "hakuba.nagano.jp":!0, "hara.nagano.jp":!0, "hiraya.nagano.jp":!0, "iida.nagano.jp":!0, "iijima.nagano.jp":!0, "iiyama.nagano.jp":!0, "iizuna.nagano.jp":!0, "ikeda.nagano.jp":!0, "ikusaka.nagano.jp":!0, "ina.nagano.jp":!0, "karuizawa.nagano.jp":!0, "kawakami.nagano.jp":!0, "kiso.nagano.jp":!0, "kisofukushima.nagano.jp":!0, "kitaaiki.nagano.jp":!0, "komagane.nagano.jp":!0, "komoro.nagano.jp":!0, "matsukawa.nagano.jp":!0, "matsumoto.nagano.jp":!0, "miasa.nagano.jp":!0, "minamiaiki.nagano.jp":!0, "minamimaki.nagano.jp":!0, "minamiminowa.nagano.jp":!0, "minowa.nagano.jp":!0, "miyada.nagano.jp":!0, "miyota.nagano.jp":!0, "mochizuki.nagano.jp":!0, "nagano.nagano.jp":!0, "nagawa.nagano.jp":!0, "nagiso.nagano.jp":!0, "nakagawa.nagano.jp":!0, "nakano.nagano.jp":!0, "nozawaonsen.nagano.jp":!0, "obuse.nagano.jp":!0, "ogawa.nagano.jp":!0, "okaya.nagano.jp":!0, "omachi.nagano.jp":!0, "omi.nagano.jp":!0, "ookuwa.nagano.jp":!0, "ooshika.nagano.jp":!0, "otaki.nagano.jp":!0, "otari.nagano.jp":!0, "sakae.nagano.jp":!0, "sakaki.nagano.jp":!0, "saku.nagano.jp":!0, "sakuho.nagano.jp":!0, "shimosuwa.nagano.jp":!0, "shinanomachi.nagano.jp":!0, "shiojiri.nagano.jp":!0, "suwa.nagano.jp":!0, "suzaka.nagano.jp":!0, "takagi.nagano.jp":!0, "takamori.nagano.jp":!0, "takayama.nagano.jp":!0, "tateshina.nagano.jp":!0, "tatsuno.nagano.jp":!0, "togakushi.nagano.jp":!0, "togura.nagano.jp":!0, "tomi.nagano.jp":!0, "ueda.nagano.jp":!0, "wada.nagano.jp":!0, "yamagata.nagano.jp":!0, "yamanouchi.nagano.jp":!0, "yasaka.nagano.jp":!0, "yasuoka.nagano.jp":!0, "chijiwa.nagasaki.jp":!0, "futsu.nagasaki.jp":!0, "goto.nagasaki.jp":!0, "hasami.nagasaki.jp":!0, "hirado.nagasaki.jp":!0, "iki.nagasaki.jp":!0, "isahaya.nagasaki.jp":!0, "kawatana.nagasaki.jp":!0, "kuchinotsu.nagasaki.jp":!0, "matsuura.nagasaki.jp":!0, "nagasaki.nagasaki.jp":!0, "obama.nagasaki.jp":!0, "omura.nagasaki.jp":!0, "oseto.nagasaki.jp":!0, "saikai.nagasaki.jp":!0, "sasebo.nagasaki.jp":!0, "seihi.nagasaki.jp":!0, "shimabara.nagasaki.jp":!0, "shinkamigoto.nagasaki.jp":!0, "togitsu.nagasaki.jp":!0, "tsushima.nagasaki.jp":!0, "unzen.nagasaki.jp":!0, "ando.nara.jp":!0, "gose.nara.jp":!0, "heguri.nara.jp":!0, "higashiyoshino.nara.jp":!0, "ikaruga.nara.jp":!0, "ikoma.nara.jp":!0, "kamikitayama.nara.jp":!0, "kanmaki.nara.jp":!0, "kashiba.nara.jp":!0, "kashihara.nara.jp":!0, "katsuragi.nara.jp":!0, "kawai.nara.jp":!0, "kawakami.nara.jp":!0, "kawanishi.nara.jp":!0, "koryo.nara.jp":!0, "kurotaki.nara.jp":!0, "mitsue.nara.jp":!0, "miyake.nara.jp":!0, "nara.nara.jp":!0, "nosegawa.nara.jp":!0, "oji.nara.jp":!0, "ouda.nara.jp":!0, "oyodo.nara.jp":!0, "sakurai.nara.jp":!0, "sango.nara.jp":!0, "shimoichi.nara.jp":!0, "shimokitayama.nara.jp":!0, "shinjo.nara.jp":!0, "soni.nara.jp":!0, "takatori.nara.jp":!0, "tawaramoto.nara.jp":!0, "tenkawa.nara.jp":!0, "tenri.nara.jp":!0, "uda.nara.jp":!0, "yamatokoriyama.nara.jp":!0, "yamatotakada.nara.jp":!0, "yamazoe.nara.jp":!0, "yoshino.nara.jp":!0, "aga.niigata.jp":!0, "agano.niigata.jp":!0, "gosen.niigata.jp":!0, "itoigawa.niigata.jp":!0, "izumozaki.niigata.jp":!0, "joetsu.niigata.jp":!0, "kamo.niigata.jp":!0, "kariwa.niigata.jp":!0, "kashiwazaki.niigata.jp":!0, "minamiuonuma.niigata.jp":!0, "mitsuke.niigata.jp":!0, "muika.niigata.jp":!0, "murakami.niigata.jp":!0, "myoko.niigata.jp":!0, "nagaoka.niigata.jp":!0, "niigata.niigata.jp":!0, "ojiya.niigata.jp":!0, "omi.niigata.jp":!0, "sado.niigata.jp":!0, "sanjo.niigata.jp":!0, "seiro.niigata.jp":!0, "seirou.niigata.jp":!0, "sekikawa.niigata.jp":!0, "shibata.niigata.jp":!0, "tagami.niigata.jp":!0, "tainai.niigata.jp":!0, "tochio.niigata.jp":!0, "tokamachi.niigata.jp":!0, "tsubame.niigata.jp":!0, "tsunan.niigata.jp":!0, "uonuma.niigata.jp":!0, "yahiko.niigata.jp":!0, "yoita.niigata.jp":!0, "yuzawa.niigata.jp":!0, "beppu.oita.jp":!0, "bungoono.oita.jp":!0, "bungotakada.oita.jp":!0, "hasama.oita.jp":!0, "hiji.oita.jp":!0, "himeshima.oita.jp":!0, "hita.oita.jp":!0, "kamitsue.oita.jp":!0, "kokonoe.oita.jp":!0, "kuju.oita.jp":!0, "kunisaki.oita.jp":!0, "kusu.oita.jp":!0, "oita.oita.jp":!0, "saiki.oita.jp":!0, "taketa.oita.jp":!0, "tsukumi.oita.jp":!0, "usa.oita.jp":!0, "usuki.oita.jp":!0, "yufu.oita.jp":!0, "akaiwa.okayama.jp":!0, "asakuchi.okayama.jp":!0, "bizen.okayama.jp":!0, "hayashima.okayama.jp":!0, "ibara.okayama.jp":!0, "kagamino.okayama.jp":!0, "kasaoka.okayama.jp":!0, "kibichuo.okayama.jp":!0, "kumenan.okayama.jp":!0, "kurashiki.okayama.jp":!0, "maniwa.okayama.jp":!0, "misaki.okayama.jp":!0, "nagi.okayama.jp":!0, "niimi.okayama.jp":!0, "nishiawakura.okayama.jp":!0, "okayama.okayama.jp":!0, "satosho.okayama.jp":!0, "setouchi.okayama.jp":!0, "shinjo.okayama.jp":!0, "shoo.okayama.jp":!0, "soja.okayama.jp":!0, "takahashi.okayama.jp":!0, "tamano.okayama.jp":!0, "tsuyama.okayama.jp":!0, "wake.okayama.jp":!0, "yakage.okayama.jp":!0, "aguni.okinawa.jp":!0, "ginowan.okinawa.jp":!0, "ginoza.okinawa.jp":!0, "gushikami.okinawa.jp":!0, "haebaru.okinawa.jp":!0, "higashi.okinawa.jp":!0, "hirara.okinawa.jp":!0, "iheya.okinawa.jp":!0, "ishigaki.okinawa.jp":!0, "ishikawa.okinawa.jp":!0, "itoman.okinawa.jp":!0, "izena.okinawa.jp":!0, "kadena.okinawa.jp":!0, "kin.okinawa.jp":!0, "kitadaito.okinawa.jp":!0, "kitanakagusuku.okinawa.jp":!0, "kumejima.okinawa.jp":!0, "kunigami.okinawa.jp":!0, "minamidaito.okinawa.jp":!0, "motobu.okinawa.jp":!0, "nago.okinawa.jp":!0, "naha.okinawa.jp":!0, "nakagusuku.okinawa.jp":!0, "nakijin.okinawa.jp":!0, "nanjo.okinawa.jp":!0, "nishihara.okinawa.jp":!0, "ogimi.okinawa.jp":!0, "okinawa.okinawa.jp":!0, "onna.okinawa.jp":!0, "shimoji.okinawa.jp":!0, "taketomi.okinawa.jp":!0, "tarama.okinawa.jp":!0, "tokashiki.okinawa.jp":!0, "tomigusuku.okinawa.jp":!0, "tonaki.okinawa.jp":!0, "urasoe.okinawa.jp":!0, "uruma.okinawa.jp":!0, "yaese.okinawa.jp":!0, "yomitan.okinawa.jp":!0, "yonabaru.okinawa.jp":!0, "yonaguni.okinawa.jp":!0, "zamami.okinawa.jp":!0, "abeno.osaka.jp":!0, "chihayaakasaka.osaka.jp":!0, "chuo.osaka.jp":!0, "daito.osaka.jp":!0, "fujiidera.osaka.jp":!0, "habikino.osaka.jp":!0, "hannan.osaka.jp":!0, "higashiosaka.osaka.jp":!0, "higashisumiyoshi.osaka.jp":!0, "higashiyodogawa.osaka.jp":!0, "hirakata.osaka.jp":!0, "ibaraki.osaka.jp":!0, "ikeda.osaka.jp":!0, "izumi.osaka.jp":!0, "izumiotsu.osaka.jp":!0, "izumisano.osaka.jp":!0, "kadoma.osaka.jp":!0, "kaizuka.osaka.jp":!0, "kanan.osaka.jp":!0, "kashiwara.osaka.jp":!0, "katano.osaka.jp":!0, "kawachinagano.osaka.jp":!0, "kishiwada.osaka.jp":!0, "kita.osaka.jp":!0, "kumatori.osaka.jp":!0, "matsubara.osaka.jp":!0, "minato.osaka.jp":!0, "minoh.osaka.jp":!0, "misaki.osaka.jp":!0, "moriguchi.osaka.jp":!0, "neyagawa.osaka.jp":!0, "nishi.osaka.jp":!0, "nose.osaka.jp":!0, "osakasayama.osaka.jp":!0, "sakai.osaka.jp":!0, "sayama.osaka.jp":!0, "sennan.osaka.jp":!0, "settsu.osaka.jp":!0, "shijonawate.osaka.jp":!0, "shimamoto.osaka.jp":!0, "suita.osaka.jp":!0, "tadaoka.osaka.jp":!0, "taishi.osaka.jp":!0, "tajiri.osaka.jp":!0, "takaishi.osaka.jp":!0, "takatsuki.osaka.jp":!0, "tondabayashi.osaka.jp":!0, "toyonaka.osaka.jp":!0, "toyono.osaka.jp":!0, "yao.osaka.jp":!0, "ariake.saga.jp":!0, "arita.saga.jp":!0, "fukudomi.saga.jp":!0, "genkai.saga.jp":!0, "hamatama.saga.jp":!0, "hizen.saga.jp":!0, "imari.saga.jp":!0, "kamimine.saga.jp":!0, "kanzaki.saga.jp":!0, "karatsu.saga.jp":!0, "kashima.saga.jp":!0, "kitagata.saga.jp":!0, "kitahata.saga.jp":!0, "kiyama.saga.jp":!0, "kouhoku.saga.jp":!0, "kyuragi.saga.jp":!0, "nishiarita.saga.jp":!0, "ogi.saga.jp":!0, "omachi.saga.jp":!0, "ouchi.saga.jp":!0, "saga.saga.jp":!0, "shiroishi.saga.jp":!0, "taku.saga.jp":!0, "tara.saga.jp":!0, "tosu.saga.jp":!0, "yoshinogari.saga.jp":!0, "arakawa.saitama.jp":!0, "asaka.saitama.jp":!0, "chichibu.saitama.jp":!0, "fujimi.saitama.jp":!0, "fujimino.saitama.jp":!0, "fukaya.saitama.jp":!0, "hanno.saitama.jp":!0, "hanyu.saitama.jp":!0, "hasuda.saitama.jp":!0, "hatogaya.saitama.jp":!0, "hatoyama.saitama.jp":!0, "hidaka.saitama.jp":!0, "higashichichibu.saitama.jp":!0, "higashimatsuyama.saitama.jp":!0, "honjo.saitama.jp":!0, "ina.saitama.jp":!0, "iruma.saitama.jp":!0, "iwatsuki.saitama.jp":!0, "kamiizumi.saitama.jp":!0, "kamikawa.saitama.jp":!0, "kamisato.saitama.jp":!0, "kasukabe.saitama.jp":!0, "kawagoe.saitama.jp":!0, "kawaguchi.saitama.jp":!0, "kawajima.saitama.jp":!0, "kazo.saitama.jp":!0, "kitamoto.saitama.jp":!0, "koshigaya.saitama.jp":!0, "kounosu.saitama.jp":!0, "kuki.saitama.jp":!0, "kumagaya.saitama.jp":!0, "matsubushi.saitama.jp":!0, "minano.saitama.jp":!0, "misato.saitama.jp":!0, "miyashiro.saitama.jp":!0, "miyoshi.saitama.jp":!0, "moroyama.saitama.jp":!0, "nagatoro.saitama.jp":!0, "namegawa.saitama.jp":!0, "niiza.saitama.jp":!0, "ogano.saitama.jp":!0, "ogawa.saitama.jp":!0, "ogose.saitama.jp":!0, "okegawa.saitama.jp":!0, "omiya.saitama.jp":!0, "otaki.saitama.jp":!0, "ranzan.saitama.jp":!0, "ryokami.saitama.jp":!0, "saitama.saitama.jp":!0, "sakado.saitama.jp":!0, "satte.saitama.jp":!0, "sayama.saitama.jp":!0, "shiki.saitama.jp":!0, "shiraoka.saitama.jp":!0, "soka.saitama.jp":!0, "sugito.saitama.jp":!0, "toda.saitama.jp":!0, "tokigawa.saitama.jp":!0, "tokorozawa.saitama.jp":!0, "tsurugashima.saitama.jp":!0, "urawa.saitama.jp":!0, "warabi.saitama.jp":!0, "yashio.saitama.jp":!0, "yokoze.saitama.jp":!0, "yono.saitama.jp":!0, "yorii.saitama.jp":!0, "yoshida.saitama.jp":!0, "yoshikawa.saitama.jp":!0, "yoshimi.saitama.jp":!0, "aisho.shiga.jp":!0, "gamo.shiga.jp":!0, "higashiomi.shiga.jp":!0, "hikone.shiga.jp":!0, "koka.shiga.jp":!0, "konan.shiga.jp":!0, "kosei.shiga.jp":!0, "koto.shiga.jp":!0, "kusatsu.shiga.jp":!0, "maibara.shiga.jp":!0, "moriyama.shiga.jp":!0, "nagahama.shiga.jp":!0, "nishiazai.shiga.jp":!0, "notogawa.shiga.jp":!0, "omihachiman.shiga.jp":!0, "otsu.shiga.jp":!0, "ritto.shiga.jp":!0, "ryuoh.shiga.jp":!0, "takashima.shiga.jp":!0, "takatsuki.shiga.jp":!0, "torahime.shiga.jp":!0, "toyosato.shiga.jp":!0, "yasu.shiga.jp":!0, "akagi.shimane.jp":!0, "ama.shimane.jp":!0, "gotsu.shimane.jp":!0, "hamada.shimane.jp":!0, "higashiizumo.shimane.jp":!0, "hikawa.shimane.jp":!0, "hikimi.shimane.jp":!0, "izumo.shimane.jp":!0, "kakinoki.shimane.jp":!0, "masuda.shimane.jp":!0, "matsue.shimane.jp":!0, "misato.shimane.jp":!0, "nishinoshima.shimane.jp":!0, "ohda.shimane.jp":!0, "okinoshima.shimane.jp":!0, "okuizumo.shimane.jp":!0, "shimane.shimane.jp":!0, "tamayu.shimane.jp":!0, "tsuwano.shimane.jp":!0, "unnan.shimane.jp":!0, "yakumo.shimane.jp":!0, "yasugi.shimane.jp":!0, "yatsuka.shimane.jp":!0, "arai.shizuoka.jp":!0, "atami.shizuoka.jp":!0, "fuji.shizuoka.jp":!0, "fujieda.shizuoka.jp":!0, "fujikawa.shizuoka.jp":!0, "fujinomiya.shizuoka.jp":!0, "fukuroi.shizuoka.jp":!0, "gotemba.shizuoka.jp":!0, "haibara.shizuoka.jp":!0, "hamamatsu.shizuoka.jp":!0, "higashiizu.shizuoka.jp":!0, "ito.shizuoka.jp":!0, "iwata.shizuoka.jp":!0, "izu.shizuoka.jp":!0, "izunokuni.shizuoka.jp":!0, "kakegawa.shizuoka.jp":!0, "kannami.shizuoka.jp":!0, "kawanehon.shizuoka.jp":!0, "kawazu.shizuoka.jp":!0, "kikugawa.shizuoka.jp":!0, "kosai.shizuoka.jp":!0, "makinohara.shizuoka.jp":!0, "matsuzaki.shizuoka.jp":!0, "minamiizu.shizuoka.jp":!0, "mishima.shizuoka.jp":!0, "morimachi.shizuoka.jp":!0, "nishiizu.shizuoka.jp":!0, "numazu.shizuoka.jp":!0, "omaezaki.shizuoka.jp":!0, "shimada.shizuoka.jp":!0, "shimizu.shizuoka.jp":!0, "shimoda.shizuoka.jp":!0, "shizuoka.shizuoka.jp":!0, "susono.shizuoka.jp":!0, "yaizu.shizuoka.jp":!0, "yoshida.shizuoka.jp":!0, "ashikaga.tochigi.jp":!0, "bato.tochigi.jp":!0, "haga.tochigi.jp":!0, "ichikai.tochigi.jp":!0, "iwafune.tochigi.jp":!0, "kaminokawa.tochigi.jp":!0, "kanuma.tochigi.jp":!0, "karasuyama.tochigi.jp":!0, "kuroiso.tochigi.jp":!0, "mashiko.tochigi.jp":!0, "mibu.tochigi.jp":!0, "moka.tochigi.jp":!0, "motegi.tochigi.jp":!0, "nasu.tochigi.jp":!0, "nasushiobara.tochigi.jp":!0, "nikko.tochigi.jp":!0, "nishikata.tochigi.jp":!0, "nogi.tochigi.jp":!0, "ohira.tochigi.jp":!0, "ohtawara.tochigi.jp":!0, "oyama.tochigi.jp":!0, "sakura.tochigi.jp":!0, "sano.tochigi.jp":!0, "shimotsuke.tochigi.jp":!0, "shioya.tochigi.jp":!0, "takanezawa.tochigi.jp":!0, "tochigi.tochigi.jp":!0, "tsuga.tochigi.jp":!0, "ujiie.tochigi.jp":!0, "utsunomiya.tochigi.jp":!0, "yaita.tochigi.jp":!0, "aizumi.tokushima.jp":!0, "anan.tokushima.jp":!0, "ichiba.tokushima.jp":!0, "itano.tokushima.jp":!0, "kainan.tokushima.jp":!0, "komatsushima.tokushima.jp":!0, "matsushige.tokushima.jp":!0, "mima.tokushima.jp":!0, "minami.tokushima.jp":!0, "miyoshi.tokushima.jp":!0, "mugi.tokushima.jp":!0, "nakagawa.tokushima.jp":!0, "naruto.tokushima.jp":!0, "sanagochi.tokushima.jp":!0, "shishikui.tokushima.jp":!0, "tokushima.tokushima.jp":!0, "wajiki.tokushima.jp":!0, "adachi.tokyo.jp":!0, "akiruno.tokyo.jp":!0, "akishima.tokyo.jp":!0, "aogashima.tokyo.jp":!0, "arakawa.tokyo.jp":!0, "bunkyo.tokyo.jp":!0, "chiyoda.tokyo.jp":!0, "chofu.tokyo.jp":!0, "chuo.tokyo.jp":!0, "edogawa.tokyo.jp":!0, "fuchu.tokyo.jp":!0, "fussa.tokyo.jp":!0, "hachijo.tokyo.jp":!0, "hachioji.tokyo.jp":!0, "hamura.tokyo.jp":!0, "higashikurume.tokyo.jp":!0, "higashimurayama.tokyo.jp":!0, "higashiyamato.tokyo.jp":!0, "hino.tokyo.jp":!0, "hinode.tokyo.jp":!0, "hinohara.tokyo.jp":!0, "inagi.tokyo.jp":!0, "itabashi.tokyo.jp":!0, "katsushika.tokyo.jp":!0, "kita.tokyo.jp":!0, "kiyose.tokyo.jp":!0, "kodaira.tokyo.jp":!0, "koganei.tokyo.jp":!0, "kokubunji.tokyo.jp":!0, "komae.tokyo.jp":!0, "koto.tokyo.jp":!0, "kouzushima.tokyo.jp":!0, "kunitachi.tokyo.jp":!0, "machida.tokyo.jp":!0, "meguro.tokyo.jp":!0, "minato.tokyo.jp":!0, "mitaka.tokyo.jp":!0, "mizuho.tokyo.jp":!0, "musashimurayama.tokyo.jp":!0, "musashino.tokyo.jp":!0, "nakano.tokyo.jp":!0, "nerima.tokyo.jp":!0, "ogasawara.tokyo.jp":!0, "okutama.tokyo.jp":!0, "ome.tokyo.jp":!0, "oshima.tokyo.jp":!0, "ota.tokyo.jp":!0, "setagaya.tokyo.jp":!0, "shibuya.tokyo.jp":!0, "shinagawa.tokyo.jp":!0, "shinjuku.tokyo.jp":!0, "suginami.tokyo.jp":!0, "sumida.tokyo.jp":!0, "tachikawa.tokyo.jp":!0, "taito.tokyo.jp":!0, "tama.tokyo.jp":!0, "toshima.tokyo.jp":!0, "chizu.tottori.jp":!0, "hino.tottori.jp":!0, "kawahara.tottori.jp":!0, "koge.tottori.jp":!0, "kotoura.tottori.jp":!0, "misasa.tottori.jp":!0, "nanbu.tottori.jp":!0, "nichinan.tottori.jp":!0, "sakaiminato.tottori.jp":!0, "tottori.tottori.jp":!0, "wakasa.tottori.jp":!0, "yazu.tottori.jp":!0, "yonago.tottori.jp":!0, "asahi.toyama.jp":!0, "fuchu.toyama.jp":!0, "fukumitsu.toyama.jp":!0, "funahashi.toyama.jp":!0, "himi.toyama.jp":!0, "imizu.toyama.jp":!0, "inami.toyama.jp":!0, "johana.toyama.jp":!0, "kamiichi.toyama.jp":!0, "kurobe.toyama.jp":!0, "nakaniikawa.toyama.jp":!0, "namerikawa.toyama.jp":!0, "nanto.toyama.jp":!0, "nyuzen.toyama.jp":!0, "oyabe.toyama.jp":!0, "taira.toyama.jp":!0, "takaoka.toyama.jp":!0, "tateyama.toyama.jp":!0, "toga.toyama.jp":!0, "tonami.toyama.jp":!0, "toyama.toyama.jp":!0, "unazuki.toyama.jp":!0, "uozu.toyama.jp":!0, "yamada.toyama.jp":!0, "arida.wakayama.jp":!0, "aridagawa.wakayama.jp":!0, "gobo.wakayama.jp":!0, "hashimoto.wakayama.jp":!0, "hidaka.wakayama.jp":!0, "hirogawa.wakayama.jp":!0, "inami.wakayama.jp":!0, "iwade.wakayama.jp":!0, "kainan.wakayama.jp":!0, "kamitonda.wakayama.jp":!0, "katsuragi.wakayama.jp":!0, "kimino.wakayama.jp":!0, "kinokawa.wakayama.jp":!0, "kitayama.wakayama.jp":!0, "koya.wakayama.jp":!0, "koza.wakayama.jp":!0, "kozagawa.wakayama.jp":!0, "kudoyama.wakayama.jp":!0, "kushimoto.wakayama.jp":!0, "mihama.wakayama.jp":!0, "misato.wakayama.jp":!0, "nachikatsuura.wakayama.jp":!0, "shingu.wakayama.jp":!0, "shirahama.wakayama.jp":!0, "taiji.wakayama.jp":!0, "tanabe.wakayama.jp":!0, "wakayama.wakayama.jp":!0, "yuasa.wakayama.jp":!0, "yura.wakayama.jp":!0, "asahi.yamagata.jp":!0, "funagata.yamagata.jp":!0, "higashine.yamagata.jp":!0, "iide.yamagata.jp":!0, "kahoku.yamagata.jp":!0, "kaminoyama.yamagata.jp":!0, "kaneyama.yamagata.jp":!0, "kawanishi.yamagata.jp":!0, "mamurogawa.yamagata.jp":!0, "mikawa.yamagata.jp":!0, "murayama.yamagata.jp":!0, "nagai.yamagata.jp":!0, "nakayama.yamagata.jp":!0, "nanyo.yamagata.jp":!0, "nishikawa.yamagata.jp":!0, "obanazawa.yamagata.jp":!0, "oe.yamagata.jp":!0, "oguni.yamagata.jp":!0, "ohkura.yamagata.jp":!0, "oishida.yamagata.jp":!0, "sagae.yamagata.jp":!0, "sakata.yamagata.jp":!0, "sakegawa.yamagata.jp":!0, "shinjo.yamagata.jp":!0, "shirataka.yamagata.jp":!0, "shonai.yamagata.jp":!0, "takahata.yamagata.jp":!0, "tendo.yamagata.jp":!0, "tozawa.yamagata.jp":!0, "tsuruoka.yamagata.jp":!0, "yamagata.yamagata.jp":!0, "yamanobe.yamagata.jp":!0, "yonezawa.yamagata.jp":!0, "yuza.yamagata.jp":!0, "abu.yamaguchi.jp":!0, "hagi.yamaguchi.jp":!0, "hikari.yamaguchi.jp":!0, "hofu.yamaguchi.jp":!0, "iwakuni.yamaguchi.jp":!0, "kudamatsu.yamaguchi.jp":!0, "mitou.yamaguchi.jp":!0, "nagato.yamaguchi.jp":!0, "oshima.yamaguchi.jp":!0, "shimonoseki.yamaguchi.jp":!0, "shunan.yamaguchi.jp":!0, "tabuse.yamaguchi.jp":!0, "tokuyama.yamaguchi.jp":!0, "toyota.yamaguchi.jp":!0, "ube.yamaguchi.jp":!0, "yuu.yamaguchi.jp":!0, "chuo.yamanashi.jp":!0, "doshi.yamanashi.jp":!0, "fuefuki.yamanashi.jp":!0, "fujikawa.yamanashi.jp":!0, "fujikawaguchiko.yamanashi.jp":!0, "fujiyoshida.yamanashi.jp":!0, "hayakawa.yamanashi.jp":!0, "hokuto.yamanashi.jp":!0, "ichikawamisato.yamanashi.jp":!0, "kai.yamanashi.jp":!0, "kofu.yamanashi.jp":!0, "koshu.yamanashi.jp":!0, "kosuge.yamanashi.jp":!0, "minami-alps.yamanashi.jp":!0, "minobu.yamanashi.jp":!0, "nakamichi.yamanashi.jp":!0, "nanbu.yamanashi.jp":!0, "narusawa.yamanashi.jp":!0, "nirasaki.yamanashi.jp":!0, "nishikatsura.yamanashi.jp":!0, "oshino.yamanashi.jp":!0, "otsuki.yamanashi.jp":!0, "showa.yamanashi.jp":!0, "tabayama.yamanashi.jp":!0, "tsuru.yamanashi.jp":!0, "uenohara.yamanashi.jp":!0, "yamanakako.yamanashi.jp":!0, "yamanashi.yamanashi.jp":!0, "*.ke":!0, "kg":!0, "org.kg":!0, "net.kg":!0, "com.kg":!0, "edu.kg":!0, "gov.kg":!0, "mil.kg":!0, "*.kh":!0, "ki":!0, "edu.ki":!0, "biz.ki":!0, "net.ki":!0, "org.ki":!0, "gov.ki":!0, "info.ki":!0, "com.ki":!0, "km":!0, "org.km":!0, "nom.km":!0, "gov.km":!0, "prd.km":!0, "tm.km":!0, "edu.km":!0, "mil.km":!0, "ass.km":!0, "com.km":!0, "coop.km":!0, "asso.km":!0, "presse.km":!0, "medecin.km":!0, "notaires.km":!0, "pharmaciens.km":!0, "veterinaire.km":!0, "gouv.km":!0, "kn":!0, "net.kn":!0, "org.kn":!0, "edu.kn":!0, "gov.kn":!0, "kp":!0, "com.kp":!0, "edu.kp":!0, "gov.kp":!0, "org.kp":!0, "rep.kp":!0, "tra.kp":!0, "kr":!0, "ac.kr":!0, "co.kr":!0, "es.kr":!0, "go.kr":!0, "hs.kr":!0, "kg.kr":!0, "mil.kr":!0, "ms.kr":!0, "ne.kr":!0, "or.kr":!0, "pe.kr":!0, "re.kr":!0, "sc.kr":!0, "busan.kr":!0, "chungbuk.kr":!0, "chungnam.kr":!0, "daegu.kr":!0, "daejeon.kr":!0, "gangwon.kr":!0, "gwangju.kr":!0, "gyeongbuk.kr":!0, "gyeonggi.kr":!0, "gyeongnam.kr":!0, "incheon.kr":!0, "jeju.kr":!0, "jeonbuk.kr":!0, "jeonnam.kr":!0, "seoul.kr":!0, "ulsan.kr":!0, "*.kw":!0, "ky":!0, "edu.ky":!0, "gov.ky":!0, "com.ky":!0, "org.ky":!0, "net.ky":!0, "kz":!0, "org.kz":!0, "edu.kz":!0, "net.kz":!0, "gov.kz":!0, "mil.kz":!0, "com.kz":!0, "la":!0, "int.la":!0, "net.la":!0, "info.la":!0, "edu.la":!0, "gov.la":!0, "per.la":!0, "com.la":!0, "org.la":!0, "lb":!0, "com.lb":!0, "edu.lb":!0, "gov.lb":!0, "net.lb":!0, "org.lb":!0, "lc":!0, "com.lc":!0, "net.lc":!0, "co.lc":!0, "org.lc":!0, "edu.lc":!0, "gov.lc":!0, "li":!0, "lk":!0, "gov.lk":!0, "sch.lk":!0, "net.lk":!0, "int.lk":!0, "com.lk":!0, "org.lk":!0, "edu.lk":!0, "ngo.lk":!0, "soc.lk":!0, "web.lk":!0, "ltd.lk":!0, "assn.lk":!0, "grp.lk":!0, "hotel.lk":!0, "ac.lk":!0, "lr":!0, "com.lr":!0, "edu.lr":!0, "gov.lr":!0, "org.lr":!0, "net.lr":!0, "ls":!0, "co.ls":!0, "org.ls":!0, "lt":!0, "gov.lt":!0, "lu":!0, "lv":!0, "com.lv":!0, "edu.lv":!0, "gov.lv":!0, "org.lv":!0, "mil.lv":!0, "id.lv":!0, "net.lv":!0, "asn.lv":!0, "conf.lv":!0, "ly":!0, "com.ly":!0, "net.ly":!0, "gov.ly":!0, "plc.ly":!0, "edu.ly":!0, "sch.ly":!0, "med.ly":!0, "org.ly":!0, "id.ly":!0, "ma":!0, "co.ma":!0, "net.ma":!0, "gov.ma":!0, "org.ma":!0, "ac.ma":!0, "press.ma":!0, "mc":!0, "tm.mc":!0, "asso.mc":!0, "md":!0, "me":!0, "co.me":!0, "net.me":!0, "org.me":!0, "edu.me":!0, "ac.me":!0, "gov.me":!0, "its.me":!0, "priv.me":!0, "mg":!0, "org.mg":!0, "nom.mg":!0, "gov.mg":!0, "prd.mg":!0, "tm.mg":!0, "edu.mg":!0, "mil.mg":!0, "com.mg":!0, "co.mg":!0, "mh":!0, "mil":!0, "mk":!0, "com.mk":!0, "org.mk":!0, "net.mk":!0, "edu.mk":!0, "gov.mk":!0, "inf.mk":!0, "name.mk":!0, "ml":!0, "com.ml":!0, "edu.ml":!0, "gouv.ml":!0, "gov.ml":!0, "net.ml":!0, "org.ml":!0, "presse.ml":!0, "*.mm":!0, "mn":!0, "gov.mn":!0, "edu.mn":!0, "org.mn":!0, "mo":!0, "com.mo":!0, "net.mo":!0, "org.mo":!0, "edu.mo":!0, "gov.mo":!0, "mobi":!0, "mp":!0, "mq":!0, "mr":!0, "gov.mr":!0, "ms":!0, "com.ms":!0, "edu.ms":!0, "gov.ms":!0, "net.ms":!0, "org.ms":!0, "mt":!0, "com.mt":!0, "edu.mt":!0, "net.mt":!0, "org.mt":!0, "mu":!0, "com.mu":!0, "net.mu":!0, "org.mu":!0, "gov.mu":!0, "ac.mu":!0, "co.mu":!0, "or.mu":!0, "museum":!0, "academy.museum":!0, "agriculture.museum":!0, "air.museum":!0, "airguard.museum":!0, "alabama.museum":!0, "alaska.museum":!0, "amber.museum":!0, "ambulance.museum":!0, "american.museum":!0, "americana.museum":!0, "americanantiques.museum":!0, "americanart.museum":!0, "amsterdam.museum":!0, "and.museum":!0, "annefrank.museum":!0, "anthro.museum":!0, "anthropology.museum":!0, "antiques.museum":!0, "aquarium.museum":!0, "arboretum.museum":!0, "archaeological.museum":!0, "archaeology.museum":!0, "architecture.museum":!0, "art.museum":!0, "artanddesign.museum":!0, "artcenter.museum":!0, "artdeco.museum":!0, "arteducation.museum":!0, "artgallery.museum":!0, "arts.museum":!0, "artsandcrafts.museum":!0, "asmatart.museum":!0, "assassination.museum":!0, "assisi.museum":!0, "association.museum":!0, "astronomy.museum":!0, "atlanta.museum":!0, "austin.museum":!0, "australia.museum":!0, "automotive.museum":!0, "aviation.museum":!0, "axis.museum":!0, "badajoz.museum":!0, "baghdad.museum":!0, "bahn.museum":!0, "bale.museum":!0, "baltimore.museum":!0, "barcelona.museum":!0, "baseball.museum":!0, "basel.museum":!0, "baths.museum":!0, "bauern.museum":!0, "beauxarts.museum":!0, "beeldengeluid.museum":!0, "bellevue.museum":!0, "bergbau.museum":!0, "berkeley.museum":!0, "berlin.museum":!0, "bern.museum":!0, "bible.museum":!0, "bilbao.museum":!0, "bill.museum":!0, "birdart.museum":!0, "birthplace.museum":!0, "bonn.museum":!0, "boston.museum":!0, "botanical.museum":!0, "botanicalgarden.museum":!0, "botanicgarden.museum":!0, "botany.museum":!0, "brandywinevalley.museum":!0, "brasil.museum":!0, "bristol.museum":!0, "british.museum":!0, "britishcolumbia.museum":!0, "broadcast.museum":!0, "brunel.museum":!0, "brussel.museum":!0, "brussels.museum":!0, "bruxelles.museum":!0, "building.museum":!0, "burghof.museum":!0, "bus.museum":!0, "bushey.museum":!0, "cadaques.museum":!0, "california.museum":!0, "cambridge.museum":!0, "can.museum":!0, "canada.museum":!0, "capebreton.museum":!0, "carrier.museum":!0, "cartoonart.museum":!0, "casadelamoneda.museum":!0, "castle.museum":!0, "castres.museum":!0, "celtic.museum":!0, "center.museum":!0, "chattanooga.museum":!0, "cheltenham.museum":!0, "chesapeakebay.museum":!0, "chicago.museum":!0, "children.museum":!0, "childrens.museum":!0, "childrensgarden.museum":!0, "chiropractic.museum":!0, "chocolate.museum":!0, "christiansburg.museum":!0, "cincinnati.museum":!0, "cinema.museum":!0, "circus.museum":!0, "civilisation.museum":!0, "civilization.museum":!0, "civilwar.museum":!0, "clinton.museum":!0, "clock.museum":!0, "coal.museum":!0, "coastaldefence.museum":!0, "cody.museum":!0, "coldwar.museum":!0, "collection.museum":!0, "colonialwilliamsburg.museum":!0, "coloradoplateau.museum":!0, "columbia.museum":!0, "columbus.museum":!0, "communication.museum":!0, "communications.museum":!0, "community.museum":!0, "computer.museum":!0, "computerhistory.museum":!0, "xn--comunicaes-v6a2o.museum":!0, "contemporary.museum":!0, "contemporaryart.museum":!0, "convent.museum":!0, "copenhagen.museum":!0, "corporation.museum":!0, "xn--correios-e-telecomunicaes-ghc29a.museum":!0, "corvette.museum":!0, "costume.museum":!0, "countryestate.museum":!0, "county.museum":!0, "crafts.museum":!0, "cranbrook.museum":!0, "creation.museum":!0, "cultural.museum":!0, "culturalcenter.museum":!0, "culture.museum":!0, "cyber.museum":!0, "cymru.museum":!0, "dali.museum":!0, "dallas.museum":!0, "database.museum":!0, "ddr.museum":!0, "decorativearts.museum":!0, "delaware.museum":!0, "delmenhorst.museum":!0, "denmark.museum":!0, "depot.museum":!0, "design.museum":!0, "detroit.museum":!0, "dinosaur.museum":!0, "discovery.museum":!0, "dolls.museum":!0, "donostia.museum":!0, "durham.museum":!0, "eastafrica.museum":!0, "eastcoast.museum":!0, "education.museum":!0, "educational.museum":!0, "egyptian.museum":!0, "eisenbahn.museum":!0, "elburg.museum":!0, "elvendrell.museum":!0, "embroidery.museum":!0, "encyclopedic.museum":!0, "england.museum":!0, "entomology.museum":!0, "environment.museum":!0, "environmentalconservation.museum":!0, "epilepsy.museum":!0, "essex.museum":!0, "estate.museum":!0, "ethnology.museum":!0, "exeter.museum":!0, "exhibition.museum":!0, "family.museum":!0, "farm.museum":!0, "farmequipment.museum":!0, "farmers.museum":!0, "farmstead.museum":!0, "field.museum":!0, "figueres.museum":!0, "filatelia.museum":!0, "film.museum":!0, "fineart.museum":!0, "finearts.museum":!0, "finland.museum":!0, "flanders.museum":!0, "florida.museum":!0, "force.museum":!0, "fortmissoula.museum":!0, "fortworth.museum":!0, "foundation.museum":!0, "francaise.museum":!0, "frankfurt.museum":!0, "franziskaner.museum":!0, "freemasonry.museum":!0, "freiburg.museum":!0, "fribourg.museum":!0, "frog.museum":!0, "fundacio.museum":!0, "furniture.museum":!0, "gallery.museum":!0, "garden.museum":!0, "gateway.museum":!0, "geelvinck.museum":!0, "gemological.museum":!0, "geology.museum":!0, "georgia.museum":!0, "giessen.museum":!0, "glas.museum":!0, "glass.museum":!0, "gorge.museum":!0, "grandrapids.museum":!0, "graz.museum":!0, "guernsey.museum":!0, "halloffame.museum":!0, "hamburg.museum":!0, "handson.museum":!0, "harvestcelebration.museum":!0, "hawaii.museum":!0, "health.museum":!0, "heimatunduhren.museum":!0, "hellas.museum":!0, "helsinki.museum":!0, "hembygdsforbund.museum":!0, "heritage.museum":!0, "histoire.museum":!0, "historical.museum":!0, "historicalsociety.museum":!0, "historichouses.museum":!0, "historisch.museum":!0, "historisches.museum":!0, "history.museum":!0, "historyofscience.museum":!0, "horology.museum":!0, "house.museum":!0, "humanities.museum":!0, "illustration.museum":!0, "imageandsound.museum":!0, "indian.museum":!0, "indiana.museum":!0, "indianapolis.museum":!0, "indianmarket.museum":!0, "intelligence.museum":!0, "interactive.museum":!0, "iraq.museum":!0, "iron.museum":!0, "isleofman.museum":!0, "jamison.museum":!0, "jefferson.museum":!0, "jerusalem.museum":!0, "jewelry.museum":!0, "jewish.museum":!0, "jewishart.museum":!0, "jfk.museum":!0, "journalism.museum":!0, "judaica.museum":!0, "judygarland.museum":!0, "juedisches.museum":!0, "juif.museum":!0, "karate.museum":!0, "karikatur.museum":!0, "kids.museum":!0, "koebenhavn.museum":!0, "koeln.museum":!0, "kunst.museum":!0, "kunstsammlung.museum":!0, "kunstunddesign.museum":!0, "labor.museum":!0, "labour.museum":!0, "lajolla.museum":!0, "lancashire.museum":!0, "landes.museum":!0, "lans.museum":!0, "xn--lns-qla.museum":!0, "larsson.museum":!0, "lewismiller.museum":!0, "lincoln.museum":!0, "linz.museum":!0, "living.museum":!0, "livinghistory.museum":!0, "localhistory.museum":!0, "london.museum":!0, "losangeles.museum":!0, "louvre.museum":!0, "loyalist.museum":!0, "lucerne.museum":!0, "luxembourg.museum":!0, "luzern.museum":!0, "mad.museum":!0, "madrid.museum":!0, "mallorca.museum":!0, "manchester.museum":!0, "mansion.museum":!0, "mansions.museum":!0, "manx.museum":!0, "marburg.museum":!0, "maritime.museum":!0, "maritimo.museum":!0, "maryland.museum":!0, "marylhurst.museum":!0, "media.museum":!0, "medical.museum":!0, "medizinhistorisches.museum":!0, "meeres.museum":!0, "memorial.museum":!0, "mesaverde.museum":!0, "michigan.museum":!0, "midatlantic.museum":!0, "military.museum":!0, "mill.museum":!0, "miners.museum":!0, "mining.museum":!0, "minnesota.museum":!0, "missile.museum":!0, "missoula.museum":!0, "modern.museum":!0, "moma.museum":!0, "money.museum":!0, "monmouth.museum":!0, "monticello.museum":!0, "montreal.museum":!0, "moscow.museum":!0, "motorcycle.museum":!0, "muenchen.museum":!0, "muenster.museum":!0, "mulhouse.museum":!0, "muncie.museum":!0, "museet.museum":!0, "museumcenter.museum":!0, "museumvereniging.museum":!0, "music.museum":!0, "national.museum":!0, "nationalfirearms.museum":!0, "nationalheritage.museum":!0, "nativeamerican.museum":!0, "naturalhistory.museum":!0, "naturalhistorymuseum.museum":!0, "naturalsciences.museum":!0, "nature.museum":!0, "naturhistorisches.museum":!0, "natuurwetenschappen.museum":!0, "naumburg.museum":!0, "naval.museum":!0, "nebraska.museum":!0, "neues.museum":!0, "newhampshire.museum":!0, "newjersey.museum":!0, "newmexico.museum":!0, "newport.museum":!0, "newspaper.museum":!0, "newyork.museum":!0, "niepce.museum":!0, "norfolk.museum":!0, "north.museum":!0, "nrw.museum":!0, "nuernberg.museum":!0, "nuremberg.museum":!0, "nyc.museum":!0, "nyny.museum":!0, "oceanographic.museum":!0, "oceanographique.museum":!0, "omaha.museum":!0, "online.museum":!0, "ontario.museum":!0, "openair.museum":!0, "oregon.museum":!0, "oregontrail.museum":!0, "otago.museum":!0, "oxford.museum":!0, "pacific.museum":!0, "paderborn.museum":!0, "palace.museum":!0, "paleo.museum":!0, "palmsprings.museum":!0, "panama.museum":!0, "paris.museum":!0, "pasadena.museum":!0, "pharmacy.museum":!0, "philadelphia.museum":!0, "philadelphiaarea.museum":!0, "philately.museum":!0, "phoenix.museum":!0, "photography.museum":!0, "pilots.museum":!0, "pittsburgh.museum":!0, "planetarium.museum":!0, "plantation.museum":!0, "plants.museum":!0, "plaza.museum":!0, "portal.museum":!0, "portland.museum":!0, "portlligat.museum":!0, "posts-and-telecommunications.museum":!0, "preservation.museum":!0, "presidio.museum":!0, "press.museum":!0, "project.museum":!0, "public.museum":!0, "pubol.museum":!0, "quebec.museum":!0, "railroad.museum":!0, "railway.museum":!0, "research.museum":!0, "resistance.museum":!0, "riodejaneiro.museum":!0, "rochester.museum":!0, "rockart.museum":!0, "roma.museum":!0, "russia.museum":!0, "saintlouis.museum":!0, "salem.museum":!0, "salvadordali.museum":!0, "salzburg.museum":!0, "sandiego.museum":!0, "sanfrancisco.museum":!0, "santabarbara.museum":!0, "santacruz.museum":!0, "santafe.museum":!0, "saskatchewan.museum":!0, "satx.museum":!0, "savannahga.museum":!0, "schlesisches.museum":!0, "schoenbrunn.museum":!0, "schokoladen.museum":!0, "school.museum":!0, "schweiz.museum":!0, "science.museum":!0, "scienceandhistory.museum":!0, "scienceandindustry.museum":!0, "sciencecenter.museum":!0, "sciencecenters.museum":!0, "science-fiction.museum":!0, "sciencehistory.museum":!0, "sciences.museum":!0, "sciencesnaturelles.museum":!0, "scotland.museum":!0, "seaport.museum":!0, "settlement.museum":!0, "settlers.museum":!0, "shell.museum":!0, "sherbrooke.museum":!0, "sibenik.museum":!0, "silk.museum":!0, "ski.museum":!0, "skole.museum":!0, "society.museum":!0, "sologne.museum":!0, "soundandvision.museum":!0, "southcarolina.museum":!0, "southwest.museum":!0, "space.museum":!0, "spy.museum":!0, "square.museum":!0, "stadt.museum":!0, "stalbans.museum":!0, "starnberg.museum":!0, "state.museum":!0, "stateofdelaware.museum":!0, "station.museum":!0, "steam.museum":!0, "steiermark.museum":!0, "stjohn.museum":!0, "stockholm.museum":!0, "stpetersburg.museum":!0, "stuttgart.museum":!0, "suisse.museum":!0, "surgeonshall.museum":!0, "surrey.museum":!0, "svizzera.museum":!0, "sweden.museum":!0, "sydney.museum":!0, "tank.museum":!0, "tcm.museum":!0, "technology.museum":!0, "telekommunikation.museum":!0, "television.museum":!0, "texas.museum":!0, "textile.museum":!0, "theater.museum":!0, "time.museum":!0, "timekeeping.museum":!0, "topology.museum":!0, "torino.museum":!0, "touch.museum":!0, "town.museum":!0, "transport.museum":!0, "tree.museum":!0, "trolley.museum":!0, "trust.museum":!0, "trustee.museum":!0, "uhren.museum":!0, "ulm.museum":!0, "undersea.museum":!0, "university.museum":!0, "usa.museum":!0, "usantiques.museum":!0, "usarts.museum":!0, "uscountryestate.museum":!0, "usculture.museum":!0, "usdecorativearts.museum":!0, "usgarden.museum":!0, "ushistory.museum":!0, "ushuaia.museum":!0, "uslivinghistory.museum":!0, "utah.museum":!0, "uvic.museum":!0, "valley.museum":!0, "vantaa.museum":!0, "versailles.museum":!0, "viking.museum":!0, "village.museum":!0, "virginia.museum":!0, "virtual.museum":!0, "virtuel.museum":!0, "vlaanderen.museum":!0, "volkenkunde.museum":!0, "wales.museum":!0, "wallonie.museum":!0, "war.museum":!0, "washingtondc.museum":!0, "watchandclock.museum":!0, "watch-and-clock.museum":!0, "western.museum":!0, "westfalen.museum":!0, "whaling.museum":!0, "wildlife.museum":!0, "williamsburg.museum":!0, "windmill.museum":!0, "workshop.museum":!0, "york.museum":!0, "yorkshire.museum":!0, "yosemite.museum":!0, "youth.museum":!0, "zoological.museum":!0, "zoology.museum":!0, "xn--9dbhblg6di.museum":!0, "xn--h1aegh.museum":!0, "mv":!0, "aero.mv":!0, "biz.mv":!0, "com.mv":!0, "coop.mv":!0, "edu.mv":!0, "gov.mv":!0, "info.mv":!0, "int.mv":!0, "mil.mv":!0, "museum.mv":!0, "name.mv":!0, "net.mv":!0, "org.mv":!0, "pro.mv":!0, "mw":!0, "ac.mw":!0, "biz.mw":!0, "co.mw":!0, "com.mw":!0, "coop.mw":!0, "edu.mw":!0, "gov.mw":!0, "int.mw":!0, "museum.mw":!0, "net.mw":!0, "org.mw":!0, "mx":!0, "com.mx":!0, "org.mx":!0, "gob.mx":!0, "edu.mx":!0, "net.mx":!0, "my":!0, "com.my":!0, "net.my":!0, "org.my":!0, "gov.my":!0, "edu.my":!0, "mil.my":!0, "name.my":!0, "mz":!0, "ac.mz":!0, "adv.mz":!0, "co.mz":!0, "edu.mz":!0, "gov.mz":!0, "mil.mz":!0, "net.mz":!0, "org.mz":!0, "na":!0, "info.na":!0, "pro.na":!0, "name.na":!0, "school.na":!0, "or.na":!0, "dr.na":!0, "us.na":!0, "mx.na":!0, "ca.na":!0, "in.na":!0, "cc.na":!0, "tv.na":!0, "ws.na":!0, "mobi.na":!0, "co.na":!0, "com.na":!0, "org.na":!0, "name":!0, "nc":!0, "asso.nc":!0, "ne":!0, "net":!0, "nf":!0, "com.nf":!0, "net.nf":!0, "per.nf":!0, "rec.nf":!0, "web.nf":!0, "arts.nf":!0, "firm.nf":!0, "info.nf":!0, "other.nf":!0, "store.nf":!0, "ng":!0, "com.ng":!0, "edu.ng":!0, "gov.ng":!0, "i.ng":!0, "mil.ng":!0, "mobi.ng":!0, "name.ng":!0, "net.ng":!0, "org.ng":!0, "sch.ng":!0, "com.ni":!0, "gob.ni":!0, "edu.ni":!0, "org.ni":!0, "nom.ni":!0, "net.ni":!0, "mil.ni":!0, "co.ni":!0, "biz.ni":!0, "web.ni":!0, "int.ni":!0, "ac.ni":!0, "in.ni":!0, "info.ni":!0, "nl":!0, "bv.nl":!0, "no":!0, "fhs.no":!0, "vgs.no":!0, "fylkesbibl.no":!0, "folkebibl.no":!0, "museum.no":!0, "idrett.no":!0, "priv.no":!0, "mil.no":!0, "stat.no":!0, "dep.no":!0, "kommune.no":!0, "herad.no":!0, "aa.no":!0, "ah.no":!0, "bu.no":!0, "fm.no":!0, "hl.no":!0, "hm.no":!0, "jan-mayen.no":!0, "mr.no":!0, "nl.no":!0, "nt.no":!0, "of.no":!0, "ol.no":!0, "oslo.no":!0, "rl.no":!0, "sf.no":!0, "st.no":!0, "svalbard.no":!0, "tm.no":!0, "tr.no":!0, "va.no":!0, "vf.no":!0, "gs.aa.no":!0, "gs.ah.no":!0, "gs.bu.no":!0, "gs.fm.no":!0, "gs.hl.no":!0, "gs.hm.no":!0, "gs.jan-mayen.no":!0, "gs.mr.no":!0, "gs.nl.no":!0, "gs.nt.no":!0, "gs.of.no":!0, "gs.ol.no":!0, "gs.oslo.no":!0, "gs.rl.no":!0, "gs.sf.no":!0, "gs.st.no":!0, "gs.svalbard.no":!0, "gs.tm.no":!0, "gs.tr.no":!0, "gs.va.no":!0, "gs.vf.no":!0, "akrehamn.no":!0, "xn--krehamn-dxa.no":!0, "algard.no":!0, "xn--lgrd-poac.no":!0, "arna.no":!0, "brumunddal.no":!0, "bryne.no":!0, "bronnoysund.no":!0, "xn--brnnysund-m8ac.no":!0, "drobak.no":!0, "xn--drbak-wua.no":!0, "egersund.no":!0, "fetsund.no":!0, "floro.no":!0, "xn--flor-jra.no":!0, "fredrikstad.no":!0, "hokksund.no":!0, "honefoss.no":!0, "xn--hnefoss-q1a.no":!0, "jessheim.no":!0, "jorpeland.no":!0, "xn--jrpeland-54a.no":!0, "kirkenes.no":!0, "kopervik.no":!0, "krokstadelva.no":!0, "langevag.no":!0, "xn--langevg-jxa.no":!0, "leirvik.no":!0, "mjondalen.no":!0, "xn--mjndalen-64a.no":!0, "mo-i-rana.no":!0, "mosjoen.no":!0, "xn--mosjen-eya.no":!0, "nesoddtangen.no":!0, "orkanger.no":!0, "osoyro.no":!0, "xn--osyro-wua.no":!0, "raholt.no":!0, "xn--rholt-mra.no":!0, "sandnessjoen.no":!0, "xn--sandnessjen-ogb.no":!0, "skedsmokorset.no":!0, "slattum.no":!0, "spjelkavik.no":!0, "stathelle.no":!0, "stavern.no":!0, "stjordalshalsen.no":!0, "xn--stjrdalshalsen-sqb.no":!0, "tananger.no":!0, "tranby.no":!0, "vossevangen.no":!0, "afjord.no":!0, "xn--fjord-lra.no":!0, "agdenes.no":!0, "al.no":!0, "xn--l-1fa.no":!0, "alesund.no":!0, "xn--lesund-hua.no":!0, "alstahaug.no":!0, "alta.no":!0, "xn--lt-liac.no":!0, "alaheadju.no":!0, "xn--laheadju-7ya.no":!0, "alvdal.no":!0, "amli.no":!0, "xn--mli-tla.no":!0, "amot.no":!0, "xn--mot-tla.no":!0, "andebu.no":!0, "andoy.no":!0, "xn--andy-ira.no":!0, "andasuolo.no":!0, "ardal.no":!0, "xn--rdal-poa.no":!0, "aremark.no":!0, "arendal.no":!0, "xn--s-1fa.no":!0, "aseral.no":!0, "xn--seral-lra.no":!0, "asker.no":!0, "askim.no":!0, "askvoll.no":!0, "askoy.no":!0, "xn--asky-ira.no":!0, "asnes.no":!0, "xn--snes-poa.no":!0, "audnedaln.no":!0, "aukra.no":!0, "aure.no":!0, "aurland.no":!0, "aurskog-holand.no":!0, "xn--aurskog-hland-jnb.no":!0, "austevoll.no":!0, "austrheim.no":!0, "averoy.no":!0, "xn--avery-yua.no":!0, "balestrand.no":!0, "ballangen.no":!0, "balat.no":!0, "xn--blt-elab.no":!0, "balsfjord.no":!0, "bahccavuotna.no":!0, "xn--bhccavuotna-k7a.no":!0, "bamble.no":!0, "bardu.no":!0, "beardu.no":!0, "beiarn.no":!0, "bajddar.no":!0, "xn--bjddar-pta.no":!0, "baidar.no":!0, "xn--bidr-5nac.no":!0, "berg.no":!0, "bergen.no":!0, "berlevag.no":!0, "xn--berlevg-jxa.no":!0, "bearalvahki.no":!0, "xn--bearalvhki-y4a.no":!0, "bindal.no":!0, "birkenes.no":!0, "bjarkoy.no":!0, "xn--bjarky-fya.no":!0, "bjerkreim.no":!0, "bjugn.no":!0, "bodo.no":!0, "xn--bod-2na.no":!0, "badaddja.no":!0, "xn--bdddj-mrabd.no":!0, "budejju.no":!0, "bokn.no":!0, "bremanger.no":!0, "bronnoy.no":!0, "xn--brnny-wuac.no":!0, "bygland.no":!0, "bykle.no":!0, "barum.no":!0, "xn--brum-voa.no":!0, "bo.telemark.no":!0, "xn--b-5ga.telemark.no":!0, "bo.nordland.no":!0, "xn--b-5ga.nordland.no":!0, "bievat.no":!0, "xn--bievt-0qa.no":!0, "bomlo.no":!0, "xn--bmlo-gra.no":!0, "batsfjord.no":!0, "xn--btsfjord-9za.no":!0, "bahcavuotna.no":!0, "xn--bhcavuotna-s4a.no":!0, "dovre.no":!0, "drammen.no":!0, "drangedal.no":!0, "dyroy.no":!0, "xn--dyry-ira.no":!0, "donna.no":!0, "xn--dnna-gra.no":!0, "eid.no":!0, "eidfjord.no":!0, "eidsberg.no":!0, "eidskog.no":!0, "eidsvoll.no":!0, "eigersund.no":!0, "elverum.no":!0, "enebakk.no":!0, "engerdal.no":!0, "etne.no":!0, "etnedal.no":!0, "evenes.no":!0, "evenassi.no":!0, "xn--eveni-0qa01ga.no":!0, "evje-og-hornnes.no":!0, "farsund.no":!0, "fauske.no":!0, "fuossko.no":!0, "fuoisku.no":!0, "fedje.no":!0, "fet.no":!0, "finnoy.no":!0, "xn--finny-yua.no":!0, "fitjar.no":!0, "fjaler.no":!0, "fjell.no":!0, "flakstad.no":!0, "flatanger.no":!0, "flekkefjord.no":!0, "flesberg.no":!0, "flora.no":!0, "fla.no":!0, "xn--fl-zia.no":!0, "folldal.no":!0, "forsand.no":!0, "fosnes.no":!0, "frei.no":!0, "frogn.no":!0, "froland.no":!0, "frosta.no":!0, "frana.no":!0, "xn--frna-woa.no":!0, "froya.no":!0, "xn--frya-hra.no":!0, "fusa.no":!0, "fyresdal.no":!0, "forde.no":!0, "xn--frde-gra.no":!0, "gamvik.no":!0, "gangaviika.no":!0, "xn--ggaviika-8ya47h.no":!0, "gaular.no":!0, "gausdal.no":!0, "gildeskal.no":!0, "xn--gildeskl-g0a.no":!0, "giske.no":!0, "gjemnes.no":!0, "gjerdrum.no":!0, "gjerstad.no":!0, "gjesdal.no":!0, "gjovik.no":!0, "xn--gjvik-wua.no":!0, "gloppen.no":!0, "gol.no":!0, "gran.no":!0, "grane.no":!0, "granvin.no":!0, "gratangen.no":!0, "grimstad.no":!0, "grong.no":!0, "kraanghke.no":!0, "xn--kranghke-b0a.no":!0, "grue.no":!0, "gulen.no":!0, "hadsel.no":!0, "halden.no":!0, "halsa.no":!0, "hamar.no":!0, "hamaroy.no":!0, "habmer.no":!0, "xn--hbmer-xqa.no":!0, "hapmir.no":!0, "xn--hpmir-xqa.no":!0, "hammerfest.no":!0, "hammarfeasta.no":!0, "xn--hmmrfeasta-s4ac.no":!0, "haram.no":!0, "hareid.no":!0, "harstad.no":!0, "hasvik.no":!0, "aknoluokta.no":!0, "xn--koluokta-7ya57h.no":!0, "hattfjelldal.no":!0, "aarborte.no":!0, "haugesund.no":!0, "hemne.no":!0, "hemnes.no":!0, "hemsedal.no":!0, "heroy.more-og-romsdal.no":!0, "xn--hery-ira.xn--mre-og-romsdal-qqb.no":!0, "heroy.nordland.no":!0, "xn--hery-ira.nordland.no":!0, "hitra.no":!0, "hjartdal.no":!0, "hjelmeland.no":!0, "hobol.no":!0, "xn--hobl-ira.no":!0, "hof.no":!0, "hol.no":!0, "hole.no":!0, "holmestrand.no":!0, "holtalen.no":!0, "xn--holtlen-hxa.no":!0, "hornindal.no":!0, "horten.no":!0, "hurdal.no":!0, "hurum.no":!0, "hvaler.no":!0, "hyllestad.no":!0, "hagebostad.no":!0, "xn--hgebostad-g3a.no":!0, "hoyanger.no":!0, "xn--hyanger-q1a.no":!0, "hoylandet.no":!0, "xn--hylandet-54a.no":!0, "ha.no":!0, "xn--h-2fa.no":!0, "ibestad.no":!0, "inderoy.no":!0, "xn--indery-fya.no":!0, "iveland.no":!0, "jevnaker.no":!0, "jondal.no":!0, "jolster.no":!0, "xn--jlster-bya.no":!0, "karasjok.no":!0, "karasjohka.no":!0, "xn--krjohka-hwab49j.no":!0, "karlsoy.no":!0, "galsa.no":!0, "xn--gls-elac.no":!0, "karmoy.no":!0, "xn--karmy-yua.no":!0, "kautokeino.no":!0, "guovdageaidnu.no":!0, "klepp.no":!0, "klabu.no":!0, "xn--klbu-woa.no":!0, "kongsberg.no":!0, "kongsvinger.no":!0, "kragero.no":!0, "xn--krager-gya.no":!0, "kristiansand.no":!0, "kristiansund.no":!0, "krodsherad.no":!0, "xn--krdsherad-m8a.no":!0, "kvalsund.no":!0, "rahkkeravju.no":!0, "xn--rhkkervju-01af.no":!0, "kvam.no":!0, "kvinesdal.no":!0, "kvinnherad.no":!0, "kviteseid.no":!0, "kvitsoy.no":!0, "xn--kvitsy-fya.no":!0, "kvafjord.no":!0, "xn--kvfjord-nxa.no":!0, "giehtavuoatna.no":!0, "kvanangen.no":!0, "xn--kvnangen-k0a.no":!0, "navuotna.no":!0, "xn--nvuotna-hwa.no":!0, "kafjord.no":!0, "xn--kfjord-iua.no":!0, "gaivuotna.no":!0, "xn--givuotna-8ya.no":!0, "larvik.no":!0, "lavangen.no":!0, "lavagis.no":!0, "loabat.no":!0, "xn--loabt-0qa.no":!0, "lebesby.no":!0, "davvesiida.no":!0, "leikanger.no":!0, "leirfjord.no":!0, "leka.no":!0, "leksvik.no":!0, "lenvik.no":!0, "leangaviika.no":!0, "xn--leagaviika-52b.no":!0, "lesja.no":!0, "levanger.no":!0, "lier.no":!0, "lierne.no":!0, "lillehammer.no":!0, "lillesand.no":!0, "lindesnes.no":!0, "lindas.no":!0, "xn--linds-pra.no":!0, "lom.no":!0, "loppa.no":!0, "lahppi.no":!0, "xn--lhppi-xqa.no":!0, "lund.no":!0, "lunner.no":!0, "luroy.no":!0, "xn--lury-ira.no":!0, "luster.no":!0, "lyngdal.no":!0, "lyngen.no":!0, "ivgu.no":!0, "lardal.no":!0, "lerdal.no":!0, "xn--lrdal-sra.no":!0, "lodingen.no":!0, "xn--ldingen-q1a.no":!0, "lorenskog.no":!0, "xn--lrenskog-54a.no":!0, "loten.no":!0, "xn--lten-gra.no":!0, "malvik.no":!0, "masoy.no":!0, "xn--msy-ula0h.no":!0, "muosat.no":!0, "xn--muost-0qa.no":!0, "mandal.no":!0, "marker.no":!0, "marnardal.no":!0, "masfjorden.no":!0, "meland.no":!0, "meldal.no":!0, "melhus.no":!0, "meloy.no":!0, "xn--mely-ira.no":!0, "meraker.no":!0, "xn--merker-kua.no":!0, "moareke.no":!0, "xn--moreke-jua.no":!0, "midsund.no":!0, "midtre-gauldal.no":!0, "modalen.no":!0, "modum.no":!0, "molde.no":!0, "moskenes.no":!0, "moss.no":!0, "mosvik.no":!0, "malselv.no":!0, "xn--mlselv-iua.no":!0, "malatvuopmi.no":!0, "xn--mlatvuopmi-s4a.no":!0, "namdalseid.no":!0, "aejrie.no":!0, "namsos.no":!0, "namsskogan.no":!0, "naamesjevuemie.no":!0, "xn--nmesjevuemie-tcba.no":!0, "laakesvuemie.no":!0, "nannestad.no":!0, "narvik.no":!0, "narviika.no":!0, "naustdal.no":!0, "nedre-eiker.no":!0, "nes.akershus.no":!0, "nes.buskerud.no":!0, "nesna.no":!0, "nesodden.no":!0, "nesseby.no":!0, "unjarga.no":!0, "xn--unjrga-rta.no":!0, "nesset.no":!0, "nissedal.no":!0, "nittedal.no":!0, "nord-aurdal.no":!0, "nord-fron.no":!0, "nord-odal.no":!0, "norddal.no":!0, "nordkapp.no":!0, "davvenjarga.no":!0, "xn--davvenjrga-y4a.no":!0, "nordre-land.no":!0, "nordreisa.no":!0, "raisa.no":!0, "xn--risa-5na.no":!0, "nore-og-uvdal.no":!0, "notodden.no":!0, "naroy.no":!0, "xn--nry-yla5g.no":!0, "notteroy.no":!0, "xn--nttery-byae.no":!0, "odda.no":!0, "oksnes.no":!0, "xn--ksnes-uua.no":!0, "oppdal.no":!0, "oppegard.no":!0, "xn--oppegrd-ixa.no":!0, "orkdal.no":!0, "orland.no":!0, "xn--rland-uua.no":!0, "orskog.no":!0, "xn--rskog-uua.no":!0, "orsta.no":!0, "xn--rsta-fra.no":!0, "os.hedmark.no":!0, "os.hordaland.no":!0, "osen.no":!0, "osteroy.no":!0, "xn--ostery-fya.no":!0, "ostre-toten.no":!0, "xn--stre-toten-zcb.no":!0, "overhalla.no":!0, "ovre-eiker.no":!0, "xn--vre-eiker-k8a.no":!0, "oyer.no":!0, "xn--yer-zna.no":!0, "oygarden.no":!0, "xn--ygarden-p1a.no":!0, "oystre-slidre.no":!0, "xn--ystre-slidre-ujb.no":!0, "porsanger.no":!0, "porsangu.no":!0, "xn--porsgu-sta26f.no":!0, "porsgrunn.no":!0, "radoy.no":!0, "xn--rady-ira.no":!0, "rakkestad.no":!0, "rana.no":!0, "ruovat.no":!0, "randaberg.no":!0, "rauma.no":!0, "rendalen.no":!0, "rennebu.no":!0, "rennesoy.no":!0, "xn--rennesy-v1a.no":!0, "rindal.no":!0, "ringebu.no":!0, "ringerike.no":!0, "ringsaker.no":!0, "rissa.no":!0, "risor.no":!0, "xn--risr-ira.no":!0, "roan.no":!0, "rollag.no":!0, "rygge.no":!0, "ralingen.no":!0, "xn--rlingen-mxa.no":!0, "rodoy.no":!0, "xn--rdy-0nab.no":!0, "romskog.no":!0, "xn--rmskog-bya.no":!0, "roros.no":!0, "xn--rros-gra.no":!0, "rost.no":!0, "xn--rst-0na.no":!0, "royken.no":!0, "xn--ryken-vua.no":!0, "royrvik.no":!0, "xn--ryrvik-bya.no":!0, "rade.no":!0, "xn--rde-ula.no":!0, "salangen.no":!0, "siellak.no":!0, "saltdal.no":!0, "salat.no":!0, "xn--slt-elab.no":!0, "xn--slat-5na.no":!0, "samnanger.no":!0, "sande.more-og-romsdal.no":!0, "sande.xn--mre-og-romsdal-qqb.no":!0, "sande.vestfold.no":!0, "sandefjord.no":!0, "sandnes.no":!0, "sandoy.no":!0, "xn--sandy-yua.no":!0, "sarpsborg.no":!0, "sauda.no":!0, "sauherad.no":!0, "sel.no":!0, "selbu.no":!0, "selje.no":!0, "seljord.no":!0, "sigdal.no":!0, "siljan.no":!0, "sirdal.no":!0, "skaun.no":!0, "skedsmo.no":!0, "ski.no":!0, "skien.no":!0, "skiptvet.no":!0, "skjervoy.no":!0, "xn--skjervy-v1a.no":!0, "skierva.no":!0, "xn--skierv-uta.no":!0, "skjak.no":!0, "xn--skjk-soa.no":!0, "skodje.no":!0, "skanland.no":!0, "xn--sknland-fxa.no":!0, "skanit.no":!0, "xn--sknit-yqa.no":!0, "smola.no":!0, "xn--smla-hra.no":!0, "snillfjord.no":!0, "snasa.no":!0, "xn--snsa-roa.no":!0, "snoasa.no":!0, "snaase.no":!0, "xn--snase-nra.no":!0, "sogndal.no":!0, "sokndal.no":!0, "sola.no":!0, "solund.no":!0, "songdalen.no":!0, "sortland.no":!0, "spydeberg.no":!0, "stange.no":!0, "stavanger.no":!0, "steigen.no":!0, "steinkjer.no":!0, "stjordal.no":!0, "xn--stjrdal-s1a.no":!0, "stokke.no":!0, "stor-elvdal.no":!0, "stord.no":!0, "stordal.no":!0, "storfjord.no":!0, "omasvuotna.no":!0, "strand.no":!0, "stranda.no":!0, "stryn.no":!0, "sula.no":!0, "suldal.no":!0, "sund.no":!0, "sunndal.no":!0, "surnadal.no":!0, "sveio.no":!0, "svelvik.no":!0, "sykkylven.no":!0, "sogne.no":!0, "xn--sgne-gra.no":!0, "somna.no":!0, "xn--smna-gra.no":!0, "sondre-land.no":!0, "xn--sndre-land-0cb.no":!0, "sor-aurdal.no":!0, "xn--sr-aurdal-l8a.no":!0, "sor-fron.no":!0, "xn--sr-fron-q1a.no":!0, "sor-odal.no":!0, "xn--sr-odal-q1a.no":!0, "sor-varanger.no":!0, "xn--sr-varanger-ggb.no":!0, "matta-varjjat.no":!0, "xn--mtta-vrjjat-k7af.no":!0, "sorfold.no":!0, "xn--srfold-bya.no":!0, "sorreisa.no":!0, "xn--srreisa-q1a.no":!0, "sorum.no":!0, "xn--srum-gra.no":!0, "tana.no":!0, "deatnu.no":!0, "time.no":!0, "tingvoll.no":!0, "tinn.no":!0, "tjeldsund.no":!0, "dielddanuorri.no":!0, "tjome.no":!0, "xn--tjme-hra.no":!0, "tokke.no":!0, "tolga.no":!0, "torsken.no":!0, "tranoy.no":!0, "xn--trany-yua.no":!0, "tromso.no":!0, "xn--troms-zua.no":!0, "tromsa.no":!0, "romsa.no":!0, "trondheim.no":!0, "troandin.no":!0, "trysil.no":!0, "trana.no":!0, "xn--trna-woa.no":!0, "trogstad.no":!0, "xn--trgstad-r1a.no":!0, "tvedestrand.no":!0, "tydal.no":!0, "tynset.no":!0, "tysfjord.no":!0, "divtasvuodna.no":!0, "divttasvuotna.no":!0, "tysnes.no":!0, "tysvar.no":!0, "xn--tysvr-vra.no":!0, "tonsberg.no":!0, "xn--tnsberg-q1a.no":!0, "ullensaker.no":!0, "ullensvang.no":!0, "ulvik.no":!0, "utsira.no":!0, "vadso.no":!0, "xn--vads-jra.no":!0, "cahcesuolo.no":!0, "xn--hcesuolo-7ya35b.no":!0, "vaksdal.no":!0, "valle.no":!0, "vang.no":!0, "vanylven.no":!0, "vardo.no":!0, "xn--vard-jra.no":!0, "varggat.no":!0, "xn--vrggt-xqad.no":!0, "vefsn.no":!0, "vaapste.no":!0, "vega.no":!0, "vegarshei.no":!0, "xn--vegrshei-c0a.no":!0, "vennesla.no":!0, "verdal.no":!0, "verran.no":!0, "vestby.no":!0, "vestnes.no":!0, "vestre-slidre.no":!0, "vestre-toten.no":!0, "vestvagoy.no":!0, "xn--vestvgy-ixa6o.no":!0, "vevelstad.no":!0, "vik.no":!0, "vikna.no":!0, "vindafjord.no":!0, "volda.no":!0, "voss.no":!0, "varoy.no":!0, "xn--vry-yla5g.no":!0, "vagan.no":!0, "xn--vgan-qoa.no":!0, "voagat.no":!0, "vagsoy.no":!0, "xn--vgsy-qoa0j.no":!0, "vaga.no":!0, "xn--vg-yiab.no":!0, "valer.ostfold.no":!0, "xn--vler-qoa.xn--stfold-9xa.no":!0, "valer.hedmark.no":!0, "xn--vler-qoa.hedmark.no":!0, "*.np":!0, "nr":!0, "biz.nr":!0, "info.nr":!0, "gov.nr":!0, "edu.nr":!0, "org.nr":!0, "net.nr":!0, "com.nr":!0, "nu":!0, "nz":!0, "ac.nz":!0, "co.nz":!0, "cri.nz":!0, "geek.nz":!0, "gen.nz":!0, "govt.nz":!0, "health.nz":!0, "iwi.nz":!0, "kiwi.nz":!0, "maori.nz":!0, "mil.nz":!0, "xn--mori-qsa.nz":!0, "net.nz":!0, "org.nz":!0, "parliament.nz":!0, "school.nz":!0, "om":!0, "co.om":!0, "com.om":!0, "edu.om":!0, "gov.om":!0, "med.om":!0, "museum.om":!0, "net.om":!0, "org.om":!0, "pro.om":!0, "org":!0, "pa":!0, "ac.pa":!0, "gob.pa":!0, "com.pa":!0, "org.pa":!0, "sld.pa":!0, "edu.pa":!0, "net.pa":!0, "ing.pa":!0, "abo.pa":!0, "med.pa":!0, "nom.pa":!0, "pe":!0, "edu.pe":!0, "gob.pe":!0, "nom.pe":!0, "mil.pe":!0, "org.pe":!0, "com.pe":!0, "net.pe":!0, "pf":!0, "com.pf":!0, "org.pf":!0, "edu.pf":!0, "*.pg":!0, "ph":!0, "com.ph":!0, "net.ph":!0, "org.ph":!0, "gov.ph":!0, "edu.ph":!0, "ngo.ph":!0, "mil.ph":!0, "i.ph":!0, "pk":!0, "com.pk":!0, "net.pk":!0, "edu.pk":!0, "org.pk":!0, "fam.pk":!0, "biz.pk":!0, "web.pk":!0, "gov.pk":!0, "gob.pk":!0, "gok.pk":!0, "gon.pk":!0, "gop.pk":!0, "gos.pk":!0, "info.pk":!0, "pl":!0, "com.pl":!0, "net.pl":!0, "org.pl":!0, "aid.pl":!0, "agro.pl":!0, "atm.pl":!0, "auto.pl":!0, "biz.pl":!0, "edu.pl":!0, "gmina.pl":!0, "gsm.pl":!0, "info.pl":!0, "mail.pl":!0, "miasta.pl":!0, "media.pl":!0, "mil.pl":!0, "nieruchomosci.pl":!0, "nom.pl":!0, "pc.pl":!0, "powiat.pl":!0, "priv.pl":!0, "realestate.pl":!0, "rel.pl":!0, "sex.pl":!0, "shop.pl":!0, "sklep.pl":!0, "sos.pl":!0, "szkola.pl":!0, "targi.pl":!0, "tm.pl":!0, "tourism.pl":!0, "travel.pl":!0, "turystyka.pl":!0, "gov.pl":!0, "ap.gov.pl":!0, "ic.gov.pl":!0, "is.gov.pl":!0, "us.gov.pl":!0, "kmpsp.gov.pl":!0, "kppsp.gov.pl":!0, "kwpsp.gov.pl":!0, "psp.gov.pl":!0, "wskr.gov.pl":!0, "kwp.gov.pl":!0, "mw.gov.pl":!0, "ug.gov.pl":!0, "um.gov.pl":!0, "umig.gov.pl":!0, "ugim.gov.pl":!0, "upow.gov.pl":!0, "uw.gov.pl":!0, "starostwo.gov.pl":!0, "pa.gov.pl":!0, "po.gov.pl":!0, "psse.gov.pl":!0, "pup.gov.pl":!0, "rzgw.gov.pl":!0, "sa.gov.pl":!0, "so.gov.pl":!0, "sr.gov.pl":!0, "wsa.gov.pl":!0, "sko.gov.pl":!0, "uzs.gov.pl":!0, "wiih.gov.pl":!0, "winb.gov.pl":!0, "pinb.gov.pl":!0, "wios.gov.pl":!0, "witd.gov.pl":!0, "wzmiuw.gov.pl":!0, "piw.gov.pl":!0, "wiw.gov.pl":!0, "griw.gov.pl":!0, "wif.gov.pl":!0, "oum.gov.pl":!0, "sdn.gov.pl":!0, "zp.gov.pl":!0, "uppo.gov.pl":!0, "mup.gov.pl":!0, "wuoz.gov.pl":!0, "konsulat.gov.pl":!0, "oirm.gov.pl":!0, "augustow.pl":!0, "babia-gora.pl":!0, "bedzin.pl":!0, "beskidy.pl":!0, "bialowieza.pl":!0, "bialystok.pl":!0, "bielawa.pl":!0, "bieszczady.pl":!0, "boleslawiec.pl":!0, "bydgoszcz.pl":!0, "bytom.pl":!0, "cieszyn.pl":!0, "czeladz.pl":!0, "czest.pl":!0, "dlugoleka.pl":!0, "elblag.pl":!0, "elk.pl":!0, "glogow.pl":!0, "gniezno.pl":!0, "gorlice.pl":!0, "grajewo.pl":!0, "ilawa.pl":!0, "jaworzno.pl":!0, "jelenia-gora.pl":!0, "jgora.pl":!0, "kalisz.pl":!0, "kazimierz-dolny.pl":!0, "karpacz.pl":!0, "kartuzy.pl":!0, "kaszuby.pl":!0, "katowice.pl":!0, "kepno.pl":!0, "ketrzyn.pl":!0, "klodzko.pl":!0, "kobierzyce.pl":!0, "kolobrzeg.pl":!0, "konin.pl":!0, "konskowola.pl":!0, "kutno.pl":!0, "lapy.pl":!0, "lebork.pl":!0, "legnica.pl":!0, "lezajsk.pl":!0, "limanowa.pl":!0, "lomza.pl":!0, "lowicz.pl":!0, "lubin.pl":!0, "lukow.pl":!0, "malbork.pl":!0, "malopolska.pl":!0, "mazowsze.pl":!0, "mazury.pl":!0, "mielec.pl":!0, "mielno.pl":!0, "mragowo.pl":!0, "naklo.pl":!0, "nowaruda.pl":!0, "nysa.pl":!0, "olawa.pl":!0, "olecko.pl":!0, "olkusz.pl":!0, "olsztyn.pl":!0, "opoczno.pl":!0, "opole.pl":!0, "ostroda.pl":!0, "ostroleka.pl":!0, "ostrowiec.pl":!0, "ostrowwlkp.pl":!0, "pila.pl":!0, "pisz.pl":!0, "podhale.pl":!0, "podlasie.pl":!0, "polkowice.pl":!0, "pomorze.pl":!0, "pomorskie.pl":!0, "prochowice.pl":!0, "pruszkow.pl":!0, "przeworsk.pl":!0, "pulawy.pl":!0, "radom.pl":!0, "rawa-maz.pl":!0, "rybnik.pl":!0, "rzeszow.pl":!0, "sanok.pl":!0, "sejny.pl":!0, "slask.pl":!0, "slupsk.pl":!0, "sosnowiec.pl":!0, "stalowa-wola.pl":!0, "skoczow.pl":!0, "starachowice.pl":!0, "stargard.pl":!0, "suwalki.pl":!0, "swidnica.pl":!0, "swiebodzin.pl":!0, "swinoujscie.pl":!0, "szczecin.pl":!0, "szczytno.pl":!0, "tarnobrzeg.pl":!0, "tgory.pl":!0, "turek.pl":!0, "tychy.pl":!0, "ustka.pl":!0, "walbrzych.pl":!0, "warmia.pl":!0, "warszawa.pl":!0, "waw.pl":!0, "wegrow.pl":!0, "wielun.pl":!0, "wlocl.pl":!0, "wloclawek.pl":!0, "wodzislaw.pl":!0, "wolomin.pl":!0, "wroclaw.pl":!0, "zachpomor.pl":!0, "zagan.pl":!0, "zarow.pl":!0, "zgora.pl":!0, "zgorzelec.pl":!0, "pm":!0, "pn":!0, "gov.pn":!0, "co.pn":!0, "org.pn":!0, "edu.pn":!0, "net.pn":!0, "post":!0, "pr":!0, "com.pr":!0, "net.pr":!0, "org.pr":!0, "gov.pr":!0, "edu.pr":!0, "isla.pr":!0, "pro.pr":!0, "biz.pr":!0, "info.pr":!0, "name.pr":!0, "est.pr":!0, "prof.pr":!0, "ac.pr":!0, "pro":!0, "aaa.pro":!0, "aca.pro":!0, "acct.pro":!0, "avocat.pro":!0, "bar.pro":!0, "cpa.pro":!0, "eng.pro":!0, "jur.pro":!0, "law.pro":!0, "med.pro":!0, "recht.pro":!0, "ps":!0, "edu.ps":!0, "gov.ps":!0, "sec.ps":!0, "plo.ps":!0, "com.ps":!0, "org.ps":!0, "net.ps":!0, "pt":!0, "net.pt":!0, "gov.pt":!0, "org.pt":!0, "edu.pt":!0, "int.pt":!0, "publ.pt":!0, "com.pt":!0, "nome.pt":!0, "pw":!0, "co.pw":!0, "ne.pw":!0, "or.pw":!0, "ed.pw":!0, "go.pw":!0, "belau.pw":!0, "py":!0, "com.py":!0, "coop.py":!0, "edu.py":!0, "gov.py":!0, "mil.py":!0, "net.py":!0, "org.py":!0, "qa":!0, "com.qa":!0, "edu.qa":!0, "gov.qa":!0, "mil.qa":!0, "name.qa":!0, "net.qa":!0, "org.qa":!0, "sch.qa":!0, "re":!0, "asso.re":!0, "com.re":!0, "nom.re":!0, "ro":!0, "arts.ro":!0, "com.ro":!0, "firm.ro":!0, "info.ro":!0, "nom.ro":!0, "nt.ro":!0, "org.ro":!0, "rec.ro":!0, "store.ro":!0, "tm.ro":!0, "www.ro":!0, "rs":!0, "ac.rs":!0, "co.rs":!0, "edu.rs":!0, "gov.rs":!0, "in.rs":!0, "org.rs":!0, "ru":!0, "ac.ru":!0, "com.ru":!0, "edu.ru":!0, "int.ru":!0, "net.ru":!0, "org.ru":!0, "pp.ru":!0, "adygeya.ru":!0, "altai.ru":!0, "amur.ru":!0, "arkhangelsk.ru":!0, "astrakhan.ru":!0, "bashkiria.ru":!0, "belgorod.ru":!0, "bir.ru":!0, "bryansk.ru":!0, "buryatia.ru":!0, "cbg.ru":!0, "chel.ru":!0, "chelyabinsk.ru":!0, "chita.ru":!0, "chukotka.ru":!0, "chuvashia.ru":!0, "dagestan.ru":!0, "dudinka.ru":!0, "e-burg.ru":!0, "grozny.ru":!0, "irkutsk.ru":!0, "ivanovo.ru":!0, "izhevsk.ru":!0, "jar.ru":!0, "joshkar-ola.ru":!0, "kalmykia.ru":!0, "kaluga.ru":!0, "kamchatka.ru":!0, "karelia.ru":!0, "kazan.ru":!0, "kchr.ru":!0, "kemerovo.ru":!0, "khabarovsk.ru":!0, "khakassia.ru":!0, "khv.ru":!0, "kirov.ru":!0, "koenig.ru":!0, "komi.ru":!0, "kostroma.ru":!0, "krasnoyarsk.ru":!0, "kuban.ru":!0, "kurgan.ru":!0, "kursk.ru":!0, "lipetsk.ru":!0, "magadan.ru":!0, "mari.ru":!0, "mari-el.ru":!0, "marine.ru":!0, "mordovia.ru":!0, "msk.ru":!0, "murmansk.ru":!0, "nalchik.ru":!0, "nnov.ru":!0, "nov.ru":!0, "novosibirsk.ru":!0, "nsk.ru":!0, "omsk.ru":!0, "orenburg.ru":!0, "oryol.ru":!0, "palana.ru":!0, "penza.ru":!0, "perm.ru":!0, "ptz.ru":!0, "rnd.ru":!0, "ryazan.ru":!0, "sakhalin.ru":!0, "samara.ru":!0, "saratov.ru":!0, "simbirsk.ru":!0, "smolensk.ru":!0, "spb.ru":!0, "stavropol.ru":!0, "stv.ru":!0, "surgut.ru":!0, "tambov.ru":!0, "tatarstan.ru":!0, "tom.ru":!0, "tomsk.ru":!0, "tsaritsyn.ru":!0, "tsk.ru":!0, "tula.ru":!0, "tuva.ru":!0, "tver.ru":!0, "tyumen.ru":!0, "udm.ru":!0, "udmurtia.ru":!0, "ulan-ude.ru":!0, "vladikavkaz.ru":!0, "vladimir.ru":!0, "vladivostok.ru":!0, "volgograd.ru":!0, "vologda.ru":!0, "voronezh.ru":!0, "vrn.ru":!0, "vyatka.ru":!0, "yakutia.ru":!0, "yamal.ru":!0, "yaroslavl.ru":!0, "yekaterinburg.ru":!0, "yuzhno-sakhalinsk.ru":!0, "amursk.ru":!0, "baikal.ru":!0, "cmw.ru":!0, "fareast.ru":!0, "jamal.ru":!0, "kms.ru":!0, "k-uralsk.ru":!0, "kustanai.ru":!0, "kuzbass.ru":!0, "mytis.ru":!0, "nakhodka.ru":!0, "nkz.ru":!0, "norilsk.ru":!0, "oskol.ru":!0, "pyatigorsk.ru":!0, "rubtsovsk.ru":!0, "snz.ru":!0, "syzran.ru":!0, "vdonsk.ru":!0, "zgrad.ru":!0, "gov.ru":!0, "mil.ru":!0, "test.ru":!0, "rw":!0, "gov.rw":!0, "net.rw":!0, "edu.rw":!0, "ac.rw":!0, "com.rw":!0, "co.rw":!0, "int.rw":!0, "mil.rw":!0, "gouv.rw":!0, "sa":!0, "com.sa":!0, "net.sa":!0, "org.sa":!0, "gov.sa":!0, "med.sa":!0, "pub.sa":!0, "edu.sa":!0, "sch.sa":!0, "sb":!0, "com.sb":!0, "edu.sb":!0, "gov.sb":!0, "net.sb":!0, "org.sb":!0, "sc":!0, "com.sc":!0, "gov.sc":!0, "net.sc":!0, "org.sc":!0, "edu.sc":!0, "sd":!0, "com.sd":!0, "net.sd":!0, "org.sd":!0, "edu.sd":!0, "med.sd":!0, "tv.sd":!0, "gov.sd":!0, "info.sd":!0, "se":!0, "a.se":!0, "ac.se":!0, "b.se":!0, "bd.se":!0, "brand.se":!0, "c.se":!0, "d.se":!0, "e.se":!0, "f.se":!0, "fh.se":!0, "fhsk.se":!0, "fhv.se":!0, "g.se":!0, "h.se":!0, "i.se":!0, "k.se":!0, "komforb.se":!0, "kommunalforbund.se":!0, "komvux.se":!0, "l.se":!0, "lanbib.se":!0, "m.se":!0, "n.se":!0, "naturbruksgymn.se":!0, "o.se":!0, "org.se":!0, "p.se":!0, "parti.se":!0, "pp.se":!0, "press.se":!0, "r.se":!0, "s.se":!0, "t.se":!0, "tm.se":!0, "u.se":!0, "w.se":!0, "x.se":!0, "y.se":!0, "z.se":!0, "sg":!0, "com.sg":!0, "net.sg":!0, "org.sg":!0, "gov.sg":!0, "edu.sg":!0, "per.sg":!0, "sh":!0, "com.sh":!0, "net.sh":!0, "gov.sh":!0, "org.sh":!0, "mil.sh":!0, "si":!0, "sj":!0, "sk":!0, "sl":!0, "com.sl":!0, "net.sl":!0, "edu.sl":!0, "gov.sl":!0, "org.sl":!0, "sm":!0, "sn":!0, "art.sn":!0, "com.sn":!0, "edu.sn":!0, "gouv.sn":!0, "org.sn":!0, "perso.sn":!0, "univ.sn":!0, "so":!0, "com.so":!0, "net.so":!0, "org.so":!0, "sr":!0, "st":!0, "co.st":!0, "com.st":!0, "consulado.st":!0, "edu.st":!0, "embaixada.st":!0, "gov.st":!0, "mil.st":!0, "net.st":!0, "org.st":!0, "principe.st":!0, "saotome.st":!0, "store.st":!0, "su":!0, "adygeya.su":!0, "arkhangelsk.su":!0, "balashov.su":!0, "bashkiria.su":!0, "bryansk.su":!0, "dagestan.su":!0, "grozny.su":!0, "ivanovo.su":!0, "kalmykia.su":!0, "kaluga.su":!0, "karelia.su":!0, "khakassia.su":!0, "krasnodar.su":!0, "kurgan.su":!0, "lenug.su":!0, "mordovia.su":!0, "msk.su":!0, "murmansk.su":!0, "nalchik.su":!0, "nov.su":!0, "obninsk.su":!0, "penza.su":!0, "pokrovsk.su":!0, "sochi.su":!0, "spb.su":!0, "togliatti.su":!0, "troitsk.su":!0, "tula.su":!0, "tuva.su":!0, "vladikavkaz.su":!0, "vladimir.su":!0, "vologda.su":!0, "sv":!0, "com.sv":!0, "edu.sv":!0, "gob.sv":!0, "org.sv":!0, "red.sv":!0, "sx":!0, "gov.sx":!0, "sy":!0, "edu.sy":!0, "gov.sy":!0, "net.sy":!0, "mil.sy":!0, "com.sy":!0, "org.sy":!0, "sz":!0, "co.sz":!0, "ac.sz":!0, "org.sz":!0, "tc":!0, "td":!0, "tel":!0, "tf":!0, "tg":!0, "th":!0, "ac.th":!0, "co.th":!0, "go.th":!0, "in.th":!0, "mi.th":!0, "net.th":!0, "or.th":!0, "tj":!0, "ac.tj":!0, "biz.tj":!0, "co.tj":!0, "com.tj":!0, "edu.tj":!0, "go.tj":!0, "gov.tj":!0, "int.tj":!0, "mil.tj":!0, "name.tj":!0, "net.tj":!0, "nic.tj":!0, "org.tj":!0, "test.tj":!0, "web.tj":!0, "tk":!0, "tl":!0, "gov.tl":!0, "tm":!0, "com.tm":!0, "co.tm":!0, "org.tm":!0, "net.tm":!0, "nom.tm":!0, "gov.tm":!0, "mil.tm":!0, "edu.tm":!0, "tn":!0, "com.tn":!0, "ens.tn":!0, "fin.tn":!0, "gov.tn":!0, "ind.tn":!0, "intl.tn":!0, "nat.tn":!0, "net.tn":!0, "org.tn":!0, "info.tn":!0, "perso.tn":!0, "tourism.tn":!0, "edunet.tn":!0, "rnrt.tn":!0, "rns.tn":!0, "rnu.tn":!0, "mincom.tn":!0, "agrinet.tn":!0, "defense.tn":!0, "turen.tn":!0, "to":!0, "com.to":!0, "gov.to":!0, "net.to":!0, "org.to":!0, "edu.to":!0, "mil.to":!0, "tr":!0, "com.tr":!0, "info.tr":!0, "biz.tr":!0, "net.tr":!0, "org.tr":!0, "web.tr":!0, "gen.tr":!0, "tv.tr":!0, "av.tr":!0, "dr.tr":!0, "bbs.tr":!0, "name.tr":!0, "tel.tr":!0, "gov.tr":!0, "bel.tr":!0, "pol.tr":!0, "mil.tr":!0, "k12.tr":!0, "edu.tr":!0, "kep.tr":!0, "nc.tr":!0, "gov.nc.tr":!0, "travel":!0, "tt":!0, "co.tt":!0, "com.tt":!0, "org.tt":!0, "net.tt":!0, "biz.tt":!0, "info.tt":!0, "pro.tt":!0, "int.tt":!0, "coop.tt":!0, "jobs.tt":!0, "mobi.tt":!0, "travel.tt":!0, "museum.tt":!0, "aero.tt":!0, "name.tt":!0, "gov.tt":!0, "edu.tt":!0, "tv":!0, "tw":!0, "edu.tw":!0, "gov.tw":!0, "mil.tw":!0, "com.tw":!0, "net.tw":!0, "org.tw":!0, "idv.tw":!0, "game.tw":!0, "ebiz.tw":!0, "club.tw":!0, "xn--zf0ao64a.tw":!0, "xn--uc0atv.tw":!0, "xn--czrw28b.tw":!0, "tz":!0, "ac.tz":!0, "co.tz":!0, "go.tz":!0, "hotel.tz":!0, "info.tz":!0, "me.tz":!0, "mil.tz":!0, "mobi.tz":!0, "ne.tz":!0, "or.tz":!0, "sc.tz":!0, "tv.tz":!0, "ua":!0, "com.ua":!0, "edu.ua":!0, "gov.ua":!0, "in.ua":!0, "net.ua":!0, "org.ua":!0, "cherkassy.ua":!0, "cherkasy.ua":!0, "chernigov.ua":!0, "chernihiv.ua":!0, "chernivtsi.ua":!0, "chernovtsy.ua":!0, "ck.ua":!0, "cn.ua":!0, "cr.ua":!0, "crimea.ua":!0, "cv.ua":!0, "dn.ua":!0, "dnepropetrovsk.ua":!0, "dnipropetrovsk.ua":!0, "dominic.ua":!0, "donetsk.ua":!0, "dp.ua":!0, "if.ua":!0, "ivano-frankivsk.ua":!0, "kh.ua":!0, "kharkiv.ua":!0, "kharkov.ua":!0, "kherson.ua":!0, "khmelnitskiy.ua":!0, "khmelnytskyi.ua":!0, "kiev.ua":!0, "kirovograd.ua":!0, "km.ua":!0, "kr.ua":!0, "krym.ua":!0, "ks.ua":!0, "kv.ua":!0, "kyiv.ua":!0, "lg.ua":!0, "lt.ua":!0, "lugansk.ua":!0, "lutsk.ua":!0, "lv.ua":!0, "lviv.ua":!0, "mk.ua":!0, "mykolaiv.ua":!0, "nikolaev.ua":!0, "od.ua":!0, "odesa.ua":!0, "odessa.ua":!0, "pl.ua":!0, "poltava.ua":!0, "rivne.ua":!0, "rovno.ua":!0, "rv.ua":!0, "sb.ua":!0, "sebastopol.ua":!0, "sevastopol.ua":!0, "sm.ua":!0, "sumy.ua":!0, "te.ua":!0, "ternopil.ua":!0, "uz.ua":!0, "uzhgorod.ua":!0, "vinnica.ua":!0, "vinnytsia.ua":!0, "vn.ua":!0, "volyn.ua":!0, "yalta.ua":!0, "zaporizhzhe.ua":!0, "zaporizhzhia.ua":!0, "zhitomir.ua":!0, "zhytomyr.ua":!0, "zp.ua":!0, "zt.ua":!0, "ug":!0, "co.ug":!0, "or.ug":!0, "ac.ug":!0, "sc.ug":!0, "go.ug":!0, "ne.ug":!0, "com.ug":!0, "org.ug":!0, "uk":!0, "ac.uk":!0, "co.uk":!0, "gov.uk":!0, "ltd.uk":!0, "me.uk":!0, "net.uk":!0, "nhs.uk":!0, "org.uk":!0, "plc.uk":!0, "police.uk":!0, "*.sch.uk":!0, "us":!0, "dni.us":!0, "fed.us":!0, "isa.us":!0, "kids.us":!0, "nsn.us":!0, "ak.us":!0, "al.us":!0, "ar.us":!0, "as.us":!0, "az.us":!0, "ca.us":!0, "co.us":!0, "ct.us":!0, "dc.us":!0, "de.us":!0, "fl.us":!0, "ga.us":!0, "gu.us":!0, "hi.us":!0, "ia.us":!0, "id.us":!0, "il.us":!0, "in.us":!0, "ks.us":!0, "ky.us":!0, "la.us":!0, "ma.us":!0, "md.us":!0, "me.us":!0, "mi.us":!0, "mn.us":!0, "mo.us":!0, "ms.us":!0, "mt.us":!0, "nc.us":!0, "nd.us":!0, "ne.us":!0, "nh.us":!0, "nj.us":!0, "nm.us":!0, "nv.us":!0, "ny.us":!0, "oh.us":!0, "ok.us":!0, "or.us":!0, "pa.us":!0, "pr.us":!0, "ri.us":!0, "sc.us":!0, "sd.us":!0, "tn.us":!0, "tx.us":!0, "ut.us":!0, "vi.us":!0, "vt.us":!0, "va.us":!0, "wa.us":!0, "wi.us":!0, "wv.us":!0, "wy.us":!0, "k12.ak.us":!0, "k12.al.us":!0, "k12.ar.us":!0, "k12.as.us":!0, "k12.az.us":!0, "k12.ca.us":!0, "k12.co.us":!0, "k12.ct.us":!0, "k12.dc.us":!0, "k12.de.us":!0, "k12.fl.us":!0, "k12.ga.us":!0, "k12.gu.us":!0, "k12.ia.us":!0, "k12.id.us":!0, "k12.il.us":!0, "k12.in.us":!0, "k12.ks.us":!0, "k12.ky.us":!0, "k12.la.us":!0, "k12.ma.us":!0, "k12.md.us":!0, "k12.me.us":!0, "k12.mi.us":!0, "k12.mn.us":!0, "k12.mo.us":!0, "k12.ms.us":!0, "k12.mt.us":!0, "k12.nc.us":!0, "k12.ne.us":!0, "k12.nh.us":!0, "k12.nj.us":!0, "k12.nm.us":!0, "k12.nv.us":!0, "k12.ny.us":!0, "k12.oh.us":!0, "k12.ok.us":!0, "k12.or.us":!0, "k12.pa.us":!0, "k12.pr.us":!0, "k12.ri.us":!0, "k12.sc.us":!0, "k12.tn.us":!0, "k12.tx.us":!0, "k12.ut.us":!0, "k12.vi.us":!0, "k12.vt.us":!0, "k12.va.us":!0, "k12.wa.us":!0, "k12.wi.us":!0, "k12.wy.us":!0, "cc.ak.us":!0, "cc.al.us":!0, "cc.ar.us":!0, "cc.as.us":!0, "cc.az.us":!0, "cc.ca.us":!0, "cc.co.us":!0, "cc.ct.us":!0, "cc.dc.us":!0, "cc.de.us":!0, "cc.fl.us":!0, "cc.ga.us":!0, "cc.gu.us":!0, "cc.hi.us":!0, "cc.ia.us":!0, "cc.id.us":!0, "cc.il.us":!0, "cc.in.us":!0, "cc.ks.us":!0, "cc.ky.us":!0, "cc.la.us":!0, "cc.ma.us":!0, "cc.md.us":!0, "cc.me.us":!0, "cc.mi.us":!0, "cc.mn.us":!0, "cc.mo.us":!0, "cc.ms.us":!0, "cc.mt.us":!0, "cc.nc.us":!0, "cc.nd.us":!0, "cc.ne.us":!0, "cc.nh.us":!0, "cc.nj.us":!0, "cc.nm.us":!0, "cc.nv.us":!0, "cc.ny.us":!0, "cc.oh.us":!0, "cc.ok.us":!0, "cc.or.us":!0, "cc.pa.us":!0, "cc.pr.us":!0, "cc.ri.us":!0, "cc.sc.us":!0, "cc.sd.us":!0, "cc.tn.us":!0, "cc.tx.us":!0, "cc.ut.us":!0, "cc.vi.us":!0, "cc.vt.us":!0, "cc.va.us":!0, "cc.wa.us":!0, "cc.wi.us":!0, "cc.wv.us":!0, "cc.wy.us":!0, "lib.ak.us":!0, "lib.al.us":!0, "lib.ar.us":!0, "lib.as.us":!0, "lib.az.us":!0, "lib.ca.us":!0, "lib.co.us":!0, "lib.ct.us":!0, "lib.dc.us":!0, "lib.fl.us":!0, "lib.ga.us":!0, "lib.gu.us":!0, "lib.hi.us":!0, "lib.ia.us":!0, "lib.id.us":!0, "lib.il.us":!0, "lib.in.us":!0, "lib.ks.us":!0, "lib.ky.us":!0, "lib.la.us":!0, "lib.ma.us":!0, "lib.md.us":!0, "lib.me.us":!0, "lib.mi.us":!0, "lib.mn.us":!0, "lib.mo.us":!0, "lib.ms.us":!0, "lib.mt.us":!0, "lib.nc.us":!0, "lib.nd.us":!0, "lib.ne.us":!0, "lib.nh.us":!0, "lib.nj.us":!0, "lib.nm.us":!0, "lib.nv.us":!0, "lib.ny.us":!0, "lib.oh.us":!0, "lib.ok.us":!0, "lib.or.us":!0, "lib.pa.us":!0, "lib.pr.us":!0, "lib.ri.us":!0, "lib.sc.us":!0, "lib.sd.us":!0, "lib.tn.us":!0, "lib.tx.us":!0, "lib.ut.us":!0, "lib.vi.us":!0, "lib.vt.us":!0, "lib.va.us":!0, "lib.wa.us":!0, "lib.wi.us":!0, "lib.wy.us":!0, "pvt.k12.ma.us":!0, "chtr.k12.ma.us":!0, "paroch.k12.ma.us":!0, "uy":!0, "com.uy":!0, "edu.uy":!0, "gub.uy":!0, "mil.uy":!0, "net.uy":!0, "org.uy":!0, "uz":!0, "co.uz":!0, "com.uz":!0, "net.uz":!0, "org.uz":!0, "va":!0, "vc":!0, "com.vc":!0, "net.vc":!0, "org.vc":!0, "gov.vc":!0, "mil.vc":!0, "edu.vc":!0, "ve":!0, "arts.ve":!0, "co.ve":!0, "com.ve":!0, "e12.ve":!0, "edu.ve":!0, "firm.ve":!0, "gob.ve":!0, "gov.ve":!0, "info.ve":!0, "int.ve":!0, "mil.ve":!0, "net.ve":!0, "org.ve":!0, "rec.ve":!0, "store.ve":!0, "tec.ve":!0, "web.ve":!0, "vg":!0, "vi":!0, "co.vi":!0, "com.vi":!0, "k12.vi":!0, "net.vi":!0, "org.vi":!0, "vn":!0, "com.vn":!0, "net.vn":!0, "org.vn":!0, "edu.vn":!0, "gov.vn":!0, "int.vn":!0, "ac.vn":!0, "biz.vn":!0, "info.vn":!0, "name.vn":!0, "pro.vn":!0, "health.vn":!0, "vu":!0, "com.vu":!0, "edu.vu":!0, "net.vu":!0, "org.vu":!0, "wf":!0, "ws":!0, "com.ws":!0, "net.ws":!0, "org.ws":!0, "gov.ws":!0, "edu.ws":!0, "yt":!0, "xn--mgbaam7a8h":!0, "xn--y9a3aq":!0, "xn--54b7fta0cc":!0, "xn--90ais":!0, "xn--fiqs8s":!0, "xn--fiqz9s":!0, "xn--lgbbat1ad8j":!0, "xn--wgbh1c":!0, "xn--e1a4c":!0, "xn--node":!0, "xn--qxam":!0, "xn--j6w193g":!0, "xn--h2brj9c":!0, "xn--mgbbh1a71e":!0, "xn--fpcrj9c3d":!0, "xn--gecrj9c":!0, "xn--s9brj9c":!0, "xn--45brj9c":!0, "xn--xkc2dl3a5ee0h":!0, "xn--mgba3a4f16a":!0, "xn--mgba3a4fra":!0, "xn--mgbtx2b":!0, "xn--mgbayh7gpa":!0, "xn--3e0b707e":!0, "xn--80ao21a":!0, "xn--fzc2c9e2c":!0, "xn--xkc2al3hye2a":!0, "xn--mgbc0a9azcg":!0, "xn--d1alf":!0, "xn--l1acc":!0, "xn--mix891f":!0, "xn--mix082f":!0, "xn--mgbx4cd0ab":!0, "xn--mgb9awbf":!0, "xn--mgbai9azgqp6j":!0, "xn--mgbai9a5eva00b":!0, "xn--ygbi2ammx":!0, "xn--90a3ac":!0, "xn--o1ac.xn--90a3ac":!0, "xn--c1avg.xn--90a3ac":!0, "xn--90azh.xn--90a3ac":!0, "xn--d1at.xn--90a3ac":!0, "xn--o1ach.xn--90a3ac":!0, "xn--80au.xn--90a3ac":!0, "xn--p1ai":!0, "xn--wgbl6a":!0, "xn--mgberp4a5d4ar":!0, "xn--mgberp4a5d4a87g":!0, "xn--mgbqly7c0a67fbc":!0, "xn--mgbqly7cvafr":!0, "xn--mgbpl2fh":!0, "xn--yfro4i67o":!0, "xn--clchc0ea0b2g2a9gcd":!0, "xn--ogbpf8fl":!0, "xn--mgbtf8fl":!0, "xn--o3cw4h":!0, "xn--pgbs0dh":!0, "xn--kpry57d":!0, "xn--kprw13d":!0, "xn--nnx388a":!0, "xn--j1amh":!0, "xn--mgb2ddes":!0, "xxx":!0, "*.ye":!0, "ac.za":!0, "agric.za":!0, "alt.za":!0, "co.za":!0, "edu.za":!0, "gov.za":!0, "grondar.za":!0, "law.za":!0, "mil.za":!0, "net.za":!0, "ngo.za":!0, "nis.za":!0, "nom.za":!0, "org.za":!0, "school.za":!0, "tm.za":!0, "web.za":!0, "zm":!0, "ac.zm":!0, "biz.zm":!0, "co.zm":!0, "com.zm":!0, "edu.zm":!0, "gov.zm":!0, "info.zm":!0, "mil.zm":!0, "net.zm":!0, "org.zm":!0, "sch.zm":!0, "*.zw":!0, "aaa":!0, "aarp":!0, "abarth":!0, "abb":!0, "abbott":!0, "abbvie":!0, "abc":!0, "able":!0, "abogado":!0, "abudhabi":!0, "academy":!0, "accenture":!0, "accountant":!0, "accountants":!0, "aco":!0, "active":!0, "actor":!0, "adac":!0, "ads":!0, "adult":!0, "aeg":!0, "aetna":!0, "afamilycompany":!0, "afl":!0, "africa":!0, "agakhan":!0, "agency":!0, "aig":!0, "aigo":!0, "airbus":!0, "airforce":!0, "airtel":!0, "akdn":!0, "alfaromeo":!0, "alibaba":!0, "alipay":!0, "allfinanz":!0, "allstate":!0, "ally":!0, "alsace":!0, "alstom":!0, "americanexpress":!0, "americanfamily":!0, "amex":!0, "amfam":!0, "amica":!0, "amsterdam":!0, "analytics":!0, "android":!0, "anquan":!0, "anz":!0, "aol":!0, "apartments":!0, "app":!0, "apple":!0, "aquarelle":!0, "arab":!0, "aramco":!0, "archi":!0, "army":!0, "art":!0, "arte":!0, "asda":!0, "associates":!0, "athleta":!0, "attorney":!0, "auction":!0, "audi":!0, "audible":!0, "audio":!0, "auspost":!0, "author":!0, "auto":!0, "autos":!0, "avianca":!0, "aws":!0, "axa":!0, "azure":!0, "baby":!0, "baidu":!0, "banamex":!0, "bananarepublic":!0, "band":!0, "bank":!0, "bar":!0, "barcelona":!0, "barclaycard":!0, "barclays":!0, "barefoot":!0, "bargains":!0, "baseball":!0, "basketball":!0, "bauhaus":!0, "bayern":!0, "bbc":!0, "bbt":!0, "bbva":!0, "bcg":!0, "bcn":!0, "beats":!0, "beauty":!0, "beer":!0, "bentley":!0, "berlin":!0, "best":!0, "bestbuy":!0, "bet":!0, "bharti":!0, "bible":!0, "bid":!0, "bike":!0, "bing":!0, "bingo":!0, "bio":!0, "black":!0, "blackfriday":!0, "blanco":!0, "blockbuster":!0, "blog":!0, "bloomberg":!0, "blue":!0, "bms":!0, "bmw":!0, "bnl":!0, "bnpparibas":!0, "boats":!0, "boehringer":!0, "bofa":!0, "bom":!0, "bond":!0, "boo":!0, "book":!0, "booking":!0, "boots":!0, "bosch":!0, "bostik":!0, "boston":!0, "bot":!0, "boutique":!0, "box":!0, "bradesco":!0, "bridgestone":!0, "broadway":!0, "broker":!0, "brother":!0, "brussels":!0, "budapest":!0, "bugatti":!0, "build":!0, "builders":!0, "business":!0, "buy":!0, "buzz":!0, "bzh":!0, "cab":!0, "cafe":!0, "cal":!0, "call":!0, "calvinklein":!0, "cam":!0, "camera":!0, "camp":!0, "cancerresearch":!0, "canon":!0, "capetown":!0, "capital":!0, "capitalone":!0, "car":!0, "caravan":!0, "cards":!0, "care":!0, "career":!0, "careers":!0, "cars":!0, "cartier":!0, "casa":!0, "case":!0, "caseih":!0, "cash":!0, "casino":!0, "catering":!0, "catholic":!0, "cba":!0, "cbn":!0, "cbre":!0, "cbs":!0, "ceb":!0, "center":!0, "ceo":!0, "cern":!0, "cfa":!0, "cfd":!0, "chanel":!0, "channel":!0, "chase":!0, "chat":!0, "cheap":!0, "chintai":!0, "chloe":!0, "christmas":!0, "chrome":!0, "chrysler":!0, "church":!0, "cipriani":!0, "circle":!0, "cisco":!0, "citadel":!0, "citi":!0, "citic":!0, "city":!0, "cityeats":!0, "claims":!0, "cleaning":!0, "click":!0, "clinic":!0, "clinique":!0, "clothing":!0, "cloud":!0, "club":!0, "clubmed":!0, "coach":!0, "codes":!0, "coffee":!0, "college":!0, "cologne":!0, "comcast":!0, "commbank":!0, "community":!0, "company":!0, "compare":!0, "computer":!0, "comsec":!0, "condos":!0, "construction":!0, "consulting":!0, "contact":!0, "contractors":!0, "cooking":!0, "cookingchannel":!0, "cool":!0, "corsica":!0, "country":!0, "coupon":!0, "coupons":!0, "courses":!0, "credit":!0, "creditcard":!0, "creditunion":!0, "cricket":!0, "crown":!0, "crs":!0, "cruise":!0, "cruises":!0, "csc":!0, "cuisinella":!0, "cymru":!0, "cyou":!0, "dabur":!0, "dad":!0, "dance":!0, "data":!0, "date":!0, "dating":!0, "datsun":!0, "day":!0, "dclk":!0, "dds":!0, "deal":!0, "dealer":!0, "deals":!0, "degree":!0, "delivery":!0, "dell":!0, "deloitte":!0, "delta":!0, "democrat":!0, "dental":!0, "dentist":!0, "desi":!0, "design":!0, "dev":!0, "dhl":!0, "diamonds":!0, "diet":!0, "digital":!0, "direct":!0, "directory":!0, "discount":!0, "discover":!0, "dish":!0, "diy":!0, "dnp":!0, "docs":!0, "doctor":!0, "dodge":!0, "dog":!0, "doha":!0, "domains":!0, "dot":!0, "download":!0, "drive":!0, "dtv":!0, "dubai":!0, "duck":!0, "dunlop":!0, "duns":!0, "dupont":!0, "durban":!0, "dvag":!0, "dvr":!0, "dwg":!0, "earth":!0, "eat":!0, "eco":!0, "edeka":!0, "education":!0, "email":!0, "emerck":!0, "emerson":!0, "energy":!0, "engineer":!0, "engineering":!0, "enterprises":!0, "epost":!0, "epson":!0, "equipment":!0, "ericsson":!0, "erni":!0, "esq":!0, "estate":!0, "esurance":!0, "etisalat":!0, "eurovision":!0, "eus":!0, "events":!0, "everbank":!0, "exchange":!0, "expert":!0, "exposed":!0, "express":!0, "extraspace":!0, "fage":!0, "fail":!0, "fairwinds":!0, "faith":!0, "family":!0, "fan":!0, "fans":!0, "farm":!0, "farmers":!0, "fashion":!0, "fast":!0, "fedex":!0, "feedback":!0, "ferrari":!0, "ferrero":!0, "fiat":!0, "fidelity":!0, "fido":!0, "film":!0, "final":!0, "finance":!0, "financial":!0, "fire":!0, "firestone":!0, "firmdale":!0, "fish":!0, "fishing":!0, "fit":!0, "fitness":!0, "flickr":!0, "flights":!0, "flir":!0, "florist":!0, "flowers":!0, "fly":!0, "foo":!0, "food":!0, "foodnetwork":!0, "football":!0, "ford":!0, "forex":!0, "forsale":!0, "forum":!0, "foundation":!0, "fox":!0, "free":!0, "fresenius":!0, "frl":!0, "frogans":!0, "frontdoor":!0, "frontier":!0, "ftr":!0, "fujitsu":!0, "fujixerox":!0, "fun":!0, "fund":!0, "furniture":!0, "futbol":!0, "fyi":!0, "gal":!0, "gallery":!0, "gallo":!0, "gallup":!0, "game":!0, "games":!0, "gap":!0, "garden":!0, "gbiz":!0, "gdn":!0, "gea":!0, "gent":!0, "genting":!0, "george":!0, "ggee":!0, "gift":!0, "gifts":!0, "gives":!0, "giving":!0, "glade":!0, "glass":!0, "gle":!0, "global":!0, "globo":!0, "gmail":!0, "gmbh":!0, "gmo":!0, "gmx":!0, "godaddy":!0, "gold":!0, "goldpoint":!0, "golf":!0, "goo":!0, "goodhands":!0, "goodyear":!0, "goog":!0, "google":!0, "gop":!0, "got":!0, "grainger":!0, "graphics":!0, "gratis":!0, "green":!0, "gripe":!0, "grocery":!0, "group":!0, "guardian":!0, "gucci":!0, "guge":!0, "guide":!0, "guitars":!0, "guru":!0, "hair":!0, "hamburg":!0, "hangout":!0, "haus":!0, "hbo":!0, "hdfc":!0, "hdfcbank":!0, "health":!0, "healthcare":!0, "help":!0, "helsinki":!0, "here":!0, "hermes":!0, "hgtv":!0, "hiphop":!0, "hisamitsu":!0, "hitachi":!0, "hiv":!0, "hkt":!0, "hockey":!0, "holdings":!0, "holiday":!0, "homedepot":!0, "homegoods":!0, "homes":!0, "homesense":!0, "honda":!0, "honeywell":!0, "horse":!0, "host":!0, "hosting":!0, "hot":!0, "hoteles":!0, "hotels":!0, "hotmail":!0, "house":!0, "how":!0, "hsbc":!0, "htc":!0, "hughes":!0, "hyatt":!0, "hyundai":!0, "ibm":!0, "icbc":!0, "ice":!0, "icu":!0, "ieee":!0, "ifm":!0, "iinet":!0, "ikano":!0, "imamat":!0, "imdb":!0, "immo":!0, "immobilien":!0, "industries":!0, "infiniti":!0, "ing":!0, "ink":!0, "institute":!0, "insurance":!0, "insure":!0, "intel":!0, "international":!0, "intuit":!0, "investments":!0, "ipiranga":!0, "irish":!0, "iselect":!0, "ismaili":!0, "ist":!0, "istanbul":!0, "itau":!0, "itv":!0, "iveco":!0, "iwc":!0, "jaguar":!0, "java":!0, "jcb":!0, "jcp":!0, "jeep":!0, "jetzt":!0, "jewelry":!0, "jio":!0, "jlc":!0, "jll":!0, "jmp":!0, "jnj":!0, "joburg":!0, "jot":!0, "joy":!0, "jpmorgan":!0, "jprs":!0, "juegos":!0, "juniper":!0, "kaufen":!0, "kddi":!0, "kerryhotels":!0, "kerrylogistics":!0, "kerryproperties":!0, "kfh":!0, "kia":!0, "kim":!0, "kinder":!0, "kindle":!0, "kitchen":!0, "kiwi":!0, "koeln":!0, "komatsu":!0, "kosher":!0, "kpmg":!0, "kpn":!0, "krd":!0, "kred":!0, "kuokgroup":!0, "kyoto":!0, "lacaixa":!0, "ladbrokes":!0, "lamborghini":!0, "lamer":!0, "lancaster":!0, "lancia":!0, "lancome":!0, "land":!0, "landrover":!0, "lanxess":!0, "lasalle":!0, "lat":!0, "latino":!0, "latrobe":!0, "law":!0, "lawyer":!0, "lds":!0, "lease":!0, "leclerc":!0, "lefrak":!0, "legal":!0, "lego":!0, "lexus":!0, "lgbt":!0, "liaison":!0, "lidl":!0, "life":!0, "lifeinsurance":!0, "lifestyle":!0, "lighting":!0, "like":!0, "lilly":!0, "limited":!0, "limo":!0, "lincoln":!0, "linde":!0, "link":!0, "lipsy":!0, "live":!0, "living":!0, "lixil":!0, "loan":!0, "loans":!0, "locker":!0, "locus":!0, "loft":!0, "lol":!0, "london":!0, "lotte":!0, "lotto":!0, "love":!0, "lpl":!0, "lplfinancial":!0, "ltd":!0, "ltda":!0, "lundbeck":!0, "lupin":!0, "luxe":!0, "luxury":!0, "macys":!0, "madrid":!0, "maif":!0, "maison":!0, "makeup":!0, "man":!0, "management":!0, "mango":!0, "map":!0, "market":!0, "marketing":!0, "markets":!0, "marriott":!0, "marshalls":!0, "maserati":!0, "mattel":!0, "mba":!0, "mcd":!0, "mcdonalds":!0, "mckinsey":!0, "med":!0, "media":!0, "meet":!0, "melbourne":!0, "meme":!0, "memorial":!0, "men":!0, "menu":!0, "meo":!0, "merckmsd":!0, "metlife":!0, "miami":!0, "microsoft":!0, "mini":!0, "mint":!0, "mit":!0, "mitsubishi":!0, "mlb":!0, "mls":!0, "mma":!0, "mobile":!0, "mobily":!0, "moda":!0, "moe":!0, "moi":!0, "mom":!0, "monash":!0, "money":!0, "monster":!0, "montblanc":!0, "mopar":!0, "mormon":!0, "mortgage":!0, "moscow":!0, "moto":!0, "motorcycles":!0, "mov":!0, "movie":!0, "movistar":!0, "msd":!0, "mtn":!0, "mtpc":!0, "mtr":!0, "mutual":!0, "mutuelle":!0, "nab":!0, "nadex":!0, "nagoya":!0, "nationwide":!0, "natura":!0, "navy":!0, "nba":!0, "nec":!0, "netbank":!0, "netflix":!0, "network":!0, "neustar":!0, "new":!0, "newholland":!0, "news":!0, "next":!0, "nextdirect":!0, "nexus":!0, "nfl":!0, "ngo":!0, "nhk":!0, "nico":!0, "nike":!0, "nikon":!0, "ninja":!0, "nissan":!0, "nissay":!0, "nokia":!0, "northwesternmutual":!0, "norton":!0, "now":!0, "nowruz":!0, "nowtv":!0, "nra":!0, "nrw":!0, "ntt":!0, "nyc":!0, "obi":!0, "observer":!0, "off":!0, "office":!0, "okinawa":!0, "olayan":!0, "olayangroup":!0, "oldnavy":!0, "ollo":!0, "omega":!0, "one":!0, "ong":!0, "onl":!0, "online":!0, "onyourside":!0, "ooo":!0, "open":!0, "oracle":!0, "orange":!0, "organic":!0, "orientexpress":!0, "origins":!0, "osaka":!0, "otsuka":!0, "ott":!0, "ovh":!0, "page":!0, "pamperedchef":!0, "panasonic":!0, "panerai":!0, "paris":!0, "pars":!0, "partners":!0, "parts":!0, "party":!0, "passagens":!0, "pay":!0, "pccw":!0, "pet":!0, "pfizer":!0, "pharmacy":!0, "phd":!0, "philips":!0, "phone":!0, "photo":!0, "photography":!0, "photos":!0, "physio":!0, "piaget":!0, "pics":!0, "pictet":!0, "pictures":!0, "pid":!0, "pin":!0, "ping":!0, "pink":!0, "pioneer":!0, "pizza":!0, "place":!0, "play":!0, "playstation":!0, "plumbing":!0, "plus":!0, "pnc":!0, "pohl":!0, "poker":!0, "politie":!0, "porn":!0, "pramerica":!0, "praxi":!0, "press":!0, "prime":!0, "prod":!0, "productions":!0, "prof":!0, "progressive":!0, "promo":!0, "properties":!0, "property":!0, "protection":!0, "pru":!0, "prudential":!0, "pub":!0, "pwc":!0, "qpon":!0, "quebec":!0, "quest":!0, "qvc":!0, "racing":!0, "radio":!0, "raid":!0, "read":!0, "realestate":!0, "realtor":!0, "realty":!0, "recipes":!0, "red":!0, "redstone":!0, "redumbrella":!0, "rehab":!0, "reise":!0, "reisen":!0, "reit":!0, "reliance":!0, "ren":!0, "rent":!0, "rentals":!0, "repair":!0, "report":!0, "republican":!0, "rest":!0, "restaurant":!0, "review":!0, "reviews":!0, "rexroth":!0, "rich":!0, "richardli":!0, "ricoh":!0, "rightathome":!0, "ril":!0, "rio":!0, "rip":!0, "rmit":!0, "rocher":!0, "rocks":!0, "rodeo":!0, "rogers":!0, "room":!0, "rsvp":!0, "ruhr":!0, "run":!0, "rwe":!0, "ryukyu":!0, "saarland":!0, "safe":!0, "safety":!0, "sakura":!0, "sale":!0, "salon":!0, "samsclub":!0, "samsung":!0, "sandvik":!0, "sandvikcoromant":!0, "sanofi":!0, "sap":!0, "sapo":!0, "sarl":!0, "sas":!0, "save":!0, "saxo":!0, "sbi":!0, "sbs":!0, "sca":!0, "scb":!0, "schaeffler":!0, "schmidt":!0, "scholarships":!0, "school":!0, "schule":!0, "schwarz":!0, "science":!0, "scjohnson":!0, "scor":!0, "scot":!0, "search":!0, "seat":!0, "secure":!0, "security":!0, "seek":!0, "select":!0, "sener":!0, "services":!0, "ses":!0, "seven":!0, "sew":!0, "sex":!0, "sexy":!0, "sfr":!0, "shangrila":!0, "sharp":!0, "shaw":!0, "shell":!0, "shia":!0, "shiksha":!0, "shoes":!0, "shop":!0, "shopping":!0, "shouji":!0, "show":!0, "showtime":!0, "shriram":!0, "silk":!0, "sina":!0, "singles":!0, "site":!0, "ski":!0, "skin":!0, "sky":!0, "skype":!0, "sling":!0, "smart":!0, "smile":!0, "sncf":!0, "soccer":!0, "social":!0, "softbank":!0, "software":!0, "sohu":!0, "solar":!0, "solutions":!0, "song":!0, "sony":!0, "soy":!0, "space":!0, "spiegel":!0, "spot":!0, "spreadbetting":!0, "srl":!0, "srt":!0, "stada":!0, "staples":!0, "star":!0, "starhub":!0, "statebank":!0, "statefarm":!0, "statoil":!0, "stc":!0, "stcgroup":!0, "stockholm":!0, "storage":!0, "store":!0, "stream":!0, "studio":!0, "study":!0, "style":!0, "sucks":!0, "supplies":!0, "supply":!0, "support":!0, "surf":!0, "surgery":!0, "suzuki":!0, "swatch":!0, "swiftcover":!0, "swiss":!0, "sydney":!0, "symantec":!0, "systems":!0, "tab":!0, "taipei":!0, "talk":!0, "taobao":!0, "target":!0, "tatamotors":!0, "tatar":!0, "tattoo":!0, "tax":!0, "taxi":!0, "tci":!0, "tdk":!0, "team":!0, "tech":!0, "technology":!0, "telecity":!0, "telefonica":!0, "temasek":!0, "tennis":!0, "teva":!0, "thd":!0, "theater":!0, "theatre":!0, "theguardian":!0, "tiaa":!0, "tickets":!0, "tienda":!0, "tiffany":!0, "tips":!0, "tires":!0, "tirol":!0, "tjmaxx":!0, "tjx":!0, "tkmaxx":!0, "tmall":!0, "today":!0, "tokyo":!0, "tools":!0, "top":!0, "toray":!0, "toshiba":!0, "total":!0, "tours":!0, "town":!0, "toyota":!0, "toys":!0, "trade":!0, "trading":!0, "training":!0, "travelchannel":!0, "travelers":!0, "travelersinsurance":!0, "trust":!0, "trv":!0, "tube":!0, "tui":!0, "tunes":!0, "tushu":!0, "tvs":!0, "ubank":!0, "ubs":!0, "uconnect":!0, "unicom":!0, "university":!0, "uno":!0, "uol":!0, "ups":!0, "vacations":!0, "vana":!0, "vanguard":!0, "vegas":!0, "ventures":!0, "verisign":!0, "versicherung":!0, "vet":!0, "viajes":!0, "video":!0, "vig":!0, "viking":!0, "villas":!0, "vin":!0, "vip":!0, "virgin":!0, "visa":!0, "vision":!0, "vista":!0, "vistaprint":!0, "viva":!0, "vivo":!0, "vlaanderen":!0, "vodka":!0, "volkswagen":!0, "volvo":!0, "vote":!0, "voting":!0, "voto":!0, "voyage":!0, "vuelos":!0, "wales":!0, "walmart":!0, "walter":!0, "wang":!0, "wanggou":!0, "warman":!0, "watch":!0, "watches":!0, "weather":!0, "weatherchannel":!0, "webcam":!0, "weber":!0, "website":!0, "wed":!0, "wedding":!0, "weibo":!0, "weir":!0, "whoswho":!0, "wien":!0, "wiki":!0, "williamhill":!0, "win":!0, "windows":!0, "wine":!0, "winners":!0, "wme":!0, "wolterskluwer":!0, "woodside":!0, "work":!0, "works":!0, "world":!0, "wow":!0, "wtc":!0, "wtf":!0, "xbox":!0, "xerox":!0, "xfinity":!0, "xihuan":!0, "xin":!0, "xn--11b4c3d":!0, "xn--1ck2e1b":!0, "xn--1qqw23a":!0, "xn--30rr7y":!0, "xn--3bst00m":!0, "xn--3ds443g":!0, "xn--3oq18vl8pn36a":!0, "xn--3pxu8k":!0, "xn--42c2d9a":!0, "xn--45q11c":!0, "xn--4gbrim":!0, "xn--4gq48lf9j":!0, "xn--55qw42g":!0, "xn--55qx5d":!0, "xn--5su34j936bgsg":!0, "xn--5tzm5g":!0, "xn--6frz82g":!0, "xn--6qq986b3xl":!0, "xn--80adxhks":!0, "xn--80aqecdr1a":!0, "xn--80asehdb":!0, "xn--80aswg":!0, "xn--8y0a063a":!0, "xn--9dbq2a":!0, "xn--9et52u":!0, "xn--9krt00a":!0, "xn--b4w605ferd":!0, "xn--bck1b9a5dre4c":!0, "xn--c1avg":!0, "xn--c2br7g":!0, "xn--cck2b3b":!0, "xn--cg4bki":!0, "xn--czr694b":!0, "xn--czrs0t":!0, "xn--czru2d":!0, "xn--d1acj3b":!0, "xn--eckvdtc9d":!0, "xn--efvy88h":!0, "xn--estv75g":!0, "xn--fct429k":!0, "xn--fhbei":!0, "xn--fiq228c5hs":!0, "xn--fiq64b":!0, "xn--fjq720a":!0, "xn--flw351e":!0, "xn--fzys8d69uvgm":!0, "xn--g2xx48c":!0, "xn--gckr3f0f":!0, "xn--gk3at1e":!0, "xn--hxt814e":!0, "xn--i1b6b1a6a2e":!0, "xn--imr513n":!0, "xn--io0a7i":!0, "xn--j1aef":!0, "xn--jlq61u9w7b":!0, "xn--jvr189m":!0, "xn--kcrx77d1x4a":!0, "xn--kpu716f":!0, "xn--kput3i":!0, "xn--mgba3a3ejt":!0, "xn--mgba7c0bbn0a":!0, "xn--mgbaakc7dvf":!0, "xn--mgbab2bd":!0, "xn--mgbb9fbpob":!0, "xn--mgbca7dzdo":!0, "xn--mgbi4ecexp":!0, "xn--mgbt3dhd":!0, "xn--mk1bu44c":!0, "xn--mxtq1m":!0, "xn--ngbc5azd":!0, "xn--ngbe9e0a":!0, "xn--ngbrx":!0, "xn--nqv7f":!0, "xn--nqv7fs00ema":!0, "xn--nyqy26a":!0, "xn--p1acf":!0, "xn--pbt977c":!0, "xn--pssy2u":!0, "xn--q9jyb4c":!0, "xn--qcka1pmc":!0, "xn--rhqv96g":!0, "xn--rovu88b":!0, "xn--ses554g":!0, "xn--t60b56a":!0, "xn--tckwe":!0, "xn--tiq49xqyj":!0, "xn--unup4y":!0, "xn--vermgensberater-ctb":!0, "xn--vermgensberatung-pwb":!0, "xn--vhquv":!0, "xn--vuq861b":!0, "xn--w4r85el8fhu5dnra":!0, "xn--w4rs40l":!0, "xn--xhq521b":!0, "xn--zfr164b":!0, "xperia":!0, "xyz":!0, "yachts":!0, "yahoo":!0, "yamaxun":!0, "yandex":!0, "yodobashi":!0, "yoga":!0, "yokohama":!0, "you":!0, "youtube":!0, "yun":!0, "zappos":!0, "zara":!0, "zero":!0, "zip":!0, "zippo":!0, "zone":!0, "zuerich":!0, "beep.pl":!0, "*.compute.estate":!0, "*.alces.network":!0, "*.alwaysdata.net":!0, "cloudfront.net":!0, "compute.amazonaws.com":!0, "ap-northeast-1.compute.amazonaws.com":!0, "ap-northeast-2.compute.amazonaws.com":!0, "ap-southeast-1.compute.amazonaws.com":!0, "ap-southeast-2.compute.amazonaws.com":!0, "eu-central-1.compute.amazonaws.com":!0, "eu-west-1.compute.amazonaws.com":!0, "sa-east-1.compute.amazonaws.com":!0, "us-gov-west-1.compute.amazonaws.com":!0, "us-west-1.compute.amazonaws.com":!0, "us-west-2.compute.amazonaws.com":!0, "compute-1.amazonaws.com":!0, "z-1.compute-1.amazonaws.com":!0, "z-2.compute-1.amazonaws.com":!0, "us-east-1.amazonaws.com":!0, "compute.amazonaws.com.cn":!0, "cn-north-1.compute.amazonaws.com.cn":!0, "elasticbeanstalk.com":!0, "elb.amazonaws.com":!0, "s3.amazonaws.com":!0, "s3-ap-northeast-1.amazonaws.com":!0, "s3-ap-northeast-2.amazonaws.com":!0, "s3-ap-southeast-1.amazonaws.com":!0, "s3-ap-southeast-2.amazonaws.com":!0, "s3-eu-central-1.amazonaws.com":!0, "s3-eu-west-1.amazonaws.com":!0, "s3-external-1.amazonaws.com":!0, "s3-external-2.amazonaws.com":!0, "s3-fips-us-gov-west-1.amazonaws.com":!0, "s3-sa-east-1.amazonaws.com":!0, "s3-us-gov-west-1.amazonaws.com":!0, "s3-us-west-1.amazonaws.com":!0, "s3-us-west-2.amazonaws.com":!0, "s3.ap-northeast-2.amazonaws.com":!0, "s3.cn-north-1.amazonaws.com.cn":!0, "s3.eu-central-1.amazonaws.com":!0, "on-aptible.com":!0, "pimienta.org":!0, "poivron.org":!0, "potager.org":!0, "sweetpepper.org":!0, "myasustor.com":!0, "myfritz.net":!0, "backplaneapp.io":!0, "betainabox.com":!0, "bnr.la":!0, "boxfuse.io":!0, "browsersafetymark.io":!0, "mycd.eu":!0, "ae.org":!0, "ar.com":!0, "br.com":!0, "cn.com":!0, "com.de":!0, "com.se":!0, "de.com":!0, "eu.com":!0, "gb.com":!0, "gb.net":!0, "hu.com":!0, "hu.net":!0, "jp.net":!0, "jpn.com":!0, "kr.com":!0, "mex.com":!0, "no.com":!0, "qc.com":!0, "ru.com":!0, "sa.com":!0, "se.com":!0, "se.net":!0, "uk.com":!0, "uk.net":!0, "us.com":!0, "uy.com":!0, "za.bz":!0, "za.com":!0, "africa.com":!0, "gr.com":!0, "in.net":!0, "us.org":!0, "co.com":!0, "c.la":!0, "certmgr.org":!0, "xenapponazure.com":!0, "virtueeldomein.nl":!0, "cloudcontrolled.com":!0, "cloudcontrolapp.com":!0, "co.ca":!0, "co.cz":!0, "c.cdn77.org":!0, "cdn77-ssl.net":!0, "r.cdn77.net":!0, "rsc.cdn77.org":!0, "ssl.origin.cdn77-secure.org":!0, "cloudns.asia":!0, "cloudns.biz":!0, "cloudns.club":!0, "cloudns.cc":!0, "cloudns.eu":!0, "cloudns.in":!0, "cloudns.info":!0, "cloudns.org":!0, "cloudns.pro":!0, "cloudns.pw":!0, "cloudns.us":!0, "co.nl":!0, "co.no":!0, "*.platform.sh":!0, "realm.cz":!0, "*.cryptonomic.net":!0, "cupcake.is":!0, "cyon.link":!0, "cyon.site":!0, "daplie.me":!0, "biz.dk":!0, "co.dk":!0, "firm.dk":!0, "reg.dk":!0, "store.dk":!0, "dedyn.io":!0, "dnshome.de":!0, "dreamhosters.com":!0, "mydrobo.com":!0, "drud.io":!0, "drud.us":!0, "duckdns.org":!0, "dy.fi":!0, "tunk.org":!0, "dyndns-at-home.com":!0, "dyndns-at-work.com":!0, "dyndns-blog.com":!0, "dyndns-free.com":!0, "dyndns-home.com":!0, "dyndns-ip.com":!0, "dyndns-mail.com":!0, "dyndns-office.com":!0, "dyndns-pics.com":!0, "dyndns-remote.com":!0, "dyndns-server.com":!0, "dyndns-web.com":!0, "dyndns-wiki.com":!0, "dyndns-work.com":!0, "dyndns.biz":!0, "dyndns.info":!0, "dyndns.org":!0, "dyndns.tv":!0, "at-band-camp.net":!0, "ath.cx":!0, "barrel-of-knowledge.info":!0, "barrell-of-knowledge.info":!0, "better-than.tv":!0, "blogdns.com":!0, "blogdns.net":!0, "blogdns.org":!0, "blogsite.org":!0, "boldlygoingnowhere.org":!0, "broke-it.net":!0, "buyshouses.net":!0, "cechire.com":!0, "dnsalias.com":!0, "dnsalias.net":!0, "dnsalias.org":!0, "dnsdojo.com":!0, "dnsdojo.net":!0, "dnsdojo.org":!0, "does-it.net":!0, "doesntexist.com":!0, "doesntexist.org":!0, "dontexist.com":!0, "dontexist.net":!0, "dontexist.org":!0, "doomdns.com":!0, "doomdns.org":!0, "dvrdns.org":!0, "dyn-o-saur.com":!0, "dynalias.com":!0, "dynalias.net":!0, "dynalias.org":!0, "dynathome.net":!0, "dyndns.ws":!0, "endofinternet.net":!0, "endofinternet.org":!0, "endoftheinternet.org":!0, "est-a-la-maison.com":!0, "est-a-la-masion.com":!0, "est-le-patron.com":!0, "est-mon-blogueur.com":!0, "for-better.biz":!0, "for-more.biz":!0, "for-our.info":!0, "for-some.biz":!0, "for-the.biz":!0, "forgot.her.name":!0, "forgot.his.name":!0, "from-ak.com":!0, "from-al.com":!0, "from-ar.com":!0, "from-az.net":!0, "from-ca.com":!0, "from-co.net":!0, "from-ct.com":!0, "from-dc.com":!0, "from-de.com":!0, "from-fl.com":!0, "from-ga.com":!0, "from-hi.com":!0, "from-ia.com":!0, "from-id.com":!0, "from-il.com":!0, "from-in.com":!0, "from-ks.com":!0, "from-ky.com":!0, "from-la.net":!0, "from-ma.com":!0, "from-md.com":!0, "from-me.org":!0, "from-mi.com":!0, "from-mn.com":!0, "from-mo.com":!0, "from-ms.com":!0, "from-mt.com":!0, "from-nc.com":!0, "from-nd.com":!0, "from-ne.com":!0, "from-nh.com":!0, "from-nj.com":!0, "from-nm.com":!0, "from-nv.com":!0, "from-ny.net":!0, "from-oh.com":!0, "from-ok.com":!0, "from-or.com":!0, "from-pa.com":!0, "from-pr.com":!0, "from-ri.com":!0, "from-sc.com":!0, "from-sd.com":!0, "from-tn.com":!0, "from-tx.com":!0, "from-ut.com":!0, "from-va.com":!0, "from-vt.com":!0, "from-wa.com":!0, "from-wi.com":!0, "from-wv.com":!0, "from-wy.com":!0, "ftpaccess.cc":!0, "fuettertdasnetz.de":!0, "game-host.org":!0, "game-server.cc":!0, "getmyip.com":!0, "gets-it.net":!0, "go.dyndns.org":!0, "gotdns.com":!0, "gotdns.org":!0, "groks-the.info":!0, "groks-this.info":!0, "ham-radio-op.net":!0, "here-for-more.info":!0, "hobby-site.com":!0, "hobby-site.org":!0, "home.dyndns.org":!0, "homedns.org":!0, "homeftp.net":!0, "homeftp.org":!0, "homeip.net":!0, "homelinux.com":!0, "homelinux.net":!0, "homelinux.org":!0, "homeunix.com":!0, "homeunix.net":!0, "homeunix.org":!0, "iamallama.com":!0, "in-the-band.net":!0, "is-a-anarchist.com":!0, "is-a-blogger.com":!0, "is-a-bookkeeper.com":!0, "is-a-bruinsfan.org":!0, "is-a-bulls-fan.com":!0, "is-a-candidate.org":!0, "is-a-caterer.com":!0, "is-a-celticsfan.org":!0, "is-a-chef.com":!0, "is-a-chef.net":!0, "is-a-chef.org":!0, "is-a-conservative.com":!0, "is-a-cpa.com":!0, "is-a-cubicle-slave.com":!0, "is-a-democrat.com":!0, "is-a-designer.com":!0, "is-a-doctor.com":!0, "is-a-financialadvisor.com":!0, "is-a-geek.com":!0, "is-a-geek.net":!0, "is-a-geek.org":!0, "is-a-green.com":!0, "is-a-guru.com":!0, "is-a-hard-worker.com":!0, "is-a-hunter.com":!0, "is-a-knight.org":!0, "is-a-landscaper.com":!0, "is-a-lawyer.com":!0, "is-a-liberal.com":!0, "is-a-libertarian.com":!0, "is-a-linux-user.org":!0, "is-a-llama.com":!0, "is-a-musician.com":!0, "is-a-nascarfan.com":!0, "is-a-nurse.com":!0, "is-a-painter.com":!0, "is-a-patsfan.org":!0, "is-a-personaltrainer.com":!0, "is-a-photographer.com":!0, "is-a-player.com":!0, "is-a-republican.com":!0, "is-a-rockstar.com":!0, "is-a-socialist.com":!0, "is-a-soxfan.org":!0, "is-a-student.com":!0, "is-a-teacher.com":!0, "is-a-techie.com":!0, "is-a-therapist.com":!0, "is-an-accountant.com":!0, "is-an-actor.com":!0, "is-an-actress.com":!0, "is-an-anarchist.com":!0, "is-an-artist.com":!0, "is-an-engineer.com":!0, "is-an-entertainer.com":!0, "is-by.us":!0, "is-certified.com":!0, "is-found.org":!0, "is-gone.com":!0, "is-into-anime.com":!0, "is-into-cars.com":!0, "is-into-cartoons.com":!0, "is-into-games.com":!0, "is-leet.com":!0, "is-lost.org":!0, "is-not-certified.com":!0, "is-saved.org":!0, "is-slick.com":!0, "is-uberleet.com":!0, "is-very-bad.org":!0, "is-very-evil.org":!0, "is-very-good.org":!0, "is-very-nice.org":!0, "is-very-sweet.org":!0, "is-with-theband.com":!0, "isa-geek.com":!0, "isa-geek.net":!0, "isa-geek.org":!0, "isa-hockeynut.com":!0, "issmarterthanyou.com":!0, "isteingeek.de":!0, "istmein.de":!0, "kicks-ass.net":!0, "kicks-ass.org":!0, "knowsitall.info":!0, "land-4-sale.us":!0, "lebtimnetz.de":!0, "leitungsen.de":!0, "likes-pie.com":!0, "likescandy.com":!0, "merseine.nu":!0, "mine.nu":!0, "misconfused.org":!0, "mypets.ws":!0, "myphotos.cc":!0, "neat-url.com":!0, "office-on-the.net":!0, "on-the-web.tv":!0, "podzone.net":!0, "podzone.org":!0, "readmyblog.org":!0, "saves-the-whales.com":!0, "scrapper-site.net":!0, "scrapping.cc":!0, "selfip.biz":!0, "selfip.com":!0, "selfip.info":!0, "selfip.net":!0, "selfip.org":!0, "sells-for-less.com":!0, "sells-for-u.com":!0, "sells-it.net":!0, "sellsyourhome.org":!0, "servebbs.com":!0, "servebbs.net":!0, "servebbs.org":!0, "serveftp.net":!0, "serveftp.org":!0, "servegame.org":!0, "shacknet.nu":!0, "simple-url.com":!0, "space-to-rent.com":!0, "stuff-4-sale.org":!0, "stuff-4-sale.us":!0, "teaches-yoga.com":!0, "thruhere.net":!0, "traeumtgerade.de":!0, "webhop.biz":!0, "webhop.info":!0, "webhop.net":!0, "webhop.org":!0, "worse-than.tv":!0, "writesthisblog.com":!0, "ddnss.de":!0, "dyn.ddnss.de":!0, "dyndns.ddnss.de":!0, "dyndns1.de":!0, "dyn-ip24.de":!0, "home-webserver.de":!0, "dyn.home-webserver.de":!0, "myhome-server.de":!0, "ddnss.org":!0, "dynv6.net":!0, "e4.cz":!0, "eu.org":!0, "al.eu.org":!0, "asso.eu.org":!0, "at.eu.org":!0, "au.eu.org":!0, "be.eu.org":!0, "bg.eu.org":!0, "ca.eu.org":!0, "cd.eu.org":!0, "ch.eu.org":!0, "cn.eu.org":!0, "cy.eu.org":!0, "cz.eu.org":!0, "de.eu.org":!0, "dk.eu.org":!0, "edu.eu.org":!0, "ee.eu.org":!0, "es.eu.org":!0, "fi.eu.org":!0, "fr.eu.org":!0, "gr.eu.org":!0, "hr.eu.org":!0, "hu.eu.org":!0, "ie.eu.org":!0, "il.eu.org":!0, "in.eu.org":!0, "int.eu.org":!0, "is.eu.org":!0, "it.eu.org":!0, "jp.eu.org":!0, "kr.eu.org":!0, "lt.eu.org":!0, "lu.eu.org":!0, "lv.eu.org":!0, "mc.eu.org":!0, "me.eu.org":!0, "mk.eu.org":!0, "mt.eu.org":!0, "my.eu.org":!0, "net.eu.org":!0, "ng.eu.org":!0, "nl.eu.org":!0, "no.eu.org":!0, "nz.eu.org":!0, "paris.eu.org":!0, "pl.eu.org":!0, "pt.eu.org":!0, "q-a.eu.org":!0, "ro.eu.org":!0, "ru.eu.org":!0, "se.eu.org":!0, "si.eu.org":!0, "sk.eu.org":!0, "tr.eu.org":!0, "uk.eu.org":!0, "us.eu.org":!0, "eu-1.evennode.com":!0, "eu-2.evennode.com":!0, "us-1.evennode.com":!0, "us-2.evennode.com":!0, "apps.fbsbx.com":!0, "a.ssl.fastly.net":!0, "b.ssl.fastly.net":!0, "global.ssl.fastly.net":!0, "a.prod.fastly.net":!0, "global.prod.fastly.net":!0, "fhapp.xyz":!0, "firebaseapp.com":!0, "flynnhub.com":!0, "freebox-os.com":!0, "freeboxos.com":!0, "fbx-os.fr":!0, "fbxos.fr":!0, "freebox-os.fr":!0, "freeboxos.fr":!0, "myfusion.cloud":!0, "futuremailing.at":!0, "*.ex.ortsinfo.at":!0, "*.kunden.ortsinfo.at":!0, "service.gov.uk":!0, "github.io":!0, "githubusercontent.com":!0, "githubcloud.com":!0, "*.api.githubcloud.com":!0, "*.ext.githubcloud.com":!0, "gist.githubcloud.com":!0, "*.githubcloudusercontent.com":!0, "gitlab.io":!0, "ro.com":!0, "ro.im":!0, "shop.ro":!0, "goip.de":!0, "*.0emm.com":!0, "appspot.com":!0, "blogspot.ae":!0, "blogspot.al":!0, "blogspot.am":!0, "blogspot.ba":!0, "blogspot.be":!0, "blogspot.bg":!0, "blogspot.bj":!0, "blogspot.ca":!0, "blogspot.cf":!0, "blogspot.ch":!0, "blogspot.cl":!0, "blogspot.co.at":!0, "blogspot.co.id":!0, "blogspot.co.il":!0, "blogspot.co.ke":!0, "blogspot.co.nz":!0, "blogspot.co.uk":!0, "blogspot.co.za":!0, "blogspot.com":!0, "blogspot.com.ar":!0, "blogspot.com.au":!0, "blogspot.com.br":!0, "blogspot.com.by":!0, "blogspot.com.co":!0, "blogspot.com.cy":!0, "blogspot.com.ee":!0, "blogspot.com.eg":!0, "blogspot.com.es":!0, "blogspot.com.mt":!0, "blogspot.com.ng":!0, "blogspot.com.tr":!0, "blogspot.com.uy":!0, "blogspot.cv":!0, "blogspot.cz":!0, "blogspot.de":!0, "blogspot.dk":!0, "blogspot.fi":!0, "blogspot.fr":!0, "blogspot.gr":!0, "blogspot.hk":!0, "blogspot.hr":!0, "blogspot.hu":!0, "blogspot.ie":!0, "blogspot.in":!0, "blogspot.is":!0, "blogspot.it":!0, "blogspot.jp":!0, "blogspot.kr":!0, "blogspot.li":!0, "blogspot.lt":!0, "blogspot.lu":!0, "blogspot.md":!0, "blogspot.mk":!0, "blogspot.mr":!0, "blogspot.mx":!0, "blogspot.my":!0, "blogspot.nl":!0, "blogspot.no":!0, "blogspot.pe":!0, "blogspot.pt":!0, "blogspot.qa":!0, "blogspot.re":!0, "blogspot.ro":!0, "blogspot.rs":!0, "blogspot.ru":!0, "blogspot.se":!0, "blogspot.sg":!0, "blogspot.si":!0, "blogspot.sk":!0, "blogspot.sn":!0, "blogspot.td":!0, "blogspot.tw":!0, "blogspot.ug":!0, "blogspot.vn":!0, "cloudfunctions.net":!0, "codespot.com":!0, "googleapis.com":!0, "googlecode.com":!0, "pagespeedmobilizer.com":!0, "publishproxy.com":!0, "withgoogle.com":!0, "withyoutube.com":!0, "hashbang.sh":!0, "hasura-app.io":!0, "hepforge.org":!0, "herokuapp.com":!0, "herokussl.com":!0, "iki.fi":!0, "biz.at":!0, "info.at":!0, "ac.leg.br":!0, "al.leg.br":!0, "am.leg.br":!0, "ap.leg.br":!0, "ba.leg.br":!0, "ce.leg.br":!0, "df.leg.br":!0, "es.leg.br":!0, "go.leg.br":!0, "ma.leg.br":!0, "mg.leg.br":!0, "ms.leg.br":!0, "mt.leg.br":!0, "pa.leg.br":!0, "pb.leg.br":!0, "pe.leg.br":!0, "pi.leg.br":!0, "pr.leg.br":!0, "rj.leg.br":!0, "rn.leg.br":!0, "ro.leg.br":!0, "rr.leg.br":!0, "rs.leg.br":!0, "sc.leg.br":!0, "se.leg.br":!0, "sp.leg.br":!0, "to.leg.br":!0, "*.triton.zone":!0, "*.cns.joyent.com":!0, "js.org":!0, "keymachine.de":!0, "knightpoint.systems":!0, "co.krd":!0, "edu.krd":!0, "*.magentosite.cloud":!0, "meteorapp.com":!0, "eu.meteorapp.com":!0, "co.pl":!0, "azurewebsites.net":!0, "azure-mobile.net":!0, "cloudapp.net":!0, "bmoattachments.org":!0, "4u.com":!0, "ngrok.io":!0, "nfshost.com":!0, "nsupdate.info":!0, "nerdpol.ovh":!0, "blogsyte.com":!0, "brasilia.me":!0, "cable-modem.org":!0, "ciscofreak.com":!0, "collegefan.org":!0, "couchpotatofries.org":!0, "damnserver.com":!0, "ddns.me":!0, "ditchyourip.com":!0, "dnsfor.me":!0, "dnsiskinky.com":!0, "dvrcam.info":!0, "dynns.com":!0, "eating-organic.net":!0, "fantasyleague.cc":!0, "geekgalaxy.com":!0, "golffan.us":!0, "health-carereform.com":!0, "homesecuritymac.com":!0, "homesecuritypc.com":!0, "hopto.me":!0, "ilovecollege.info":!0, "loginto.me":!0, "mlbfan.org":!0, "mmafan.biz":!0, "myactivedirectory.com":!0, "mydissent.net":!0, "myeffect.net":!0, "mymediapc.net":!0, "mypsx.net":!0, "mysecuritycamera.com":!0, "mysecuritycamera.net":!0, "mysecuritycamera.org":!0, "net-freaks.com":!0, "nflfan.org":!0, "nhlfan.net":!0, "no-ip.ca":!0, "no-ip.co.uk":!0, "no-ip.net":!0, "noip.us":!0, "onthewifi.com":!0, "pgafan.net":!0, "point2this.com":!0, "pointto.us":!0, "privatizehealthinsurance.net":!0, "quicksytes.com":!0, "read-books.org":!0, "securitytactics.com":!0, "serveexchange.com":!0, "servehumour.com":!0, "servep2p.com":!0, "servesarcasm.com":!0, "stufftoread.com":!0, "ufcfan.org":!0, "unusualperson.com":!0, "workisboring.com":!0, "3utilities.com":!0, "bounceme.net":!0, "ddns.net":!0, "ddnsking.com":!0, "gotdns.ch":!0, "hopto.org":!0, "myftp.biz":!0, "myftp.org":!0, "myvnc.com":!0, "no-ip.biz":!0, "no-ip.info":!0, "no-ip.org":!0, "noip.me":!0, "redirectme.net":!0, "servebeer.com":!0, "serveblog.net":!0, "servecounterstrike.com":!0, "serveftp.com":!0, "servegame.com":!0, "servehalflife.com":!0, "servehttp.com":!0, "serveirc.com":!0, "serveminecraft.net":!0, "servemp3.com":!0, "servepics.com":!0, "servequake.com":!0, "sytes.net":!0, "webhop.me":!0, "zapto.org":!0, "nyc.mn":!0, "nid.io":!0, "opencraft.hosting":!0, "operaunite.com":!0, "outsystemscloud.com":!0, "ownprovider.com":!0, "oy.lc":!0, "pgfog.com":!0, "pagefrontapp.com":!0, "art.pl":!0, "gliwice.pl":!0, "krakow.pl":!0, "poznan.pl":!0, "wroc.pl":!0, "zakopane.pl":!0, "pantheonsite.io":!0, "gotpantheon.com":!0, "mypep.link":!0, "xen.prgmr.com":!0, "priv.at":!0, "protonet.io":!0, "chirurgiens-dentistes-en-france.fr":!0, "qa2.com":!0, "dev-myqnapcloud.com":!0, "alpha-myqnapcloud.com":!0, "myqnapcloud.com":!0, "rackmaze.com":!0, "rackmaze.net":!0, "rhcloud.com":!0, "hzc.io":!0, "wellbeingzone.eu":!0, "ptplus.fit":!0, "wellbeingzone.co.uk":!0, "sandcats.io":!0, "logoip.de":!0, "logoip.com":!0, "firewall-gateway.com":!0, "firewall-gateway.de":!0, "my-gateway.de":!0, "my-router.de":!0, "spdns.de":!0, "spdns.eu":!0, "firewall-gateway.net":!0, "my-firewall.org":!0, "myfirewall.org":!0, "spdns.org":!0, "biz.ua":!0, "co.ua":!0, "pp.ua":!0, "shiftedit.io":!0, "myshopblocks.com":!0, "1kapp.com":!0, "appchizi.com":!0, "applinzi.com":!0, "sinaapp.com":!0, "vipsinaapp.com":!0, "bounty-full.com":!0, "alpha.bounty-full.com":!0, "beta.bounty-full.com":!0, "static.land":!0, "dev.static.land":!0, "sites.static.land":!0, "apps.lair.io":!0, "*.stolos.io":!0, "spacekit.io":!0, "stackspace.space":!0, "diskstation.me":!0, "dscloud.biz":!0, "dscloud.me":!0, "dscloud.mobi":!0, "dsmynas.com":!0, "dsmynas.net":!0, "dsmynas.org":!0, "familyds.com":!0, "familyds.net":!0, "familyds.org":!0, "i234.me":!0, "myds.me":!0, "synology.me":!0, "taifun-dns.de":!0, "gda.pl":!0, "gdansk.pl":!0, "gdynia.pl":!0, "med.pl":!0, "sopot.pl":!0, "bloxcms.com":!0, "townnews-staging.com":!0, "*.transurl.be":!0, "*.transurl.eu":!0, "*.transurl.nl":!0, "tuxfamily.org":!0, "hk.com":!0, "hk.org":!0, "ltd.hk":!0, "inc.hk":!0, "lib.de.us":!0, "router.management":!0, "wmflabs.org":!0, "yolasite.com":!0, "za.net":!0, "za.org":!0, "now.sh":!0}); 
}, {punycode:void 0}], 124:[function(require, module, exports) {
 "use strict";function Store() {}exports.Store=Store, Store.prototype.synchronous=!1, Store.prototype.findCookie=function(domain, path, key, cb) {
 throw new Error("findCookie is not implemented"); 
}, Store.prototype.findCookies=function(domain, path, cb) {
 throw new Error("findCookies is not implemented"); 
}, Store.prototype.putCookie=function(cookie, cb) {
 throw new Error("putCookie is not implemented"); 
}, Store.prototype.updateCookie=function(oldCookie, newCookie, cb) {
 throw new Error("updateCookie is not implemented"); 
}, Store.prototype.removeCookie=function(domain, path, key, cb) {
 throw new Error("removeCookie is not implemented"); 
}, Store.prototype.removeCookies=function(domain, path, cb) {
 throw new Error("removeCookies is not implemented"); 
}, Store.prototype.getAllCookies=function(cb) {
 throw new Error("getAllCookies is not implemented (therefore jar cannot be serialized)"); 
}; 
}, {}], 125:[function(require, module, exports) {
 module.exports={_from:"tough-cookie@~2.3.3", _id:"tough-cookie@2.3.3", _inBundle:!1, _integrity:"sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", _location:"/tough-cookie", _phantomChildren:{}, _requested:{type:"range", registry:!0, raw:"tough-cookie@~2.3.3", name:"tough-cookie", escapedName:"tough-cookie", rawSpec:"~2.3.3", saveSpec:null, fetchSpec:"~2.3.3"}, _requiredBy:["/request"], _resolved:"https://artifacts.netflix.com/api/npm/npm-netflix/tough-cookie/-/tough-cookie-2.3.3.tgz", _shasum:"0b618a5565b6dea90bf3425d04d55edc475a7561", _spec:"tough-cookie@~2.3.3", _where:"/Users/sfedorov/Projects/fast/node_modules/request", author:{name:"Jeremy Stashewsky", email:"jstashewsky@salesforce.com"}, bugs:{url:"https://github.com/salesforce/tough-cookie/issues"}, bundleDependencies:!1, contributors:[{name:"Alexander Savin"}, {name:"Ian Livingstone"}, {name:"Ivan Nikulin"}, {name:"Lalit Kapoor"}, {name:"Sam Thompson"}, {name:"Sebastian Mayr"}], dependencies:{punycode:"^1.4.1"}, deprecated:!1, description:"RFC6265 Cookies and Cookie Jar for node.js", devDependencies:{"async":"^1.4.2", "string.prototype.repeat":"^0.2.0", "vows":"^0.8.1"}, engines:{node:">=0.8"}, files:["lib"], homepage:"https://github.com/salesforce/tough-cookie", keywords:["HTTP", "cookie", "cookies", "set-cookie", "cookiejar", "jar", "RFC6265", "RFC2965"], license:"BSD-3-Clause", main:"./lib/cookie", name:"tough-cookie", repository:{type:"git", url:"git://github.com/salesforce/tough-cookie.git"}, scripts:{suffixup:"curl -o public_suffix_list.dat https://publicsuffix.org/list/public_suffix_list.dat && ./generate-pubsuffix.js", test:"vows test/*_test.js"}, version:"2.3.3"}; 
}, {}], 126:[function(require, module, exports) {
 module.exports=function() {
 for(var target={}, i=0;i<arguments.length;i++) {
 var source=arguments[i];for(var key in source) {
 hasOwnProperty.call(source, key)&&(target[key]=source[key]); 
} 
}return target; 
};var hasOwnProperty=Object.prototype.hasOwnProperty; 
}, {}]}, {}, [7])(7); 
}));