Built motion from commit 85328c08.|2.5.50
[motion2.git] / server / services / routing / server / index.js
index 2c03d91..1316e00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c2d=['split','push','dialogflow','slice','dialogflowv2','amazonlex','tag','TagId','./interval','condition','intervals','consequence','priority','info','\x20|\x20','error','rules','execute','Applications\x20executed','matchPath','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','end','QueueReport','update','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','agent','agents','busy','busyQueue','hasOwnProperty','capacity','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','waiting','mailQueues','paused','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','http','stringify','127.0.0.1','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','bluebird','uuid','../../../config/environment','../../../config/logger','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/faxQueueReport','format','%s.%s.%s','IntervalId','isNil','Intervals','map','interval','listen','channel','message','interaction','isArray','applications','length','existsSync','join','app','.js','toLowerCase','autoreply','appdata'];(function(_0x11fc41,_0x2ae351){var _0x1edc14=function(_0x3e5443){while(--_0x3e5443){_0x11fc41['push'](_0x11fc41['shift']());}};_0x1edc14(++_0x2ae351);}(_0x4c2d,0x14d));var _0xd4c2=function(_0x2a2196,_0x257313){_0x2a2196=_0x2a2196-0x0;var _0xeb5a80=_0x4c2d[_0x2a2196];return _0xeb5a80;};'use strict';var _=require(_0xd4c2('0x0'));var util=require(_0xd4c2('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0xd4c2('0x2'));var BPromise=require(_0xd4c2('0x3'));var uuid=require(_0xd4c2('0x4'));var config=require(_0xd4c2('0x5'));var logger=require(_0xd4c2('0x6'))('routing');var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xd4c2('0x7')),'chatQueueReport':require(_0xd4c2('0x8')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0xd4c2('0x9')),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require('../lib/rule-engine');function getId(_0x2e1f09,_0x4111ae,_0x55880d){return util[_0xd4c2('0xa')](_0xd4c2('0xb'),_0x2e1f09,_0x4111ae||0x0,_0x55880d||0x0);}function getIntervals(_0x5b1805,_0x2e34b7){var _0x4899b2=[];if(!_['isNil'](_0x2e34b7[_0xd4c2('0xc')])&&!_['isNil'](_0x5b1805[_0x2e34b7[_0xd4c2('0xc')]])&&!_[_0xd4c2('0xd')](_0x5b1805[_0x2e34b7[_0xd4c2('0xc')]][_0xd4c2('0xe')])){_0x4899b2=_[_0xd4c2('0xf')](_0x5b1805[_0x2e34b7[_0xd4c2('0xc')]][_0xd4c2('0xe')],'interval');}else if(!_[_0xd4c2('0xd')](_0x2e34b7['interval'])){_0x4899b2=[_0x2e34b7[_0xd4c2('0x10')]];}return _0x4899b2;}exports[_0xd4c2('0x11')]=function(_0x43b616){_0x43b616['rules']={};return new BPromise(function(_0x36df4e,_0x38ea7d){var _0x2bad75={'Start':function(_0x43d365){var _0x213feb=this;return new Promise(function(_0x417757,_0x204e85){if(_0x43d365){try{var _0x4e1d03=[];var _0x5c1e42=getId(_0x43d365[_0xd4c2('0x12')],_0x43d365[_0xd4c2('0x13')]?_0x43d365[_0xd4c2('0x13')]['id']:0x0,_0x43d365['interaction']?_0x43d365[_0xd4c2('0x14')]['id']:0x0);if(_0x43d365['applications']&&_[_0xd4c2('0x15')](_0x43d365[_0xd4c2('0x16')])&&_0x43d365[_0xd4c2('0x16')][_0xd4c2('0x17')]){for(var _0x134dda=0x0;_0x134dda<_0x43d365[_0xd4c2('0x16')][_0xd4c2('0x17')];_0x134dda+=0x1){var _0x1993b5=_0x43d365[_0xd4c2('0x16')][_0x134dda];if(fs[_0xd4c2('0x18')](path[_0xd4c2('0x19')](__dirname,_0xd4c2('0x16'),_0x1993b5[_0xd4c2('0x1a')]+_0xd4c2('0x1b')))){var _0x4f3e8c=[];switch(_0x1993b5[_0xd4c2('0x1a')][_0xd4c2('0x1c')]()){case _0xd4c2('0x1d'):var _0x261d8a=_0x1993b5[_0xd4c2('0x1e')][_0xd4c2('0x1f')](',');_0x4f3e8c['push'](_0x261d8a[0x0]);_0x4f3e8c[_0xd4c2('0x20')](_0x261d8a['slice'](0x1,_0x261d8a['length'])[_0xd4c2('0x19')](','));break;case _0xd4c2('0x21'):var _0x558e57=_0x1993b5[_0xd4c2('0x1e')][_0xd4c2('0x1f')](',');_0x4f3e8c['push'](_0x558e57[0x0]);_0x4f3e8c['push'](_0x558e57[0x1]);_0x4f3e8c[_0xd4c2('0x20')](_0x558e57[_0xd4c2('0x22')](0x2,_0x558e57[_0xd4c2('0x17')])[_0xd4c2('0x19')](','));break;case _0xd4c2('0x23'):var _0x5d6a2e=_0x1993b5[_0xd4c2('0x1e')][_0xd4c2('0x1f')](',');_0x4f3e8c[_0xd4c2('0x20')](_0x5d6a2e[0x0]);_0x4f3e8c['push'](_0x5d6a2e[0x1]);_0x4f3e8c[_0xd4c2('0x20')](_0x5d6a2e[0x2]);_0x4f3e8c[_0xd4c2('0x20')](_0x5d6a2e[0x3]);_0x4f3e8c[_0xd4c2('0x20')](_0x5d6a2e[_0xd4c2('0x22')](0x4,_0x5d6a2e[_0xd4c2('0x17')])['join'](','));break;case _0xd4c2('0x24'):var _0x484203=_0x1993b5[_0xd4c2('0x1e')][_0xd4c2('0x1f')](',');_0x4f3e8c[_0xd4c2('0x20')](_0x484203[0x0]);_0x4f3e8c[_0xd4c2('0x20')](_0x484203[0x1]);_0x4f3e8c[_0xd4c2('0x20')](_0x484203[0x2]);_0x4f3e8c[_0xd4c2('0x20')](_0x484203[0x3]);_0x4f3e8c[_0xd4c2('0x20')](_0x484203[_0xd4c2('0x22')](0x4,_0x484203[_0xd4c2('0x17')])[_0xd4c2('0x19')](','));break;case'message':_0x4f3e8c['push'](_0x1993b5[_0xd4c2('0x1e')]);break;case _0xd4c2('0x25'):_0x4f3e8c[_0xd4c2('0x20')](_0x1993b5[_0xd4c2('0x26')]);_0x4f3e8c[_0xd4c2('0x20')](_0x1993b5[_0xd4c2('0x1e')]);break;default:_0x4f3e8c=_['isNil'](_0x1993b5['appdata'])?[]:_0x1993b5[_0xd4c2('0x1e')]['split'](',');}var _0x44b6db={'id':util['format']('%s:%s:%s',_0x5c1e42,_0x1993b5['id'],_0x1993b5[_0xd4c2('0x1a')]),'condition':require(_0xd4c2('0x27'))[_0xd4c2('0x28')](_0x5c1e42,getIntervals(_0x43b616[_0xd4c2('0x29')],_0x1993b5),_0x43b616),'consequence':require('./applications/'+_0x1993b5[_0xd4c2('0x1a')])[_0xd4c2('0x2a')](_0x5c1e42,_0x4f3e8c,_0x43b616,_0x43d365),'p':_0x1993b5[_0xd4c2('0x2b')]||0x0};logger[_0xd4c2('0x2c')]('Push\x20new\x20rule',_0x44b6db['id'],'on\x20interval',getIntervals(_0x43b616['intervals'],_0x1993b5)[_0xd4c2('0x19')](_0xd4c2('0x2d')));_0x4e1d03[_0xd4c2('0x20')](_0x44b6db);}else{logger[_0xd4c2('0x2e')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0xd4c2('0x19')](__dirname,_0xd4c2('0x16'),_0x1993b5['app']+_0xd4c2('0x1b')));}}_0x43b616[_0xd4c2('0x2f')][_0x5c1e42]=new RuleEngine(_0x4e1d03);_0x43b616[_0xd4c2('0x2f')][_0x5c1e42][_0xd4c2('0x30')](_0x43d365,function(_0x60e7a2){logger[_0xd4c2('0x2c')](_0xd4c2('0x31'),JSON['stringify'](_0x60e7a2[_0xd4c2('0x32')]));if(_0x43b616[_0xd4c2('0x2f')][_0x5c1e42]){_0x43b616[_0xd4c2('0x2f')][_0x5c1e42][_0xd4c2('0x33')](_0xd4c2('0x34'));}});return _0x417757({'code':0xc8,'message':_0x43d365});}else{logger[_0xd4c2('0x2c')](_0xd4c2('0x35'));return _0x417757({'code':0xc8,'message':_0x43d365});}}catch(_0x4ae298){logger['error'](_0x4ae298[_0xd4c2('0x36')]);return _0x204e85(_0x213feb['error'](0x1f4,_0x4ae298));}}return _0x204e85(_0xd4c2('0x37'));});},'AcceptMessage':function(_0x204118){var _0x25a20a=this;return new Promise(function(_0x40c2c8,_0x1d0c2a){if(_0x204118[_0xd4c2('0x13')]&&_0x204118[_0xd4c2('0x13')]['id']){try{var _0x25004e=getId(_0x204118[_0xd4c2('0x12')],_0x204118[_0xd4c2('0x13')]?_0x204118[_0xd4c2('0x13')]['id']:0x0,_0x204118[_0xd4c2('0x14')]?_0x204118[_0xd4c2('0x14')]['id']:0x0);if(_0x43b616[_0xd4c2('0x2f')][_0x25004e]){_0x43b616[_0xd4c2('0x2f')][_0x25004e][_0xd4c2('0x33')](_0xd4c2('0x38'));if(rpc[_0x204118[_0xd4c2('0x12')]+_0xd4c2('0x39')]){rpc[_0x204118[_0xd4c2('0x12')]+_0xd4c2('0x39')][_0xd4c2('0x3a')](_0x25004e,{'UserId':_0x204118[_0xd4c2('0x13')]['UserId']})[_0xd4c2('0x3b')](function(_0x5a21eb){logger[_0xd4c2('0x2e')](_0xd4c2('0x3c'));});}}return _0x40c2c8({'code':0xc8,'message':_0x204118});}catch(_0x3bde7a){logger['error'](_0x3bde7a[_0xd4c2('0x36')]);return _0x1d0c2a(_0x25a20a[_0xd4c2('0x2e')](0x1f4,_0x3bde7a));}}logger['error'](_0xd4c2('0x3d'));return _0x1d0c2a(_0x25a20a[_0xd4c2('0x2e')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x36ffcb){var _0x3507c5=this;return new Promise(function(_0x5a541d,_0x4d5acb){if(_0x36ffcb[_0xd4c2('0x3e')]&&_0x36ffcb[_0xd4c2('0x3e')]['id']){try{if(_0x43b616['agents'][_0x36ffcb[_0xd4c2('0x3e')]['id']]){_0x43b616[_0xd4c2('0x3f')][_0x36ffcb[_0xd4c2('0x3e')]['id']][_0xd4c2('0x40')]=![];_0x43b616[_0xd4c2('0x3f')][_0x36ffcb[_0xd4c2('0x3e')]['id']][_0xd4c2('0x41')]=undefined;}return _0x5a541d({'code':0xc8,'message':_0x36ffcb});}catch(_0x16abcb){logger[_0xd4c2('0x2e')](_0x16abcb[_0xd4c2('0x36')]);return _0x4d5acb(_0x3507c5['error'](0x1f4,_0x16abcb));}}logger[_0xd4c2('0x2e')]('message\x20is\x20empty');return _0x4d5acb(_0x3507c5[_0xd4c2('0x2e')](0x1f4,_0xd4c2('0x3d')));});},'AbandonInteraction':function(_0x342194){var _0x576651=this;return new Promise(function(_0x323650,_0xa04291){if(_0x342194[_0xd4c2('0x12')]&&_0x342194['interaction']&&_0x342194['interaction']['id']){try{var _0x3c6280=getId(_0x342194[_0xd4c2('0x12')],_0x342194[_0xd4c2('0x13')]?_0x342194[_0xd4c2('0x13')]['id']:0x0,_0x342194['interaction']?_0x342194[_0xd4c2('0x14')]['id']:0x0);if(_0x43b616[_0xd4c2('0x2f')][_0x3c6280]){_0x43b616[_0xd4c2('0x2f')][_0x3c6280][_0xd4c2('0x33')]('end');}return _0x323650({'code':0xc8,'message':_0x342194});}catch(_0x12310a){logger[_0xd4c2('0x2e')](_0x12310a[_0xd4c2('0x36')]);return _0xa04291(_0x576651[_0xd4c2('0x2e')](0x1f4,_0x12310a));}}logger[_0xd4c2('0x2e')](_0xd4c2('0x3d'));return _0xa04291(_0x576651[_0xd4c2('0x2e')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x1520e6){var _0x47a878=this;return new Promise(function(_0x355436,_0x3fe4d2){if(_0x43b616[_0xd4c2('0x3f')][_0xd4c2('0x42')](_0x1520e6['id'])){for(var _0x553f96 in _0x1520e6[_0xd4c2('0x43')]){if(_0x1520e6[_0xd4c2('0x43')]['hasOwnProperty'](_0x553f96)){if(_0x43b616[_0xd4c2('0x3f')][_0x1520e6['id']][_0xd4c2('0x42')](_0x553f96+'CurrentCapacity')){_0x43b616[_0xd4c2('0x3f')][_0x1520e6['id']][_0x553f96+'CurrentCapacity']=parseInt(_0x1520e6[_0xd4c2('0x43')][_0x553f96],0xa);}}}_0x43b616['agents'][_0x1520e6['id']]['updateRealtime']();return _0x355436({'code':0xc8,'message':_0x43b616[_0xd4c2('0x3f')][_0x1520e6['id']]});}else{return _0x3fe4d2(_0x47a878['error'](0x1f4,_0xd4c2('0x44')));}});},'Agents':function(_0x293cd6){return new Promise(function(_0x18628d,_0x3cbb95){var _0x5e3c85=_[_0xd4c2('0x45')](_0x43b616['agents']);_0x18628d({'count':_0x5e3c85['length'],'rows':_0x5e3c85});});},'ChatQueues':function(_0x419f7a){return new Promise(function(_0x4071d1,_0x295c13){var _0x180a8e=[];for(var _0x5ba22d in _0x43b616[_0xd4c2('0x46')]){if(_0x43b616[_0xd4c2('0x46')][_0xd4c2('0x42')](_0x5ba22d)){var _0x3b4c2=_0x43b616[_0xd4c2('0x46')][_0x5ba22d];var _0x5c4c86={'id':_0x3b4c2['id'],'available':_0x3b4c2[_0xd4c2('0x47')],'loggedIn':_0x3b4c2[_0xd4c2('0x48')],'name':_0x3b4c2[_0xd4c2('0x49')],'paused':_0x3b4c2['paused'],'waiting':_0x3b4c2[_0xd4c2('0x4a')]};_0x180a8e[_0xd4c2('0x20')](_0x5c4c86);}}_0x4071d1({'count':_0x180a8e[_0xd4c2('0x17')],'rows':_0x180a8e});});},'MailQueues':function(_0x188530){return new Promise(function(_0x1c0130,_0x30d733){var _0x40288b=[];for(var _0xef0121 in _0x43b616[_0xd4c2('0x4b')]){if(_0x43b616[_0xd4c2('0x4b')]['hasOwnProperty'](_0xef0121)){var _0x4a07d6=_0x43b616[_0xd4c2('0x4b')][_0xef0121];var _0x561c39={'id':_0x4a07d6['id'],'available':_0x4a07d6[_0xd4c2('0x47')],'loggedIn':_0x4a07d6[_0xd4c2('0x48')],'name':_0x4a07d6['name'],'paused':_0x4a07d6[_0xd4c2('0x4c')],'waiting':_0x4a07d6['waiting']};_0x40288b[_0xd4c2('0x20')](_0x561c39);}}_0x1c0130({'count':_0x40288b[_0xd4c2('0x17')],'rows':_0x40288b});});},'OpenchannelQueues':function(_0x1e2323){return new Promise(function(_0xa2ac35,_0x2fa6b9){var _0x141e81=[];for(var _0x1ca442 in _0x43b616[_0xd4c2('0x4d')]){if(_0x43b616['openchannelQueues'][_0xd4c2('0x42')](_0x1ca442)){var _0x1dccc6=_0x43b616[_0xd4c2('0x4d')][_0x1ca442];var _0x147a03={'id':_0x1dccc6['id'],'available':_0x1dccc6[_0xd4c2('0x47')],'loggedIn':_0x1dccc6[_0xd4c2('0x48')],'name':_0x1dccc6['name'],'paused':_0x1dccc6[_0xd4c2('0x4c')],'waiting':_0x1dccc6[_0xd4c2('0x4a')]};_0x141e81[_0xd4c2('0x20')](_0x147a03);}}_0xa2ac35({'count':_0x141e81['length'],'rows':_0x141e81});});},'SmsQueues':function(_0x4e1df0){return new Promise(function(_0x5ae9e1,_0x3a8f5e){var _0x92f6e=[];for(var _0x5ccfeb in _0x43b616[_0xd4c2('0x4e')]){if(_0x43b616[_0xd4c2('0x4e')]['hasOwnProperty'](_0x5ccfeb)){var _0x38017c=_0x43b616['smsQueues'][_0x5ccfeb];var _0x20f12e={'id':_0x38017c['id'],'available':_0x38017c[_0xd4c2('0x47')],'loggedIn':_0x38017c[_0xd4c2('0x48')],'name':_0x38017c['name'],'paused':_0x38017c[_0xd4c2('0x4c')],'waiting':_0x38017c[_0xd4c2('0x4a')]};_0x92f6e[_0xd4c2('0x20')](_0x20f12e);}}_0x5ae9e1({'count':_0x92f6e[_0xd4c2('0x17')],'rows':_0x92f6e});});},'FaxQueues':function(_0x2be634){return new Promise(function(_0x321c15,_0x5e345f){var _0x7b96d4=[];for(var _0x222626 in _0x43b616[_0xd4c2('0x4f')]){if(_0x43b616[_0xd4c2('0x4f')]['hasOwnProperty'](_0x222626)){var _0x38c9a9=_0x43b616['faxQueues'][_0x222626];var _0x4f1c5e={'id':_0x38c9a9['id'],'available':_0x38c9a9[_0xd4c2('0x47')],'loggedIn':_0x38c9a9[_0xd4c2('0x48')],'name':_0x38c9a9[_0xd4c2('0x49')],'paused':_0x38c9a9[_0xd4c2('0x4c')],'waiting':_0x38c9a9[_0xd4c2('0x4a')]};_0x7b96d4[_0xd4c2('0x20')](_0x4f1c5e);}}_0x321c15({'count':_0x7b96d4[_0xd4c2('0x17')],'rows':_0x7b96d4});});},'WhatsappQueues':function(_0x4b8763){return new Promise(function(_0x15905d,_0x1cb40b){var _0x538022=[];for(var _0x448577 in _0x43b616['whatsappQueues']){if(_0x43b616[_0xd4c2('0x50')][_0xd4c2('0x42')](_0x448577)){var _0x589e30=_0x43b616['whatsappQueues'][_0x448577];var _0x58a2b1={'id':_0x589e30['id'],'available':_0x589e30['available'],'loggedIn':_0x589e30[_0xd4c2('0x48')],'name':_0x589e30[_0xd4c2('0x49')],'paused':_0x589e30['paused'],'waiting':_0x589e30[_0xd4c2('0x4a')]};_0x538022[_0xd4c2('0x20')](_0x58a2b1);}}_0x15905d({'count':_0x538022[_0xd4c2('0x17')],'rows':_0x538022});});},'ChatQueuesWaitingInteractions':function(_0x4f2c1e){return new Promise(function(_0x384468,_0x22df5f){var _0x1a31a3=_[_0xd4c2('0x45')](_0x43b616[_0xd4c2('0x51')]);_0x384468({'count':_0x1a31a3[_0xd4c2('0x17')],'rows':_0x1a31a3});});},'MailQueuesWaitingInteractions':function(_0x32b5aa){return new Promise(function(_0x199520,_0x150e51){var _0x2b837c=_[_0xd4c2('0x45')](_0x43b616['mailQueuesWaitingInteractions']);_0x199520({'count':_0x2b837c[_0xd4c2('0x17')],'rows':_0x2b837c});});},'OpenchannelQueuesWaitingInteractions':function(_0x4c6b99){return new Promise(function(_0x15d777,_0x1853ae){var _0x2d9c47=_[_0xd4c2('0x45')](_0x43b616[_0xd4c2('0x52')]);_0x15d777({'count':_0x2d9c47[_0xd4c2('0x17')],'rows':_0x2d9c47});});},'SmsQueuesWaitingInteractions':function(_0x2926d0){return new Promise(function(_0x5c135a,_0x56a83b){var _0x195d64=_[_0xd4c2('0x45')](_0x43b616[_0xd4c2('0x53')]);_0x5c135a({'count':_0x195d64[_0xd4c2('0x17')],'rows':_0x195d64});});},'FaxQueuesWaitingInteractions':function(_0x2c110c){return new Promise(function(_0x4808b1,_0x237553){var _0x1f1135=_[_0xd4c2('0x45')](_0x43b616[_0xd4c2('0x54')]);_0x4808b1({'count':_0x1f1135['length'],'rows':_0x1f1135});});},'WhatsappQueuesWaitingInteractions':function(_0xe5614){return new Promise(function(_0x214960,_0x2f8dbb){var _0x1e6d84=_[_0xd4c2('0x45')](_0x43b616[_0xd4c2('0x55')]);_0x214960({'count':_0x1e6d84[_0xd4c2('0x17')],'rows':_0x1e6d84});});}};var _0x2e07ef=jayson['server'](_0x2bad75)[_0xd4c2('0x56')]();_0x2e07ef['on'](_0xd4c2('0x2e'),function(_0x28db50){logger[_0xd4c2('0x2e')](JSON[_0xd4c2('0x57')](_0x28db50));return _0x38ea7d(_0x28db50);});_0x2e07ef[_0xd4c2('0x11')](0x232c,_0xd4c2('0x58'),function(){console['log'](_0xd4c2('0x59'),0x232c);return _0x36df4e(_0xd4c2('0x5a')+0x232c);});});};
\ No newline at end of file
+var _0xa446=['127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','uuid','../../../config/environment','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../lib/rule-engine','format','isNil','IntervalId','Intervals','interval','listen','rules','channel','message','interaction','applications','isArray','length','existsSync','join','.js','toLowerCase','autoreply','appdata','split','mail','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','tvox','getMustacheRender','account','ChatWebsiteId','ContactId','body','%s:%s:%s','app','./interval','condition','./applications/','consequence','info','Push\x20new\x20rule','error','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','emit','complete','No\x20applications\x20to\x20execute','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','catch','message\x20is\x20empty','stack','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','values','chatQueues','available','loggedIn','name','paused','waiting','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http'];(function(_0x21ecc8,_0x2bdead){var _0x510c1d=function(_0x3b6862){while(--_0x3b6862){_0x21ecc8['push'](_0x21ecc8['shift']());}};_0x510c1d(++_0x2bdead);}(_0xa446,0xc6));var _0x6a44=function(_0x4d822c,_0x3ae665){_0x4d822c=_0x4d822c-0x0;var _0xdc2439=_0xa446[_0x4d822c];return _0xdc2439;};'use strict';var _=require(_0x6a44('0x0'));var util=require(_0x6a44('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0x6a44('0x2'));var BPromise=require('bluebird');var uuid=require(_0x6a44('0x3'));var utils=require('./applications/utils');var config=require(_0x6a44('0x4'));var logger=require('../../../config/logger')(_0x6a44('0x5'));var rpc={'openchannelQueueReport':require(_0x6a44('0x6')),'mailQueueReport':require(_0x6a44('0x7')),'chatQueueReport':require(_0x6a44('0x8')),'smsQueueReport':require(_0x6a44('0x9')),'faxQueueReport':require(_0x6a44('0xa')),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0x6a44('0xb'));function getId(_0x36a426,_0x4f72f8,_0x78c684){return util[_0x6a44('0xc')]('%s.%s.%s',_0x36a426,_0x4f72f8||0x0,_0x78c684||0x0);}function getIntervals(_0x38a9ad,_0x2657b9){var _0x419ccd=[];if(!_[_0x6a44('0xd')](_0x2657b9[_0x6a44('0xe')])&&!_[_0x6a44('0xd')](_0x38a9ad[_0x2657b9[_0x6a44('0xe')]])&&!_['isNil'](_0x38a9ad[_0x2657b9[_0x6a44('0xe')]][_0x6a44('0xf')])){_0x419ccd=_['map'](_0x38a9ad[_0x2657b9[_0x6a44('0xe')]][_0x6a44('0xf')],_0x6a44('0x10'));}else if(!_['isNil'](_0x2657b9[_0x6a44('0x10')])){_0x419ccd=[_0x2657b9[_0x6a44('0x10')]];}return _0x419ccd;}exports[_0x6a44('0x11')]=function(_0xb1d987){_0xb1d987[_0x6a44('0x12')]={};return new BPromise(function(_0x1481ed,_0x553bc1){var _0x52aa9c={'Start':function(_0x260be6){var _0x973938=this;return new Promise(function(_0x577275,_0xa665c0){if(_0x260be6){try{var _0x38f796=[];var _0x41af8f=getId(_0x260be6[_0x6a44('0x13')],_0x260be6[_0x6a44('0x14')]?_0x260be6[_0x6a44('0x14')]['id']:0x0,_0x260be6[_0x6a44('0x15')]?_0x260be6[_0x6a44('0x15')]['id']:0x0);if(_0x260be6[_0x6a44('0x16')]&&_[_0x6a44('0x17')](_0x260be6[_0x6a44('0x16')])&&_0x260be6[_0x6a44('0x16')][_0x6a44('0x18')]){for(var _0x108c4b=0x0;_0x108c4b<_0x260be6['applications']['length'];_0x108c4b+=0x1){var _0x5e3673=_0x260be6[_0x6a44('0x16')][_0x108c4b];if(fs[_0x6a44('0x19')](path[_0x6a44('0x1a')](__dirname,_0x6a44('0x16'),_0x5e3673['app']+_0x6a44('0x1b')))){var _0x24ba62=[];switch(_0x5e3673['app'][_0x6a44('0x1c')]()){case _0x6a44('0x1d'):var _0x406247=_0x5e3673[_0x6a44('0x1e')][_0x6a44('0x1f')](',');if(_0x260be6[_0x6a44('0x13')]===_0x6a44('0x20')){_0x24ba62[_0x6a44('0x21')](_0x406247[0x0]);_0x24ba62[_0x6a44('0x21')](_0x406247[0x1]);_0x24ba62['push'](_0x406247[_0x6a44('0x22')](0x2,_0x406247[_0x6a44('0x18')])[_0x6a44('0x1a')](','));}else{_0x24ba62[_0x6a44('0x21')](_0x406247[0x0]);_0x24ba62['push'](_0x406247[_0x6a44('0x22')](0x1,_0x406247['length'])[_0x6a44('0x1a')](','));}break;case _0x6a44('0x23'):var _0x23d6a1=_0x5e3673[_0x6a44('0x1e')][_0x6a44('0x1f')](',');_0x24ba62[_0x6a44('0x21')](_0x23d6a1[0x0]);_0x24ba62[_0x6a44('0x21')](_0x23d6a1[0x1]);_0x24ba62[_0x6a44('0x21')](_0x23d6a1[_0x6a44('0x22')](0x2,_0x23d6a1['length'])['join'](','));break;case _0x6a44('0x24'):var _0x5abc23=_0x5e3673[_0x6a44('0x1e')]['split'](',');_0x24ba62['push'](_0x5abc23[0x0]);_0x24ba62[_0x6a44('0x21')](_0x5abc23[0x1]);_0x24ba62[_0x6a44('0x21')](_0x5abc23[0x2]);_0x24ba62[_0x6a44('0x21')](_0x5abc23[0x3]);_0x24ba62['push'](_0x5abc23[_0x6a44('0x22')](0x4,_0x5abc23['length'])[_0x6a44('0x1a')](','));break;case _0x6a44('0x25'):var _0x4b41c6=_0x5e3673['appdata'][_0x6a44('0x1f')](',');_0x24ba62[_0x6a44('0x21')](_0x4b41c6[0x0]);_0x24ba62[_0x6a44('0x21')](_0x4b41c6[0x1]);_0x24ba62['push'](_0x4b41c6[0x2]);_0x24ba62['push'](_0x4b41c6[0x3]);_0x24ba62[_0x6a44('0x21')](_0x4b41c6[_0x6a44('0x22')](0x4,_0x4b41c6[_0x6a44('0x18')])['join'](','));break;case _0x6a44('0x14'):_0x24ba62[_0x6a44('0x21')](_0x5e3673[_0x6a44('0x1e')]);break;case _0x6a44('0x26'):_0x24ba62[_0x6a44('0x21')](_0x5e3673[_0x6a44('0x27')]);_0x24ba62[_0x6a44('0x21')](_0x5e3673[_0x6a44('0x1e')]);break;case _0x6a44('0x28'):var _0x42d95a=utils[_0x6a44('0x29')](_0x260be6[_0x6a44('0x2a')]['notificationTemplate'],_0x260be6);var _0x198977=_0x5e3673['appdata']['split'](',');_0x24ba62['push'](_0x198977[0x0]);_0x24ba62['push'](_0x198977[0x1]);_0x24ba62[_0x6a44('0x21')](_0x198977[0x2]);_0x24ba62['push'](_0x198977[0x3]);_0x24ba62[_0x6a44('0x21')](_0x198977[0x4]);_0x24ba62['push'](_0x198977[0x5]);_0x24ba62[_0x6a44('0x21')](_0x198977[0x6]);_0x24ba62[_0x6a44('0x21')](_0x198977[0x7]);_0x24ba62['push'](_0x198977[0x8]);_0x24ba62['push'](_0x198977[0x9]);_0x24ba62[_0x6a44('0x21')](_0x198977[0xa]);_0x24ba62[_0x6a44('0x21')](_0x260be6[_0x6a44('0x15')]['id']);_0x24ba62[_0x6a44('0x21')](_0x260be6['message']['id']);_0x24ba62[_0x6a44('0x21')](_0x5e3673[_0x6a44('0x2b')]);_0x24ba62[_0x6a44('0x21')](_0x260be6[_0x6a44('0x15')][_0x6a44('0x2c')]);_0x24ba62[_0x6a44('0x21')](_0x260be6['body'][_0x6a44('0x2d')]);_0x24ba62[_0x6a44('0x21')](_0x42d95a);break;default:_0x24ba62=_['isNil'](_0x5e3673[_0x6a44('0x1e')])?[]:_0x5e3673['appdata'][_0x6a44('0x1f')](',');}var _0x527df6={'id':util[_0x6a44('0xc')](_0x6a44('0x2e'),_0x41af8f,_0x5e3673['id'],_0x5e3673[_0x6a44('0x2f')]),'condition':require(_0x6a44('0x30'))[_0x6a44('0x31')](_0x41af8f,getIntervals(_0xb1d987['intervals'],_0x5e3673),_0xb1d987),'consequence':require(_0x6a44('0x32')+_0x5e3673[_0x6a44('0x2f')])[_0x6a44('0x33')](_0x41af8f,_0x24ba62,_0xb1d987,_0x260be6),'p':_0x5e3673['priority']||0x0};logger[_0x6a44('0x34')](_0x6a44('0x35'),_0x527df6['id'],'on\x20interval',getIntervals(_0xb1d987['intervals'],_0x5e3673)['join']('\x20|\x20'));_0x38f796[_0x6a44('0x21')](_0x527df6);}else{logger[_0x6a44('0x36')](_0x6a44('0x37'),path[_0x6a44('0x1a')](__dirname,_0x6a44('0x16'),_0x5e3673['app']+'.js'));}}_0xb1d987[_0x6a44('0x12')][_0x41af8f]=new RuleEngine(_0x38f796);_0xb1d987[_0x6a44('0x12')][_0x41af8f][_0x6a44('0x38')](_0x260be6,function(_0x4eb5d6){logger[_0x6a44('0x34')](_0x6a44('0x39'),JSON[_0x6a44('0x3a')](_0x4eb5d6['matchPath']));if(_0xb1d987[_0x6a44('0x12')][_0x41af8f]){_0xb1d987[_0x6a44('0x12')][_0x41af8f][_0x6a44('0x3b')](_0x6a44('0x3c'));}});return _0x577275({'code':0xc8,'message':_0x260be6});}else{logger[_0x6a44('0x34')](_0x6a44('0x3d'));return _0x577275({'code':0xc8,'message':_0x260be6});}}catch(_0x32b24d){logger[_0x6a44('0x36')](_0x32b24d['stack']);return _0xa665c0(_0x973938[_0x6a44('0x36')](0x1f4,_0x32b24d));}}return _0xa665c0(_0x6a44('0x3e'));});},'AcceptMessage':function(_0x2ccdbc){var _0x446fbf=this;return new Promise(function(_0x1362c7,_0x3fcb0b){if(_0x2ccdbc[_0x6a44('0x3f')]&&_0x2ccdbc[_0x6a44('0x3f')]['id']){if(_0xb1d987[_0x6a44('0x40')][_0x2ccdbc['agent']['id']]){_0xb1d987[_0x6a44('0x40')][_0x2ccdbc[_0x6a44('0x3f')]['id']][_0x6a44('0x41')]=![];_0xb1d987[_0x6a44('0x40')][_0x2ccdbc[_0x6a44('0x3f')]['id']][_0x6a44('0x42')]=undefined;}}if(_0x2ccdbc[_0x6a44('0x14')]&&_0x2ccdbc[_0x6a44('0x14')]['id']){try{var _0x4de88b=getId(_0x2ccdbc[_0x6a44('0x13')],_0x2ccdbc[_0x6a44('0x14')]?_0x2ccdbc[_0x6a44('0x14')]['id']:0x0,_0x2ccdbc['interaction']?_0x2ccdbc[_0x6a44('0x15')]['id']:0x0);if(_0xb1d987['rules'][_0x4de88b]){_0xb1d987['rules'][_0x4de88b][_0x6a44('0x3b')](_0x6a44('0x43'));if(rpc[_0x2ccdbc['channel']+'QueueReport']){rpc[_0x2ccdbc[_0x6a44('0x13')]+_0x6a44('0x44')]['update'](_0x4de88b,{'UserId':_0x2ccdbc[_0x6a44('0x14')]['UserId']})[_0x6a44('0x45')](function(_0x434ded){logger[_0x6a44('0x36')]('error\x20update\x20queue\x20report');});}}return _0x1362c7({'code':0xc8,'message':_0x2ccdbc});}catch(_0x52b343){logger['error'](_0x52b343['stack']);return _0x3fcb0b(_0x446fbf[_0x6a44('0x36')](0x1f4,_0x52b343));}}logger[_0x6a44('0x36')](_0x6a44('0x46'));return _0x3fcb0b(_0x446fbf[_0x6a44('0x36')](0x1f4,_0x6a44('0x46')));});},'RejectMessage':function(_0x598d7a){var _0x288224=this;return new Promise(function(_0x560ab2,_0x28855c){if(_0x598d7a[_0x6a44('0x3f')]&&_0x598d7a['agent']['id']){try{if(_0xb1d987[_0x6a44('0x40')][_0x598d7a[_0x6a44('0x3f')]['id']]){_0xb1d987['agents'][_0x598d7a[_0x6a44('0x3f')]['id']][_0x6a44('0x41')]=![];_0xb1d987[_0x6a44('0x40')][_0x598d7a[_0x6a44('0x3f')]['id']][_0x6a44('0x42')]=undefined;}return _0x560ab2({'code':0xc8,'message':_0x598d7a});}catch(_0x40fd42){logger[_0x6a44('0x36')](_0x40fd42[_0x6a44('0x47')]);return _0x28855c(_0x288224[_0x6a44('0x36')](0x1f4,_0x40fd42));}}logger[_0x6a44('0x36')]('message\x20is\x20empty');return _0x28855c(_0x288224[_0x6a44('0x36')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x1e3ac1){var _0x2eb803=this;return new Promise(function(_0x224d7c,_0x11d9b2){if(_0x1e3ac1[_0x6a44('0x13')]&&_0x1e3ac1['interaction']&&_0x1e3ac1[_0x6a44('0x15')]['id']){try{var _0x13231c=getId(_0x1e3ac1[_0x6a44('0x13')],_0x1e3ac1[_0x6a44('0x14')]?_0x1e3ac1[_0x6a44('0x14')]['id']:0x0,_0x1e3ac1[_0x6a44('0x15')]?_0x1e3ac1[_0x6a44('0x15')]['id']:0x0);if(_0xb1d987[_0x6a44('0x12')][_0x13231c]){_0xb1d987[_0x6a44('0x12')][_0x13231c][_0x6a44('0x3b')](_0x6a44('0x43'));}return _0x224d7c({'code':0xc8,'message':_0x1e3ac1});}catch(_0x51e7df){logger[_0x6a44('0x36')](_0x51e7df[_0x6a44('0x47')]);return _0x11d9b2(_0x2eb803[_0x6a44('0x36')](0x1f4,_0x51e7df));}}logger[_0x6a44('0x36')](_0x6a44('0x46'));return _0x11d9b2(_0x2eb803[_0x6a44('0x36')](0x1f4,_0x6a44('0x46')));});},'AgentCapacity':function(_0x330263){var _0x276625=this;return new Promise(function(_0x4fabb8,_0x1d6d70){if(_0xb1d987[_0x6a44('0x40')][_0x6a44('0x48')](_0x330263['id'])){for(var _0x800265 in _0x330263['capacity']){if(_0x330263[_0x6a44('0x49')][_0x6a44('0x48')](_0x800265)){if(_0xb1d987[_0x6a44('0x40')][_0x330263['id']]['hasOwnProperty'](_0x800265+_0x6a44('0x4a'))){_0xb1d987['agents'][_0x330263['id']][_0x800265+'CurrentCapacity']=parseInt(_0x330263[_0x6a44('0x49')][_0x800265],0xa);}}}_0xb1d987[_0x6a44('0x40')][_0x330263['id']][_0x6a44('0x4b')]();return _0x4fabb8({'code':0xc8,'message':_0xb1d987[_0x6a44('0x40')][_0x330263['id']]});}else{return _0x1d6d70(_0x276625[_0x6a44('0x36')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x5b8d44){return new Promise(function(_0x362607,_0x50c12b){var _0x4abebd=_[_0x6a44('0x4c')](_0xb1d987[_0x6a44('0x40')]);_0x362607({'count':_0x4abebd[_0x6a44('0x18')],'rows':_0x4abebd});});},'ChatQueues':function(_0x2aaea3){return new Promise(function(_0x5e02ed,_0x214529){var _0x564be2=[];for(var _0x59b390 in _0xb1d987['chatQueues']){if(_0xb1d987[_0x6a44('0x4d')][_0x6a44('0x48')](_0x59b390)){var _0x418a7e=_0xb1d987['chatQueues'][_0x59b390];var _0x252ea4={'id':_0x418a7e['id'],'available':_0x418a7e[_0x6a44('0x4e')],'loggedIn':_0x418a7e[_0x6a44('0x4f')],'name':_0x418a7e[_0x6a44('0x50')],'paused':_0x418a7e[_0x6a44('0x51')],'waiting':_0x418a7e[_0x6a44('0x52')]};_0x564be2['push'](_0x252ea4);}}_0x5e02ed({'count':_0x564be2[_0x6a44('0x18')],'rows':_0x564be2});});},'MailQueues':function(_0x20d5bf){return new Promise(function(_0x4f3890,_0x3d6dc6){var _0x3fdddf=[];for(var _0x3c95e1 in _0xb1d987['mailQueues']){if(_0xb1d987['mailQueues'][_0x6a44('0x48')](_0x3c95e1)){var _0x30a300=_0xb1d987['mailQueues'][_0x3c95e1];var _0x21f957={'id':_0x30a300['id'],'available':_0x30a300['available'],'loggedIn':_0x30a300[_0x6a44('0x4f')],'name':_0x30a300[_0x6a44('0x50')],'paused':_0x30a300[_0x6a44('0x51')],'waiting':_0x30a300[_0x6a44('0x52')]};_0x3fdddf['push'](_0x21f957);}}_0x4f3890({'count':_0x3fdddf['length'],'rows':_0x3fdddf});});},'OpenchannelQueues':function(_0x1d202c){return new Promise(function(_0x46dbe5,_0x46a77a){var _0x229bc4=[];for(var _0x230932 in _0xb1d987[_0x6a44('0x53')]){if(_0xb1d987[_0x6a44('0x53')][_0x6a44('0x48')](_0x230932)){var _0x36e872=_0xb1d987[_0x6a44('0x53')][_0x230932];var _0x8d2ac7={'id':_0x36e872['id'],'available':_0x36e872[_0x6a44('0x4e')],'loggedIn':_0x36e872[_0x6a44('0x4f')],'name':_0x36e872[_0x6a44('0x50')],'paused':_0x36e872[_0x6a44('0x51')],'waiting':_0x36e872[_0x6a44('0x52')]};_0x229bc4[_0x6a44('0x21')](_0x8d2ac7);}}_0x46dbe5({'count':_0x229bc4[_0x6a44('0x18')],'rows':_0x229bc4});});},'SmsQueues':function(_0x566c17){return new Promise(function(_0x35459e,_0x5374f2){var _0x15fd6d=[];for(var _0x469433 in _0xb1d987[_0x6a44('0x54')]){if(_0xb1d987[_0x6a44('0x54')]['hasOwnProperty'](_0x469433)){var _0x33ddac=_0xb1d987[_0x6a44('0x54')][_0x469433];var _0x984f87={'id':_0x33ddac['id'],'available':_0x33ddac[_0x6a44('0x4e')],'loggedIn':_0x33ddac[_0x6a44('0x4f')],'name':_0x33ddac[_0x6a44('0x50')],'paused':_0x33ddac['paused'],'waiting':_0x33ddac[_0x6a44('0x52')]};_0x15fd6d[_0x6a44('0x21')](_0x984f87);}}_0x35459e({'count':_0x15fd6d[_0x6a44('0x18')],'rows':_0x15fd6d});});},'FaxQueues':function(_0x34e348){return new Promise(function(_0x36c59d,_0x13aead){var _0x57fd0b=[];for(var _0x1c813c in _0xb1d987[_0x6a44('0x55')]){if(_0xb1d987['faxQueues'][_0x6a44('0x48')](_0x1c813c)){var _0x463126=_0xb1d987[_0x6a44('0x55')][_0x1c813c];var _0x4cd9f5={'id':_0x463126['id'],'available':_0x463126[_0x6a44('0x4e')],'loggedIn':_0x463126['loggedIn'],'name':_0x463126[_0x6a44('0x50')],'paused':_0x463126['paused'],'waiting':_0x463126[_0x6a44('0x52')]};_0x57fd0b['push'](_0x4cd9f5);}}_0x36c59d({'count':_0x57fd0b[_0x6a44('0x18')],'rows':_0x57fd0b});});},'WhatsappQueues':function(_0x457d9e){return new Promise(function(_0xeba1e2,_0x4e6082){var _0x576cd9=[];for(var _0x8b5a04 in _0xb1d987[_0x6a44('0x56')]){if(_0xb1d987[_0x6a44('0x56')][_0x6a44('0x48')](_0x8b5a04)){var _0x2f1c3e=_0xb1d987['whatsappQueues'][_0x8b5a04];var _0xdb434a={'id':_0x2f1c3e['id'],'available':_0x2f1c3e[_0x6a44('0x4e')],'loggedIn':_0x2f1c3e[_0x6a44('0x4f')],'name':_0x2f1c3e[_0x6a44('0x50')],'paused':_0x2f1c3e[_0x6a44('0x51')],'waiting':_0x2f1c3e[_0x6a44('0x52')]};_0x576cd9[_0x6a44('0x21')](_0xdb434a);}}_0xeba1e2({'count':_0x576cd9['length'],'rows':_0x576cd9});});},'ChatQueuesWaitingInteractions':function(_0x322129){return new Promise(function(_0x25681f,_0x2ec199){var _0x7c3bc7=_[_0x6a44('0x4c')](_0xb1d987[_0x6a44('0x57')]);_0x25681f({'count':_0x7c3bc7[_0x6a44('0x18')],'rows':_0x7c3bc7});});},'MailQueuesWaitingInteractions':function(_0x2f383e){return new Promise(function(_0x13f364,_0x49d513){var _0x4781fb=_[_0x6a44('0x4c')](_0xb1d987['mailQueuesWaitingInteractions']);_0x13f364({'count':_0x4781fb['length'],'rows':_0x4781fb});});},'OpenchannelQueuesWaitingInteractions':function(_0x417f64){return new Promise(function(_0x44a2e2,_0xcf855c){var _0x1ca4c9=_[_0x6a44('0x4c')](_0xb1d987['openchannelQueuesWaitingInteractions']);_0x44a2e2({'count':_0x1ca4c9[_0x6a44('0x18')],'rows':_0x1ca4c9});});},'SmsQueuesWaitingInteractions':function(_0x5a93ea){return new Promise(function(_0x14096b,_0x1bf50d){var _0x301bce=_['values'](_0xb1d987[_0x6a44('0x58')]);_0x14096b({'count':_0x301bce[_0x6a44('0x18')],'rows':_0x301bce});});},'FaxQueuesWaitingInteractions':function(_0x2b450d){return new Promise(function(_0x3cc19d,_0x114eb0){var _0x43d9d5=_['values'](_0xb1d987[_0x6a44('0x59')]);_0x3cc19d({'count':_0x43d9d5['length'],'rows':_0x43d9d5});});},'WhatsappQueuesWaitingInteractions':function(_0x48fec3){return new Promise(function(_0x1ab60b,_0x44e1f0){var _0x51880a=_['values'](_0xb1d987[_0x6a44('0x5a')]);_0x1ab60b({'count':_0x51880a[_0x6a44('0x18')],'rows':_0x51880a});});}};var _0x10917d=jayson[_0x6a44('0x5b')](_0x52aa9c)[_0x6a44('0x5c')]();_0x10917d['on'](_0x6a44('0x36'),function(_0x208c6e){logger[_0x6a44('0x36')](JSON[_0x6a44('0x3a')](_0x208c6e));return _0x553bc1(_0x208c6e);});_0x10917d[_0x6a44('0x11')](0x232c,_0x6a44('0x5d'),function(){console[_0x6a44('0x5e')](_0x6a44('0x5f'),0x232c);return _0x1481ed(_0x6a44('0x60')+0x232c);});});};
\ No newline at end of file