Built motion from commit c116dc8b.|2.6.30
[motion2.git] / server / api / mailSubstatus / mailSubstatus.controller.js
index dfe4a2c..71b8f09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0344=['fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','MailSubstatus','includeAll','include','catch','rawAttributes','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','name','send','map'];(function(_0x256422,_0x367394){var _0x55dddc=function(_0x1594bc){while(--_0x1594bc){_0x256422['push'](_0x256422['shift']());}};_0x55dddc(++_0x367394);}(_0x0344,0xf9));var _0x4034=function(_0x49b592,_0x171c90){_0x49b592=_0x49b592-0x0;var _0x29d457=_0x0344[_0x49b592];return _0x29d457;};'use strict';var emlformat=require(_0x4034('0x0'));var rimraf=require(_0x4034('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4034('0x2'));var rp=require(_0x4034('0x3'));var moment=require('moment');var BPromise=require(_0x4034('0x4'));var Mustache=require('mustache');var util=require(_0x4034('0x5'));var path=require(_0x4034('0x6'));var sox=require(_0x4034('0x7'));var csv=require(_0x4034('0x8'));var ejs=require(_0x4034('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4034('0xa'));var squel=require(_0x4034('0xb'));var crypto=require(_0x4034('0xc'));var jsforce=require(_0x4034('0xd'));var deskjs=require(_0x4034('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4034('0xf'));var Redis=require('ioredis');var authService=require(_0x4034('0x10'));var qs=require(_0x4034('0x11'));var as=require(_0x4034('0x12'));var hardwareService=require(_0x4034('0x13'));var logger=require(_0x4034('0x14'))('api');var utils=require(_0x4034('0x15'));var config=require(_0x4034('0x16'));var licenseUtil=require(_0x4034('0x17'));var db=require(_0x4034('0x18'))['db'];function respondWithStatusCode(_0x141cc2,_0x29d497){_0x29d497=_0x29d497||0xcc;return function(_0x9da5cf){if(_0x9da5cf){return _0x141cc2['sendStatus'](_0x29d497);}return _0x141cc2[_0x4034('0x19')](_0x29d497)[_0x4034('0x1a')]();};}function respondWithResult(_0x4bab40,_0xb48455){_0xb48455=_0xb48455||0xc8;return function(_0x2d0140){if(_0x2d0140){return _0x4bab40[_0x4034('0x19')](_0xb48455)[_0x4034('0x1b')](_0x2d0140);}};}function respondWithFilteredResult(_0x90d4de,_0x528df9){return function(_0x781b9e){if(_0x781b9e){var _0x512857=typeof _0x528df9[_0x4034('0x1c')]===_0x4034('0x1d')&&typeof _0x528df9['limit']==='undefined';var _0x5064b4=_0x781b9e[_0x4034('0x1e')];var _0x353e06=_0x512857?0x0:_0x528df9['offset'];var _0x26894d=_0x512857?_0x781b9e[_0x4034('0x1e')]:_0x528df9['offset']+_0x528df9[_0x4034('0x1f')];var _0x4884e1;if(_0x26894d>=_0x5064b4){_0x26894d=_0x5064b4;_0x4884e1=0xc8;}else{_0x4884e1=0xce;}_0x90d4de[_0x4034('0x19')](_0x4884e1);return _0x90d4de[_0x4034('0x20')](_0x4034('0x21'),_0x353e06+'-'+_0x26894d+'/'+_0x5064b4)[_0x4034('0x1b')](_0x781b9e);}return null;};}function patchUpdates(_0x526646){return function(_0x1dadd6){try{jsonpatch['apply'](_0x1dadd6,_0x526646,!![]);}catch(_0x540f06){return BPromise[_0x4034('0x22')](_0x540f06);}return _0x1dadd6[_0x4034('0x23')]();};}function saveUpdates(_0x3a263a,_0x443776){return function(_0x1baf1d){if(_0x1baf1d){return _0x1baf1d[_0x4034('0x24')](_0x3a263a)[_0x4034('0x25')](function(_0x495f95){return _0x495f95;});}return null;};}function removeEntity(_0x474dfe,_0x480ee2){return function(_0x635ac3){if(_0x635ac3){return _0x635ac3[_0x4034('0x26')]()['then'](function(){_0x474dfe[_0x4034('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d15ee,_0x1fa3a8){return function(_0x58d536){if(!_0x58d536){_0x5d15ee['sendStatus'](0x194);}return _0x58d536;};}function handleError(_0x20e9a7,_0x1a686b){_0x1a686b=_0x1a686b||0x1f4;return function(_0x6da906){logger[_0x4034('0x27')](_0x6da906['stack']);if(_0x6da906['name']){delete _0x6da906[_0x4034('0x28')];}_0x20e9a7[_0x4034('0x19')](_0x1a686b)[_0x4034('0x29')](_0x6da906);};}exports['index']=function(_0x4bc99e,_0x1371bc){var _0xf9594a={},_0x363408={},_0x54301c={'count':0x0,'rows':[]};var _0x26d102=_[_0x4034('0x2a')](db['MailSubstatus']['rawAttributes'],function(_0x4526b7){return{'name':_0x4526b7[_0x4034('0x2b')],'type':_0x4526b7[_0x4034('0x2c')][_0x4034('0x2d')]};});_0x363408[_0x4034('0x2e')]=_[_0x4034('0x2a')](_0x26d102,'name');_0x363408[_0x4034('0x2f')]=_[_0x4034('0x30')](_0x4bc99e['query']);_0x363408[_0x4034('0x31')]=_[_0x4034('0x32')](_0x363408[_0x4034('0x2e')],_0x363408[_0x4034('0x2f')]);_0xf9594a[_0x4034('0x33')]=_[_0x4034('0x32')](_0x363408[_0x4034('0x2e')],qs[_0x4034('0x34')](_0x4bc99e['query']['fields']));_0xf9594a['attributes']=_0xf9594a['attributes'][_0x4034('0x35')]?_0xf9594a[_0x4034('0x33')]:_0x363408[_0x4034('0x2e')];if(!_0x4bc99e[_0x4034('0x2f')]['hasOwnProperty'](_0x4034('0x36'))){_0xf9594a[_0x4034('0x1f')]=qs[_0x4034('0x1f')](_0x4bc99e['query'][_0x4034('0x1f')]);_0xf9594a[_0x4034('0x1c')]=qs[_0x4034('0x1c')](_0x4bc99e['query'][_0x4034('0x1c')]);}_0xf9594a[_0x4034('0x37')]=qs[_0x4034('0x38')](_0x4bc99e[_0x4034('0x2f')]['sort']);_0xf9594a[_0x4034('0x39')]=qs[_0x4034('0x31')](_[_0x4034('0x3a')](_0x4bc99e[_0x4034('0x2f')],_0x363408[_0x4034('0x31')]),_0x26d102);if(_0x4bc99e[_0x4034('0x2f')]['filter']){_0xf9594a[_0x4034('0x39')]=_[_0x4034('0x3b')](_0xf9594a[_0x4034('0x39')],{'$or':_[_0x4034('0x2a')](_0x26d102,function(_0x352b7d){if(_0x352b7d[_0x4034('0x2c')]!==_0x4034('0x3c')){var _0x19d952={};_0x19d952[_0x352b7d['name']]={'$like':'%'+_0x4bc99e[_0x4034('0x2f')][_0x4034('0x3d')]+'%'};return _0x19d952;}})});}_0xf9594a=_['merge']({},_0xf9594a,_0x4bc99e[_0x4034('0x3e')]);var _0x538cac={'where':_0xf9594a[_0x4034('0x39')]};return db[_0x4034('0x3f')][_0x4034('0x1e')](_0x538cac)[_0x4034('0x25')](function(_0x40587f){_0x54301c[_0x4034('0x1e')]=_0x40587f;if(_0x4bc99e[_0x4034('0x2f')][_0x4034('0x40')]){_0xf9594a[_0x4034('0x41')]=[{'all':!![]}];}return db[_0x4034('0x3f')]['findAll'](_0xf9594a);})[_0x4034('0x25')](function(_0x593569){_0x54301c['rows']=_0x593569;return _0x54301c;})[_0x4034('0x25')](respondWithFilteredResult(_0x1371bc,_0xf9594a))[_0x4034('0x42')](handleError(_0x1371bc,null));};exports['show']=function(_0x599083,_0x4a763e){var _0x3c8607={'raw':!![],'where':{'id':_0x599083['params']['id']}},_0x5aabae={};_0x5aabae[_0x4034('0x2e')]=_['keys'](db[_0x4034('0x3f')][_0x4034('0x43')]);_0x5aabae[_0x4034('0x2f')]=_[_0x4034('0x30')](_0x599083[_0x4034('0x2f')]);_0x5aabae[_0x4034('0x31')]=_[_0x4034('0x32')](_0x5aabae['model'],_0x5aabae[_0x4034('0x2f')]);_0x3c8607[_0x4034('0x33')]=_[_0x4034('0x32')](_0x5aabae['model'],qs[_0x4034('0x34')](_0x599083[_0x4034('0x2f')][_0x4034('0x34')]));_0x3c8607[_0x4034('0x33')]=_0x3c8607[_0x4034('0x33')][_0x4034('0x35')]?_0x3c8607['attributes']:_0x5aabae[_0x4034('0x2e')];if(_0x599083[_0x4034('0x2f')]['includeAll']){_0x3c8607[_0x4034('0x41')]=[{'all':!![]}];}_0x3c8607=_[_0x4034('0x3b')]({},_0x3c8607,_0x599083[_0x4034('0x3e')]);return db[_0x4034('0x3f')][_0x4034('0x44')](_0x3c8607)[_0x4034('0x25')](handleEntityNotFound(_0x4a763e,null))['then'](respondWithResult(_0x4a763e,null))['catch'](handleError(_0x4a763e,null));};exports['create']=function(_0x3388d9,_0x2ef833){return db[_0x4034('0x3f')][_0x4034('0x45')](_0x3388d9[_0x4034('0x46')],{})[_0x4034('0x25')](respondWithResult(_0x2ef833,0xc9))[_0x4034('0x42')](handleError(_0x2ef833,null));};exports[_0x4034('0x24')]=function(_0x1686ae,_0x561ed6){if(_0x1686ae[_0x4034('0x46')]['id']){delete _0x1686ae[_0x4034('0x46')]['id'];}return db[_0x4034('0x3f')][_0x4034('0x44')]({'where':{'id':_0x1686ae[_0x4034('0x47')]['id']}})[_0x4034('0x25')](handleEntityNotFound(_0x561ed6,null))['then'](saveUpdates(_0x1686ae[_0x4034('0x46')],null))[_0x4034('0x25')](respondWithResult(_0x561ed6,null))[_0x4034('0x42')](handleError(_0x561ed6,null));};exports[_0x4034('0x26')]=function(_0x2a1096,_0x10ccd6){return db[_0x4034('0x3f')]['find']({'where':{'id':_0x2a1096[_0x4034('0x47')]['id']}})[_0x4034('0x25')](handleEntityNotFound(_0x10ccd6,null))[_0x4034('0x25')](removeEntity(_0x10ccd6,null))['catch'](handleError(_0x10ccd6,null));};exports['describe']=function(_0xb5c7e0,_0x4279fc){return db[_0x4034('0x3f')][_0x4034('0x48')]()[_0x4034('0x25')](respondWithResult(_0x4279fc,null))[_0x4034('0x42')](handleError(_0x4279fc,null));};
\ No newline at end of file
+var _0xb916=['../../config/environment','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','offset','apply','save','destroy','then','error','stack','name','send','index','MailSubstatus','fieldName','type','key','map','query','keys','intersection','model','fields','attributes','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','rawAttributes','length','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils'];(function(_0x269ec7,_0x12df5c){var _0x358abd=function(_0x186335){while(--_0x186335){_0x269ec7['push'](_0x269ec7['shift']());}};_0x358abd(++_0x12df5c);}(_0xb916,0xc8));var _0x6b91=function(_0x390dad,_0x3a3e5a){_0x390dad=_0x390dad-0x0;var _0x490148=_0xb916[_0x390dad];return _0x490148;};'use strict';var emlformat=require(_0x6b91('0x0'));var rimraf=require(_0x6b91('0x1'));var zipdir=require(_0x6b91('0x2'));var jsonpatch=require(_0x6b91('0x3'));var rp=require(_0x6b91('0x4'));var moment=require(_0x6b91('0x5'));var BPromise=require(_0x6b91('0x6'));var Mustache=require(_0x6b91('0x7'));var util=require('util');var path=require('path');var sox=require(_0x6b91('0x8'));var csv=require(_0x6b91('0x9'));var ejs=require(_0x6b91('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x6b91('0xb'));var crypto=require('crypto');var jsforce=require(_0x6b91('0xc'));var deskjs=require(_0x6b91('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6b91('0xe'));var Papa=require(_0x6b91('0xf'));var Redis=require('ioredis');var authService=require(_0x6b91('0x10'));var qs=require(_0x6b91('0x11'));var as=require(_0x6b91('0x12'));var hardwareService=require(_0x6b91('0x13'));var logger=require('../../config/logger')(_0x6b91('0x14'));var utils=require(_0x6b91('0x15'));var config=require(_0x6b91('0x16'));var licenseUtil=require(_0x6b91('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x24865b,_0x289a8f){_0x289a8f=_0x289a8f||0xcc;return function(_0x237504){if(_0x237504){return _0x24865b[_0x6b91('0x18')](_0x289a8f);}return _0x24865b[_0x6b91('0x19')](_0x289a8f)[_0x6b91('0x1a')]();};}function respondWithResult(_0x12ad28,_0x3693c6){_0x3693c6=_0x3693c6||0xc8;return function(_0x28f55b){if(_0x28f55b){return _0x12ad28['status'](_0x3693c6)[_0x6b91('0x1b')](_0x28f55b);}};}function respondWithFilteredResult(_0x358587,_0x35dd10){return function(_0x521b1d){if(_0x521b1d){var _0x5868b9=typeof _0x35dd10['offset']==='undefined'&&typeof _0x35dd10[_0x6b91('0x1c')]===_0x6b91('0x1d');var _0x2eed58=_0x521b1d[_0x6b91('0x1e')];var _0x4d03ce=_0x5868b9?0x0:_0x35dd10[_0x6b91('0x1f')];var _0x340bc9=_0x5868b9?_0x521b1d[_0x6b91('0x1e')]:_0x35dd10['offset']+_0x35dd10[_0x6b91('0x1c')];var _0x1d87c9;if(_0x340bc9>=_0x2eed58){_0x340bc9=_0x2eed58;_0x1d87c9=0xc8;}else{_0x1d87c9=0xce;}_0x358587[_0x6b91('0x19')](_0x1d87c9);return _0x358587['set']('Content-Range',_0x4d03ce+'-'+_0x340bc9+'/'+_0x2eed58)[_0x6b91('0x1b')](_0x521b1d);}return null;};}function patchUpdates(_0x269eb0){return function(_0x43bff3){try{jsonpatch[_0x6b91('0x20')](_0x43bff3,_0x269eb0,!![]);}catch(_0x591217){return BPromise['reject'](_0x591217);}return _0x43bff3[_0x6b91('0x21')]();};}function saveUpdates(_0x1e8b58,_0xf0ecad){return function(_0x3d9c81){if(_0x3d9c81){return _0x3d9c81['update'](_0x1e8b58)['then'](function(_0x2a8260){return _0x2a8260;});}return null;};}function removeEntity(_0x15bcee,_0x10af4f){return function(_0x27b706){if(_0x27b706){return _0x27b706[_0x6b91('0x22')]()[_0x6b91('0x23')](function(){_0x15bcee['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x31b9b4,_0x34f0e9){return function(_0x381f7f){if(!_0x381f7f){_0x31b9b4[_0x6b91('0x18')](0x194);}return _0x381f7f;};}function handleError(_0x384226,_0x209da4){_0x209da4=_0x209da4||0x1f4;return function(_0x1243d2){logger[_0x6b91('0x24')](_0x1243d2[_0x6b91('0x25')]);if(_0x1243d2['name']){delete _0x1243d2[_0x6b91('0x26')];}_0x384226[_0x6b91('0x19')](_0x209da4)[_0x6b91('0x27')](_0x1243d2);};}exports[_0x6b91('0x28')]=function(_0x2c9922,_0x167445){var _0x5a657b={},_0x57805a={},_0x238bcf={'count':0x0,'rows':[]};var _0xb289e2=_['map'](db[_0x6b91('0x29')]['rawAttributes'],function(_0x2a83bc){return{'name':_0x2a83bc[_0x6b91('0x2a')],'type':_0x2a83bc[_0x6b91('0x2b')][_0x6b91('0x2c')]};});_0x57805a['model']=_[_0x6b91('0x2d')](_0xb289e2,_0x6b91('0x26'));_0x57805a[_0x6b91('0x2e')]=_[_0x6b91('0x2f')](_0x2c9922[_0x6b91('0x2e')]);_0x57805a['filters']=_[_0x6b91('0x30')](_0x57805a[_0x6b91('0x31')],_0x57805a[_0x6b91('0x2e')]);_0x5a657b['attributes']=_[_0x6b91('0x30')](_0x57805a[_0x6b91('0x31')],qs[_0x6b91('0x32')](_0x2c9922[_0x6b91('0x2e')]['fields']));_0x5a657b['attributes']=_0x5a657b['attributes']['length']?_0x5a657b[_0x6b91('0x33')]:_0x57805a[_0x6b91('0x31')];if(!_0x2c9922[_0x6b91('0x2e')][_0x6b91('0x34')]('nolimit')){_0x5a657b[_0x6b91('0x1c')]=qs[_0x6b91('0x1c')](_0x2c9922['query'][_0x6b91('0x1c')]);_0x5a657b['offset']=qs['offset'](_0x2c9922[_0x6b91('0x2e')]['offset']);}_0x5a657b[_0x6b91('0x35')]=qs[_0x6b91('0x36')](_0x2c9922[_0x6b91('0x2e')][_0x6b91('0x36')]);_0x5a657b[_0x6b91('0x37')]=qs[_0x6b91('0x38')](_[_0x6b91('0x39')](_0x2c9922[_0x6b91('0x2e')],_0x57805a['filters']),_0xb289e2);if(_0x2c9922[_0x6b91('0x2e')][_0x6b91('0x3a')]){_0x5a657b['where']=_[_0x6b91('0x3b')](_0x5a657b[_0x6b91('0x37')],{'$or':_[_0x6b91('0x2d')](_0xb289e2,function(_0x581fb1){if(_0x581fb1['type']!==_0x6b91('0x3c')){var _0xd7e4ee={};_0xd7e4ee[_0x581fb1[_0x6b91('0x26')]]={'$like':'%'+_0x2c9922[_0x6b91('0x2e')]['filter']+'%'};return _0xd7e4ee;}})});}_0x5a657b=_[_0x6b91('0x3b')]({},_0x5a657b,_0x2c9922[_0x6b91('0x3d')]);var _0x415619={'where':_0x5a657b[_0x6b91('0x37')]};return db['MailSubstatus'][_0x6b91('0x1e')](_0x415619)['then'](function(_0x24a1bd){_0x238bcf['count']=_0x24a1bd;if(_0x2c9922['query'][_0x6b91('0x3e')]){_0x5a657b['include']=[{'all':!![]}];}return db[_0x6b91('0x29')][_0x6b91('0x3f')](_0x5a657b);})['then'](function(_0x4a7b44){_0x238bcf[_0x6b91('0x40')]=_0x4a7b44;return _0x238bcf;})[_0x6b91('0x23')](respondWithFilteredResult(_0x167445,_0x5a657b))[_0x6b91('0x41')](handleError(_0x167445,null));};exports[_0x6b91('0x42')]=function(_0x161dc6,_0x113ae6){var _0x283e8b={'raw':!![],'where':{'id':_0x161dc6['params']['id']}},_0x5d5d56={};_0x5d5d56['model']=_[_0x6b91('0x2f')](db[_0x6b91('0x29')][_0x6b91('0x43')]);_0x5d5d56[_0x6b91('0x2e')]=_[_0x6b91('0x2f')](_0x161dc6[_0x6b91('0x2e')]);_0x5d5d56[_0x6b91('0x38')]=_[_0x6b91('0x30')](_0x5d5d56['model'],_0x5d5d56[_0x6b91('0x2e')]);_0x283e8b['attributes']=_[_0x6b91('0x30')](_0x5d5d56['model'],qs[_0x6b91('0x32')](_0x161dc6[_0x6b91('0x2e')][_0x6b91('0x32')]));_0x283e8b[_0x6b91('0x33')]=_0x283e8b[_0x6b91('0x33')][_0x6b91('0x44')]?_0x283e8b['attributes']:_0x5d5d56[_0x6b91('0x31')];if(_0x161dc6[_0x6b91('0x2e')][_0x6b91('0x3e')]){_0x283e8b['include']=[{'all':!![]}];}_0x283e8b=_['merge']({},_0x283e8b,_0x161dc6[_0x6b91('0x3d')]);return db[_0x6b91('0x29')]['find'](_0x283e8b)[_0x6b91('0x23')](handleEntityNotFound(_0x113ae6,null))[_0x6b91('0x23')](respondWithResult(_0x113ae6,null))[_0x6b91('0x41')](handleError(_0x113ae6,null));};exports[_0x6b91('0x45')]=function(_0x44e25a,_0x2a1f0d){return db[_0x6b91('0x29')][_0x6b91('0x45')](_0x44e25a[_0x6b91('0x46')],{})[_0x6b91('0x23')](respondWithResult(_0x2a1f0d,0xc9))[_0x6b91('0x41')](handleError(_0x2a1f0d,null));};exports['update']=function(_0x1b9479,_0xe7589e){if(_0x1b9479[_0x6b91('0x46')]['id']){delete _0x1b9479['body']['id'];}return db[_0x6b91('0x29')][_0x6b91('0x47')]({'where':{'id':_0x1b9479[_0x6b91('0x48')]['id']}})[_0x6b91('0x23')](handleEntityNotFound(_0xe7589e,null))[_0x6b91('0x23')](saveUpdates(_0x1b9479[_0x6b91('0x46')],null))['then'](respondWithResult(_0xe7589e,null))[_0x6b91('0x41')](handleError(_0xe7589e,null));};exports[_0x6b91('0x22')]=function(_0x2789dd,_0x2e29d2){return db[_0x6b91('0x29')][_0x6b91('0x47')]({'where':{'id':_0x2789dd[_0x6b91('0x48')]['id']}})[_0x6b91('0x23')](handleEntityNotFound(_0x2e29d2,null))['then'](removeEntity(_0x2e29d2,null))[_0x6b91('0x41')](handleError(_0x2e29d2,null));};exports['describe']=function(_0x265d20,_0x49ab4e){return db[_0x6b91('0x29')][_0x6b91('0x49')]()['then'](respondWithResult(_0x49ab4e,null))[_0x6b91('0x41')](handleError(_0x49ab4e,null));};
\ No newline at end of file