Built motion from commit da617fac.|2.6.6
[motion2.git] / server / api / cmHopperFinal / cmHopperFinal.controller.js
index 3a03091..2100983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32ef=['../../config/license/util','../../mysqldb','status','end','count','offset','limit','set','Content-Range','json','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','CmHopperFinal','includeAll','include','rows','catch','show','params','describe','body','uniqueid','find','countContactsQueueCampaignHopperFinal','findAll','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','noSuchContacts','`state`\x20=\x203,\x201,\x20null','reCallContacts','answeringMachine','VoiceQueue','insert','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','createdAt','updatedAt','from','cm_hopper_final','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','VoiceQueueId\x20=\x20?','calleridnum','state\x20=\x204','Campaign','into','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','group','findOne','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x225d64,_0x34440){var _0x47a1e2=function(_0x4a9c9e){while(--_0x4a9c9e){_0x225d64['push'](_0x225d64['shift']());}};_0x47a1e2(++_0x34440);}(_0x32ef,0xf9));var _0xf32e=function(_0x48c540,_0x4047ab){_0x48c540=_0x48c540-0x0;var _0x131204=_0x32ef[_0x48c540];return _0x131204;};'use strict';var pdf=require(_0xf32e('0x0'));var emlformat=require(_0xf32e('0x1'));var rimraf=require(_0xf32e('0x2'));var zipdir=require(_0xf32e('0x3'));var jsonpatch=require(_0xf32e('0x4'));var rp=require(_0xf32e('0x5'));var moment=require('moment');var BPromise=require(_0xf32e('0x6'));var Mustache=require(_0xf32e('0x7'));var util=require('util');var path=require(_0xf32e('0x8'));var sox=require(_0xf32e('0x9'));var csv=require(_0xf32e('0xa'));var ejs=require(_0xf32e('0xb'));var fs=require('fs');var _=require(_0xf32e('0xc'));var squel=require(_0xf32e('0xd'));var crypto=require('crypto');var jsforce=require(_0xf32e('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xf32e('0xa'));var querystring=require(_0xf32e('0xf'));var Papa=require(_0xf32e('0x10'));var Redis=require(_0xf32e('0x11'));var authService=require(_0xf32e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf32e('0x13'));var hardwareService=require(_0xf32e('0x14'));var logger=require(_0xf32e('0x15'))(_0xf32e('0x16'));var utils=require(_0xf32e('0x17'));var config=require(_0xf32e('0x18'));var licenseUtil=require(_0xf32e('0x19'));var db=require(_0xf32e('0x1a'))['db'];function respondWithStatusCode(_0x319616,_0x1c1f52){_0x1c1f52=_0x1c1f52||0xcc;return function(_0xf7dc32){if(_0xf7dc32){return _0x319616['sendStatus'](_0x1c1f52);}return _0x319616[_0xf32e('0x1b')](_0x1c1f52)[_0xf32e('0x1c')]();};}function respondWithResult(_0x543072,_0x336e26){_0x336e26=_0x336e26||0xc8;return function(_0x35988d){if(_0x35988d){return _0x543072[_0xf32e('0x1b')](_0x336e26)['json'](_0x35988d);}};}function respondWithFilteredResult(_0xe324ad,_0x299efa){return function(_0x1dd008){if(_0x1dd008){var _0x400d25=_0x1dd008[_0xf32e('0x1d')],_0x43eedf=_0x299efa[_0xf32e('0x1e')],_0x417def=_0x299efa['offset']+_0x299efa[_0xf32e('0x1f')],_0x6a0231;if(_0x417def>=_0x400d25){_0x417def=_0x400d25;_0x6a0231=0xc8;}else{_0x6a0231=0xce;}_0xe324ad[_0xf32e('0x1b')](_0x6a0231);return _0xe324ad[_0xf32e('0x20')](_0xf32e('0x21'),_0x43eedf+'-'+_0x417def+'/'+_0x400d25)[_0xf32e('0x22')](_0x1dd008);}return null;};}function patchUpdates(_0x1f7a5e){return function(_0x2f909b){try{jsonpatch[_0xf32e('0x23')](_0x2f909b,_0x1f7a5e,!![]);}catch(_0xdd701b){return BPromise[_0xf32e('0x24')](_0xdd701b);}return _0x2f909b[_0xf32e('0x25')]();};}function saveUpdates(_0x1b169e,_0x3202e1){return function(_0x3c0d43){if(_0x3c0d43){return _0x3c0d43[_0xf32e('0x26')](_0x1b169e)['then'](function(_0x23552d){return _0x23552d;});}return null;};}function removeEntity(_0x57a8cb,_0x27b92c){return function(_0x2aaabf){if(_0x2aaabf){return _0x2aaabf[_0xf32e('0x27')]()[_0xf32e('0x28')](function(){_0x57a8cb[_0xf32e('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x227405,_0x4407f8){return function(_0x13d87a){if(!_0x13d87a){_0x227405[_0xf32e('0x29')](0x194);}return _0x13d87a;};}function handleError(_0x5e62eb,_0x173b77){_0x173b77=_0x173b77||0x1f4;return function(_0x1eb413){logger[_0xf32e('0x2a')](_0x1eb413[_0xf32e('0x2b')]);if(_0x1eb413[_0xf32e('0x2c')]){delete _0x1eb413[_0xf32e('0x2c')];}_0x5e62eb[_0xf32e('0x1b')](_0x173b77)[_0xf32e('0x2d')](_0x1eb413);};}exports[_0xf32e('0x2e')]=function(_0x29be62,_0x488489){var _0x3e6e6f={},_0x88eaa5={},_0x3b906c={'count':0x0,'rows':[]};var _0x4a873c=_[_0xf32e('0x2f')](db['CmHopperFinal'][_0xf32e('0x30')],function(_0x5c8779){return{'name':_0x5c8779[_0xf32e('0x31')],'type':_0x5c8779[_0xf32e('0x32')][_0xf32e('0x33')]};});_0x88eaa5[_0xf32e('0x34')]=_[_0xf32e('0x2f')](_0x4a873c,'name');_0x88eaa5[_0xf32e('0x35')]=_[_0xf32e('0x36')](_0x29be62[_0xf32e('0x35')]);_0x88eaa5['filters']=_[_0xf32e('0x37')](_0x88eaa5[_0xf32e('0x34')],_0x88eaa5[_0xf32e('0x35')]);_0x3e6e6f[_0xf32e('0x38')]=_[_0xf32e('0x37')](_0x88eaa5[_0xf32e('0x34')],qs[_0xf32e('0x39')](_0x29be62[_0xf32e('0x35')][_0xf32e('0x39')]));_0x3e6e6f[_0xf32e('0x38')]=_0x3e6e6f[_0xf32e('0x38')][_0xf32e('0x3a')]?_0x3e6e6f[_0xf32e('0x38')]:_0x88eaa5['model'];if(!_0x29be62[_0xf32e('0x35')]['hasOwnProperty'](_0xf32e('0x3b'))){_0x3e6e6f['limit']=qs['limit'](_0x29be62[_0xf32e('0x35')][_0xf32e('0x1f')]);_0x3e6e6f[_0xf32e('0x1e')]=qs[_0xf32e('0x1e')](_0x29be62[_0xf32e('0x35')]['offset']);}_0x3e6e6f[_0xf32e('0x3c')]=qs[_0xf32e('0x3d')](_0x29be62[_0xf32e('0x35')][_0xf32e('0x3d')]);_0x3e6e6f['where']=qs[_0xf32e('0x3e')](_[_0xf32e('0x3f')](_0x29be62[_0xf32e('0x35')],_0x88eaa5[_0xf32e('0x3e')]),_0x4a873c);if(_0x29be62[_0xf32e('0x35')]['filter']){_0x3e6e6f[_0xf32e('0x40')]=_[_0xf32e('0x41')](_0x3e6e6f[_0xf32e('0x40')],{'$or':_['map'](_0x4a873c,function(_0x1723e8){if(_0x1723e8['type']!==_0xf32e('0x42')){var _0x113b11={};_0x113b11[_0x1723e8[_0xf32e('0x2c')]]={'$like':'%'+_0x29be62['query'][_0xf32e('0x43')]+'%'};return _0x113b11;}})});}_0x3e6e6f=_[_0xf32e('0x41')]({},_0x3e6e6f,_0x29be62[_0xf32e('0x44')]);var _0x4a623={'where':_0x3e6e6f[_0xf32e('0x40')]};return db[_0xf32e('0x45')]['count'](_0x4a623)[_0xf32e('0x28')](function(_0x26ef18){_0x3b906c[_0xf32e('0x1d')]=_0x26ef18;if(_0x29be62[_0xf32e('0x35')][_0xf32e('0x46')]){_0x3e6e6f[_0xf32e('0x47')]=[{'all':!![]}];}return db[_0xf32e('0x45')]['findAll'](_0x3e6e6f);})[_0xf32e('0x28')](function(_0x160a30){_0x3b906c[_0xf32e('0x48')]=_0x160a30;return _0x3b906c;})[_0xf32e('0x28')](respondWithFilteredResult(_0x488489,_0x3e6e6f))[_0xf32e('0x49')](handleError(_0x488489,null));};exports[_0xf32e('0x4a')]=function(_0xb9d562,_0x546b80){var _0x1b38d7={'raw':!![],'where':{'id':_0xb9d562[_0xf32e('0x4b')]['id']}},_0x43882c={};_0x43882c[_0xf32e('0x34')]=_[_0xf32e('0x36')](db[_0xf32e('0x45')][_0xf32e('0x30')]);_0x43882c[_0xf32e('0x35')]=_[_0xf32e('0x36')](_0xb9d562[_0xf32e('0x35')]);_0x43882c['filters']=_[_0xf32e('0x37')](_0x43882c[_0xf32e('0x34')],_0x43882c[_0xf32e('0x35')]);_0x1b38d7[_0xf32e('0x38')]=_[_0xf32e('0x37')](_0x43882c[_0xf32e('0x34')],qs['fields'](_0xb9d562[_0xf32e('0x35')][_0xf32e('0x39')]));_0x1b38d7[_0xf32e('0x38')]=_0x1b38d7[_0xf32e('0x38')][_0xf32e('0x3a')]?_0x1b38d7['attributes']:_0x43882c[_0xf32e('0x34')];if(_0xb9d562['query'][_0xf32e('0x46')]){_0x1b38d7[_0xf32e('0x47')]=[{'all':!![]}];}_0x1b38d7=_['merge']({},_0x1b38d7,_0xb9d562[_0xf32e('0x44')]);return db['CmHopperFinal']['find'](_0x1b38d7)['then'](handleEntityNotFound(_0x546b80,null))[_0xf32e('0x28')](respondWithResult(_0x546b80,null))[_0xf32e('0x49')](handleError(_0x546b80,null));};exports[_0xf32e('0x4c')]=function(_0x6d2b3b,_0x36b74d){return db[_0xf32e('0x45')][_0xf32e('0x4c')]()[_0xf32e('0x28')](respondWithResult(_0x36b74d,null))[_0xf32e('0x49')](handleError(_0x36b74d,null));};exports[_0xf32e('0x26')]=function(_0x40f168,_0x1e81c4){if(_0x40f168[_0xf32e('0x4d')][_0xf32e('0x4e')]){delete _0x40f168['body'][_0xf32e('0x4e')];}return db[_0xf32e('0x45')][_0xf32e('0x4f')]({'where':{'uniqueid':_0x40f168['params']['id']}})['then'](handleEntityNotFound(_0x1e81c4,null))['then'](saveUpdates(_0x40f168[_0xf32e('0x4d')],null))[_0xf32e('0x28')](respondWithResult(_0x1e81c4,null))['catch'](handleError(_0x1e81c4,null));};exports[_0xf32e('0x50')]=function(_0x16a69b,_0x50d492,_0x5b1841){return db[_0xf32e('0x45')][_0xf32e('0x51')]({'raw':![],'where':{'VoiceQueueId':_0x16a69b[_0xf32e('0x4b')]['id']},'attributes':[[db[_0xf32e('0x52')]['fn'](_0xf32e('0x53'),db['sequelize']['fn']('IF',db[_0xf32e('0x52')][_0xf32e('0x54')](_0xf32e('0x55')))),'noSuchContacts'],[db[_0xf32e('0x52')]['fn'](_0xf32e('0x53'),db[_0xf32e('0x52')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x203,\x201,\x20null'))),_0xf32e('0x56')],[db[_0xf32e('0x52')]['fn'](_0xf32e('0x53'),db[_0xf32e('0x52')]['fn']('IF',db['sequelize'][_0xf32e('0x54')](_0xf32e('0x57')))),_0xf32e('0x58')],[db[_0xf32e('0x52')]['fn'](_0xf32e('0x53'),db['sequelize']['fn']('IF',db[_0xf32e('0x52')][_0xf32e('0x54')](_0xf32e('0x59')))),_0xf32e('0x5a')],[db['sequelize']['fn'](_0xf32e('0x53'),db['sequelize']['fn']('IF',db['sequelize'][_0xf32e('0x54')](_0xf32e('0x5b')))),_0xf32e('0x5c')],[db[_0xf32e('0x52')]['fn'](_0xf32e('0x53'),db[_0xf32e('0x52')]['fn']('IF',db[_0xf32e('0x52')][_0xf32e('0x54')](_0xf32e('0x5d')))),_0xf32e('0x5e')],[db[_0xf32e('0x52')]['fn'](_0xf32e('0x53'),db['sequelize']['fn']('IF',db[_0xf32e('0x52')]['literal'](_0xf32e('0x5f')))),'reCallContacts'],[db[_0xf32e('0x52')]['fn'](_0xf32e('0x53'),db[_0xf32e('0x52')]['fn']('IF',db['sequelize'][_0xf32e('0x54')](_0xf32e('0x60')))),'answeringMachine']]})['then'](handleEntityNotFound(_0x50d492,null))['then'](respondWithResult(_0x50d492,null))[_0xf32e('0x49')](handleError(_0x50d492,null));};exports[_0xf32e('0x61')]=function(_0x3bfacd,_0x2c66d4,_0xef37e5){return db[_0xf32e('0x45')]['findAll']({'raw':![],'where':{'CampaignId':_0x3bfacd[_0xf32e('0x4b')]['id']},'attributes':[[db['sequelize']['fn'](_0xf32e('0x53'),db[_0xf32e('0x52')]['fn']('IF',db[_0xf32e('0x52')][_0xf32e('0x54')]('`state`\x20=\x200,\x201,\x20null'))),_0xf32e('0x62')],[db[_0xf32e('0x52')]['fn']('COUNT',db[_0xf32e('0x52')]['fn']('IF',db['sequelize'][_0xf32e('0x54')](_0xf32e('0x63')))),_0xf32e('0x56')],[db[_0xf32e('0x52')]['fn'](_0xf32e('0x53'),db['sequelize']['fn']('IF',db[_0xf32e('0x52')][_0xf32e('0x54')](_0xf32e('0x57')))),_0xf32e('0x58')],[db['sequelize']['fn'](_0xf32e('0x53'),db[_0xf32e('0x52')]['fn']('IF',db[_0xf32e('0x52')]['literal'](_0xf32e('0x59')))),'congestionContacts'],[db[_0xf32e('0x52')]['fn'](_0xf32e('0x53'),db[_0xf32e('0x52')]['fn']('IF',db[_0xf32e('0x52')][_0xf32e('0x54')](_0xf32e('0x5b')))),_0xf32e('0x5c')],[db[_0xf32e('0x52')]['fn'](_0xf32e('0x53'),db[_0xf32e('0x52')]['fn']('IF',db[_0xf32e('0x52')]['literal'](_0xf32e('0x5d')))),_0xf32e('0x5e')],[db[_0xf32e('0x52')]['fn'](_0xf32e('0x53'),db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2022,\x201,\x20null'))),_0xf32e('0x64')],[db[_0xf32e('0x52')]['fn'](_0xf32e('0x53'),db[_0xf32e('0x52')]['fn']('IF',db[_0xf32e('0x52')][_0xf32e('0x54')]('`state`\x20=\x2019,\x201,\x20null'))),_0xf32e('0x65')]]})[_0xf32e('0x28')](handleEntityNotFound(_0x2c66d4,null))[_0xf32e('0x28')](respondWithResult(_0x2c66d4,null))['catch'](handleError(_0x2c66d4,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x4998d5,_0x5f5173,_0x40fdfc){return db[_0xf32e('0x66')][_0xf32e('0x4f')]({'where':{'id':_0x4998d5[_0xf32e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5f5173,null))[_0xf32e('0x28')](function(_0x24ca20){var _0x30fbbd;if(_0x24ca20){_0x30fbbd=squel[_0xf32e('0x67')]()['into'](_0xf32e('0x68'))[_0xf32e('0x69')]([_0xf32e('0x6a'),_0xf32e('0x6b'),_0xf32e('0x6c'),_0xf32e('0x6d'),_0xf32e('0x6e'),'createdAt','updatedAt'],squel[_0xf32e('0x6f')]()[_0xf32e('0x70')](_0xf32e('0x71'),_0xf32e('0x6a'))[_0xf32e('0x70')](_0xf32e('0x72'),_0xf32e('0x6b'))['field'](_0xf32e('0x73'),_0xf32e('0x6c'))[_0xf32e('0x70')](_0xf32e('0x74'),'ListId')[_0xf32e('0x70')](_0xf32e('0x75'),_0xf32e('0x6e'))[_0xf32e('0x70')]('NOW()',_0xf32e('0x76'))[_0xf32e('0x70')](_0xf32e('0x72'),_0xf32e('0x77'))[_0xf32e('0x78')](_0xf32e('0x79'))[_0xf32e('0x40')]('VoiceQueueId\x20=\x20?',_0x4998d5[_0xf32e('0x4b')]['id'][_0xf32e('0x7a')]())[_0xf32e('0x40')](_0xf32e('0x7b'),_0x4998d5['body'][_0xf32e('0x7c')]['toString']())[_0xf32e('0x40')](_0xf32e('0x7d'))[_0xf32e('0x40')](_0xf32e('0x7e'),squel[_0xf32e('0x6f')]()[_0xf32e('0x70')](_0xf32e('0x6a'))['from'](_0xf32e('0x68'))['where'](_0xf32e('0x7f'),_0x4998d5[_0xf32e('0x4b')]['id'][_0xf32e('0x7a')]()))[_0xf32e('0x40')](_0xf32e('0x7e'),squel[_0xf32e('0x6f')]()[_0xf32e('0x70')](_0xf32e('0x80'))[_0xf32e('0x78')]('cm_hopper_final')['where']('VoiceQueueId\x20=\x20?',_0x4998d5['params']['id'][_0xf32e('0x7a')]())[_0xf32e('0x40')](_0xf32e('0x81')))['group'](_0xf32e('0x6c')))[_0xf32e('0x7a')]();return db[_0xf32e('0x52')][_0xf32e('0x35')](_0x30fbbd);}return[];})[_0xf32e('0x28')](respondWithResult(_0x5f5173,null))['catch'](handleError(_0x5f5173,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x36acab,_0xee8286,_0x21455d){return db[_0xf32e('0x82')]['find']({'where':{'id':_0x36acab[_0xf32e('0x4b')]['id']}})['then'](handleEntityNotFound(_0xee8286,null))[_0xf32e('0x28')](function(_0x5eb773){var _0x38f77c;if(_0x5eb773){_0x38f77c=squel[_0xf32e('0x67')]()[_0xf32e('0x83')](_0xf32e('0x68'))[_0xf32e('0x69')]([_0xf32e('0x6a'),_0xf32e('0x6b'),'ContactId',_0xf32e('0x6d'),_0xf32e('0x84'),'createdAt',_0xf32e('0x77')],squel[_0xf32e('0x6f')]()[_0xf32e('0x70')](_0xf32e('0x71'),'phone')['field'](_0xf32e('0x72'),_0xf32e('0x6b'))[_0xf32e('0x70')](_0xf32e('0x73'),_0xf32e('0x6c'))[_0xf32e('0x70')](_0xf32e('0x74'),'ListId')[_0xf32e('0x70')](_0xf32e('0x85'),_0xf32e('0x84'))['field'](_0xf32e('0x72'),'createdAt')['field'](_0xf32e('0x72'),_0xf32e('0x77'))[_0xf32e('0x78')](_0xf32e('0x79'))[_0xf32e('0x40')](_0xf32e('0x86'),_0x36acab[_0xf32e('0x4b')]['id'][_0xf32e('0x7a')]())[_0xf32e('0x40')](_0xf32e('0x7b'),_0x36acab[_0xf32e('0x4d')][_0xf32e('0x7c')]['toString']())[_0xf32e('0x40')](_0xf32e('0x7d'))[_0xf32e('0x40')](_0xf32e('0x7e'),squel[_0xf32e('0x6f')]()[_0xf32e('0x70')](_0xf32e('0x6a'))[_0xf32e('0x78')]('cm_hopper')[_0xf32e('0x40')](_0xf32e('0x86'),_0x36acab[_0xf32e('0x4b')]['id'][_0xf32e('0x7a')]()))['where'](_0xf32e('0x7e'),squel[_0xf32e('0x6f')]()[_0xf32e('0x70')](_0xf32e('0x80'))['from']('cm_hopper_final')[_0xf32e('0x40')](_0xf32e('0x86'),_0x36acab[_0xf32e('0x4b')]['id'][_0xf32e('0x7a')]())['where']('state\x20=\x204'))[_0xf32e('0x87')]('ContactId'))[_0xf32e('0x7a')]();return db['sequelize']['query'](_0x38f77c);}return[];})[_0xf32e('0x28')](respondWithResult(_0xee8286,null))['catch'](handleError(_0xee8286,null));};exports['checkContactHopper']=function(_0x35b8f9,_0x52ad4e,_0x13e051){return db['CmHopper'][_0xf32e('0x88')]({'where':{'VoiceQueueId':_0x35b8f9['body'][_0xf32e('0x6e')],'CampaignId':_0x35b8f9[_0xf32e('0x4d')][_0xf32e('0x84')],'ContactId':_0x35b8f9[_0xf32e('0x4d')][_0xf32e('0x6c')]}})[_0xf32e('0x28')](handleEntityNotFound(_0x52ad4e,null))[_0xf32e('0x28')](function(_0x4e60e4){if(_0x4e60e4){return _0x4e60e4;}return null;})[_0xf32e('0x28')](respondWithResult(_0x52ad4e,null))[_0xf32e('0x49')](handleError(_0x52ad4e,null));};
\ No newline at end of file
+var _0x7c09=['sox','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','map','CmHopperFinal','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','merge','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','noSuchContacts','noAnswerContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','select','field','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','createdAt','updatedAt','from','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','group','moveContactsIvrCampaignHopperFinal','Campaign','insert','CampaignId','ANY_VALUE(calleridnum)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','state\x20=\x204','checkContactHopper','CmHopper','findOne','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path'];(function(_0x3746d2,_0x36305a){var _0x2e7275=function(_0x481623){while(--_0x481623){_0x3746d2['push'](_0x3746d2['shift']());}};_0x2e7275(++_0x36305a);}(_0x7c09,0x102));var _0x97c0=function(_0x344d59,_0x161cf6){_0x344d59=_0x344d59-0x0;var _0x55dea6=_0x7c09[_0x344d59];return _0x55dea6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x97c0('0x0'));var zipdir=require(_0x97c0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x97c0('0x2'));var moment=require(_0x97c0('0x3'));var BPromise=require(_0x97c0('0x4'));var Mustache=require(_0x97c0('0x5'));var util=require(_0x97c0('0x6'));var path=require(_0x97c0('0x7'));var sox=require(_0x97c0('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x97c0('0x9'));var squel=require(_0x97c0('0xa'));var crypto=require(_0x97c0('0xb'));var jsforce=require(_0x97c0('0xc'));var deskjs=require(_0x97c0('0xd'));var toCsv=require('to-csv');var querystring=require(_0x97c0('0xe'));var Papa=require('papaparse');var Redis=require(_0x97c0('0xf'));var authService=require(_0x97c0('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x97c0('0x11'));var logger=require(_0x97c0('0x12'))(_0x97c0('0x13'));var utils=require(_0x97c0('0x14'));var config=require(_0x97c0('0x15'));var licenseUtil=require(_0x97c0('0x16'));var db=require(_0x97c0('0x17'))['db'];function respondWithStatusCode(_0x39a3b4,_0x9ca3c1){_0x9ca3c1=_0x9ca3c1||0xcc;return function(_0x2ecf34){if(_0x2ecf34){return _0x39a3b4[_0x97c0('0x18')](_0x9ca3c1);}return _0x39a3b4[_0x97c0('0x19')](_0x9ca3c1)[_0x97c0('0x1a')]();};}function respondWithResult(_0x514782,_0x3f2fc2){_0x3f2fc2=_0x3f2fc2||0xc8;return function(_0x15b336){if(_0x15b336){return _0x514782[_0x97c0('0x19')](_0x3f2fc2)['json'](_0x15b336);}};}function respondWithFilteredResult(_0x42027d,_0x9ca6a8){return function(_0x379951){if(_0x379951){var _0x21e5f7=typeof _0x9ca6a8[_0x97c0('0x1b')]===_0x97c0('0x1c')&&typeof _0x9ca6a8['limit']===_0x97c0('0x1c');var _0x3ae7c4=_0x379951['count'];var _0x560ac0=_0x21e5f7?0x0:_0x9ca6a8[_0x97c0('0x1b')];var _0x179d43=_0x21e5f7?_0x379951[_0x97c0('0x1d')]:_0x9ca6a8[_0x97c0('0x1b')]+_0x9ca6a8[_0x97c0('0x1e')];var _0x4fed42;if(_0x179d43>=_0x3ae7c4){_0x179d43=_0x3ae7c4;_0x4fed42=0xc8;}else{_0x4fed42=0xce;}_0x42027d[_0x97c0('0x19')](_0x4fed42);return _0x42027d[_0x97c0('0x1f')](_0x97c0('0x20'),_0x560ac0+'-'+_0x179d43+'/'+_0x3ae7c4)['json'](_0x379951);}return null;};}function patchUpdates(_0x554122){return function(_0x2b74a2){try{jsonpatch[_0x97c0('0x21')](_0x2b74a2,_0x554122,!![]);}catch(_0x169f19){return BPromise['reject'](_0x169f19);}return _0x2b74a2[_0x97c0('0x22')]();};}function saveUpdates(_0x20bc4c,_0x31ffb7){return function(_0x272314){if(_0x272314){return _0x272314[_0x97c0('0x23')](_0x20bc4c)[_0x97c0('0x24')](function(_0x9dff60){return _0x9dff60;});}return null;};}function removeEntity(_0x5ac457,_0x60ab00){return function(_0x29b3aa){if(_0x29b3aa){return _0x29b3aa[_0x97c0('0x25')]()[_0x97c0('0x24')](function(){_0x5ac457['status'](0xcc)[_0x97c0('0x1a')]();});}};}function handleEntityNotFound(_0x14cada,_0x52a429){return function(_0x2ec9d6){if(!_0x2ec9d6){_0x14cada[_0x97c0('0x18')](0x194);}return _0x2ec9d6;};}function handleError(_0x447316,_0x4af5a5){_0x4af5a5=_0x4af5a5||0x1f4;return function(_0x4f11ba){logger['error'](_0x4f11ba[_0x97c0('0x26')]);if(_0x4f11ba[_0x97c0('0x27')]){delete _0x4f11ba[_0x97c0('0x27')];}_0x447316[_0x97c0('0x19')](_0x4af5a5)[_0x97c0('0x28')](_0x4f11ba);};}exports[_0x97c0('0x29')]=function(_0x4a3645,_0x10e47e){var _0x1c183f={},_0x325090={},_0x4ad645={'count':0x0,'rows':[]};var _0x14617c=_[_0x97c0('0x2a')](db[_0x97c0('0x2b')][_0x97c0('0x2c')],function(_0x2a7b2b){return{'name':_0x2a7b2b['fieldName'],'type':_0x2a7b2b['type'][_0x97c0('0x2d')]};});_0x325090[_0x97c0('0x2e')]=_[_0x97c0('0x2a')](_0x14617c,'name');_0x325090[_0x97c0('0x2f')]=_[_0x97c0('0x30')](_0x4a3645['query']);_0x325090[_0x97c0('0x31')]=_[_0x97c0('0x32')](_0x325090[_0x97c0('0x2e')],_0x325090[_0x97c0('0x2f')]);_0x1c183f[_0x97c0('0x33')]=_[_0x97c0('0x32')](_0x325090[_0x97c0('0x2e')],qs[_0x97c0('0x34')](_0x4a3645[_0x97c0('0x2f')][_0x97c0('0x34')]));_0x1c183f[_0x97c0('0x33')]=_0x1c183f[_0x97c0('0x33')][_0x97c0('0x35')]?_0x1c183f[_0x97c0('0x33')]:_0x325090[_0x97c0('0x2e')];if(!_0x4a3645['query'][_0x97c0('0x36')](_0x97c0('0x37'))){_0x1c183f[_0x97c0('0x1e')]=qs[_0x97c0('0x1e')](_0x4a3645[_0x97c0('0x2f')][_0x97c0('0x1e')]);_0x1c183f[_0x97c0('0x1b')]=qs[_0x97c0('0x1b')](_0x4a3645['query'][_0x97c0('0x1b')]);}_0x1c183f['order']=qs[_0x97c0('0x38')](_0x4a3645[_0x97c0('0x2f')][_0x97c0('0x38')]);_0x1c183f[_0x97c0('0x39')]=qs[_0x97c0('0x31')](_[_0x97c0('0x3a')](_0x4a3645[_0x97c0('0x2f')],_0x325090[_0x97c0('0x31')]),_0x14617c);if(_0x4a3645[_0x97c0('0x2f')][_0x97c0('0x3b')]){_0x1c183f[_0x97c0('0x39')]=_['merge'](_0x1c183f[_0x97c0('0x39')],{'$or':_[_0x97c0('0x2a')](_0x14617c,function(_0x4d47b1){if(_0x4d47b1[_0x97c0('0x3c')]!==_0x97c0('0x3d')){var _0x2aeffc={};_0x2aeffc[_0x4d47b1[_0x97c0('0x27')]]={'$like':'%'+_0x4a3645['query'][_0x97c0('0x3b')]+'%'};return _0x2aeffc;}})});}_0x1c183f=_['merge']({},_0x1c183f,_0x4a3645[_0x97c0('0x3e')]);var _0x64cfcd={'where':_0x1c183f['where']};return db[_0x97c0('0x2b')][_0x97c0('0x1d')](_0x64cfcd)[_0x97c0('0x24')](function(_0xb13649){_0x4ad645[_0x97c0('0x1d')]=_0xb13649;if(_0x4a3645[_0x97c0('0x2f')][_0x97c0('0x3f')]){_0x1c183f[_0x97c0('0x40')]=[{'all':!![]}];}return db[_0x97c0('0x2b')][_0x97c0('0x41')](_0x1c183f);})[_0x97c0('0x24')](function(_0x2cca4c){_0x4ad645[_0x97c0('0x42')]=_0x2cca4c;return _0x4ad645;})['then'](respondWithFilteredResult(_0x10e47e,_0x1c183f))[_0x97c0('0x43')](handleError(_0x10e47e,null));};exports[_0x97c0('0x44')]=function(_0x1dc6ff,_0x142421){var _0x312fce={'raw':!![],'where':{'id':_0x1dc6ff[_0x97c0('0x45')]['id']}},_0x375ebc={};_0x375ebc['model']=_['keys'](db[_0x97c0('0x2b')][_0x97c0('0x2c')]);_0x375ebc[_0x97c0('0x2f')]=_[_0x97c0('0x30')](_0x1dc6ff[_0x97c0('0x2f')]);_0x375ebc['filters']=_['intersection'](_0x375ebc['model'],_0x375ebc[_0x97c0('0x2f')]);_0x312fce['attributes']=_['intersection'](_0x375ebc[_0x97c0('0x2e')],qs[_0x97c0('0x34')](_0x1dc6ff[_0x97c0('0x2f')][_0x97c0('0x34')]));_0x312fce[_0x97c0('0x33')]=_0x312fce['attributes'][_0x97c0('0x35')]?_0x312fce[_0x97c0('0x33')]:_0x375ebc[_0x97c0('0x2e')];if(_0x1dc6ff[_0x97c0('0x2f')][_0x97c0('0x3f')]){_0x312fce[_0x97c0('0x40')]=[{'all':!![]}];}_0x312fce=_[_0x97c0('0x46')]({},_0x312fce,_0x1dc6ff[_0x97c0('0x3e')]);return db[_0x97c0('0x2b')][_0x97c0('0x47')](_0x312fce)['then'](handleEntityNotFound(_0x142421,null))[_0x97c0('0x24')](respondWithResult(_0x142421,null))[_0x97c0('0x43')](handleError(_0x142421,null));};exports[_0x97c0('0x48')]=function(_0x276c98,_0x4ff0a5){return db['CmHopperFinal'][_0x97c0('0x48')]()[_0x97c0('0x24')](respondWithResult(_0x4ff0a5,null))[_0x97c0('0x43')](handleError(_0x4ff0a5,null));};exports['update']=function(_0x3e09d5,_0xac56ac){if(_0x3e09d5[_0x97c0('0x49')][_0x97c0('0x4a')]){delete _0x3e09d5[_0x97c0('0x49')]['uniqueid'];}return db[_0x97c0('0x2b')][_0x97c0('0x47')]({'where':{'uniqueid':_0x3e09d5[_0x97c0('0x45')]['id']}})['then'](handleEntityNotFound(_0xac56ac,null))['then'](saveUpdates(_0x3e09d5[_0x97c0('0x49')],null))['then'](respondWithResult(_0xac56ac,null))['catch'](handleError(_0xac56ac,null));};exports[_0x97c0('0x4b')]=function(_0x20e2a5,_0x23c7ad,_0x53a255){return db['CmHopperFinal']['findAll']({'raw':![],'where':{'VoiceQueueId':_0x20e2a5[_0x97c0('0x45')]['id']},'attributes':[[db[_0x97c0('0x4c')]['fn'](_0x97c0('0x4d'),db[_0x97c0('0x4c')]['fn']('IF',db[_0x97c0('0x4c')][_0x97c0('0x4e')](_0x97c0('0x4f')))),'noSuchContacts'],[db[_0x97c0('0x4c')]['fn'](_0x97c0('0x4d'),db[_0x97c0('0x4c')]['fn']('IF',db[_0x97c0('0x4c')][_0x97c0('0x4e')](_0x97c0('0x50')))),'noAnswerContacts'],[db[_0x97c0('0x4c')]['fn'](_0x97c0('0x4d'),db['sequelize']['fn']('IF',db[_0x97c0('0x4c')][_0x97c0('0x4e')](_0x97c0('0x51')))),_0x97c0('0x52')],[db[_0x97c0('0x4c')]['fn'](_0x97c0('0x4d'),db[_0x97c0('0x4c')]['fn']('IF',db['sequelize'][_0x97c0('0x4e')](_0x97c0('0x53')))),_0x97c0('0x54')],[db[_0x97c0('0x4c')]['fn'](_0x97c0('0x4d'),db[_0x97c0('0x4c')]['fn']('IF',db[_0x97c0('0x4c')][_0x97c0('0x4e')](_0x97c0('0x55')))),_0x97c0('0x56')],[db[_0x97c0('0x4c')]['fn'](_0x97c0('0x4d'),db[_0x97c0('0x4c')]['fn']('IF',db['sequelize'][_0x97c0('0x4e')](_0x97c0('0x57')))),_0x97c0('0x58')],[db[_0x97c0('0x4c')]['fn'](_0x97c0('0x4d'),db[_0x97c0('0x4c')]['fn']('IF',db['sequelize'][_0x97c0('0x4e')](_0x97c0('0x59')))),'reCallContacts'],[db[_0x97c0('0x4c')]['fn'](_0x97c0('0x4d'),db[_0x97c0('0x4c')]['fn']('IF',db['sequelize'][_0x97c0('0x4e')]('`state`\x20=\x2019,\x201,\x20null'))),_0x97c0('0x5a')]]})[_0x97c0('0x24')](handleEntityNotFound(_0x23c7ad,null))[_0x97c0('0x24')](respondWithResult(_0x23c7ad,null))[_0x97c0('0x43')](handleError(_0x23c7ad,null));};exports[_0x97c0('0x5b')]=function(_0x2bb5d3,_0x52643e,_0x3349df){return db[_0x97c0('0x2b')][_0x97c0('0x41')]({'raw':![],'where':{'CampaignId':_0x2bb5d3[_0x97c0('0x45')]['id']},'attributes':[[db['sequelize']['fn'](_0x97c0('0x4d'),db[_0x97c0('0x4c')]['fn']('IF',db[_0x97c0('0x4c')][_0x97c0('0x4e')]('`state`\x20=\x200,\x201,\x20null'))),_0x97c0('0x5c')],[db[_0x97c0('0x4c')]['fn'](_0x97c0('0x4d'),db[_0x97c0('0x4c')]['fn']('IF',db['sequelize'][_0x97c0('0x4e')](_0x97c0('0x50')))),_0x97c0('0x5d')],[db['sequelize']['fn'](_0x97c0('0x4d'),db[_0x97c0('0x4c')]['fn']('IF',db[_0x97c0('0x4c')][_0x97c0('0x4e')](_0x97c0('0x51')))),_0x97c0('0x52')],[db[_0x97c0('0x4c')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x97c0('0x4c')][_0x97c0('0x4e')]('`state`\x20=\x208,\x201,\x20null'))),_0x97c0('0x54')],[db['sequelize']['fn']('COUNT',db[_0x97c0('0x4c')]['fn']('IF',db['sequelize'][_0x97c0('0x4e')](_0x97c0('0x55')))),'dropContacts'],[db['sequelize']['fn']('COUNT',db[_0x97c0('0x4c')]['fn']('IF',db['sequelize'][_0x97c0('0x4e')](_0x97c0('0x57')))),_0x97c0('0x58')],[db[_0x97c0('0x4c')]['fn'](_0x97c0('0x4d'),db[_0x97c0('0x4c')]['fn']('IF',db[_0x97c0('0x4c')][_0x97c0('0x4e')](_0x97c0('0x59')))),_0x97c0('0x5e')],[db[_0x97c0('0x4c')]['fn']('COUNT',db[_0x97c0('0x4c')]['fn']('IF',db[_0x97c0('0x4c')][_0x97c0('0x4e')](_0x97c0('0x5f')))),_0x97c0('0x5a')]]})['then'](handleEntityNotFound(_0x52643e,null))[_0x97c0('0x24')](respondWithResult(_0x52643e,null))[_0x97c0('0x43')](handleError(_0x52643e,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x4116c9,_0x30ffa8,_0x1cfe22){return db['VoiceQueue'][_0x97c0('0x47')]({'where':{'id':_0x4116c9[_0x97c0('0x45')]['id']}})[_0x97c0('0x24')](handleEntityNotFound(_0x30ffa8,null))[_0x97c0('0x24')](function(_0x4d40cd){var _0x4ee6a2;if(_0x4d40cd){_0x4ee6a2=squel['insert']()[_0x97c0('0x60')](_0x97c0('0x61'))[_0x97c0('0x62')]([_0x97c0('0x63'),_0x97c0('0x64'),_0x97c0('0x65'),_0x97c0('0x66'),_0x97c0('0x67'),'createdAt','updatedAt'],squel[_0x97c0('0x68')]()['field']('ANY_VALUE(calleridnum)','phone')[_0x97c0('0x69')](_0x97c0('0x6a'),_0x97c0('0x64'))[_0x97c0('0x69')](_0x97c0('0x6b'),'ContactId')['field'](_0x97c0('0x6c'),_0x97c0('0x66'))[_0x97c0('0x69')](_0x97c0('0x6d'),'VoiceQueueId')[_0x97c0('0x69')]('NOW()',_0x97c0('0x6e'))[_0x97c0('0x69')](_0x97c0('0x6a'),_0x97c0('0x6f'))[_0x97c0('0x70')](_0x97c0('0x71'))[_0x97c0('0x39')](_0x97c0('0x72'),_0x4116c9[_0x97c0('0x45')]['id'][_0x97c0('0x73')]())['where'](_0x97c0('0x74'),_0x4116c9['body']['state'][_0x97c0('0x73')]())[_0x97c0('0x39')]('calleridnum\x20IS\x20NOT\x20NULL')[_0x97c0('0x39')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x97c0('0x68')]()[_0x97c0('0x69')]('phone')[_0x97c0('0x70')]('cm_hopper')['where']('VoiceQueueId\x20=\x20?',_0x4116c9[_0x97c0('0x45')]['id'][_0x97c0('0x73')]()))['where'](_0x97c0('0x75'),squel[_0x97c0('0x68')]()[_0x97c0('0x69')](_0x97c0('0x76'))[_0x97c0('0x70')](_0x97c0('0x71'))[_0x97c0('0x39')](_0x97c0('0x72'),_0x4116c9['params']['id'][_0x97c0('0x73')]())['where']('state\x20=\x204'))[_0x97c0('0x77')]('ContactId'))[_0x97c0('0x73')]();return db[_0x97c0('0x4c')]['query'](_0x4ee6a2);}return[];})[_0x97c0('0x24')](respondWithResult(_0x30ffa8,null))[_0x97c0('0x43')](handleError(_0x30ffa8,null));};exports[_0x97c0('0x78')]=function(_0x5bb9de,_0x388ba1,_0x550a68){return db[_0x97c0('0x79')][_0x97c0('0x47')]({'where':{'id':_0x5bb9de[_0x97c0('0x45')]['id']}})['then'](handleEntityNotFound(_0x388ba1,null))[_0x97c0('0x24')](function(_0x44f6bc){var _0x37cdb3;if(_0x44f6bc){_0x37cdb3=squel[_0x97c0('0x7a')]()['into'](_0x97c0('0x61'))[_0x97c0('0x62')]([_0x97c0('0x63'),_0x97c0('0x64'),_0x97c0('0x65'),'ListId',_0x97c0('0x7b'),_0x97c0('0x6e'),'updatedAt'],squel['select']()[_0x97c0('0x69')](_0x97c0('0x7c'),_0x97c0('0x63'))['field']('NOW()',_0x97c0('0x64'))['field'](_0x97c0('0x6b'),_0x97c0('0x65'))[_0x97c0('0x69')](_0x97c0('0x6c'),_0x97c0('0x66'))[_0x97c0('0x69')](_0x97c0('0x7d'),'CampaignId')[_0x97c0('0x69')](_0x97c0('0x6a'),_0x97c0('0x6e'))[_0x97c0('0x69')](_0x97c0('0x6a'),_0x97c0('0x6f'))[_0x97c0('0x70')](_0x97c0('0x71'))[_0x97c0('0x39')](_0x97c0('0x7e'),_0x5bb9de[_0x97c0('0x45')]['id'][_0x97c0('0x73')]())[_0x97c0('0x39')](_0x97c0('0x74'),_0x5bb9de['body'][_0x97c0('0x7f')][_0x97c0('0x73')]())[_0x97c0('0x39')](_0x97c0('0x80'))['where'](_0x97c0('0x75'),squel[_0x97c0('0x68')]()[_0x97c0('0x69')](_0x97c0('0x63'))[_0x97c0('0x70')](_0x97c0('0x61'))[_0x97c0('0x39')]('CampaignId\x20=\x20?',_0x5bb9de[_0x97c0('0x45')]['id']['toString']()))[_0x97c0('0x39')](_0x97c0('0x75'),squel[_0x97c0('0x68')]()['field'](_0x97c0('0x76'))[_0x97c0('0x70')](_0x97c0('0x71'))[_0x97c0('0x39')](_0x97c0('0x7e'),_0x5bb9de['params']['id'][_0x97c0('0x73')]())['where'](_0x97c0('0x81')))[_0x97c0('0x77')]('ContactId'))[_0x97c0('0x73')]();return db[_0x97c0('0x4c')][_0x97c0('0x2f')](_0x37cdb3);}return[];})[_0x97c0('0x24')](respondWithResult(_0x388ba1,null))[_0x97c0('0x43')](handleError(_0x388ba1,null));};exports[_0x97c0('0x82')]=function(_0x3ebd11,_0x44b374,_0x493e62){return db[_0x97c0('0x83')][_0x97c0('0x84')]({'where':{'VoiceQueueId':_0x3ebd11[_0x97c0('0x49')]['VoiceQueueId'],'CampaignId':_0x3ebd11['body'][_0x97c0('0x7b')],'ContactId':_0x3ebd11[_0x97c0('0x49')][_0x97c0('0x65')]}})[_0x97c0('0x24')](handleEntityNotFound(_0x44b374,null))[_0x97c0('0x24')](function(_0x120d78){if(_0x120d78){return _0x120d78;}return null;})[_0x97c0('0x24')](respondWithResult(_0x44b374,null))[_0x97c0('0x43')](handleError(_0x44b374,null));};
\ No newline at end of file