Built motion from commit da617fac.|2.6.6
[motion2.git] / server / api / userProfileSection / userProfileSection.controller.js
index a2f73a1..1cae10a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf01=['index','map','fieldName','model','keys','filters','intersection','query','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','UserProfileSection','catch','show','params','length','options','find','create','body','destroy','describe','html-pdf','eml-format','rimraf','fast-json-patch','moment','bluebird','to-csv','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','sendStatus','end','status','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send'];(function(_0x3f72a4,_0x3b3f97){var _0x54e7f1=function(_0x5b434d){while(--_0x5b434d){_0x3f72a4['push'](_0x3f72a4['shift']());}};_0x54e7f1(++_0x3b3f97);}(_0xdf01,0x66));var _0x1df0=function(_0x325dc5,_0x59dbd4){_0x325dc5=_0x325dc5-0x0;var _0x5dd4ab=_0xdf01[_0x325dc5];return _0x5dd4ab;};'use strict';var pdf=require(_0x1df0('0x0'));var emlformat=require(_0x1df0('0x1'));var rimraf=require(_0x1df0('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1df0('0x3'));var rp=require('request-promise');var moment=require(_0x1df0('0x4'));var BPromise=require(_0x1df0('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x1df0('0x6'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x1df0('0x7'));var crypto=require(_0x1df0('0x8'));var jsforce=require(_0x1df0('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x1df0('0x6'));var querystring=require(_0x1df0('0xa'));var Papa=require('papaparse');var Redis=require(_0x1df0('0xb'));var authService=require(_0x1df0('0xc'));var qs=require(_0x1df0('0xd'));var as=require(_0x1df0('0xe'));var hardwareService=require(_0x1df0('0xf'));var logger=require('../../config/logger')(_0x1df0('0x10'));var utils=require(_0x1df0('0x11'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x13fa82,_0x456f6b){_0x456f6b=_0x456f6b||0xcc;return function(_0x5f36e1){if(_0x5f36e1){return _0x13fa82[_0x1df0('0x12')](_0x456f6b);}return _0x13fa82['status'](_0x456f6b)[_0x1df0('0x13')]();};}function respondWithResult(_0x5b4c2f,_0x5b3e0a){_0x5b3e0a=_0x5b3e0a||0xc8;return function(_0x441227){if(_0x441227){return _0x5b4c2f[_0x1df0('0x14')](_0x5b3e0a)['json'](_0x441227);}};}function respondWithFilteredResult(_0x1f4936,_0x8da324){return function(_0x3bc101){if(_0x3bc101){var _0x45681d=_0x3bc101[_0x1df0('0x15')],_0x18a616=_0x8da324['offset'],_0x4a085d=_0x8da324[_0x1df0('0x16')]+_0x8da324[_0x1df0('0x17')],_0xe242c6;if(_0x4a085d>=_0x45681d){_0x4a085d=_0x45681d;_0xe242c6=0xc8;}else{_0xe242c6=0xce;}_0x1f4936[_0x1df0('0x14')](_0xe242c6);return _0x1f4936[_0x1df0('0x18')](_0x1df0('0x19'),_0x18a616+'-'+_0x4a085d+'/'+_0x45681d)[_0x1df0('0x1a')](_0x3bc101);}return null;};}function patchUpdates(_0x1a423d){return function(_0x4ceafa){try{jsonpatch[_0x1df0('0x1b')](_0x4ceafa,_0x1a423d,!![]);}catch(_0x2c37f2){return BPromise[_0x1df0('0x1c')](_0x2c37f2);}return _0x4ceafa[_0x1df0('0x1d')]();};}function saveUpdates(_0x31c127,_0x4f80db){return function(_0xb07009){if(_0xb07009){return _0xb07009[_0x1df0('0x1e')](_0x31c127)[_0x1df0('0x1f')](function(_0x13379c){return _0x13379c;});}return null;};}function removeEntity(_0x36d79c,_0x42aa8c){return function(_0x48f8c7){if(_0x48f8c7){return _0x48f8c7['destroy']()['then'](function(){_0x36d79c[_0x1df0('0x14')](0xcc)[_0x1df0('0x13')]();});}};}function handleEntityNotFound(_0xd85676,_0x18a73c){return function(_0x5d118e){if(!_0x5d118e){_0xd85676[_0x1df0('0x12')](0x194);}return _0x5d118e;};}function handleError(_0x2f25a7,_0x14ca87){_0x14ca87=_0x14ca87||0x1f4;return function(_0xe4029){logger[_0x1df0('0x20')](_0xe4029[_0x1df0('0x21')]);if(_0xe4029[_0x1df0('0x22')]){delete _0xe4029[_0x1df0('0x22')];}_0x2f25a7[_0x1df0('0x14')](_0x14ca87)[_0x1df0('0x23')](_0xe4029);};}exports[_0x1df0('0x24')]=function(_0x2c621e,_0x455d17){var _0x3bb95e={},_0x5313ba={},_0x561eab={'count':0x0,'rows':[]};var _0x2184b5=_[_0x1df0('0x25')](db['UserProfileSection']['rawAttributes'],function(_0x69da37){return{'name':_0x69da37[_0x1df0('0x26')],'type':_0x69da37['type']['key']};});_0x5313ba[_0x1df0('0x27')]=_[_0x1df0('0x25')](_0x2184b5,_0x1df0('0x22'));_0x5313ba['query']=_[_0x1df0('0x28')](_0x2c621e['query']);_0x5313ba[_0x1df0('0x29')]=_[_0x1df0('0x2a')](_0x5313ba[_0x1df0('0x27')],_0x5313ba[_0x1df0('0x2b')]);_0x3bb95e['attributes']=_[_0x1df0('0x2a')](_0x5313ba[_0x1df0('0x27')],qs[_0x1df0('0x2c')](_0x2c621e['query'][_0x1df0('0x2c')]));_0x3bb95e[_0x1df0('0x2d')]=_0x3bb95e['attributes']['length']?_0x3bb95e[_0x1df0('0x2d')]:_0x5313ba['model'];if(!_0x2c621e[_0x1df0('0x2b')][_0x1df0('0x2e')](_0x1df0('0x2f'))){_0x3bb95e[_0x1df0('0x17')]=qs[_0x1df0('0x17')](_0x2c621e[_0x1df0('0x2b')][_0x1df0('0x17')]);_0x3bb95e['offset']=qs[_0x1df0('0x16')](_0x2c621e[_0x1df0('0x2b')][_0x1df0('0x16')]);}_0x3bb95e[_0x1df0('0x30')]=qs[_0x1df0('0x31')](_0x2c621e[_0x1df0('0x2b')][_0x1df0('0x31')]);_0x3bb95e[_0x1df0('0x32')]=qs[_0x1df0('0x29')](_[_0x1df0('0x33')](_0x2c621e[_0x1df0('0x2b')],_0x5313ba[_0x1df0('0x29')]));if(_0x2c621e['query'][_0x1df0('0x34')]){_0x3bb95e[_0x1df0('0x32')]=_[_0x1df0('0x35')](_0x3bb95e[_0x1df0('0x32')],{'$or':_[_0x1df0('0x25')](_0x2184b5,function(_0x4bfc7f){if(_0x4bfc7f[_0x1df0('0x36')]!==_0x1df0('0x37')){var _0x2f899c={};_0x2f899c[_0x4bfc7f[_0x1df0('0x22')]]={'$like':'%'+_0x2c621e['query'][_0x1df0('0x34')]+'%'};return _0x2f899c;}})});}_0x3bb95e=_[_0x1df0('0x35')]({},_0x3bb95e,_0x2c621e['options']);var _0x267a4e={'where':_0x3bb95e[_0x1df0('0x32')]};return db['UserProfileSection'][_0x1df0('0x15')](_0x267a4e)[_0x1df0('0x1f')](function(_0x43393c){_0x561eab[_0x1df0('0x15')]=_0x43393c;if(_0x2c621e[_0x1df0('0x2b')][_0x1df0('0x38')]){_0x3bb95e[_0x1df0('0x39')]=[{'all':!![]}];}return db[_0x1df0('0x3a')]['findAll'](_0x3bb95e);})[_0x1df0('0x1f')](function(_0x431b36){_0x561eab['rows']=_0x431b36;return _0x561eab;})['then'](respondWithFilteredResult(_0x455d17,_0x3bb95e))[_0x1df0('0x3b')](handleError(_0x455d17,null));};exports[_0x1df0('0x3c')]=function(_0x211ac5,_0x7f7bcd){var _0x13928c={'raw':![],'where':{'id':_0x211ac5[_0x1df0('0x3d')]['id']}},_0x46a976={};_0x46a976['model']=_[_0x1df0('0x28')](db[_0x1df0('0x3a')]['rawAttributes']);_0x46a976[_0x1df0('0x2b')]=_[_0x1df0('0x28')](_0x211ac5[_0x1df0('0x2b')]);_0x46a976[_0x1df0('0x29')]=_['intersection'](_0x46a976[_0x1df0('0x27')],_0x46a976[_0x1df0('0x2b')]);_0x13928c['attributes']=_[_0x1df0('0x2a')](_0x46a976[_0x1df0('0x27')],qs[_0x1df0('0x2c')](_0x211ac5['query'][_0x1df0('0x2c')]));_0x13928c[_0x1df0('0x2d')]=_0x13928c[_0x1df0('0x2d')][_0x1df0('0x3e')]?_0x13928c[_0x1df0('0x2d')]:_0x46a976[_0x1df0('0x27')];if(_0x211ac5[_0x1df0('0x2b')][_0x1df0('0x38')]){_0x13928c[_0x1df0('0x39')]=[{'all':!![]}];}_0x13928c=_['merge']({},_0x13928c,_0x211ac5[_0x1df0('0x3f')]);return db[_0x1df0('0x3a')][_0x1df0('0x40')](_0x13928c)[_0x1df0('0x1f')](handleEntityNotFound(_0x7f7bcd,null))[_0x1df0('0x1f')](respondWithResult(_0x7f7bcd,null))[_0x1df0('0x3b')](handleError(_0x7f7bcd,null));};exports[_0x1df0('0x41')]=function(_0x5aeb66,_0x4fd96b){return db['UserProfileSection'][_0x1df0('0x41')](_0x5aeb66[_0x1df0('0x42')],{})[_0x1df0('0x1f')](respondWithResult(_0x4fd96b,0xc9))['catch'](handleError(_0x4fd96b,null));};exports[_0x1df0('0x1e')]=function(_0x2ed73f,_0xf54a9b){if(_0x2ed73f[_0x1df0('0x42')]['id']){delete _0x2ed73f[_0x1df0('0x42')]['id'];}return db[_0x1df0('0x3a')][_0x1df0('0x40')]({'where':{'id':_0x2ed73f['params']['id']}})[_0x1df0('0x1f')](handleEntityNotFound(_0xf54a9b,null))[_0x1df0('0x1f')](saveUpdates(_0x2ed73f[_0x1df0('0x42')],null))[_0x1df0('0x1f')](respondWithResult(_0xf54a9b,null))[_0x1df0('0x3b')](handleError(_0xf54a9b,null));};exports[_0x1df0('0x43')]=function(_0x5192d7,_0x3cd45e){return db['UserProfileSection']['find']({'where':{'id':_0x5192d7[_0x1df0('0x3d')]['id']}})[_0x1df0('0x1f')](handleEntityNotFound(_0x3cd45e,null))[_0x1df0('0x1f')](removeEntity(_0x3cd45e,null))['catch'](handleError(_0x3cd45e,null));};exports[_0x1df0('0x44')]=function(_0x580081,_0xece370){return db['UserProfileSection'][_0x1df0('0x44')]()[_0x1df0('0x1f')](respondWithResult(_0xece370,null))['catch'](handleError(_0xece370,null));};
\ No newline at end of file
+var _0x4618=['UserProfileSection','rawAttributes','fieldName','type','key','model','keys','filters','query','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','then','rows','catch','show','params','intersection','include','find','create','body','describe','eml-format','zip-dir','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','error','stack','name','index','map'];(function(_0x18cd5b,_0x10240b){var _0x5eaa52=function(_0x2bccad){while(--_0x2bccad){_0x18cd5b['push'](_0x18cd5b['shift']());}};_0x5eaa52(++_0x10240b);}(_0x4618,0x109));var _0x8461=function(_0x2fc012,_0x503e5b){_0x2fc012=_0x2fc012-0x0;var _0x2891f9=_0x4618[_0x2fc012];return _0x2891f9;};'use strict';var emlformat=require(_0x8461('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8461('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8461('0x2'));var moment=require(_0x8461('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x8461('0x4'));var path=require(_0x8461('0x5'));var sox=require(_0x8461('0x6'));var csv=require(_0x8461('0x7'));var ejs=require(_0x8461('0x8'));var fs=require('fs');var fs_extra=require(_0x8461('0x9'));var _=require(_0x8461('0xa'));var squel=require(_0x8461('0xb'));var crypto=require(_0x8461('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x8461('0xd'));var toCsv=require(_0x8461('0x7'));var querystring=require(_0x8461('0xe'));var Papa=require('papaparse');var Redis=require(_0x8461('0xf'));var authService=require(_0x8461('0x10'));var qs=require(_0x8461('0x11'));var as=require(_0x8461('0x12'));var hardwareService=require(_0x8461('0x13'));var logger=require(_0x8461('0x14'))(_0x8461('0x15'));var utils=require('../../config/utils');var config=require(_0x8461('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8461('0x17'))['db'];function respondWithStatusCode(_0x390a0c,_0x2e3c26){_0x2e3c26=_0x2e3c26||0xcc;return function(_0x244477){if(_0x244477){return _0x390a0c[_0x8461('0x18')](_0x2e3c26);}return _0x390a0c['status'](_0x2e3c26)[_0x8461('0x19')]();};}function respondWithResult(_0x46e243,_0x4c5314){_0x4c5314=_0x4c5314||0xc8;return function(_0x265fed){if(_0x265fed){return _0x46e243[_0x8461('0x1a')](_0x4c5314)[_0x8461('0x1b')](_0x265fed);}};}function respondWithFilteredResult(_0x1baf14,_0x3da535){return function(_0x4ec6c1){if(_0x4ec6c1){var _0x3a2834=typeof _0x3da535[_0x8461('0x1c')]===_0x8461('0x1d')&&typeof _0x3da535[_0x8461('0x1e')]===_0x8461('0x1d');var _0x36abb3=_0x4ec6c1[_0x8461('0x1f')];var _0x11e0aa=_0x3a2834?0x0:_0x3da535['offset'];var _0x11d62d=_0x3a2834?_0x4ec6c1['count']:_0x3da535['offset']+_0x3da535[_0x8461('0x1e')];var _0x5f24ba;if(_0x11d62d>=_0x36abb3){_0x11d62d=_0x36abb3;_0x5f24ba=0xc8;}else{_0x5f24ba=0xce;}_0x1baf14[_0x8461('0x1a')](_0x5f24ba);return _0x1baf14[_0x8461('0x20')](_0x8461('0x21'),_0x11e0aa+'-'+_0x11d62d+'/'+_0x36abb3)[_0x8461('0x1b')](_0x4ec6c1);}return null;};}function patchUpdates(_0xc1c46e){return function(_0x3c08b4){try{jsonpatch['apply'](_0x3c08b4,_0xc1c46e,!![]);}catch(_0x255109){return BPromise[_0x8461('0x22')](_0x255109);}return _0x3c08b4[_0x8461('0x23')]();};}function saveUpdates(_0x20d72b,_0x1aac85){return function(_0x47b95a){if(_0x47b95a){return _0x47b95a[_0x8461('0x24')](_0x20d72b)['then'](function(_0x215e57){return _0x215e57;});}return null;};}function removeEntity(_0x21b70d,_0x277fd0){return function(_0x1a60d6){if(_0x1a60d6){return _0x1a60d6[_0x8461('0x25')]()['then'](function(){_0x21b70d[_0x8461('0x1a')](0xcc)[_0x8461('0x19')]();});}};}function handleEntityNotFound(_0x539aab,_0x3ac870){return function(_0x177e4d){if(!_0x177e4d){_0x539aab[_0x8461('0x18')](0x194);}return _0x177e4d;};}function handleError(_0x3445c0,_0x2332c8){_0x2332c8=_0x2332c8||0x1f4;return function(_0x1b296e){logger[_0x8461('0x26')](_0x1b296e[_0x8461('0x27')]);if(_0x1b296e[_0x8461('0x28')]){delete _0x1b296e[_0x8461('0x28')];}_0x3445c0['status'](_0x2332c8)['send'](_0x1b296e);};}exports[_0x8461('0x29')]=function(_0x2260a1,_0x2a2730){var _0x39425f={},_0x317215={},_0x1d0d33={'count':0x0,'rows':[]};var _0x1a7eb6=_[_0x8461('0x2a')](db[_0x8461('0x2b')][_0x8461('0x2c')],function(_0x54b7a8){return{'name':_0x54b7a8[_0x8461('0x2d')],'type':_0x54b7a8[_0x8461('0x2e')][_0x8461('0x2f')]};});_0x317215[_0x8461('0x30')]=_['map'](_0x1a7eb6,_0x8461('0x28'));_0x317215['query']=_[_0x8461('0x31')](_0x2260a1['query']);_0x317215[_0x8461('0x32')]=_['intersection'](_0x317215[_0x8461('0x30')],_0x317215[_0x8461('0x33')]);_0x39425f[_0x8461('0x34')]=_['intersection'](_0x317215[_0x8461('0x30')],qs[_0x8461('0x35')](_0x2260a1[_0x8461('0x33')][_0x8461('0x35')]));_0x39425f[_0x8461('0x34')]=_0x39425f[_0x8461('0x34')][_0x8461('0x36')]?_0x39425f[_0x8461('0x34')]:_0x317215[_0x8461('0x30')];if(!_0x2260a1[_0x8461('0x33')][_0x8461('0x37')]('nolimit')){_0x39425f[_0x8461('0x1e')]=qs['limit'](_0x2260a1[_0x8461('0x33')][_0x8461('0x1e')]);_0x39425f['offset']=qs[_0x8461('0x1c')](_0x2260a1['query']['offset']);}_0x39425f[_0x8461('0x38')]=qs[_0x8461('0x39')](_0x2260a1[_0x8461('0x33')][_0x8461('0x39')]);_0x39425f[_0x8461('0x3a')]=qs[_0x8461('0x32')](_[_0x8461('0x3b')](_0x2260a1[_0x8461('0x33')],_0x317215['filters']),_0x1a7eb6);if(_0x2260a1[_0x8461('0x33')][_0x8461('0x3c')]){_0x39425f[_0x8461('0x3a')]=_[_0x8461('0x3d')](_0x39425f['where'],{'$or':_[_0x8461('0x2a')](_0x1a7eb6,function(_0x579ba0){if(_0x579ba0[_0x8461('0x2e')]!==_0x8461('0x3e')){var _0x379297={};_0x379297[_0x579ba0['name']]={'$like':'%'+_0x2260a1['query']['filter']+'%'};return _0x379297;}})});}_0x39425f=_[_0x8461('0x3d')]({},_0x39425f,_0x2260a1[_0x8461('0x3f')]);var _0x215782={'where':_0x39425f[_0x8461('0x3a')]};return db['UserProfileSection'][_0x8461('0x1f')](_0x215782)['then'](function(_0x1edf53){_0x1d0d33[_0x8461('0x1f')]=_0x1edf53;if(_0x2260a1['query'][_0x8461('0x40')]){_0x39425f['include']=[{'all':!![]}];}return db['UserProfileSection'][_0x8461('0x41')](_0x39425f);})[_0x8461('0x42')](function(_0x4b44a9){_0x1d0d33[_0x8461('0x43')]=_0x4b44a9;return _0x1d0d33;})[_0x8461('0x42')](respondWithFilteredResult(_0x2a2730,_0x39425f))[_0x8461('0x44')](handleError(_0x2a2730,null));};exports[_0x8461('0x45')]=function(_0x4d05ed,_0x3a87f3){var _0x56794b={'raw':![],'where':{'id':_0x4d05ed[_0x8461('0x46')]['id']}},_0x11638d={};_0x11638d[_0x8461('0x30')]=_[_0x8461('0x31')](db['UserProfileSection'][_0x8461('0x2c')]);_0x11638d[_0x8461('0x33')]=_['keys'](_0x4d05ed['query']);_0x11638d['filters']=_[_0x8461('0x47')](_0x11638d[_0x8461('0x30')],_0x11638d[_0x8461('0x33')]);_0x56794b['attributes']=_[_0x8461('0x47')](_0x11638d[_0x8461('0x30')],qs['fields'](_0x4d05ed[_0x8461('0x33')][_0x8461('0x35')]));_0x56794b[_0x8461('0x34')]=_0x56794b[_0x8461('0x34')][_0x8461('0x36')]?_0x56794b['attributes']:_0x11638d[_0x8461('0x30')];if(_0x4d05ed[_0x8461('0x33')][_0x8461('0x40')]){_0x56794b[_0x8461('0x48')]=[{'all':!![]}];}_0x56794b=_[_0x8461('0x3d')]({},_0x56794b,_0x4d05ed['options']);return db[_0x8461('0x2b')][_0x8461('0x49')](_0x56794b)[_0x8461('0x42')](handleEntityNotFound(_0x3a87f3,null))[_0x8461('0x42')](respondWithResult(_0x3a87f3,null))[_0x8461('0x44')](handleError(_0x3a87f3,null));};exports['create']=function(_0x48883a,_0x5c724b){return db[_0x8461('0x2b')][_0x8461('0x4a')](_0x48883a[_0x8461('0x4b')],{})[_0x8461('0x42')](respondWithResult(_0x5c724b,0xc9))[_0x8461('0x44')](handleError(_0x5c724b,null));};exports[_0x8461('0x24')]=function(_0x5880e7,_0x5254d4){if(_0x5880e7[_0x8461('0x4b')]['id']){delete _0x5880e7[_0x8461('0x4b')]['id'];}return db[_0x8461('0x2b')][_0x8461('0x49')]({'where':{'id':_0x5880e7['params']['id']}})[_0x8461('0x42')](handleEntityNotFound(_0x5254d4,null))[_0x8461('0x42')](saveUpdates(_0x5880e7[_0x8461('0x4b')],null))['then'](respondWithResult(_0x5254d4,null))['catch'](handleError(_0x5254d4,null));};exports['destroy']=function(_0x547eb9,_0x30a59f){return db[_0x8461('0x2b')][_0x8461('0x49')]({'where':{'id':_0x547eb9[_0x8461('0x46')]['id']}})[_0x8461('0x42')](handleEntityNotFound(_0x30a59f,null))[_0x8461('0x42')](removeEntity(_0x30a59f,null))[_0x8461('0x44')](handleError(_0x30a59f,null));};exports[_0x8461('0x4c')]=function(_0x153313,_0x3cba24){return db[_0x8461('0x2b')][_0x8461('0x4c')]()[_0x8461('0x42')](respondWithResult(_0x3cba24,null))['catch'](handleError(_0x3cba24,null));};
\ No newline at end of file