Built motion from commit e1760111.|2.6.18
[motion2.git] / server / api / faxQueueReport / faxQueueReport.controller.js
index 2ba1818..1581997 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['moment','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','update','destroy','sendStatus','name','status','send','index','map','FaxQueueReport','rawAttributes','type','keys','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','findAll','then','catch','params','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise'];(function(_0x310fcb,_0x122608){var _0x4b9ba5=function(_0x12e1c6){while(--_0x12e1c6){_0x310fcb['push'](_0x310fcb['shift']());}};_0x4b9ba5(++_0x122608);}(_0xb43b,0x1b2));var _0xbb43=function(_0x12a4e5,_0x23b3a6){_0x12a4e5=_0x12a4e5-0x0;var _0x18a314=_0xb43b[_0x12a4e5];return _0x18a314;};'use strict';var emlformat=require(_0xbb43('0x0'));var rimraf=require(_0xbb43('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbb43('0x2'));var rp=require(_0xbb43('0x3'));var moment=require(_0xbb43('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbb43('0x5'));var util=require(_0xbb43('0x6'));var path=require(_0xbb43('0x7'));var sox=require(_0xbb43('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb43('0x9'));var _=require('lodash');var squel=require(_0xbb43('0xa'));var crypto=require(_0xbb43('0xb'));var jsforce=require(_0xbb43('0xc'));var deskjs=require(_0xbb43('0xd'));var toCsv=require(_0xbb43('0xe'));var querystring=require('querystring');var Papa=require(_0xbb43('0xf'));var Redis=require(_0xbb43('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xbb43('0x11'));var as=require(_0xbb43('0x12'));var hardwareService=require(_0xbb43('0x13'));var logger=require(_0xbb43('0x14'))(_0xbb43('0x15'));var utils=require(_0xbb43('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xbb43('0x17'));var db=require(_0xbb43('0x18'))['db'];function respondWithStatusCode(_0x50e2c0,_0x578392){_0x578392=_0x578392||0xcc;return function(_0x41e7e5){if(_0x41e7e5){return _0x50e2c0['sendStatus'](_0x578392);}return _0x50e2c0['status'](_0x578392)[_0xbb43('0x19')]();};}function respondWithResult(_0x5a509f,_0x68d45d){_0x68d45d=_0x68d45d||0xc8;return function(_0x43021d){if(_0x43021d){return _0x5a509f['status'](_0x68d45d)['json'](_0x43021d);}};}function respondWithFilteredResult(_0x4d5bcf,_0x338120){return function(_0x2abce0){if(_0x2abce0){var _0x57bd1d=typeof _0x338120['offset']===_0xbb43('0x1a')&&typeof _0x338120['limit']==='undefined';var _0x2b0797=_0x2abce0[_0xbb43('0x1b')];var _0x2e3b43=_0x57bd1d?0x0:_0x338120['offset'];var _0x1c16d7=_0x57bd1d?_0x2abce0['count']:_0x338120[_0xbb43('0x1c')]+_0x338120[_0xbb43('0x1d')];var _0x4dfc54;if(_0x1c16d7>=_0x2b0797){_0x1c16d7=_0x2b0797;_0x4dfc54=0xc8;}else{_0x4dfc54=0xce;}_0x4d5bcf['status'](_0x4dfc54);return _0x4d5bcf[_0xbb43('0x1e')](_0xbb43('0x1f'),_0x2e3b43+'-'+_0x1c16d7+'/'+_0x2b0797)[_0xbb43('0x20')](_0x2abce0);}return null;};}function patchUpdates(_0x2bf2d4){return function(_0x5bcce7){try{jsonpatch[_0xbb43('0x21')](_0x5bcce7,_0x2bf2d4,!![]);}catch(_0x5f4416){return BPromise[_0xbb43('0x22')](_0x5f4416);}return _0x5bcce7['save']();};}function saveUpdates(_0x2f5e31,_0x565256){return function(_0x3f323e){if(_0x3f323e){return _0x3f323e[_0xbb43('0x23')](_0x2f5e31)['then'](function(_0x1d0768){return _0x1d0768;});}return null;};}function removeEntity(_0x4dfb7f,_0xf24e60){return function(_0x298ce2){if(_0x298ce2){return _0x298ce2[_0xbb43('0x24')]()['then'](function(){_0x4dfb7f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x269ca5,_0x32d7f0){return function(_0x5d8310){if(!_0x5d8310){_0x269ca5[_0xbb43('0x25')](0x194);}return _0x5d8310;};}function handleError(_0x2da653,_0x226827){_0x226827=_0x226827||0x1f4;return function(_0x3874fb){logger['error'](_0x3874fb['stack']);if(_0x3874fb[_0xbb43('0x26')]){delete _0x3874fb[_0xbb43('0x26')];}_0x2da653[_0xbb43('0x27')](_0x226827)[_0xbb43('0x28')](_0x3874fb);};}exports[_0xbb43('0x29')]=function(_0x40b04b,_0x21d386){var _0x473828={},_0x539730={},_0x2ad6da={'count':0x0,'rows':[]};var _0x56fe33=_[_0xbb43('0x2a')](db[_0xbb43('0x2b')][_0xbb43('0x2c')],function(_0x1880cd){return{'name':_0x1880cd['fieldName'],'type':_0x1880cd[_0xbb43('0x2d')]['key']};});_0x539730['model']=_['map'](_0x56fe33,_0xbb43('0x26'));_0x539730['query']=_[_0xbb43('0x2e')](_0x40b04b[_0xbb43('0x2f')]);_0x539730[_0xbb43('0x30')]=_['intersection'](_0x539730[_0xbb43('0x31')],_0x539730[_0xbb43('0x2f')]);_0x473828[_0xbb43('0x32')]=_[_0xbb43('0x33')](_0x539730[_0xbb43('0x31')],qs[_0xbb43('0x34')](_0x40b04b[_0xbb43('0x2f')][_0xbb43('0x34')]));_0x473828['attributes']=_0x473828[_0xbb43('0x32')][_0xbb43('0x35')]?_0x473828[_0xbb43('0x32')]:_0x539730[_0xbb43('0x31')];if(!_0x40b04b[_0xbb43('0x2f')][_0xbb43('0x36')](_0xbb43('0x37'))){_0x473828[_0xbb43('0x1d')]=qs[_0xbb43('0x1d')](_0x40b04b[_0xbb43('0x2f')][_0xbb43('0x1d')]);_0x473828[_0xbb43('0x1c')]=qs[_0xbb43('0x1c')](_0x40b04b[_0xbb43('0x2f')][_0xbb43('0x1c')]);}_0x473828[_0xbb43('0x38')]=qs['sort'](_0x40b04b[_0xbb43('0x2f')][_0xbb43('0x39')]);_0x473828['where']=qs[_0xbb43('0x30')](_[_0xbb43('0x3a')](_0x40b04b[_0xbb43('0x2f')],_0x539730['filters']),_0x56fe33);if(_0x40b04b['query']['filter']){_0x473828[_0xbb43('0x3b')]=_[_0xbb43('0x3c')](_0x473828['where'],{'$or':_['map'](_0x56fe33,function(_0x2aa381){if(_0x2aa381[_0xbb43('0x2d')]!==_0xbb43('0x3d')){var _0x37afbb={};_0x37afbb[_0x2aa381[_0xbb43('0x26')]]={'$like':'%'+_0x40b04b['query'][_0xbb43('0x3e')]+'%'};return _0x37afbb;}})});}_0x473828=_[_0xbb43('0x3c')]({},_0x473828,_0x40b04b[_0xbb43('0x3f')]);var _0x3340aa={'where':_0x473828[_0xbb43('0x3b')]};return db['FaxQueueReport'][_0xbb43('0x1b')](_0x3340aa)['then'](function(_0x1c076f){_0x2ad6da[_0xbb43('0x1b')]=_0x1c076f;if(_0x40b04b['query'][_0xbb43('0x40')]){_0x473828['include']=[{'all':!![]}];}return db[_0xbb43('0x2b')][_0xbb43('0x41')](_0x473828);})[_0xbb43('0x42')](function(_0xb84ece){_0x2ad6da['rows']=_0xb84ece;return _0x2ad6da;})[_0xbb43('0x42')](respondWithFilteredResult(_0x21d386,_0x473828))[_0xbb43('0x43')](handleError(_0x21d386,null));};exports['show']=function(_0x3443f8,_0x5198a2){var _0x42b965={'raw':!![],'where':{'id':_0x3443f8[_0xbb43('0x44')]['id']}},_0x14285d={};_0x14285d[_0xbb43('0x31')]=_[_0xbb43('0x2e')](db[_0xbb43('0x2b')]['rawAttributes']);_0x14285d[_0xbb43('0x2f')]=_['keys'](_0x3443f8[_0xbb43('0x2f')]);_0x14285d[_0xbb43('0x30')]=_[_0xbb43('0x33')](_0x14285d[_0xbb43('0x31')],_0x14285d['query']);_0x42b965[_0xbb43('0x32')]=_[_0xbb43('0x33')](_0x14285d[_0xbb43('0x31')],qs[_0xbb43('0x34')](_0x3443f8[_0xbb43('0x2f')][_0xbb43('0x34')]));_0x42b965[_0xbb43('0x32')]=_0x42b965[_0xbb43('0x32')]['length']?_0x42b965[_0xbb43('0x32')]:_0x14285d[_0xbb43('0x31')];if(_0x3443f8['query'][_0xbb43('0x40')]){_0x42b965['include']=[{'all':!![]}];}_0x42b965=_['merge']({},_0x42b965,_0x3443f8['options']);return db['FaxQueueReport'][_0xbb43('0x45')](_0x42b965)['then'](handleEntityNotFound(_0x5198a2,null))[_0xbb43('0x42')](respondWithResult(_0x5198a2,null))['catch'](handleError(_0x5198a2,null));};exports[_0xbb43('0x46')]=function(_0x39b6ae,_0x1f3fb4){return db['FaxQueueReport'][_0xbb43('0x46')](_0x39b6ae['body'],{})[_0xbb43('0x42')](respondWithResult(_0x1f3fb4,0xc9))[_0xbb43('0x43')](handleError(_0x1f3fb4,null));};exports[_0xbb43('0x23')]=function(_0x29840e,_0x417ad9){if(_0x29840e[_0xbb43('0x47')]['id']){delete _0x29840e[_0xbb43('0x47')]['id'];}return db['FaxQueueReport'][_0xbb43('0x45')]({'where':{'id':_0x29840e[_0xbb43('0x44')]['id']}})[_0xbb43('0x42')](handleEntityNotFound(_0x417ad9,null))[_0xbb43('0x42')](saveUpdates(_0x29840e['body'],null))[_0xbb43('0x42')](respondWithResult(_0x417ad9,null))[_0xbb43('0x43')](handleError(_0x417ad9,null));};exports[_0xbb43('0x24')]=function(_0xb1883e,_0x4b7712){return db[_0xbb43('0x2b')][_0xbb43('0x45')]({'where':{'id':_0xb1883e[_0xbb43('0x44')]['id']}})['then'](handleEntityNotFound(_0x4b7712,null))[_0xbb43('0x42')](removeEntity(_0x4b7712,null))[_0xbb43('0x43')](handleError(_0x4b7712,null));};exports[_0xbb43('0x48')]=function(_0x1dc40a,_0x3402f2){return db['FaxQueueReport']['describe']()[_0xbb43('0x42')](respondWithResult(_0x3402f2,null))['catch'](handleError(_0x3402f2,null));};
\ No newline at end of file
+var _0x87f8=['offset','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','send','index','map','FaxQueueReport','type','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','includeAll','include','findAll','catch','show','rawAttributes','options','find','create','body','params','describe','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','json','undefined','limit','count'];(function(_0x352b44,_0x4a91a1){var _0x3e8baa=function(_0xed4bc3){while(--_0xed4bc3){_0x352b44['push'](_0x352b44['shift']());}};_0x3e8baa(++_0x4a91a1);}(_0x87f8,0x152));var _0x887f=function(_0x593121,_0x3a4ecf){_0x593121=_0x593121-0x0;var _0x35c6e4=_0x87f8[_0x593121];return _0x35c6e4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x887f('0x0'));var rp=require(_0x887f('0x1'));var moment=require('moment');var BPromise=require(_0x887f('0x2'));var Mustache=require('mustache');var util=require(_0x887f('0x3'));var path=require(_0x887f('0x4'));var sox=require(_0x887f('0x5'));var csv=require(_0x887f('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x887f('0x7'));var _=require(_0x887f('0x8'));var squel=require(_0x887f('0x9'));var crypto=require(_0x887f('0xa'));var jsforce=require(_0x887f('0xb'));var deskjs=require(_0x887f('0xc'));var toCsv=require(_0x887f('0x6'));var querystring=require('querystring');var Papa=require(_0x887f('0xd'));var Redis=require('ioredis');var authService=require(_0x887f('0xe'));var qs=require(_0x887f('0xf'));var as=require(_0x887f('0x10'));var hardwareService=require(_0x887f('0x11'));var logger=require('../../config/logger')(_0x887f('0x12'));var utils=require(_0x887f('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x887f('0x14'))['db'];function respondWithStatusCode(_0x32b6c4,_0x32e050){_0x32e050=_0x32e050||0xcc;return function(_0x589e92){if(_0x589e92){return _0x32b6c4[_0x887f('0x15')](_0x32e050);}return _0x32b6c4[_0x887f('0x16')](_0x32e050)['end']();};}function respondWithResult(_0x16bbc4,_0x58152e){_0x58152e=_0x58152e||0xc8;return function(_0x59b7ab){if(_0x59b7ab){return _0x16bbc4[_0x887f('0x16')](_0x58152e)[_0x887f('0x17')](_0x59b7ab);}};}function respondWithFilteredResult(_0x59ed6c,_0x3f189a){return function(_0xf69779){if(_0xf69779){var _0x9f5d78=typeof _0x3f189a['offset']===_0x887f('0x18')&&typeof _0x3f189a[_0x887f('0x19')]==='undefined';var _0x2e8999=_0xf69779[_0x887f('0x1a')];var _0x3ab397=_0x9f5d78?0x0:_0x3f189a[_0x887f('0x1b')];var _0x2399a5=_0x9f5d78?_0xf69779[_0x887f('0x1a')]:_0x3f189a[_0x887f('0x1b')]+_0x3f189a[_0x887f('0x19')];var _0x342e8e;if(_0x2399a5>=_0x2e8999){_0x2399a5=_0x2e8999;_0x342e8e=0xc8;}else{_0x342e8e=0xce;}_0x59ed6c[_0x887f('0x16')](_0x342e8e);return _0x59ed6c[_0x887f('0x1c')](_0x887f('0x1d'),_0x3ab397+'-'+_0x2399a5+'/'+_0x2e8999)[_0x887f('0x17')](_0xf69779);}return null;};}function patchUpdates(_0x4deddd){return function(_0x129106){try{jsonpatch[_0x887f('0x1e')](_0x129106,_0x4deddd,!![]);}catch(_0x49af51){return BPromise[_0x887f('0x1f')](_0x49af51);}return _0x129106[_0x887f('0x20')]();};}function saveUpdates(_0x48fd49,_0xc09608){return function(_0x56beaa){if(_0x56beaa){return _0x56beaa[_0x887f('0x21')](_0x48fd49)[_0x887f('0x22')](function(_0x566fb9){return _0x566fb9;});}return null;};}function removeEntity(_0x338777,_0x3af68e){return function(_0x3d6948){if(_0x3d6948){return _0x3d6948[_0x887f('0x23')]()['then'](function(){_0x338777[_0x887f('0x16')](0xcc)[_0x887f('0x24')]();});}};}function handleEntityNotFound(_0x5c7f41,_0x1a1657){return function(_0x42c8bd){if(!_0x42c8bd){_0x5c7f41['sendStatus'](0x194);}return _0x42c8bd;};}function handleError(_0x1811e6,_0x7eef96){_0x7eef96=_0x7eef96||0x1f4;return function(_0x108890){logger['error'](_0x108890[_0x887f('0x25')]);if(_0x108890['name']){delete _0x108890['name'];}_0x1811e6[_0x887f('0x16')](_0x7eef96)[_0x887f('0x26')](_0x108890);};}exports[_0x887f('0x27')]=function(_0x2f20ce,_0x1c5ce3){var _0x4e1fe1={},_0x59d489={},_0x4238e0={'count':0x0,'rows':[]};var _0xca31ec=_[_0x887f('0x28')](db[_0x887f('0x29')]['rawAttributes'],function(_0x39a9ce){return{'name':_0x39a9ce['fieldName'],'type':_0x39a9ce[_0x887f('0x2a')]['key']};});_0x59d489[_0x887f('0x2b')]=_[_0x887f('0x28')](_0xca31ec,_0x887f('0x2c'));_0x59d489[_0x887f('0x2d')]=_[_0x887f('0x2e')](_0x2f20ce[_0x887f('0x2d')]);_0x59d489[_0x887f('0x2f')]=_[_0x887f('0x30')](_0x59d489['model'],_0x59d489[_0x887f('0x2d')]);_0x4e1fe1[_0x887f('0x31')]=_[_0x887f('0x30')](_0x59d489[_0x887f('0x2b')],qs[_0x887f('0x32')](_0x2f20ce[_0x887f('0x2d')]['fields']));_0x4e1fe1[_0x887f('0x31')]=_0x4e1fe1[_0x887f('0x31')][_0x887f('0x33')]?_0x4e1fe1[_0x887f('0x31')]:_0x59d489[_0x887f('0x2b')];if(!_0x2f20ce['query'][_0x887f('0x34')](_0x887f('0x35'))){_0x4e1fe1['limit']=qs[_0x887f('0x19')](_0x2f20ce[_0x887f('0x2d')][_0x887f('0x19')]);_0x4e1fe1['offset']=qs[_0x887f('0x1b')](_0x2f20ce[_0x887f('0x2d')][_0x887f('0x1b')]);}_0x4e1fe1[_0x887f('0x36')]=qs['sort'](_0x2f20ce[_0x887f('0x2d')][_0x887f('0x37')]);_0x4e1fe1['where']=qs['filters'](_[_0x887f('0x38')](_0x2f20ce[_0x887f('0x2d')],_0x59d489[_0x887f('0x2f')]),_0xca31ec);if(_0x2f20ce['query'][_0x887f('0x39')]){_0x4e1fe1['where']=_['merge'](_0x4e1fe1[_0x887f('0x3a')],{'$or':_[_0x887f('0x28')](_0xca31ec,function(_0x436486){if(_0x436486['type']!==_0x887f('0x3b')){var _0xc2df3b={};_0xc2df3b[_0x436486[_0x887f('0x2c')]]={'$like':'%'+_0x2f20ce['query'][_0x887f('0x39')]+'%'};return _0xc2df3b;}})});}_0x4e1fe1=_[_0x887f('0x3c')]({},_0x4e1fe1,_0x2f20ce['options']);var _0x4022fa={'where':_0x4e1fe1[_0x887f('0x3a')]};return db[_0x887f('0x29')][_0x887f('0x1a')](_0x4022fa)[_0x887f('0x22')](function(_0xd6bf57){_0x4238e0['count']=_0xd6bf57;if(_0x2f20ce[_0x887f('0x2d')][_0x887f('0x3d')]){_0x4e1fe1[_0x887f('0x3e')]=[{'all':!![]}];}return db[_0x887f('0x29')][_0x887f('0x3f')](_0x4e1fe1);})[_0x887f('0x22')](function(_0x2be724){_0x4238e0['rows']=_0x2be724;return _0x4238e0;})[_0x887f('0x22')](respondWithFilteredResult(_0x1c5ce3,_0x4e1fe1))[_0x887f('0x40')](handleError(_0x1c5ce3,null));};exports[_0x887f('0x41')]=function(_0x34594a,_0x55e700){var _0x134f2e={'raw':!![],'where':{'id':_0x34594a['params']['id']}},_0x79cf46={};_0x79cf46[_0x887f('0x2b')]=_['keys'](db['FaxQueueReport'][_0x887f('0x42')]);_0x79cf46[_0x887f('0x2d')]=_[_0x887f('0x2e')](_0x34594a[_0x887f('0x2d')]);_0x79cf46[_0x887f('0x2f')]=_[_0x887f('0x30')](_0x79cf46['model'],_0x79cf46[_0x887f('0x2d')]);_0x134f2e[_0x887f('0x31')]=_[_0x887f('0x30')](_0x79cf46[_0x887f('0x2b')],qs[_0x887f('0x32')](_0x34594a[_0x887f('0x2d')][_0x887f('0x32')]));_0x134f2e[_0x887f('0x31')]=_0x134f2e[_0x887f('0x31')][_0x887f('0x33')]?_0x134f2e['attributes']:_0x79cf46[_0x887f('0x2b')];if(_0x34594a[_0x887f('0x2d')][_0x887f('0x3d')]){_0x134f2e['include']=[{'all':!![]}];}_0x134f2e=_[_0x887f('0x3c')]({},_0x134f2e,_0x34594a[_0x887f('0x43')]);return db['FaxQueueReport'][_0x887f('0x44')](_0x134f2e)[_0x887f('0x22')](handleEntityNotFound(_0x55e700,null))[_0x887f('0x22')](respondWithResult(_0x55e700,null))[_0x887f('0x40')](handleError(_0x55e700,null));};exports[_0x887f('0x45')]=function(_0xbd961e,_0x22b11f){return db['FaxQueueReport']['create'](_0xbd961e[_0x887f('0x46')],{})[_0x887f('0x22')](respondWithResult(_0x22b11f,0xc9))['catch'](handleError(_0x22b11f,null));};exports[_0x887f('0x21')]=function(_0x3fcd12,_0x2bdd65){if(_0x3fcd12[_0x887f('0x46')]['id']){delete _0x3fcd12[_0x887f('0x46')]['id'];}return db[_0x887f('0x29')]['find']({'where':{'id':_0x3fcd12['params']['id']}})[_0x887f('0x22')](handleEntityNotFound(_0x2bdd65,null))['then'](saveUpdates(_0x3fcd12[_0x887f('0x46')],null))['then'](respondWithResult(_0x2bdd65,null))[_0x887f('0x40')](handleError(_0x2bdd65,null));};exports[_0x887f('0x23')]=function(_0x32e630,_0x417c8d){return db[_0x887f('0x29')]['find']({'where':{'id':_0x32e630[_0x887f('0x47')]['id']}})[_0x887f('0x22')](handleEntityNotFound(_0x417c8d,null))[_0x887f('0x22')](removeEntity(_0x417c8d,null))[_0x887f('0x40')](handleError(_0x417c8d,null));};exports[_0x887f('0x48')]=function(_0x809211,_0x320f54){return db[_0x887f('0x29')]['describe']()[_0x887f('0x22')](respondWithResult(_0x320f54,null))[_0x887f('0x40')](handleError(_0x320f54,null));};
\ No newline at end of file