Built motion from commit (unavailable).|2.5.26
[motion2.git] / server / api / integrationReport / integrationReport.controller.js
index 8449ee5..b0e6451 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34bd=['sendStatus','end','status','json','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','name','index','map','rawAttributes','fieldName','key','query','filters','model','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','options','includeAll','include','rows','show','params','IntegrationReport','intersection','create','body','find','catch','describe','html-pdf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x34bd,0x1d2));var _0xd34b=function(_0x1c676d,_0x4a62ea){_0x1c676d=_0x1c676d-0x0;var _0x287e93=_0x34bd[_0x1c676d];return _0x287e93;};'use strict';var pdf=require(_0xd34b('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd34b('0x1'));var jsonpatch=require(_0xd34b('0x2'));var rp=require(_0xd34b('0x3'));var moment=require(_0xd34b('0x4'));var BPromise=require(_0xd34b('0x5'));var Mustache=require(_0xd34b('0x6'));var util=require(_0xd34b('0x7'));var path=require('path');var sox=require(_0xd34b('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0xd34b('0x9'));var crypto=require(_0xd34b('0xa'));var jsforce=require(_0xd34b('0xb'));var deskjs=require(_0xd34b('0xc'));var toCsv=require(_0xd34b('0xd'));var querystring=require(_0xd34b('0xe'));var Papa=require(_0xd34b('0xf'));var Redis=require(_0xd34b('0x10'));var authService=require(_0xd34b('0x11'));var qs=require(_0xd34b('0x12'));var as=require(_0xd34b('0x13'));var hardwareService=require(_0xd34b('0x14'));var logger=require('../../config/logger')(_0xd34b('0x15'));var utils=require('../../config/utils');var config=require(_0xd34b('0x16'));var db=require(_0xd34b('0x17'))['db'];function respondWithStatusCode(_0x13dbae,_0x2fb7a8){_0x2fb7a8=_0x2fb7a8||0xcc;return function(_0x44c84c){if(_0x44c84c){return _0x13dbae[_0xd34b('0x18')](_0x2fb7a8);}return _0x13dbae['status'](_0x2fb7a8)[_0xd34b('0x19')]();};}function respondWithResult(_0x3af475,_0x4a2dbf){_0x4a2dbf=_0x4a2dbf||0xc8;return function(_0x14e108){if(_0x14e108){return _0x3af475[_0xd34b('0x1a')](_0x4a2dbf)[_0xd34b('0x1b')](_0x14e108);}};}function respondWithFilteredResult(_0x494105,_0x326f00){return function(_0x214c65){if(_0x214c65){var _0x5a46be=_0x214c65[_0xd34b('0x1c')],_0x3c74e2=_0x326f00[_0xd34b('0x1d')],_0x4ce87b=_0x326f00['offset']+_0x326f00[_0xd34b('0x1e')],_0xe11907;if(_0x4ce87b>=_0x5a46be){_0x4ce87b=_0x5a46be;_0xe11907=0xc8;}else{_0xe11907=0xce;}_0x494105[_0xd34b('0x1a')](_0xe11907);return _0x494105[_0xd34b('0x1f')](_0xd34b('0x20'),_0x3c74e2+'-'+_0x4ce87b+'/'+_0x5a46be)[_0xd34b('0x1b')](_0x214c65);}return null;};}function patchUpdates(_0x5d45e5){return function(_0x4c8c37){try{jsonpatch[_0xd34b('0x21')](_0x4c8c37,_0x5d45e5,!![]);}catch(_0x327b91){return BPromise[_0xd34b('0x22')](_0x327b91);}return _0x4c8c37[_0xd34b('0x23')]();};}function saveUpdates(_0x291a00,_0x3152a9){return function(_0x4a3273){if(_0x4a3273){return _0x4a3273[_0xd34b('0x24')](_0x291a00)[_0xd34b('0x25')](function(_0x1ae4ec){return _0x1ae4ec;});}return null;};}function removeEntity(_0x17466c,_0x5f1f0d){return function(_0x45c569){if(_0x45c569){return _0x45c569[_0xd34b('0x26')]()[_0xd34b('0x25')](function(){_0x17466c[_0xd34b('0x1a')](0xcc)[_0xd34b('0x19')]();});}};}function handleEntityNotFound(_0x27eb68,_0x5afc42){return function(_0x50da22){if(!_0x50da22){_0x27eb68['sendStatus'](0x194);}return _0x50da22;};}function handleError(_0x2187c0,_0x2ae0e1){_0x2ae0e1=_0x2ae0e1||0x1f4;return function(_0x54c88a){logger['error'](_0x54c88a['stack']);if(_0x54c88a[_0xd34b('0x27')]){delete _0x54c88a[_0xd34b('0x27')];}_0x2187c0[_0xd34b('0x1a')](_0x2ae0e1)['send'](_0x54c88a);};}exports[_0xd34b('0x28')]=function(_0x36b108,_0x5bac80){var _0x21a653={},_0x38637f={},_0x342885={'count':0x0,'rows':[]};var _0x5a121a=_[_0xd34b('0x29')](db['IntegrationReport'][_0xd34b('0x2a')],function(_0x27c392){return{'name':_0x27c392[_0xd34b('0x2b')],'type':_0x27c392['type'][_0xd34b('0x2c')]};});_0x38637f['model']=_[_0xd34b('0x29')](_0x5a121a,'name');_0x38637f[_0xd34b('0x2d')]=_['keys'](_0x36b108[_0xd34b('0x2d')]);_0x38637f[_0xd34b('0x2e')]=_['intersection'](_0x38637f[_0xd34b('0x2f')],_0x38637f[_0xd34b('0x2d')]);_0x21a653[_0xd34b('0x30')]=_['intersection'](_0x38637f[_0xd34b('0x2f')],qs[_0xd34b('0x31')](_0x36b108[_0xd34b('0x2d')]['fields']));_0x21a653[_0xd34b('0x30')]=_0x21a653[_0xd34b('0x30')][_0xd34b('0x32')]?_0x21a653[_0xd34b('0x30')]:_0x38637f[_0xd34b('0x2f')];if(!_0x36b108[_0xd34b('0x2d')][_0xd34b('0x33')]('nolimit')){_0x21a653[_0xd34b('0x1e')]=qs[_0xd34b('0x1e')](_0x36b108[_0xd34b('0x2d')][_0xd34b('0x1e')]);_0x21a653[_0xd34b('0x1d')]=qs['offset'](_0x36b108[_0xd34b('0x2d')][_0xd34b('0x1d')]);}_0x21a653[_0xd34b('0x34')]=qs['sort'](_0x36b108['query'][_0xd34b('0x35')]);_0x21a653[_0xd34b('0x36')]=qs[_0xd34b('0x2e')](_['pick'](_0x36b108[_0xd34b('0x2d')],_0x38637f[_0xd34b('0x2e')]));if(_0x36b108[_0xd34b('0x2d')][_0xd34b('0x37')]){_0x21a653['where']=_['merge'](_0x21a653[_0xd34b('0x36')],{'$or':_[_0xd34b('0x29')](_0x5a121a,function(_0x48938b){if(_0x48938b['type']!=='VIRTUAL'){var _0x64acdf={};_0x64acdf[_0x48938b[_0xd34b('0x27')]]={'$like':'%'+_0x36b108['query'][_0xd34b('0x37')]+'%'};return _0x64acdf;}})});}_0x21a653=_[_0xd34b('0x38')]({},_0x21a653,_0x36b108[_0xd34b('0x39')]);var _0x3ae580={'where':_0x21a653[_0xd34b('0x36')]};return db['IntegrationReport'][_0xd34b('0x1c')](_0x3ae580)[_0xd34b('0x25')](function(_0x384397){_0x342885[_0xd34b('0x1c')]=_0x384397;if(_0x36b108['query'][_0xd34b('0x3a')]){_0x21a653[_0xd34b('0x3b')]=[{'all':!![]}];}return db['IntegrationReport']['findAll'](_0x21a653);})[_0xd34b('0x25')](function(_0x2fdb14){_0x342885[_0xd34b('0x3c')]=_0x2fdb14;return _0x342885;})[_0xd34b('0x25')](respondWithFilteredResult(_0x5bac80,_0x21a653))['catch'](handleError(_0x5bac80,null));};exports[_0xd34b('0x3d')]=function(_0x3858d5,_0x5bcd65){var _0x58fe5d={'raw':![],'where':{'id':_0x3858d5[_0xd34b('0x3e')]['id']}},_0x4d4bfa={};_0x4d4bfa['model']=_['keys'](db[_0xd34b('0x3f')]['rawAttributes']);_0x4d4bfa[_0xd34b('0x2d')]=_['keys'](_0x3858d5[_0xd34b('0x2d')]);_0x4d4bfa[_0xd34b('0x2e')]=_[_0xd34b('0x40')](_0x4d4bfa[_0xd34b('0x2f')],_0x4d4bfa[_0xd34b('0x2d')]);_0x58fe5d['attributes']=_[_0xd34b('0x40')](_0x4d4bfa[_0xd34b('0x2f')],qs[_0xd34b('0x31')](_0x3858d5[_0xd34b('0x2d')][_0xd34b('0x31')]));_0x58fe5d[_0xd34b('0x30')]=_0x58fe5d[_0xd34b('0x30')][_0xd34b('0x32')]?_0x58fe5d[_0xd34b('0x30')]:_0x4d4bfa[_0xd34b('0x2f')];if(_0x3858d5[_0xd34b('0x2d')][_0xd34b('0x3a')]){_0x58fe5d['include']=[{'all':!![]}];}_0x58fe5d=_['merge']({},_0x58fe5d,_0x3858d5[_0xd34b('0x39')]);return db[_0xd34b('0x3f')]['find'](_0x58fe5d)[_0xd34b('0x25')](handleEntityNotFound(_0x5bcd65,null))[_0xd34b('0x25')](respondWithResult(_0x5bcd65,null))['catch'](handleError(_0x5bcd65,null));};exports[_0xd34b('0x41')]=function(_0xa6c374,_0x4c6427){return db['IntegrationReport'][_0xd34b('0x41')](_0xa6c374[_0xd34b('0x42')],{})[_0xd34b('0x25')](respondWithResult(_0x4c6427,0xc9))['catch'](handleError(_0x4c6427,null));};exports[_0xd34b('0x24')]=function(_0x47acc6,_0x1818bb){if(_0x47acc6['body']['id']){delete _0x47acc6[_0xd34b('0x42')]['id'];}return db['IntegrationReport'][_0xd34b('0x43')]({'where':{'id':_0x47acc6[_0xd34b('0x3e')]['id']}})[_0xd34b('0x25')](handleEntityNotFound(_0x1818bb,null))[_0xd34b('0x25')](saveUpdates(_0x47acc6[_0xd34b('0x42')],null))[_0xd34b('0x25')](respondWithResult(_0x1818bb,null))[_0xd34b('0x44')](handleError(_0x1818bb,null));};exports[_0xd34b('0x26')]=function(_0x37c8f2,_0x149b3f){return db[_0xd34b('0x3f')][_0xd34b('0x43')]({'where':{'id':_0x37c8f2[_0xd34b('0x3e')]['id']}})[_0xd34b('0x25')](handleEntityNotFound(_0x149b3f,null))[_0xd34b('0x25')](removeEntity(_0x149b3f,null))[_0xd34b('0x44')](handleError(_0x149b3f,null));};exports['describe']=function(_0x12d59f,_0xdef8f2){return db[_0xd34b('0x3f')][_0xd34b('0x45')]()[_0xd34b('0x25')](respondWithResult(_0xdef8f2,null))[_0xd34b('0x44')](handleError(_0xdef8f2,null));};
\ No newline at end of file
+var _0x7f47=['rows','catch','rawAttributes','includeAll','include','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','count','offset','limit','status','Content-Range','json','apply','reject','save','update','then','destroy','error','name','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','filter','options','IntegrationReport'];(function(_0x321248,_0x1bf881){var _0x32db83=function(_0x2321fc){while(--_0x2321fc){_0x321248['push'](_0x321248['shift']());}};_0x32db83(++_0x1bf881);}(_0x7f47,0x12e));var _0x77f4=function(_0x1d3791,_0x51c613){_0x1d3791=_0x1d3791-0x0;var _0x40fbf5=_0x7f47[_0x1d3791];return _0x40fbf5;};'use strict';var emlformat=require(_0x77f4('0x0'));var rimraf=require(_0x77f4('0x1'));var zipdir=require(_0x77f4('0x2'));var jsonpatch=require(_0x77f4('0x3'));var rp=require(_0x77f4('0x4'));var moment=require(_0x77f4('0x5'));var BPromise=require(_0x77f4('0x6'));var Mustache=require(_0x77f4('0x7'));var util=require('util');var path=require(_0x77f4('0x8'));var sox=require(_0x77f4('0x9'));var csv=require(_0x77f4('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x77f4('0xb'));var _=require('lodash');var squel=require(_0x77f4('0xc'));var crypto=require(_0x77f4('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x77f4('0xe'));var toCsv=require('to-csv');var querystring=require(_0x77f4('0xf'));var Papa=require(_0x77f4('0x10'));var Redis=require('ioredis');var authService=require(_0x77f4('0x11'));var qs=require(_0x77f4('0x12'));var as=require(_0x77f4('0x13'));var hardwareService=require(_0x77f4('0x14'));var logger=require('../../config/logger')(_0x77f4('0x15'));var utils=require(_0x77f4('0x16'));var config=require(_0x77f4('0x17'));var licenseUtil=require(_0x77f4('0x18'));var db=require(_0x77f4('0x19'))['db'];function respondWithStatusCode(_0x2a0243,_0x47428a){_0x47428a=_0x47428a||0xcc;return function(_0x15cce6){if(_0x15cce6){return _0x2a0243[_0x77f4('0x1a')](_0x47428a);}return _0x2a0243['status'](_0x47428a)[_0x77f4('0x1b')]();};}function respondWithResult(_0xd23097,_0x15a137){_0x15a137=_0x15a137||0xc8;return function(_0x2fadaf){if(_0x2fadaf){return _0xd23097['status'](_0x15a137)['json'](_0x2fadaf);}};}function respondWithFilteredResult(_0x2d2dbb,_0x18848d){return function(_0x249237){if(_0x249237){var _0x395bb1=_0x249237[_0x77f4('0x1c')],_0x5a8a43=_0x18848d[_0x77f4('0x1d')],_0x310435=_0x18848d[_0x77f4('0x1d')]+_0x18848d[_0x77f4('0x1e')],_0x9ed030;if(_0x310435>=_0x395bb1){_0x310435=_0x395bb1;_0x9ed030=0xc8;}else{_0x9ed030=0xce;}_0x2d2dbb[_0x77f4('0x1f')](_0x9ed030);return _0x2d2dbb['set'](_0x77f4('0x20'),_0x5a8a43+'-'+_0x310435+'/'+_0x395bb1)[_0x77f4('0x21')](_0x249237);}return null;};}function patchUpdates(_0xdf6582){return function(_0x3773a5){try{jsonpatch[_0x77f4('0x22')](_0x3773a5,_0xdf6582,!![]);}catch(_0x39e15c){return BPromise[_0x77f4('0x23')](_0x39e15c);}return _0x3773a5[_0x77f4('0x24')]();};}function saveUpdates(_0x49a688,_0x46ac19){return function(_0x2c7faa){if(_0x2c7faa){return _0x2c7faa[_0x77f4('0x25')](_0x49a688)[_0x77f4('0x26')](function(_0x4067a4){return _0x4067a4;});}return null;};}function removeEntity(_0x20cd71,_0x4ad47b){return function(_0x5ea739){if(_0x5ea739){return _0x5ea739[_0x77f4('0x27')]()[_0x77f4('0x26')](function(){_0x20cd71[_0x77f4('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x12c3d5,_0x4a3e98){return function(_0x508076){if(!_0x508076){_0x12c3d5[_0x77f4('0x1a')](0x194);}return _0x508076;};}function handleError(_0x20519d,_0x560213){_0x560213=_0x560213||0x1f4;return function(_0x16c4a6){logger[_0x77f4('0x28')](_0x16c4a6['stack']);if(_0x16c4a6['name']){delete _0x16c4a6[_0x77f4('0x29')];}_0x20519d[_0x77f4('0x1f')](_0x560213)['send'](_0x16c4a6);};}exports['index']=function(_0x98b961,_0x3d487c){var _0x22a69d={},_0x4bef97={},_0x3f45a1={'count':0x0,'rows':[]};var _0x1542c8=_['map'](db['IntegrationReport']['rawAttributes'],function(_0x5c6c27){return{'name':_0x5c6c27['fieldName'],'type':_0x5c6c27[_0x77f4('0x2a')][_0x77f4('0x2b')]};});_0x4bef97[_0x77f4('0x2c')]=_[_0x77f4('0x2d')](_0x1542c8,_0x77f4('0x29'));_0x4bef97[_0x77f4('0x2e')]=_[_0x77f4('0x2f')](_0x98b961[_0x77f4('0x2e')]);_0x4bef97[_0x77f4('0x30')]=_[_0x77f4('0x31')](_0x4bef97[_0x77f4('0x2c')],_0x4bef97['query']);_0x22a69d[_0x77f4('0x32')]=_['intersection'](_0x4bef97[_0x77f4('0x2c')],qs[_0x77f4('0x33')](_0x98b961[_0x77f4('0x2e')][_0x77f4('0x33')]));_0x22a69d[_0x77f4('0x32')]=_0x22a69d[_0x77f4('0x32')][_0x77f4('0x34')]?_0x22a69d[_0x77f4('0x32')]:_0x4bef97['model'];if(!_0x98b961[_0x77f4('0x2e')][_0x77f4('0x35')](_0x77f4('0x36'))){_0x22a69d[_0x77f4('0x1e')]=qs['limit'](_0x98b961[_0x77f4('0x2e')][_0x77f4('0x1e')]);_0x22a69d[_0x77f4('0x1d')]=qs['offset'](_0x98b961[_0x77f4('0x2e')][_0x77f4('0x1d')]);}_0x22a69d['order']=qs[_0x77f4('0x37')](_0x98b961[_0x77f4('0x2e')][_0x77f4('0x37')]);_0x22a69d['where']=qs['filters'](_[_0x77f4('0x38')](_0x98b961[_0x77f4('0x2e')],_0x4bef97['filters']),_0x1542c8);if(_0x98b961[_0x77f4('0x2e')]['filter']){_0x22a69d[_0x77f4('0x39')]=_[_0x77f4('0x3a')](_0x22a69d[_0x77f4('0x39')],{'$or':_[_0x77f4('0x2d')](_0x1542c8,function(_0x4390e3){if(_0x4390e3['type']!==_0x77f4('0x3b')){var _0x398369={};_0x398369[_0x4390e3[_0x77f4('0x29')]]={'$like':'%'+_0x98b961['query'][_0x77f4('0x3c')]+'%'};return _0x398369;}})});}_0x22a69d=_[_0x77f4('0x3a')]({},_0x22a69d,_0x98b961[_0x77f4('0x3d')]);var _0x4be843={'where':_0x22a69d['where']};return db['IntegrationReport'][_0x77f4('0x1c')](_0x4be843)[_0x77f4('0x26')](function(_0x1ab721){_0x3f45a1[_0x77f4('0x1c')]=_0x1ab721;if(_0x98b961['query']['includeAll']){_0x22a69d['include']=[{'all':!![]}];}return db[_0x77f4('0x3e')]['findAll'](_0x22a69d);})['then'](function(_0x4b098a){_0x3f45a1[_0x77f4('0x3f')]=_0x4b098a;return _0x3f45a1;})[_0x77f4('0x26')](respondWithFilteredResult(_0x3d487c,_0x22a69d))[_0x77f4('0x40')](handleError(_0x3d487c,null));};exports['show']=function(_0x26fed3,_0x372618){var _0x4ed9c9={'raw':![],'where':{'id':_0x26fed3['params']['id']}},_0x56d0d8={};_0x56d0d8[_0x77f4('0x2c')]=_['keys'](db[_0x77f4('0x3e')][_0x77f4('0x41')]);_0x56d0d8['query']=_[_0x77f4('0x2f')](_0x26fed3[_0x77f4('0x2e')]);_0x56d0d8[_0x77f4('0x30')]=_[_0x77f4('0x31')](_0x56d0d8[_0x77f4('0x2c')],_0x56d0d8['query']);_0x4ed9c9['attributes']=_[_0x77f4('0x31')](_0x56d0d8[_0x77f4('0x2c')],qs[_0x77f4('0x33')](_0x26fed3[_0x77f4('0x2e')][_0x77f4('0x33')]));_0x4ed9c9[_0x77f4('0x32')]=_0x4ed9c9[_0x77f4('0x32')][_0x77f4('0x34')]?_0x4ed9c9[_0x77f4('0x32')]:_0x56d0d8[_0x77f4('0x2c')];if(_0x26fed3[_0x77f4('0x2e')][_0x77f4('0x42')]){_0x4ed9c9[_0x77f4('0x43')]=[{'all':!![]}];}_0x4ed9c9=_[_0x77f4('0x3a')]({},_0x4ed9c9,_0x26fed3[_0x77f4('0x3d')]);return db[_0x77f4('0x3e')][_0x77f4('0x44')](_0x4ed9c9)['then'](handleEntityNotFound(_0x372618,null))[_0x77f4('0x26')](respondWithResult(_0x372618,null))[_0x77f4('0x40')](handleError(_0x372618,null));};exports[_0x77f4('0x45')]=function(_0x5d4d06,_0x251dfe){return db[_0x77f4('0x3e')][_0x77f4('0x45')](_0x5d4d06['body'],{})[_0x77f4('0x26')](respondWithResult(_0x251dfe,0xc9))[_0x77f4('0x40')](handleError(_0x251dfe,null));};exports['update']=function(_0x39d7bb,_0x186bb8){if(_0x39d7bb[_0x77f4('0x46')]['id']){delete _0x39d7bb['body']['id'];}return db[_0x77f4('0x3e')][_0x77f4('0x44')]({'where':{'id':_0x39d7bb[_0x77f4('0x47')]['id']}})['then'](handleEntityNotFound(_0x186bb8,null))[_0x77f4('0x26')](saveUpdates(_0x39d7bb[_0x77f4('0x46')],null))[_0x77f4('0x26')](respondWithResult(_0x186bb8,null))[_0x77f4('0x40')](handleError(_0x186bb8,null));};exports['destroy']=function(_0x456f19,_0x92f207){return db[_0x77f4('0x3e')]['find']({'where':{'id':_0x456f19['params']['id']}})[_0x77f4('0x26')](handleEntityNotFound(_0x92f207,null))[_0x77f4('0x26')](removeEntity(_0x92f207,null))[_0x77f4('0x40')](handleError(_0x92f207,null));};exports[_0x77f4('0x48')]=function(_0xbb2a3a,_0x158e1c){return db[_0x77f4('0x3e')][_0x77f4('0x48')]()[_0x77f4('0x26')](respondWithResult(_0x158e1c,null))[_0x77f4('0x40')](handleError(_0x158e1c,null));};
\ No newline at end of file