Built motion from commit 3e059bc2.|2.5.32
[motion2.git] / server / api / smsApplication / smsApplication.controller.js
index d6fa2ff..d6b9ade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6958=['lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','SmsApplication','includeAll','findAll','rows','show','params','find','create','catch','update','body','html-pdf','eml-format','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv'];(function(_0x3c2a69,_0x4c8b41){var _0x596bc8=function(_0x1b4b7c){while(--_0x1b4b7c){_0x3c2a69['push'](_0x3c2a69['shift']());}};_0x596bc8(++_0x4c8b41);}(_0x6958,0x11a));var _0x8695=function(_0x62dd2b,_0x2744c4){_0x62dd2b=_0x62dd2b-0x0;var _0x35bf16=_0x6958[_0x62dd2b];return _0x35bf16;};'use strict';var pdf=require(_0x8695('0x0'));var emlformat=require(_0x8695('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x8695('0x2'));var rp=require(_0x8695('0x3'));var moment=require(_0x8695('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8695('0x5'));var util=require(_0x8695('0x6'));var path=require(_0x8695('0x7'));var sox=require(_0x8695('0x8'));var csv=require(_0x8695('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x8695('0xa'));var squel=require(_0x8695('0xb'));var crypto=require('crypto');var jsforce=require(_0x8695('0xc'));var deskjs=require(_0x8695('0xd'));var toCsv=require(_0x8695('0x9'));var querystring=require(_0x8695('0xe'));var Papa=require(_0x8695('0xf'));var Redis=require('ioredis');var authService=require(_0x8695('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x8695('0x11'));var hardwareService=require(_0x8695('0x12'));var logger=require(_0x8695('0x13'))(_0x8695('0x14'));var utils=require(_0x8695('0x15'));var config=require(_0x8695('0x16'));var licenseUtil=require(_0x8695('0x17'));var db=require(_0x8695('0x18'))['db'];function respondWithStatusCode(_0xfdf3f,_0x1807e7){_0x1807e7=_0x1807e7||0xcc;return function(_0x52b46e){if(_0x52b46e){return _0xfdf3f[_0x8695('0x19')](_0x1807e7);}return _0xfdf3f[_0x8695('0x1a')](_0x1807e7)[_0x8695('0x1b')]();};}function respondWithResult(_0x856e2b,_0x1346cd){_0x1346cd=_0x1346cd||0xc8;return function(_0x120998){if(_0x120998){return _0x856e2b[_0x8695('0x1a')](_0x1346cd)[_0x8695('0x1c')](_0x120998);}};}function respondWithFilteredResult(_0x5f1a0d,_0x5e152d){return function(_0xc6adc9){if(_0xc6adc9){var _0x5e5e22=_0xc6adc9[_0x8695('0x1d')],_0x38bf27=_0x5e152d[_0x8695('0x1e')],_0x9f68d0=_0x5e152d[_0x8695('0x1e')]+_0x5e152d[_0x8695('0x1f')],_0x4ec912;if(_0x9f68d0>=_0x5e5e22){_0x9f68d0=_0x5e5e22;_0x4ec912=0xc8;}else{_0x4ec912=0xce;}_0x5f1a0d[_0x8695('0x1a')](_0x4ec912);return _0x5f1a0d[_0x8695('0x20')]('Content-Range',_0x38bf27+'-'+_0x9f68d0+'/'+_0x5e5e22)['json'](_0xc6adc9);}return null;};}function patchUpdates(_0x439e6c){return function(_0x407716){try{jsonpatch['apply'](_0x407716,_0x439e6c,!![]);}catch(_0x380bf3){return BPromise['reject'](_0x380bf3);}return _0x407716['save']();};}function saveUpdates(_0x54d3d2,_0x165bcb){return function(_0x3713d5){if(_0x3713d5){return _0x3713d5['update'](_0x54d3d2)[_0x8695('0x21')](function(_0x465c1e){return _0x465c1e;});}return null;};}function removeEntity(_0x5ae796,_0x515a9c){return function(_0x2372c4){if(_0x2372c4){return _0x2372c4[_0x8695('0x22')]()['then'](function(){_0x5ae796['status'](0xcc)[_0x8695('0x1b')]();});}};}function handleEntityNotFound(_0x8686b6,_0x38aa3e){return function(_0x48e56b){if(!_0x48e56b){_0x8686b6['sendStatus'](0x194);}return _0x48e56b;};}function handleError(_0x1e2481,_0x2a3778){_0x2a3778=_0x2a3778||0x1f4;return function(_0x4186ca){logger[_0x8695('0x23')](_0x4186ca[_0x8695('0x24')]);if(_0x4186ca[_0x8695('0x25')]){delete _0x4186ca['name'];}_0x1e2481[_0x8695('0x1a')](_0x2a3778)[_0x8695('0x26')](_0x4186ca);};}exports[_0x8695('0x27')]=function(_0x1894ea,_0x28fd80){var _0x4bf11d={},_0x4b7489={},_0x31eb25={'count':0x0,'rows':[]};var _0x53c4cd=_[_0x8695('0x28')](db['SmsApplication'][_0x8695('0x29')],function(_0x4a4838){return{'name':_0x4a4838[_0x8695('0x2a')],'type':_0x4a4838[_0x8695('0x2b')][_0x8695('0x2c')]};});_0x4b7489[_0x8695('0x2d')]=_['map'](_0x53c4cd,_0x8695('0x25'));_0x4b7489[_0x8695('0x2e')]=_[_0x8695('0x2f')](_0x1894ea[_0x8695('0x2e')]);_0x4b7489['filters']=_['intersection'](_0x4b7489[_0x8695('0x2d')],_0x4b7489[_0x8695('0x2e')]);_0x4bf11d['attributes']=_[_0x8695('0x30')](_0x4b7489['model'],qs[_0x8695('0x31')](_0x1894ea[_0x8695('0x2e')][_0x8695('0x31')]));_0x4bf11d['attributes']=_0x4bf11d[_0x8695('0x32')][_0x8695('0x33')]?_0x4bf11d[_0x8695('0x32')]:_0x4b7489[_0x8695('0x2d')];if(!_0x1894ea[_0x8695('0x2e')][_0x8695('0x34')]('nolimit')){_0x4bf11d[_0x8695('0x1f')]=qs['limit'](_0x1894ea[_0x8695('0x2e')]['limit']);_0x4bf11d[_0x8695('0x1e')]=qs[_0x8695('0x1e')](_0x1894ea['query']['offset']);}_0x4bf11d[_0x8695('0x35')]=qs[_0x8695('0x36')](_0x1894ea['query'][_0x8695('0x36')]);_0x4bf11d['where']=qs[_0x8695('0x37')](_[_0x8695('0x38')](_0x1894ea[_0x8695('0x2e')],_0x4b7489[_0x8695('0x37')]),_0x53c4cd);if(_0x1894ea[_0x8695('0x2e')][_0x8695('0x39')]){_0x4bf11d[_0x8695('0x3a')]=_[_0x8695('0x3b')](_0x4bf11d[_0x8695('0x3a')],{'$or':_[_0x8695('0x28')](_0x53c4cd,function(_0xa27b3f){if(_0xa27b3f[_0x8695('0x2b')]!==_0x8695('0x3c')){var _0x177270={};_0x177270[_0xa27b3f['name']]={'$like':'%'+_0x1894ea[_0x8695('0x2e')][_0x8695('0x39')]+'%'};return _0x177270;}})});}_0x4bf11d=_['merge']({},_0x4bf11d,_0x1894ea[_0x8695('0x3d')]);var _0x4f2d1e={'where':_0x4bf11d[_0x8695('0x3a')]};return db[_0x8695('0x3e')][_0x8695('0x1d')](_0x4f2d1e)['then'](function(_0x490f2b){_0x31eb25[_0x8695('0x1d')]=_0x490f2b;if(_0x1894ea[_0x8695('0x2e')][_0x8695('0x3f')]){_0x4bf11d['include']=[{'all':!![]}];}return db['SmsApplication'][_0x8695('0x40')](_0x4bf11d);})[_0x8695('0x21')](function(_0x59b745){_0x31eb25[_0x8695('0x41')]=_0x59b745;return _0x31eb25;})[_0x8695('0x21')](respondWithFilteredResult(_0x28fd80,_0x4bf11d))['catch'](handleError(_0x28fd80,null));};exports[_0x8695('0x42')]=function(_0x4bed9d,_0x5a2ce1){var _0x39ac75={'raw':!![],'where':{'id':_0x4bed9d[_0x8695('0x43')]['id']}},_0x1ece6d={};_0x1ece6d['model']=_[_0x8695('0x2f')](db['SmsApplication'][_0x8695('0x29')]);_0x1ece6d[_0x8695('0x2e')]=_[_0x8695('0x2f')](_0x4bed9d['query']);_0x1ece6d[_0x8695('0x37')]=_[_0x8695('0x30')](_0x1ece6d[_0x8695('0x2d')],_0x1ece6d[_0x8695('0x2e')]);_0x39ac75[_0x8695('0x32')]=_[_0x8695('0x30')](_0x1ece6d[_0x8695('0x2d')],qs[_0x8695('0x31')](_0x4bed9d[_0x8695('0x2e')][_0x8695('0x31')]));_0x39ac75['attributes']=_0x39ac75[_0x8695('0x32')][_0x8695('0x33')]?_0x39ac75[_0x8695('0x32')]:_0x1ece6d[_0x8695('0x2d')];if(_0x4bed9d[_0x8695('0x2e')][_0x8695('0x3f')]){_0x39ac75['include']=[{'all':!![]}];}_0x39ac75=_[_0x8695('0x3b')]({},_0x39ac75,_0x4bed9d['options']);return db[_0x8695('0x3e')][_0x8695('0x44')](_0x39ac75)['then'](handleEntityNotFound(_0x5a2ce1,null))[_0x8695('0x21')](respondWithResult(_0x5a2ce1,null))['catch'](handleError(_0x5a2ce1,null));};exports[_0x8695('0x45')]=function(_0x6116d3,_0x2edc6c){return db[_0x8695('0x3e')][_0x8695('0x45')](_0x6116d3['body'],{})[_0x8695('0x21')](respondWithResult(_0x2edc6c,0xc9))[_0x8695('0x46')](handleError(_0x2edc6c,null));};exports[_0x8695('0x47')]=function(_0x382769,_0x58becb){if(_0x382769[_0x8695('0x48')]['id']){delete _0x382769[_0x8695('0x48')]['id'];}return db[_0x8695('0x3e')][_0x8695('0x44')]({'where':{'id':_0x382769[_0x8695('0x43')]['id']}})[_0x8695('0x21')](handleEntityNotFound(_0x58becb,null))[_0x8695('0x21')](saveUpdates(_0x382769['body'],null))['then'](respondWithResult(_0x58becb,null))[_0x8695('0x46')](handleError(_0x58becb,null));};exports[_0x8695('0x22')]=function(_0x484671,_0x109c36){return db[_0x8695('0x3e')][_0x8695('0x44')]({'where':{'id':_0x484671[_0x8695('0x43')]['id']}})[_0x8695('0x21')](handleEntityNotFound(_0x109c36,null))[_0x8695('0x21')](removeEntity(_0x109c36,null))[_0x8695('0x46')](handleError(_0x109c36,null));};
\ No newline at end of file
+var _0xd4a7=['to-csv','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','reject','then','destroy','error','send','map','SmsApplication','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','include','findAll','rows','show','params','includeAll','find','catch','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0x87704,_0x1d745d){var _0x4cba34=function(_0x4fd495){while(--_0x4fd495){_0x87704['push'](_0x87704['shift']());}};_0x4cba34(++_0x1d745d);}(_0xd4a7,0x1bd));var _0x7d4a=function(_0x5d3892,_0x3df3ac){_0x5d3892=_0x5d3892-0x0;var _0x487a9f=_0xd4a7[_0x5d3892];return _0x487a9f;};'use strict';var emlformat=require(_0x7d4a('0x0'));var rimraf=require(_0x7d4a('0x1'));var zipdir=require(_0x7d4a('0x2'));var jsonpatch=require(_0x7d4a('0x3'));var rp=require(_0x7d4a('0x4'));var moment=require(_0x7d4a('0x5'));var BPromise=require(_0x7d4a('0x6'));var Mustache=require(_0x7d4a('0x7'));var util=require(_0x7d4a('0x8'));var path=require(_0x7d4a('0x9'));var sox=require(_0x7d4a('0xa'));var csv=require(_0x7d4a('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7d4a('0xc'));var _=require(_0x7d4a('0xd'));var squel=require('squel');var crypto=require(_0x7d4a('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x7d4a('0xf'));var toCsv=require(_0x7d4a('0xb'));var querystring=require(_0x7d4a('0x10'));var Papa=require('papaparse');var Redis=require(_0x7d4a('0x11'));var authService=require(_0x7d4a('0x12'));var qs=require(_0x7d4a('0x13'));var as=require(_0x7d4a('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7d4a('0x15'))(_0x7d4a('0x16'));var utils=require(_0x7d4a('0x17'));var config=require(_0x7d4a('0x18'));var licenseUtil=require(_0x7d4a('0x19'));var db=require(_0x7d4a('0x1a'))['db'];function respondWithStatusCode(_0x43c4b9,_0x21bcfe){_0x21bcfe=_0x21bcfe||0xcc;return function(_0x2ef972){if(_0x2ef972){return _0x43c4b9[_0x7d4a('0x1b')](_0x21bcfe);}return _0x43c4b9['status'](_0x21bcfe)[_0x7d4a('0x1c')]();};}function respondWithResult(_0x2f741e,_0xbc56d2){_0xbc56d2=_0xbc56d2||0xc8;return function(_0x35d0ed){if(_0x35d0ed){return _0x2f741e[_0x7d4a('0x1d')](_0xbc56d2)[_0x7d4a('0x1e')](_0x35d0ed);}};}function respondWithFilteredResult(_0x92c55f,_0x11971a){return function(_0x435e91){if(_0x435e91){var _0x3bc410=typeof _0x11971a[_0x7d4a('0x1f')]===_0x7d4a('0x20')&&typeof _0x11971a[_0x7d4a('0x21')]===_0x7d4a('0x20');var _0x14c4d3=_0x435e91['count'];var _0x350ad8=_0x3bc410?0x0:_0x11971a[_0x7d4a('0x1f')];var _0x8660f9=_0x3bc410?_0x435e91[_0x7d4a('0x22')]:_0x11971a['offset']+_0x11971a['limit'];var _0x61ad6e;if(_0x8660f9>=_0x14c4d3){_0x8660f9=_0x14c4d3;_0x61ad6e=0xc8;}else{_0x61ad6e=0xce;}_0x92c55f[_0x7d4a('0x1d')](_0x61ad6e);return _0x92c55f[_0x7d4a('0x23')]('Content-Range',_0x350ad8+'-'+_0x8660f9+'/'+_0x14c4d3)[_0x7d4a('0x1e')](_0x435e91);}return null;};}function patchUpdates(_0x1e0656){return function(_0xac943e){try{jsonpatch['apply'](_0xac943e,_0x1e0656,!![]);}catch(_0x3751d9){return BPromise[_0x7d4a('0x24')](_0x3751d9);}return _0xac943e['save']();};}function saveUpdates(_0x56f4e5,_0x469b1b){return function(_0x1b064d){if(_0x1b064d){return _0x1b064d['update'](_0x56f4e5)[_0x7d4a('0x25')](function(_0xae3543){return _0xae3543;});}return null;};}function removeEntity(_0x432c95,_0x158b2d){return function(_0x453687){if(_0x453687){return _0x453687[_0x7d4a('0x26')]()[_0x7d4a('0x25')](function(){_0x432c95[_0x7d4a('0x1d')](0xcc)[_0x7d4a('0x1c')]();});}};}function handleEntityNotFound(_0x457631,_0x53f5ab){return function(_0x46774a){if(!_0x46774a){_0x457631[_0x7d4a('0x1b')](0x194);}return _0x46774a;};}function handleError(_0xc27ff3,_0xcc434){_0xcc434=_0xcc434||0x1f4;return function(_0x42216c){logger[_0x7d4a('0x27')](_0x42216c['stack']);if(_0x42216c['name']){delete _0x42216c['name'];}_0xc27ff3[_0x7d4a('0x1d')](_0xcc434)[_0x7d4a('0x28')](_0x42216c);};}exports['index']=function(_0x4d7172,_0x27c400){var _0x2a199a={},_0x17b675={},_0x3cd1e0={'count':0x0,'rows':[]};var _0x672744=_[_0x7d4a('0x29')](db[_0x7d4a('0x2a')][_0x7d4a('0x2b')],function(_0x8e89f8){return{'name':_0x8e89f8[_0x7d4a('0x2c')],'type':_0x8e89f8[_0x7d4a('0x2d')][_0x7d4a('0x2e')]};});_0x17b675['model']=_['map'](_0x672744,'name');_0x17b675[_0x7d4a('0x2f')]=_[_0x7d4a('0x30')](_0x4d7172['query']);_0x17b675[_0x7d4a('0x31')]=_[_0x7d4a('0x32')](_0x17b675[_0x7d4a('0x33')],_0x17b675[_0x7d4a('0x2f')]);_0x2a199a[_0x7d4a('0x34')]=_['intersection'](_0x17b675['model'],qs[_0x7d4a('0x35')](_0x4d7172[_0x7d4a('0x2f')][_0x7d4a('0x35')]));_0x2a199a[_0x7d4a('0x34')]=_0x2a199a['attributes'][_0x7d4a('0x36')]?_0x2a199a['attributes']:_0x17b675[_0x7d4a('0x33')];if(!_0x4d7172[_0x7d4a('0x2f')][_0x7d4a('0x37')](_0x7d4a('0x38'))){_0x2a199a[_0x7d4a('0x21')]=qs[_0x7d4a('0x21')](_0x4d7172[_0x7d4a('0x2f')][_0x7d4a('0x21')]);_0x2a199a[_0x7d4a('0x1f')]=qs[_0x7d4a('0x1f')](_0x4d7172[_0x7d4a('0x2f')]['offset']);}_0x2a199a[_0x7d4a('0x39')]=qs[_0x7d4a('0x3a')](_0x4d7172['query'][_0x7d4a('0x3a')]);_0x2a199a[_0x7d4a('0x3b')]=qs[_0x7d4a('0x31')](_[_0x7d4a('0x3c')](_0x4d7172[_0x7d4a('0x2f')],_0x17b675[_0x7d4a('0x31')]),_0x672744);if(_0x4d7172['query']['filter']){_0x2a199a[_0x7d4a('0x3b')]=_['merge'](_0x2a199a[_0x7d4a('0x3b')],{'$or':_[_0x7d4a('0x29')](_0x672744,function(_0x1a0d62){if(_0x1a0d62['type']!==_0x7d4a('0x3d')){var _0x56001c={};_0x56001c[_0x1a0d62['name']]={'$like':'%'+_0x4d7172[_0x7d4a('0x2f')][_0x7d4a('0x3e')]+'%'};return _0x56001c;}})});}_0x2a199a=_[_0x7d4a('0x3f')]({},_0x2a199a,_0x4d7172[_0x7d4a('0x40')]);var _0x1559a7={'where':_0x2a199a[_0x7d4a('0x3b')]};return db['SmsApplication'][_0x7d4a('0x22')](_0x1559a7)[_0x7d4a('0x25')](function(_0x5d9e20){_0x3cd1e0['count']=_0x5d9e20;if(_0x4d7172[_0x7d4a('0x2f')]['includeAll']){_0x2a199a[_0x7d4a('0x41')]=[{'all':!![]}];}return db[_0x7d4a('0x2a')][_0x7d4a('0x42')](_0x2a199a);})[_0x7d4a('0x25')](function(_0x44e5a0){_0x3cd1e0[_0x7d4a('0x43')]=_0x44e5a0;return _0x3cd1e0;})[_0x7d4a('0x25')](respondWithFilteredResult(_0x27c400,_0x2a199a))['catch'](handleError(_0x27c400,null));};exports[_0x7d4a('0x44')]=function(_0x3b1106,_0x4102ab){var _0x1ba18f={'raw':!![],'where':{'id':_0x3b1106[_0x7d4a('0x45')]['id']}},_0x5d3604={};_0x5d3604[_0x7d4a('0x33')]=_[_0x7d4a('0x30')](db['SmsApplication'][_0x7d4a('0x2b')]);_0x5d3604[_0x7d4a('0x2f')]=_['keys'](_0x3b1106[_0x7d4a('0x2f')]);_0x5d3604[_0x7d4a('0x31')]=_[_0x7d4a('0x32')](_0x5d3604['model'],_0x5d3604['query']);_0x1ba18f[_0x7d4a('0x34')]=_[_0x7d4a('0x32')](_0x5d3604['model'],qs[_0x7d4a('0x35')](_0x3b1106[_0x7d4a('0x2f')]['fields']));_0x1ba18f[_0x7d4a('0x34')]=_0x1ba18f[_0x7d4a('0x34')][_0x7d4a('0x36')]?_0x1ba18f['attributes']:_0x5d3604[_0x7d4a('0x33')];if(_0x3b1106[_0x7d4a('0x2f')][_0x7d4a('0x46')]){_0x1ba18f['include']=[{'all':!![]}];}_0x1ba18f=_[_0x7d4a('0x3f')]({},_0x1ba18f,_0x3b1106['options']);return db[_0x7d4a('0x2a')][_0x7d4a('0x47')](_0x1ba18f)['then'](handleEntityNotFound(_0x4102ab,null))[_0x7d4a('0x25')](respondWithResult(_0x4102ab,null))[_0x7d4a('0x48')](handleError(_0x4102ab,null));};exports['create']=function(_0x142c8e,_0x3a2fc5){return db[_0x7d4a('0x2a')][_0x7d4a('0x49')](_0x142c8e[_0x7d4a('0x4a')],{})[_0x7d4a('0x25')](respondWithResult(_0x3a2fc5,0xc9))[_0x7d4a('0x48')](handleError(_0x3a2fc5,null));};exports[_0x7d4a('0x4b')]=function(_0x287629,_0x50e21b){if(_0x287629[_0x7d4a('0x4a')]['id']){delete _0x287629['body']['id'];}return db['SmsApplication']['find']({'where':{'id':_0x287629[_0x7d4a('0x45')]['id']}})[_0x7d4a('0x25')](handleEntityNotFound(_0x50e21b,null))[_0x7d4a('0x25')](saveUpdates(_0x287629[_0x7d4a('0x4a')],null))[_0x7d4a('0x25')](respondWithResult(_0x50e21b,null))[_0x7d4a('0x48')](handleError(_0x50e21b,null));};exports['destroy']=function(_0x3012b6,_0x55116a){return db['SmsApplication'][_0x7d4a('0x47')]({'where':{'id':_0x3012b6['params']['id']}})[_0x7d4a('0x25')](handleEntityNotFound(_0x55116a,null))[_0x7d4a('0x25')](removeEntity(_0x55116a,null))['catch'](handleError(_0x55116a,null));};
\ No newline at end of file