Built motion from commit eddce310.|2.6.12
[motion2.git] / server / api / openchannelQueueReport / openchannelQueueReport.controller.js
index 2cbf7be..8af42a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x661c=['path','sox','to-csv','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','offset','count','limit','Content-Range','json','apply','reject','save','update','then','destroy','end','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','hasOwnProperty','nolimit','sort','pick','filter','where','type','VIRTUAL','merge','options','includeAll','catch','show','params','fields','length','include','find','create','body','describe','eml-format','fast-json-patch','moment','bluebird','mustache','util'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x661c,0x122));var _0xc661=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0x661c[_0x35885a];return _0xe86249;};'use strict';var emlformat=require(_0xc661('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc661('0x1'));var rp=require('request-promise');var moment=require(_0xc661('0x2'));var BPromise=require(_0xc661('0x3'));var Mustache=require(_0xc661('0x4'));var util=require(_0xc661('0x5'));var path=require(_0xc661('0x6'));var sox=require(_0xc661('0x7'));var csv=require(_0xc661('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc661('0x9'));var squel=require('squel');var crypto=require(_0xc661('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xc661('0xb'));var toCsv=require('to-csv');var querystring=require(_0xc661('0xc'));var Papa=require(_0xc661('0xd'));var Redis=require(_0xc661('0xe'));var authService=require(_0xc661('0xf'));var qs=require(_0xc661('0x10'));var as=require(_0xc661('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc661('0x12'))('api');var utils=require(_0xc661('0x13'));var config=require(_0xc661('0x14'));var licenseUtil=require(_0xc661('0x15'));var db=require(_0xc661('0x16'))['db'];function respondWithStatusCode(_0x5be601,_0x2a8860){_0x2a8860=_0x2a8860||0xcc;return function(_0x405477){if(_0x405477){return _0x5be601[_0xc661('0x17')](_0x2a8860);}return _0x5be601[_0xc661('0x18')](_0x2a8860)['end']();};}function respondWithResult(_0x803f14,_0x365eb9){_0x365eb9=_0x365eb9||0xc8;return function(_0x52905b){if(_0x52905b){return _0x803f14[_0xc661('0x18')](_0x365eb9)['json'](_0x52905b);}};}function respondWithFilteredResult(_0x541e64,_0x2478c8){return function(_0x2223ff){if(_0x2223ff){var _0x5565f1=typeof _0x2478c8['offset']===_0xc661('0x19')&&typeof _0x2478c8['limit']==='undefined';var _0x437eae=_0x2223ff['count'];var _0x390807=_0x5565f1?0x0:_0x2478c8[_0xc661('0x1a')];var _0xab6225=_0x5565f1?_0x2223ff[_0xc661('0x1b')]:_0x2478c8[_0xc661('0x1a')]+_0x2478c8[_0xc661('0x1c')];var _0x482913;if(_0xab6225>=_0x437eae){_0xab6225=_0x437eae;_0x482913=0xc8;}else{_0x482913=0xce;}_0x541e64[_0xc661('0x18')](_0x482913);return _0x541e64['set'](_0xc661('0x1d'),_0x390807+'-'+_0xab6225+'/'+_0x437eae)[_0xc661('0x1e')](_0x2223ff);}return null;};}function patchUpdates(_0x55e7b7){return function(_0xfc05d7){try{jsonpatch[_0xc661('0x1f')](_0xfc05d7,_0x55e7b7,!![]);}catch(_0x230528){return BPromise[_0xc661('0x20')](_0x230528);}return _0xfc05d7[_0xc661('0x21')]();};}function saveUpdates(_0x1a6d38,_0x1128fe){return function(_0x34c707){if(_0x34c707){return _0x34c707[_0xc661('0x22')](_0x1a6d38)[_0xc661('0x23')](function(_0x36c643){return _0x36c643;});}return null;};}function removeEntity(_0x3e7ca0,_0x3e8339){return function(_0x4c2ecf){if(_0x4c2ecf){return _0x4c2ecf[_0xc661('0x24')]()[_0xc661('0x23')](function(){_0x3e7ca0['status'](0xcc)[_0xc661('0x25')]();});}};}function handleEntityNotFound(_0x3eb48d,_0x1b218e){return function(_0x40f4cd){if(!_0x40f4cd){_0x3eb48d[_0xc661('0x17')](0x194);}return _0x40f4cd;};}function handleError(_0x245e42,_0x564bce){_0x564bce=_0x564bce||0x1f4;return function(_0x395491){logger['error'](_0x395491[_0xc661('0x26')]);if(_0x395491[_0xc661('0x27')]){delete _0x395491['name'];}_0x245e42['status'](_0x564bce)[_0xc661('0x28')](_0x395491);};}exports[_0xc661('0x29')]=function(_0x116db6,_0x5037d6){var _0x57d4a1={},_0x2d5ab2={},_0x306093={'count':0x0,'rows':[]};var _0x2c05a9=_[_0xc661('0x2a')](db[_0xc661('0x2b')][_0xc661('0x2c')],function(_0x4e4d49){return{'name':_0x4e4d49[_0xc661('0x2d')],'type':_0x4e4d49['type'][_0xc661('0x2e')]};});_0x2d5ab2['model']=_[_0xc661('0x2a')](_0x2c05a9,_0xc661('0x27'));_0x2d5ab2[_0xc661('0x2f')]=_[_0xc661('0x30')](_0x116db6[_0xc661('0x2f')]);_0x2d5ab2[_0xc661('0x31')]=_[_0xc661('0x32')](_0x2d5ab2[_0xc661('0x33')],_0x2d5ab2[_0xc661('0x2f')]);_0x57d4a1[_0xc661('0x34')]=_['intersection'](_0x2d5ab2[_0xc661('0x33')],qs['fields'](_0x116db6['query']['fields']));_0x57d4a1[_0xc661('0x34')]=_0x57d4a1[_0xc661('0x34')]['length']?_0x57d4a1['attributes']:_0x2d5ab2[_0xc661('0x33')];if(!_0x116db6[_0xc661('0x2f')][_0xc661('0x35')](_0xc661('0x36'))){_0x57d4a1[_0xc661('0x1c')]=qs[_0xc661('0x1c')](_0x116db6['query']['limit']);_0x57d4a1['offset']=qs[_0xc661('0x1a')](_0x116db6[_0xc661('0x2f')][_0xc661('0x1a')]);}_0x57d4a1['order']=qs[_0xc661('0x37')](_0x116db6[_0xc661('0x2f')][_0xc661('0x37')]);_0x57d4a1['where']=qs[_0xc661('0x31')](_[_0xc661('0x38')](_0x116db6['query'],_0x2d5ab2[_0xc661('0x31')]),_0x2c05a9);if(_0x116db6[_0xc661('0x2f')][_0xc661('0x39')]){_0x57d4a1[_0xc661('0x3a')]=_['merge'](_0x57d4a1[_0xc661('0x3a')],{'$or':_['map'](_0x2c05a9,function(_0x8ce015){if(_0x8ce015[_0xc661('0x3b')]!==_0xc661('0x3c')){var _0x44ed2d={};_0x44ed2d[_0x8ce015[_0xc661('0x27')]]={'$like':'%'+_0x116db6[_0xc661('0x2f')][_0xc661('0x39')]+'%'};return _0x44ed2d;}})});}_0x57d4a1=_[_0xc661('0x3d')]({},_0x57d4a1,_0x116db6[_0xc661('0x3e')]);var _0x2f470d={'where':_0x57d4a1[_0xc661('0x3a')]};return db['OpenchannelQueueReport'][_0xc661('0x1b')](_0x2f470d)[_0xc661('0x23')](function(_0x1c0708){_0x306093[_0xc661('0x1b')]=_0x1c0708;if(_0x116db6[_0xc661('0x2f')][_0xc661('0x3f')]){_0x57d4a1['include']=[{'all':!![]}];}return db[_0xc661('0x2b')]['findAll'](_0x57d4a1);})['then'](function(_0x27eb6c){_0x306093['rows']=_0x27eb6c;return _0x306093;})[_0xc661('0x23')](respondWithFilteredResult(_0x5037d6,_0x57d4a1))[_0xc661('0x40')](handleError(_0x5037d6,null));};exports[_0xc661('0x41')]=function(_0x90c62a,_0x1e5ec1){var _0x2f442d={'raw':!![],'where':{'id':_0x90c62a[_0xc661('0x42')]['id']}},_0x11b53d={};_0x11b53d[_0xc661('0x33')]=_[_0xc661('0x30')](db[_0xc661('0x2b')][_0xc661('0x2c')]);_0x11b53d[_0xc661('0x2f')]=_[_0xc661('0x30')](_0x90c62a[_0xc661('0x2f')]);_0x11b53d[_0xc661('0x31')]=_[_0xc661('0x32')](_0x11b53d['model'],_0x11b53d['query']);_0x2f442d[_0xc661('0x34')]=_[_0xc661('0x32')](_0x11b53d['model'],qs['fields'](_0x90c62a[_0xc661('0x2f')][_0xc661('0x43')]));_0x2f442d[_0xc661('0x34')]=_0x2f442d['attributes'][_0xc661('0x44')]?_0x2f442d[_0xc661('0x34')]:_0x11b53d[_0xc661('0x33')];if(_0x90c62a[_0xc661('0x2f')]['includeAll']){_0x2f442d[_0xc661('0x45')]=[{'all':!![]}];}_0x2f442d=_[_0xc661('0x3d')]({},_0x2f442d,_0x90c62a[_0xc661('0x3e')]);return db[_0xc661('0x2b')][_0xc661('0x46')](_0x2f442d)[_0xc661('0x23')](handleEntityNotFound(_0x1e5ec1,null))[_0xc661('0x23')](respondWithResult(_0x1e5ec1,null))['catch'](handleError(_0x1e5ec1,null));};exports['create']=function(_0x1a52b9,_0x3c500d){return db[_0xc661('0x2b')][_0xc661('0x47')](_0x1a52b9['body'],{})[_0xc661('0x23')](respondWithResult(_0x3c500d,0xc9))[_0xc661('0x40')](handleError(_0x3c500d,null));};exports['update']=function(_0x9f18a9,_0x1c3758){if(_0x9f18a9['body']['id']){delete _0x9f18a9['body']['id'];}return db[_0xc661('0x2b')][_0xc661('0x46')]({'where':{'id':_0x9f18a9[_0xc661('0x42')]['id']}})['then'](handleEntityNotFound(_0x1c3758,null))['then'](saveUpdates(_0x9f18a9[_0xc661('0x48')],null))[_0xc661('0x23')](respondWithResult(_0x1c3758,null))[_0xc661('0x40')](handleError(_0x1c3758,null));};exports['destroy']=function(_0x34fe31,_0xdfa8fb){return db[_0xc661('0x2b')][_0xc661('0x46')]({'where':{'id':_0x34fe31[_0xc661('0x42')]['id']}})[_0xc661('0x23')](handleEntityNotFound(_0xdfa8fb,null))['then'](removeEntity(_0xdfa8fb,null))['catch'](handleError(_0xdfa8fb,null));};exports[_0xc661('0x49')]=function(_0xb2aa6c,_0x34933c){return db[_0xc661('0x2b')]['describe']()[_0xc661('0x23')](respondWithResult(_0x34933c,null))['catch'](handleError(_0x34933c,null));};
\ No newline at end of file
+var _0x670d=['save','destroy','error','stack','name','map','OpenchannelQueueReport','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','then','rows','show','options','find','catch','create','body','update','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject'];(function(_0x525cc6,_0x5a7e0e){var _0x2427d3=function(_0x1df73b){while(--_0x1df73b){_0x525cc6['push'](_0x525cc6['shift']());}};_0x2427d3(++_0x5a7e0e);}(_0x670d,0x74));var _0xd670=function(_0x227aaf,_0x183de8){_0x227aaf=_0x227aaf-0x0;var _0x2c9746=_0x670d[_0x227aaf];return _0x2c9746;};'use strict';var emlformat=require(_0xd670('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd670('0x1'));var jsonpatch=require(_0xd670('0x2'));var rp=require(_0xd670('0x3'));var moment=require('moment');var BPromise=require(_0xd670('0x4'));var Mustache=require('mustache');var util=require(_0xd670('0x5'));var path=require(_0xd670('0x6'));var sox=require(_0xd670('0x7'));var csv=require(_0xd670('0x8'));var ejs=require(_0xd670('0x9'));var fs=require('fs');var fs_extra=require(_0xd670('0xa'));var _=require('lodash');var squel=require(_0xd670('0xb'));var crypto=require('crypto');var jsforce=require(_0xd670('0xc'));var deskjs=require(_0xd670('0xd'));var toCsv=require(_0xd670('0x8'));var querystring=require('querystring');var Papa=require(_0xd670('0xe'));var Redis=require(_0xd670('0xf'));var authService=require(_0xd670('0x10'));var qs=require(_0xd670('0x11'));var as=require(_0xd670('0x12'));var hardwareService=require(_0xd670('0x13'));var logger=require(_0xd670('0x14'))(_0xd670('0x15'));var utils=require(_0xd670('0x16'));var config=require(_0xd670('0x17'));var licenseUtil=require(_0xd670('0x18'));var db=require(_0xd670('0x19'))['db'];function respondWithStatusCode(_0x42a461,_0x3b4e38){_0x3b4e38=_0x3b4e38||0xcc;return function(_0x545269){if(_0x545269){return _0x42a461[_0xd670('0x1a')](_0x3b4e38);}return _0x42a461[_0xd670('0x1b')](_0x3b4e38)[_0xd670('0x1c')]();};}function respondWithResult(_0xa0ae58,_0x46527a){_0x46527a=_0x46527a||0xc8;return function(_0x43b315){if(_0x43b315){return _0xa0ae58[_0xd670('0x1b')](_0x46527a)[_0xd670('0x1d')](_0x43b315);}};}function respondWithFilteredResult(_0x4572ab,_0x37501e){return function(_0x5e4eb1){if(_0x5e4eb1){var _0x4640f7=typeof _0x37501e[_0xd670('0x1e')]===_0xd670('0x1f')&&typeof _0x37501e['limit']===_0xd670('0x1f');var _0x4ddc8f=_0x5e4eb1['count'];var _0x3e8b4c=_0x4640f7?0x0:_0x37501e[_0xd670('0x1e')];var _0x431942=_0x4640f7?_0x5e4eb1[_0xd670('0x20')]:_0x37501e[_0xd670('0x1e')]+_0x37501e[_0xd670('0x21')];var _0x28978e;if(_0x431942>=_0x4ddc8f){_0x431942=_0x4ddc8f;_0x28978e=0xc8;}else{_0x28978e=0xce;}_0x4572ab[_0xd670('0x1b')](_0x28978e);return _0x4572ab[_0xd670('0x22')](_0xd670('0x23'),_0x3e8b4c+'-'+_0x431942+'/'+_0x4ddc8f)[_0xd670('0x1d')](_0x5e4eb1);}return null;};}function patchUpdates(_0x41fc98){return function(_0x174fb4){try{jsonpatch[_0xd670('0x24')](_0x174fb4,_0x41fc98,!![]);}catch(_0x49a4d9){return BPromise[_0xd670('0x25')](_0x49a4d9);}return _0x174fb4[_0xd670('0x26')]();};}function saveUpdates(_0x2c7018,_0x4d84e7){return function(_0x3890a5){if(_0x3890a5){return _0x3890a5['update'](_0x2c7018)['then'](function(_0x44bfa8){return _0x44bfa8;});}return null;};}function removeEntity(_0x5b8471,_0x10f6c7){return function(_0xd83b5a){if(_0xd83b5a){return _0xd83b5a[_0xd670('0x27')]()['then'](function(){_0x5b8471['status'](0xcc)[_0xd670('0x1c')]();});}};}function handleEntityNotFound(_0x133116,_0x213d9a){return function(_0x4dfed6){if(!_0x4dfed6){_0x133116[_0xd670('0x1a')](0x194);}return _0x4dfed6;};}function handleError(_0x4933a2,_0x27ddf7){_0x27ddf7=_0x27ddf7||0x1f4;return function(_0x5bd429){logger[_0xd670('0x28')](_0x5bd429[_0xd670('0x29')]);if(_0x5bd429[_0xd670('0x2a')]){delete _0x5bd429[_0xd670('0x2a')];}_0x4933a2['status'](_0x27ddf7)['send'](_0x5bd429);};}exports['index']=function(_0x1f3f2d,_0x2bf5c8){var _0x379e4e={},_0x3d6f54={},_0x461169={'count':0x0,'rows':[]};var _0x51b9b7=_[_0xd670('0x2b')](db[_0xd670('0x2c')]['rawAttributes'],function(_0x48307b){return{'name':_0x48307b[_0xd670('0x2d')],'type':_0x48307b[_0xd670('0x2e')][_0xd670('0x2f')]};});_0x3d6f54[_0xd670('0x30')]=_[_0xd670('0x2b')](_0x51b9b7,_0xd670('0x2a'));_0x3d6f54[_0xd670('0x31')]=_[_0xd670('0x32')](_0x1f3f2d['query']);_0x3d6f54[_0xd670('0x33')]=_['intersection'](_0x3d6f54['model'],_0x3d6f54['query']);_0x379e4e['attributes']=_[_0xd670('0x34')](_0x3d6f54[_0xd670('0x30')],qs[_0xd670('0x35')](_0x1f3f2d[_0xd670('0x31')]['fields']));_0x379e4e[_0xd670('0x36')]=_0x379e4e['attributes'][_0xd670('0x37')]?_0x379e4e[_0xd670('0x36')]:_0x3d6f54[_0xd670('0x30')];if(!_0x1f3f2d[_0xd670('0x31')]['hasOwnProperty'](_0xd670('0x38'))){_0x379e4e[_0xd670('0x21')]=qs[_0xd670('0x21')](_0x1f3f2d[_0xd670('0x31')][_0xd670('0x21')]);_0x379e4e[_0xd670('0x1e')]=qs[_0xd670('0x1e')](_0x1f3f2d[_0xd670('0x31')]['offset']);}_0x379e4e['order']=qs['sort'](_0x1f3f2d['query'][_0xd670('0x39')]);_0x379e4e[_0xd670('0x3a')]=qs[_0xd670('0x33')](_[_0xd670('0x3b')](_0x1f3f2d[_0xd670('0x31')],_0x3d6f54[_0xd670('0x33')]),_0x51b9b7);if(_0x1f3f2d['query']['filter']){_0x379e4e[_0xd670('0x3a')]=_[_0xd670('0x3c')](_0x379e4e[_0xd670('0x3a')],{'$or':_[_0xd670('0x2b')](_0x51b9b7,function(_0x38e8b0){if(_0x38e8b0[_0xd670('0x2e')]!==_0xd670('0x3d')){var _0x4f2fa4={};_0x4f2fa4[_0x38e8b0[_0xd670('0x2a')]]={'$like':'%'+_0x1f3f2d['query'][_0xd670('0x3e')]+'%'};return _0x4f2fa4;}})});}_0x379e4e=_[_0xd670('0x3c')]({},_0x379e4e,_0x1f3f2d['options']);var _0x5c6abd={'where':_0x379e4e[_0xd670('0x3a')]};return db[_0xd670('0x2c')]['count'](_0x5c6abd)['then'](function(_0x5b2704){_0x461169[_0xd670('0x20')]=_0x5b2704;if(_0x1f3f2d[_0xd670('0x31')][_0xd670('0x3f')]){_0x379e4e[_0xd670('0x40')]=[{'all':!![]}];}return db['OpenchannelQueueReport'][_0xd670('0x41')](_0x379e4e);})[_0xd670('0x42')](function(_0x49d57c){_0x461169[_0xd670('0x43')]=_0x49d57c;return _0x461169;})[_0xd670('0x42')](respondWithFilteredResult(_0x2bf5c8,_0x379e4e))['catch'](handleError(_0x2bf5c8,null));};exports[_0xd670('0x44')]=function(_0x33a436,_0x45c099){var _0x4af348={'raw':!![],'where':{'id':_0x33a436['params']['id']}},_0x177ec6={};_0x177ec6['model']=_[_0xd670('0x32')](db[_0xd670('0x2c')]['rawAttributes']);_0x177ec6[_0xd670('0x31')]=_[_0xd670('0x32')](_0x33a436['query']);_0x177ec6[_0xd670('0x33')]=_[_0xd670('0x34')](_0x177ec6['model'],_0x177ec6[_0xd670('0x31')]);_0x4af348[_0xd670('0x36')]=_[_0xd670('0x34')](_0x177ec6['model'],qs[_0xd670('0x35')](_0x33a436[_0xd670('0x31')][_0xd670('0x35')]));_0x4af348['attributes']=_0x4af348[_0xd670('0x36')][_0xd670('0x37')]?_0x4af348['attributes']:_0x177ec6['model'];if(_0x33a436['query'][_0xd670('0x3f')]){_0x4af348[_0xd670('0x40')]=[{'all':!![]}];}_0x4af348=_['merge']({},_0x4af348,_0x33a436[_0xd670('0x45')]);return db[_0xd670('0x2c')][_0xd670('0x46')](_0x4af348)[_0xd670('0x42')](handleEntityNotFound(_0x45c099,null))[_0xd670('0x42')](respondWithResult(_0x45c099,null))[_0xd670('0x47')](handleError(_0x45c099,null));};exports[_0xd670('0x48')]=function(_0x25ff3c,_0x572b8a){return db[_0xd670('0x2c')][_0xd670('0x48')](_0x25ff3c[_0xd670('0x49')],{})[_0xd670('0x42')](respondWithResult(_0x572b8a,0xc9))['catch'](handleError(_0x572b8a,null));};exports[_0xd670('0x4a')]=function(_0x288280,_0x50fc45){if(_0x288280[_0xd670('0x49')]['id']){delete _0x288280[_0xd670('0x49')]['id'];}return db[_0xd670('0x2c')][_0xd670('0x46')]({'where':{'id':_0x288280[_0xd670('0x4b')]['id']}})[_0xd670('0x42')](handleEntityNotFound(_0x50fc45,null))[_0xd670('0x42')](saveUpdates(_0x288280[_0xd670('0x49')],null))[_0xd670('0x42')](respondWithResult(_0x50fc45,null))[_0xd670('0x47')](handleError(_0x50fc45,null));};exports[_0xd670('0x27')]=function(_0x5e2d0a,_0x5be2ca){return db[_0xd670('0x2c')][_0xd670('0x46')]({'where':{'id':_0x5e2d0a['params']['id']}})[_0xd670('0x42')](handleEntityNotFound(_0x5be2ca,null))[_0xd670('0x42')](removeEntity(_0x5be2ca,null))[_0xd670('0x47')](handleError(_0x5be2ca,null));};exports[_0xd670('0x4c')]=function(_0x490bea,_0x1873fc){return db['OpenchannelQueueReport'][_0xd670('0x4c')]()['then'](respondWithResult(_0x1873fc,null))[_0xd670('0x47')](handleError(_0x1873fc,null));};
\ No newline at end of file