Built motion from commit a61a4a20.|2.5.46
[motion2.git] / server / api / jscriptyAnswerReport / jscriptyAnswerReport.controller.js
index 20679bf..24b6100 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x646e=['../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','set','Content-Range','apply','reject','save','update','then','error','name','index','map','JscriptyAnswerReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','limit','order','sort','where','filter','VIRTUAL','merge','options','count','includeAll','include','findAll','rows','show','find','catch','create','params','body','describe','html-pdf','eml-format','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x5aa992,_0x559ebb){var _0x2e2d59=function(_0x1e2e35){while(--_0x1e2e35){_0x5aa992['push'](_0x5aa992['shift']());}};_0x2e2d59(++_0x559ebb);}(_0x646e,0x110));var _0xe646=function(_0x4da647,_0x29743c){_0x4da647=_0x4da647-0x0;var _0x5259e3=_0x646e[_0x4da647];return _0x5259e3;};'use strict';var pdf=require(_0xe646('0x0'));var emlformat=require(_0xe646('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xe646('0x2'));var moment=require(_0xe646('0x3'));var BPromise=require(_0xe646('0x4'));var Mustache=require(_0xe646('0x5'));var util=require(_0xe646('0x6'));var path=require(_0xe646('0x7'));var sox=require('sox');var csv=require(_0xe646('0x8'));var ejs=require(_0xe646('0x9'));var fs=require('fs');var _=require(_0xe646('0xa'));var squel=require('squel');var crypto=require(_0xe646('0xb'));var jsforce=require(_0xe646('0xc'));var deskjs=require(_0xe646('0xd'));var toCsv=require(_0xe646('0x8'));var querystring=require(_0xe646('0xe'));var Papa=require('papaparse');var Redis=require(_0xe646('0xf'));var authService=require(_0xe646('0x10'));var qs=require(_0xe646('0x11'));var as=require(_0xe646('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe646('0x13'))('api');var utils=require(_0xe646('0x14'));var config=require(_0xe646('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xe646('0x16'))['db'];function respondWithStatusCode(_0x63d9a1,_0x49b342){_0x49b342=_0x49b342||0xcc;return function(_0xfa49a2){if(_0xfa49a2){return _0x63d9a1[_0xe646('0x17')](_0x49b342);}return _0x63d9a1[_0xe646('0x18')](_0x49b342)[_0xe646('0x19')]();};}function respondWithResult(_0x4f5065,_0x3fc8d8){_0x3fc8d8=_0x3fc8d8||0xc8;return function(_0x1fc951){if(_0x1fc951){return _0x4f5065[_0xe646('0x18')](_0x3fc8d8)[_0xe646('0x1a')](_0x1fc951);}};}function respondWithFilteredResult(_0x271181,_0x15bac8){return function(_0x206c1f){if(_0x206c1f){var _0x4ec4f2=_0x206c1f['count'],_0x1725db=_0x15bac8[_0xe646('0x1b')],_0x2a4074=_0x15bac8['offset']+_0x15bac8['limit'],_0x15a2ba;if(_0x2a4074>=_0x4ec4f2){_0x2a4074=_0x4ec4f2;_0x15a2ba=0xc8;}else{_0x15a2ba=0xce;}_0x271181[_0xe646('0x18')](_0x15a2ba);return _0x271181[_0xe646('0x1c')](_0xe646('0x1d'),_0x1725db+'-'+_0x2a4074+'/'+_0x4ec4f2)[_0xe646('0x1a')](_0x206c1f);}return null;};}function patchUpdates(_0x801a02){return function(_0x1e0432){try{jsonpatch[_0xe646('0x1e')](_0x1e0432,_0x801a02,!![]);}catch(_0x201244){return BPromise[_0xe646('0x1f')](_0x201244);}return _0x1e0432[_0xe646('0x20')]();};}function saveUpdates(_0x515f2c,_0x1a63d4){return function(_0x4cd646){if(_0x4cd646){return _0x4cd646[_0xe646('0x21')](_0x515f2c)[_0xe646('0x22')](function(_0x349622){return _0x349622;});}return null;};}function removeEntity(_0xcac8ed,_0x300802){return function(_0x127691){if(_0x127691){return _0x127691['destroy']()[_0xe646('0x22')](function(){_0xcac8ed[_0xe646('0x18')](0xcc)[_0xe646('0x19')]();});}};}function handleEntityNotFound(_0x41f051,_0x4aabf4){return function(_0xb65040){if(!_0xb65040){_0x41f051[_0xe646('0x17')](0x194);}return _0xb65040;};}function handleError(_0x3bf3e3,_0x4b2bc7){_0x4b2bc7=_0x4b2bc7||0x1f4;return function(_0xb4ca7){logger[_0xe646('0x23')](_0xb4ca7['stack']);if(_0xb4ca7[_0xe646('0x24')]){delete _0xb4ca7[_0xe646('0x24')];}_0x3bf3e3['status'](_0x4b2bc7)['send'](_0xb4ca7);};}exports[_0xe646('0x25')]=function(_0x43feaa,_0x2ccde7){var _0x1b6370={},_0x2ac7bb={},_0x1d9dba={'count':0x0,'rows':[]};var _0x3b58d9=_[_0xe646('0x26')](db[_0xe646('0x27')][_0xe646('0x28')],function(_0x28f8dd){return{'name':_0x28f8dd[_0xe646('0x29')],'type':_0x28f8dd[_0xe646('0x2a')][_0xe646('0x2b')]};});_0x2ac7bb[_0xe646('0x2c')]=_[_0xe646('0x26')](_0x3b58d9,_0xe646('0x24'));_0x2ac7bb[_0xe646('0x2d')]=_[_0xe646('0x2e')](_0x43feaa[_0xe646('0x2d')]);_0x2ac7bb[_0xe646('0x2f')]=_['intersection'](_0x2ac7bb['model'],_0x2ac7bb[_0xe646('0x2d')]);_0x1b6370[_0xe646('0x30')]=_[_0xe646('0x31')](_0x2ac7bb[_0xe646('0x2c')],qs[_0xe646('0x32')](_0x43feaa[_0xe646('0x2d')]['fields']));_0x1b6370['attributes']=_0x1b6370['attributes'][_0xe646('0x33')]?_0x1b6370[_0xe646('0x30')]:_0x2ac7bb[_0xe646('0x2c')];if(!_0x43feaa['query']['hasOwnProperty'](_0xe646('0x34'))){_0x1b6370[_0xe646('0x35')]=qs[_0xe646('0x35')](_0x43feaa[_0xe646('0x2d')][_0xe646('0x35')]);_0x1b6370[_0xe646('0x1b')]=qs[_0xe646('0x1b')](_0x43feaa[_0xe646('0x2d')][_0xe646('0x1b')]);}_0x1b6370[_0xe646('0x36')]=qs[_0xe646('0x37')](_0x43feaa['query']['sort']);_0x1b6370[_0xe646('0x38')]=qs[_0xe646('0x2f')](_['pick'](_0x43feaa[_0xe646('0x2d')],_0x2ac7bb[_0xe646('0x2f')]),_0x3b58d9);if(_0x43feaa[_0xe646('0x2d')][_0xe646('0x39')]){_0x1b6370['where']=_['merge'](_0x1b6370[_0xe646('0x38')],{'$or':_['map'](_0x3b58d9,function(_0x27c30e){if(_0x27c30e[_0xe646('0x2a')]!==_0xe646('0x3a')){var _0x45cc04={};_0x45cc04[_0x27c30e[_0xe646('0x24')]]={'$like':'%'+_0x43feaa[_0xe646('0x2d')][_0xe646('0x39')]+'%'};return _0x45cc04;}})});}_0x1b6370=_[_0xe646('0x3b')]({},_0x1b6370,_0x43feaa[_0xe646('0x3c')]);var _0x350b51={'where':_0x1b6370[_0xe646('0x38')]};return db[_0xe646('0x27')]['count'](_0x350b51)[_0xe646('0x22')](function(_0x3d1375){_0x1d9dba[_0xe646('0x3d')]=_0x3d1375;if(_0x43feaa[_0xe646('0x2d')][_0xe646('0x3e')]){_0x1b6370[_0xe646('0x3f')]=[{'all':!![]}];}return db[_0xe646('0x27')][_0xe646('0x40')](_0x1b6370);})['then'](function(_0x54c74e){_0x1d9dba[_0xe646('0x41')]=_0x54c74e;return _0x1d9dba;})['then'](respondWithFilteredResult(_0x2ccde7,_0x1b6370))['catch'](handleError(_0x2ccde7,null));};exports[_0xe646('0x42')]=function(_0x3bdb67,_0x3a3b03){var _0x3aa2d4={'raw':!![],'where':{'id':_0x3bdb67['params']['id']}},_0x11df9f={};_0x11df9f[_0xe646('0x2c')]=_[_0xe646('0x2e')](db[_0xe646('0x27')][_0xe646('0x28')]);_0x11df9f[_0xe646('0x2d')]=_[_0xe646('0x2e')](_0x3bdb67[_0xe646('0x2d')]);_0x11df9f[_0xe646('0x2f')]=_['intersection'](_0x11df9f[_0xe646('0x2c')],_0x11df9f[_0xe646('0x2d')]);_0x3aa2d4[_0xe646('0x30')]=_['intersection'](_0x11df9f['model'],qs[_0xe646('0x32')](_0x3bdb67['query'][_0xe646('0x32')]));_0x3aa2d4['attributes']=_0x3aa2d4[_0xe646('0x30')][_0xe646('0x33')]?_0x3aa2d4[_0xe646('0x30')]:_0x11df9f[_0xe646('0x2c')];if(_0x3bdb67[_0xe646('0x2d')][_0xe646('0x3e')]){_0x3aa2d4[_0xe646('0x3f')]=[{'all':!![]}];}_0x3aa2d4=_[_0xe646('0x3b')]({},_0x3aa2d4,_0x3bdb67[_0xe646('0x3c')]);return db[_0xe646('0x27')][_0xe646('0x43')](_0x3aa2d4)['then'](handleEntityNotFound(_0x3a3b03,null))[_0xe646('0x22')](respondWithResult(_0x3a3b03,null))[_0xe646('0x44')](handleError(_0x3a3b03,null));};exports[_0xe646('0x45')]=function(_0x156169,_0x2498a8){return db[_0xe646('0x27')][_0xe646('0x45')](_0x156169['body'],{})['then'](respondWithResult(_0x2498a8,0xc9))[_0xe646('0x44')](handleError(_0x2498a8,null));};exports[_0xe646('0x21')]=function(_0x48e79d,_0x4b0983){if(_0x48e79d['body']['id']){delete _0x48e79d['body']['id'];}return db[_0xe646('0x27')][_0xe646('0x43')]({'where':{'id':_0x48e79d[_0xe646('0x46')]['id']}})[_0xe646('0x22')](handleEntityNotFound(_0x4b0983,null))['then'](saveUpdates(_0x48e79d[_0xe646('0x47')],null))['then'](respondWithResult(_0x4b0983,null))[_0xe646('0x44')](handleError(_0x4b0983,null));};exports['destroy']=function(_0x1904dd,_0x5853ae){return db[_0xe646('0x27')][_0xe646('0x43')]({'where':{'id':_0x1904dd[_0xe646('0x46')]['id']}})[_0xe646('0x22')](handleEntityNotFound(_0x5853ae,null))[_0xe646('0x22')](removeEntity(_0x5853ae,null))[_0xe646('0x44')](handleError(_0x5853ae,null));};exports['describe']=function(_0x3f3f16,_0x40761e){return db[_0xe646('0x27')][_0xe646('0x48')]()['then'](respondWithResult(_0x40761e,null))['catch'](handleError(_0x40761e,null));};
\ No newline at end of file
+var _0x11e5=['lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','json','offset','limit','undefined','set','Content-Range','apply','save','update','then','error','stack','name','index','rawAttributes','fieldName','type','key','map','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','VIRTUAL','count','includeAll','include','JscriptyAnswerReport','findAll','rows','catch','show','params','options','find','create','body','destroy','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','ejs','fs-extra'];(function(_0x436981,_0x371571){var _0x2e4f86=function(_0x2da649){while(--_0x2da649){_0x436981['push'](_0x436981['shift']());}};_0x2e4f86(++_0x371571);}(_0x11e5,0x8b));var _0x511e=function(_0x2a50fc,_0x792726){_0x2a50fc=_0x2a50fc-0x0;var _0x5aa6a2=_0x11e5[_0x2a50fc];return _0x5aa6a2;};'use strict';var emlformat=require(_0x511e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x511e('0x1'));var jsonpatch=require(_0x511e('0x2'));var rp=require('request-promise');var moment=require(_0x511e('0x3'));var BPromise=require(_0x511e('0x4'));var Mustache=require(_0x511e('0x5'));var util=require('util');var path=require(_0x511e('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x511e('0x7'));var fs=require('fs');var fs_extra=require(_0x511e('0x8'));var _=require(_0x511e('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x511e('0xa'));var deskjs=require(_0x511e('0xb'));var toCsv=require(_0x511e('0xc'));var querystring=require(_0x511e('0xd'));var Papa=require(_0x511e('0xe'));var Redis=require(_0x511e('0xf'));var authService=require(_0x511e('0x10'));var qs=require(_0x511e('0x11'));var as=require(_0x511e('0x12'));var hardwareService=require(_0x511e('0x13'));var logger=require(_0x511e('0x14'))('api');var utils=require(_0x511e('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x511e('0x16'))['db'];function respondWithStatusCode(_0x327880,_0x42679e){_0x42679e=_0x42679e||0xcc;return function(_0x258e2f){if(_0x258e2f){return _0x327880[_0x511e('0x17')](_0x42679e);}return _0x327880[_0x511e('0x18')](_0x42679e)['end']();};}function respondWithResult(_0xdd0dcd,_0x33fd64){_0x33fd64=_0x33fd64||0xc8;return function(_0x4e6507){if(_0x4e6507){return _0xdd0dcd[_0x511e('0x18')](_0x33fd64)[_0x511e('0x19')](_0x4e6507);}};}function respondWithFilteredResult(_0x4f50b9,_0xed773e){return function(_0x162c91){if(_0x162c91){var _0x3b990b=typeof _0xed773e[_0x511e('0x1a')]==='undefined'&&typeof _0xed773e[_0x511e('0x1b')]===_0x511e('0x1c');var _0x2e66b6=_0x162c91['count'];var _0x26af67=_0x3b990b?0x0:_0xed773e['offset'];var _0x34e6cd=_0x3b990b?_0x162c91['count']:_0xed773e['offset']+_0xed773e[_0x511e('0x1b')];var _0x5c4fb9;if(_0x34e6cd>=_0x2e66b6){_0x34e6cd=_0x2e66b6;_0x5c4fb9=0xc8;}else{_0x5c4fb9=0xce;}_0x4f50b9[_0x511e('0x18')](_0x5c4fb9);return _0x4f50b9[_0x511e('0x1d')](_0x511e('0x1e'),_0x26af67+'-'+_0x34e6cd+'/'+_0x2e66b6)[_0x511e('0x19')](_0x162c91);}return null;};}function patchUpdates(_0xd4df6f){return function(_0x3d3f46){try{jsonpatch[_0x511e('0x1f')](_0x3d3f46,_0xd4df6f,!![]);}catch(_0x452f20){return BPromise['reject'](_0x452f20);}return _0x3d3f46[_0x511e('0x20')]();};}function saveUpdates(_0x39e0b4,_0x2ebf30){return function(_0x1a273b){if(_0x1a273b){return _0x1a273b[_0x511e('0x21')](_0x39e0b4)[_0x511e('0x22')](function(_0x886b6){return _0x886b6;});}return null;};}function removeEntity(_0x2f28fc,_0x211b90){return function(_0x26618d){if(_0x26618d){return _0x26618d['destroy']()['then'](function(){_0x2f28fc[_0x511e('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ff5c4,_0x53017d){return function(_0x3fbd19){if(!_0x3fbd19){_0x1ff5c4[_0x511e('0x17')](0x194);}return _0x3fbd19;};}function handleError(_0x406dfb,_0x1f8040){_0x1f8040=_0x1f8040||0x1f4;return function(_0x1bb7f9){logger[_0x511e('0x23')](_0x1bb7f9[_0x511e('0x24')]);if(_0x1bb7f9[_0x511e('0x25')]){delete _0x1bb7f9[_0x511e('0x25')];}_0x406dfb[_0x511e('0x18')](_0x1f8040)['send'](_0x1bb7f9);};}exports[_0x511e('0x26')]=function(_0x1d754d,_0xb563f6){var _0x1aaac1={},_0x369be6={},_0x50305a={'count':0x0,'rows':[]};var _0x431b75=_['map'](db['JscriptyAnswerReport'][_0x511e('0x27')],function(_0xb1d444){return{'name':_0xb1d444[_0x511e('0x28')],'type':_0xb1d444[_0x511e('0x29')][_0x511e('0x2a')]};});_0x369be6['model']=_[_0x511e('0x2b')](_0x431b75,_0x511e('0x25'));_0x369be6[_0x511e('0x2c')]=_[_0x511e('0x2d')](_0x1d754d[_0x511e('0x2c')]);_0x369be6['filters']=_[_0x511e('0x2e')](_0x369be6[_0x511e('0x2f')],_0x369be6[_0x511e('0x2c')]);_0x1aaac1[_0x511e('0x30')]=_[_0x511e('0x2e')](_0x369be6[_0x511e('0x2f')],qs[_0x511e('0x31')](_0x1d754d[_0x511e('0x2c')]['fields']));_0x1aaac1[_0x511e('0x30')]=_0x1aaac1[_0x511e('0x30')][_0x511e('0x32')]?_0x1aaac1[_0x511e('0x30')]:_0x369be6['model'];if(!_0x1d754d['query'][_0x511e('0x33')]('nolimit')){_0x1aaac1['limit']=qs[_0x511e('0x1b')](_0x1d754d[_0x511e('0x2c')][_0x511e('0x1b')]);_0x1aaac1[_0x511e('0x1a')]=qs[_0x511e('0x1a')](_0x1d754d['query'][_0x511e('0x1a')]);}_0x1aaac1[_0x511e('0x34')]=qs[_0x511e('0x35')](_0x1d754d['query'][_0x511e('0x35')]);_0x1aaac1[_0x511e('0x36')]=qs[_0x511e('0x37')](_['pick'](_0x1d754d[_0x511e('0x2c')],_0x369be6[_0x511e('0x37')]),_0x431b75);if(_0x1d754d['query'][_0x511e('0x38')]){_0x1aaac1[_0x511e('0x36')]=_[_0x511e('0x39')](_0x1aaac1[_0x511e('0x36')],{'$or':_[_0x511e('0x2b')](_0x431b75,function(_0x1a989a){if(_0x1a989a[_0x511e('0x29')]!==_0x511e('0x3a')){var _0xde4b8={};_0xde4b8[_0x1a989a[_0x511e('0x25')]]={'$like':'%'+_0x1d754d[_0x511e('0x2c')]['filter']+'%'};return _0xde4b8;}})});}_0x1aaac1=_[_0x511e('0x39')]({},_0x1aaac1,_0x1d754d['options']);var _0x51716f={'where':_0x1aaac1[_0x511e('0x36')]};return db['JscriptyAnswerReport']['count'](_0x51716f)[_0x511e('0x22')](function(_0x200207){_0x50305a[_0x511e('0x3b')]=_0x200207;if(_0x1d754d[_0x511e('0x2c')][_0x511e('0x3c')]){_0x1aaac1[_0x511e('0x3d')]=[{'all':!![]}];}return db[_0x511e('0x3e')][_0x511e('0x3f')](_0x1aaac1);})[_0x511e('0x22')](function(_0x396542){_0x50305a[_0x511e('0x40')]=_0x396542;return _0x50305a;})[_0x511e('0x22')](respondWithFilteredResult(_0xb563f6,_0x1aaac1))[_0x511e('0x41')](handleError(_0xb563f6,null));};exports[_0x511e('0x42')]=function(_0x5086e0,_0x5a7a12){var _0x19ffde={'raw':!![],'where':{'id':_0x5086e0[_0x511e('0x43')]['id']}},_0x29dcc1={};_0x29dcc1[_0x511e('0x2f')]=_[_0x511e('0x2d')](db['JscriptyAnswerReport'][_0x511e('0x27')]);_0x29dcc1[_0x511e('0x2c')]=_[_0x511e('0x2d')](_0x5086e0['query']);_0x29dcc1['filters']=_['intersection'](_0x29dcc1[_0x511e('0x2f')],_0x29dcc1[_0x511e('0x2c')]);_0x19ffde[_0x511e('0x30')]=_['intersection'](_0x29dcc1['model'],qs['fields'](_0x5086e0[_0x511e('0x2c')][_0x511e('0x31')]));_0x19ffde[_0x511e('0x30')]=_0x19ffde[_0x511e('0x30')][_0x511e('0x32')]?_0x19ffde[_0x511e('0x30')]:_0x29dcc1[_0x511e('0x2f')];if(_0x5086e0[_0x511e('0x2c')][_0x511e('0x3c')]){_0x19ffde[_0x511e('0x3d')]=[{'all':!![]}];}_0x19ffde=_[_0x511e('0x39')]({},_0x19ffde,_0x5086e0[_0x511e('0x44')]);return db[_0x511e('0x3e')][_0x511e('0x45')](_0x19ffde)[_0x511e('0x22')](handleEntityNotFound(_0x5a7a12,null))[_0x511e('0x22')](respondWithResult(_0x5a7a12,null))[_0x511e('0x41')](handleError(_0x5a7a12,null));};exports[_0x511e('0x46')]=function(_0x3a8395,_0x2c2573){return db[_0x511e('0x3e')][_0x511e('0x46')](_0x3a8395[_0x511e('0x47')],{})[_0x511e('0x22')](respondWithResult(_0x2c2573,0xc9))[_0x511e('0x41')](handleError(_0x2c2573,null));};exports[_0x511e('0x21')]=function(_0x3d6f6e,_0x31e949){if(_0x3d6f6e[_0x511e('0x47')]['id']){delete _0x3d6f6e[_0x511e('0x47')]['id'];}return db[_0x511e('0x3e')]['find']({'where':{'id':_0x3d6f6e[_0x511e('0x43')]['id']}})['then'](handleEntityNotFound(_0x31e949,null))[_0x511e('0x22')](saveUpdates(_0x3d6f6e[_0x511e('0x47')],null))[_0x511e('0x22')](respondWithResult(_0x31e949,null))['catch'](handleError(_0x31e949,null));};exports[_0x511e('0x48')]=function(_0x1217df,_0x33d555){return db['JscriptyAnswerReport'][_0x511e('0x45')]({'where':{'id':_0x1217df[_0x511e('0x43')]['id']}})['then'](handleEntityNotFound(_0x33d555,null))[_0x511e('0x22')](removeEntity(_0x33d555,null))[_0x511e('0x41')](handleError(_0x33d555,null));};exports[_0x511e('0x49')]=function(_0x32df56,_0x523669){return db[_0x511e('0x3e')]['describe']()[_0x511e('0x22')](respondWithResult(_0x523669,null))[_0x511e('0x41')](handleError(_0x523669,null));};
\ No newline at end of file