			filter = function(file) { 
		
				if (file && file.hash && file.name && file.mime) {
					if (file.mime == 'application/x-empty') {
						file.mime = 'text/plain';
					}
					
					if (! file.phash || file.mime === 'directory') {
						// set options, tmbUrls for each volume
						if (file.volumeid) {
							// from v2.1.14
							if (file.options) {
								// set volOptions
								self.volOptions[file.volumeid] = file.options;
								
								// set immediate properties
								$.each(self.optionProperties, function(i, k) {
									if (file.options[k]) {
										file[k] = file.options[k];
									}
								});
							} else {
								// for compat <= v2.1.13
								if (file.disabled) {
									self.volOptions[file.volumeid].disabled = file.disabled;
								}
								if (file.tmbUrl) {
									self.volOptions[file.volumeid].tmbUrl = file.tmbUrl;
								}
							}
							if (! file.phash) {
								self.roots[file.volumeid] = file.hash;
							}
							
							if (prevId !== file.volumeid) {
								prevId = file.volumeid;
								i18nFolderName = self.option('i18nFolderName', file.volumeid);
							}
						}
						
						// volume root i18n name
						if (! file.i18 && ! file.phash) {
							name = 'volume_' + file.name,
							i18 = self.i18n(false, name);
	
							if (name !== i18) {
								file.i18 = i18;
							}
						}
						
						// i18nFolderName
						if (i18nFolderName && ! file.i18) {
							name = 'folder_' + file.name,
							i18 = self.i18n(false, name);
	
							if (name !== i18) {
								file.i18 = i18;
							}
						}
					}
					
					return file;
				}
				return null;
			},
The software constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component.