Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / server / services / ami / trigger / integration / sugarcrm.js
index 9202a87..6e9e97f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7be9=['Account\x20%d\x20is\x20not\x20valid','Calls','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','calleridnum','Inbound','The\x20Ticket\x20ID\x20is:','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','outbound','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Outbound','Ticket\x20created!','users','error','unmanaged','lastevent','isNil','lodash','request-promise','bluebird','md5','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','emit','name','getString','assigned_user_id','created_by','description','Descriptions','date_start','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','parent_name','forEach','push','idField','variableName','set_entry','JSON','stringify','format','Basic\x20%s','apiKey','toString','base64','get_server_info','info','Getting\x20agent\x20with\x20name','get_entry_list','Employees','user_name','length','find','entry_list','value','Agent\x20found!','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','Contacts','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','then','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Caller\x20-\x20%s','debug','[HTTP]','map','type','string','nameField','customField','toLowerCase','custom_fields','content','variable','customVariable','Variable','login','password','PLAIN','xCALLY\x20Motion\x20integration'];(function(_0x19d676,_0xd0219c){var _0x129a87=function(_0x2f95fa){while(--_0x2f95fa){_0x19d676['push'](_0x19d676['shift']());}};_0x129a87(++_0xd0219c);}(_0x7be9,0x117));var _0x97be=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x7be9[_0x36ed48];return _0x51c63a;};'use strict';var _=require(_0x97be('0x0'));var rp=require(_0x97be('0x1'));var BPromise=require(_0x97be('0x2'));var md5=require(_0x97be('0x3'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0x97be('0x4'));var config=require(_0x97be('0x5'));var logger=require(_0x97be('0x6'))(_0x97be('0x7'));config[_0x97be('0x8')]=_[_0x97be('0x9')](config[_0x97be('0x8')],{'host':_0x97be('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var def={'method':'POST','json':!![]};function emit(_0x1476c3,_0x410268,_0x512688){io['to'](_0x1476c3)[_0x97be('0xb')](_0x410268,_0x512688);}function getTicket(_0x5d6b72,_0x364b5e,_0x2c66e2,_0x151831,_0x57cc4f,_0x5ca990,_0x48ca98,_0x583c5b){logger['info']('Creating\x20new\x20ticket...');var _0x231321=new Date();var _0x464343=[{'name':_0x97be('0xc'),'value':intUtil[_0x97be('0xd')](_0x151831['Subjects'],_0x57cc4f,'\x20')},{'name':_0x97be('0xe'),'value':_0x364b5e['id']},{'name':_0x97be('0xf'),'value':_0x364b5e['id']},{'name':_0x97be('0x10'),'value':intUtil['getString'](_0x151831[_0x97be('0x11')],_0x57cc4f,'\x0a')},{'name':_0x97be('0x12'),'value':_0x231321[_0x97be('0x13')]()[_0x97be('0x14')](0x0,0x13)[_0x97be('0x15')]('T','\x20')},{'name':_0x97be('0x16'),'value':'0'},{'name':_0x97be('0x17'),'value':'15'},{'name':_0x97be('0x18'),'value':_0x2c66e2['id']},{'name':_0x97be('0x19'),'value':'Contacts'},{'name':_0x97be('0x1a'),'value':_0x2c66e2['name']},{'name':'direction','value':_0x583c5b}];if(_0x5ca990['length']){_[_0x97be('0x1b')](_0x5ca990,function(_0x5b5a52){if(_0x57cc4f[_0x5b5a52['variableName']]){_0x464343[_0x97be('0x1c')]({'name':_0x5b5a52[_0x97be('0x1d')],'value':_0x57cc4f[_0x5b5a52[_0x97be('0x1e')]]});}});}return request({'form':{'method':_0x97be('0x1f'),'input_type':_0x97be('0x20'),'response_type':_0x97be('0x20'),'rest_data':JSON[_0x97be('0x21')]({'session':_0x48ca98['id'],'module_name':'Calls','name_value_list':_0x464343})}});}function getAuth(_0x16913f){return util[_0x97be('0x22')](_0x97be('0x23'),new Buffer(_0x16913f[_0x97be('0x24')]+':X')[_0x97be('0x25')](_0x97be('0x26')));}function getServerInfo(_0xb73215){return request({'form':{'method':_0x97be('0x27'),'input_type':_0x97be('0x20'),'response_type':_0x97be('0x20'),'rest_data':JSON[_0x97be('0x21')]({'session':_0xb73215['id']})}});}function getUser(_0x4e5547,_0x1832ed,_0xf99030){if(!_['isNil'](_0x1832ed)){logger[_0x97be('0x28')](_0x97be('0x29'),_0x1832ed);return request({'form':{'method':_0x97be('0x2a'),'input_type':_0x97be('0x20'),'response_type':'JSON','rest_data':JSON[_0x97be('0x21')]({'session':_0xf99030['id'],'module_name':_0x97be('0x2b'),'query':util[_0x97be('0x22')]('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0x1832ed),'order_by':'','offset':'0','select_fields':['id',_0x97be('0xc'),_0x97be('0x2c')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x19e955){if(_0x19e955['entry_list'][_0x97be('0x2d')]){var _0x35895b=_[_0x97be('0x2e')](_0x19e955[_0x97be('0x2f')],function(_0x3105bc){return _0x3105bc['name_value_list'][_0x97be('0x2c')][_0x97be('0x30')]===_0x1832ed;});if(_0x35895b){logger[_0x97be('0x28')](_0x97be('0x31'));return BPromise[_0x97be('0x32')]({'id':_0x35895b['name_value_list']['id'][_0x97be('0x30')],'name':_0x35895b[_0x97be('0x33')][_0x97be('0xc')][_0x97be('0x30')]});}}logger[_0x97be('0x28')](_0x97be('0x34'));return BPromise[_0x97be('0x32')]({'id':_0xf99030['name_value_list'][_0x97be('0x35')]['value'],'name':_0xf99030[_0x97be('0x33')]['user_name']['value']});});}else{logger['info']('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise[_0x97be('0x32')]({'id':_0xf99030[_0x97be('0x33')][_0x97be('0x35')][_0x97be('0x30')],'name':_0xf99030['name_value_list'][_0x97be('0x2c')][_0x97be('0x30')]});}}function getEndUser(_0x5e78d1,_0x192f81,_0x435912,_0x36b64c){logger['info'](_0x97be('0x36'),_0x435912);return request({'form':{'method':_0x97be('0x2a'),'input_type':_0x97be('0x20'),'response_type':'JSON','rest_data':JSON[_0x97be('0x21')]({'session':_0x36b64c['id'],'module_name':_0x97be('0x37'),'query':util[_0x97be('0x22')](_0x97be('0x38'),_0x435912),'order_by':'','offset':'0','select_fields':['id',_0x97be('0xc'),_0x97be('0x39')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x97be('0x3a')](function(_0xbac5ab){if(_0xbac5ab[_0x97be('0x2f')][_0x97be('0x2d')]){var _0x188c34=_[_0x97be('0x2e')](_0xbac5ab[_0x97be('0x2f')],function(_0x45fc09){return _0x45fc09['name_value_list']['phone_home'][_0x97be('0x30')]===_0x435912;});if(_0x188c34){logger[_0x97be('0x28')](_0x97be('0x3b'));return BPromise[_0x97be('0x32')]({'id':_0x188c34[_0x97be('0x33')]['id']['value'],'name':_0x188c34[_0x97be('0x33')][_0x97be('0xc')][_0x97be('0x30')],'phone':_0x188c34[_0x97be('0x33')][_0x97be('0x39')][_0x97be('0x30')]});}}else{logger['info'](_0x97be('0x3c'));return request({'form':{'method':_0x97be('0x1f'),'input_type':_0x97be('0x20'),'response_type':_0x97be('0x20'),'rest_data':JSON['stringify']({'session':_0x36b64c['id'],'module_name':'Contacts','name_value_list':[{'name':_0x97be('0x3d'),'value':_0x192f81!==_0x97be('0x3e')?_0x192f81:util[_0x97be('0x22')](_0x97be('0x3f'),_0x435912)},{'name':'phone_home','value':_0x435912}]})}})['then'](function(_0x471f34){logger[_0x97be('0x28')]('Enduser\x20created.');return BPromise[_0x97be('0x32')]({'id':_0x471f34['id'],'name':_0x471f34[_0x97be('0x2f')]['first_name'][_0x97be('0x30')],'phone':_0x471f34[_0x97be('0x2f')][_0x97be('0x39')][_0x97be('0x30')]});});}});}function request(_0x35c873){logger[_0x97be('0x40')](_0x97be('0x41'),JSON['stringify'](_0x35c873));return rp(_['merge'](def,_0x35c873));}function getTags(_0x5765d7,_0x35b54f){var _0x435bcd=[];if(_0x5765d7&&_0x5765d7[_0x97be('0x2d')]>0x0){_0x435bcd=_[_0x97be('0x42')](_0x5765d7,_0x35b54f);}return _0x435bcd;}function getCustomFields(_0xea5774,_0x3b3fc4){var _0x554b16=[];var _0x2231e4={'custom_fields':[]};if(_0xea5774[_0x97be('0x2d')]>0x0){_[_0x97be('0x1b')](_0xea5774,function(_0x4d2f45){if(_0x4d2f45[_0x97be('0x43')]===_0x97be('0x44')&&_0x4d2f45[_0x97be('0x45')]&&!_0x4d2f45[_0x97be('0x46')]){_0x2231e4[_0x4d2f45['nameField'][_0x97be('0x47')]()]=_0x4d2f45['content'][_0x97be('0x25')]();}else if(_0x4d2f45[_0x97be('0x43')]===_0x97be('0x44')&&_0x4d2f45[_0x97be('0x1d')]&&_0x4d2f45['customField']){_0x2231e4[_0x97be('0x48')]['push']({'id':_0x4d2f45[_0x97be('0x1d')],'value':_0x4d2f45[_0x97be('0x49')][_0x97be('0x25')]()});}else if(_0x4d2f45[_0x97be('0x43')]===_0x97be('0x4a')&&_0x4d2f45[_0x97be('0x1e')]&&_0x4d2f45[_0x97be('0x1d')]&&_0x4d2f45[_0x97be('0x46')]){_0x3b3fc4[_0x4d2f45[_0x97be('0x1e')]]&&_0x2231e4[_0x97be('0x48')][_0x97be('0x1c')]({'id':_0x4d2f45[_0x97be('0x1d')],'value':_0x3b3fc4[_0x4d2f45[_0x97be('0x1e')]][_0x97be('0x25')]()});}else if(_0x4d2f45['type']===_0x97be('0x4b')&&_0x4d2f45[_0x97be('0x4c')]&&_0x4d2f45[_0x97be('0x4c')][_0x97be('0xc')]&&_0x4d2f45['idField']&&_0x4d2f45[_0x97be('0x46')]){_0x3b3fc4[_0x4d2f45[_0x97be('0x4c')][_0x97be('0xc')]['toLowerCase']()]&&_0x2231e4[_0x97be('0x48')]['push']({'id':_0x4d2f45[_0x97be('0x1d')],'value':_0x3b3fc4[_0x4d2f45[_0x97be('0x4c')][_0x97be('0xc')][_0x97be('0x47')]()][_0x97be('0x25')]()});}});}return _0x2231e4;}function getConnection(_0x509d6a){return request({'method':'POST','form':{'method':_0x97be('0x4d'),'input_type':_0x97be('0x20'),'response_type':_0x97be('0x20'),'rest_data':JSON[_0x97be('0x21')]({'user_auth':{'user_name':_0x509d6a['username'],'password':_0x509d6a[_0x97be('0x4e')],'encryption':_0x97be('0x4f')},'application':_0x97be('0x50')})}})['then'](function(_0x57a75d){var _0x3a7845=_0x57a75d;if(_0x3a7845['id']){def['sessionID']=_0x3a7845['id'];return BPromise[_0x97be('0x32')](_0x3a7845);}else{throw new Error(util[_0x97be('0x22')](_0x97be('0x51'),_0x509d6a['id']));}});}function setRelationship(_0x5c8a7a,_0x33625d,_0x2957f3,_0xecc105){return request({'form':{'method':'set_relationship','input_type':'JSON','response_type':_0x97be('0x20'),'rest_data':JSON['stringify']({'session':_0x5c8a7a['id'],'module_name':_0x97be('0x52'),'module_id':_0x2957f3['id'],'link_field_name':_0xecc105,'related_ids':[_0x33625d['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x97be('0x53')]=function(_0x3a3381,_0x250135,_0x588131,_0xc22cdd,_0x629458,_0x14969b){var _0x16b24d,_0x2a69c5,_0xb69cec,_0x3effd;_0x14969b[_0x97be('0x54')]=intUtil[_0x97be('0x55')](_0x14969b[_0x97be('0x54')]);_0x14969b[_0x97be('0x56')]=intUtil[_0x97be('0x55')](_0x14969b[_0x97be('0x56')]);def[_0x97be('0x57')]=util[_0x97be('0x22')](_0x97be('0x58'),_0x14969b[_0x97be('0x54')]);if(_0x629458&&_0x629458['monitor_format']){logger['info']('[QUEUE]',_0x97be('0x59'));_0x250135[_0x97be('0x5a')]=util[_0x97be('0x22')](_0x97be('0x5b'),_0x14969b['serverUrl'],_0x250135[_0x97be('0x5c')],md5(_0x250135['uniqueid']));}else{_0x250135[_0x97be('0x5a')]='';}return getConnection(_0x14969b)[_0x97be('0x3a')](function(_0x23e0f8){_0x3effd=_0x23e0f8;return getUser(_0x14969b,_0xc22cdd[_0x97be('0xc')],_0x3effd);})['then'](function(_0x39b41b){_0x16b24d=_0x39b41b;logger[_0x97be('0x28')]('The\x20User\x20ID\x20is:',_0x16b24d['id']);return getEndUser(_0x14969b,_0x250135[_0x97be('0x5d')],_0x250135[_0x97be('0x5e')],_0x3effd);})['then'](function(_0x344fcd){_0x2a69c5=_0x344fcd;logger['info']('The\x20Enduser\x20ID\x20is:',_0x2a69c5['id']);return getTicket(_0x14969b,_0x16b24d,_0x2a69c5,_0x588131,_0x250135,_0x588131['Fields'],_0x3effd,_0x97be('0x5f'));})[_0x97be('0x3a')](function(_0x4a5b98){_0xb69cec=_0x4a5b98;logger[_0x97be('0x28')]('Ticket\x20created!');logger[_0x97be('0x28')](_0x97be('0x60'),_0xb69cec['id']);return setRelationship(_0x3effd,_0x16b24d,_0xb69cec,'users');})[_0x97be('0x3a')](function(){return setRelationship(_0x3effd,_0x2a69c5,_0xb69cec,_0x97be('0x61'));})['then'](function(){return getServerInfo(_0x3effd);})[_0x97be('0x3a')](function(_0x47e088){var _0x982dd4=parseInt(_0x47e088[_0x97be('0x62')][_0x97be('0x63')](0x0));var _0xdcfb5=util[_0x97be('0x22')](_0x97be('0x64'),_0x14969b[_0x97be('0x54')],_0xb69cec['id']);if(_0x982dd4>0x6){_0xdcfb5=util[_0x97be('0x22')](_0x97be('0x65'),_0x14969b[_0x97be('0x54')],_0xb69cec['id']);}logger[_0x97be('0x28')](_0x97be('0x66'),_0x97be('0x67'));emit(util[_0x97be('0x22')](_0x97be('0x68'),_0xc22cdd[_0x97be('0xc')]),_0x97be('0x69'),{'uri':_0xdcfb5});})[_0x97be('0x6a')](function(_0x4920a3){logger['error'](_0x97be('0x66'),JSON[_0x97be('0x21')](_0x4920a3));});};exports[_0x97be('0x6b')]=function(_0x5bed20,_0x1cd089,_0x38d086,_0x3aa1e5,_0x2473e8,_0x861807,_0x22ad24){var _0x2fa44d,_0x3b0ec8,_0x26a1cd,_0x3f13b2;_0x861807[_0x97be('0x54')]=intUtil[_0x97be('0x55')](_0x861807['remoteUri']);_0x861807['serverUrl']=intUtil['stripTrailingSlash'](_0x861807['serverUrl']);def['uri']=util[_0x97be('0x22')](_0x97be('0x58'),_0x861807[_0x97be('0x54')]);if(_0x22ad24&&_0x22ad24[_0x97be('0x6c')]&&_0x22ad24[_0x97be('0x6c')]!=='none'){logger[_0x97be('0x28')](_0x97be('0x6d'),_0x97be('0x59'));_0x1cd089[_0x97be('0x5a')]=util[_0x97be('0x22')](_0x97be('0x5b'),_0x861807[_0x97be('0x56')],_0x1cd089[_0x97be('0x5c')],md5(_0x1cd089['uniqueid']));}return getConnection(_0x861807)['then'](function(_0x30c415){_0x3f13b2=_0x30c415;return getUser(_0x861807,_0x3aa1e5['name'],_0x3f13b2);})[_0x97be('0x3a')](function(_0x317130){_0x2fa44d=_0x317130;logger[_0x97be('0x28')]('The\x20User\x20ID\x20is:',_0x2fa44d['id']);return getEndUser(_0x861807,_0x1cd089[_0x97be('0x6e')],_0x1cd089[_0x97be('0x6f')],_0x3f13b2);})[_0x97be('0x3a')](function(_0x20489e){_0x3b0ec8=_0x20489e;logger[_0x97be('0x28')](_0x97be('0x70'),_0x3b0ec8['id']);return getTicket(_0x861807,_0x2fa44d,_0x3b0ec8,_0x38d086,_0x1cd089,_0x38d086['Fields'],_0x3f13b2,_0x97be('0x71'));})[_0x97be('0x3a')](function(_0x418ad1){_0x26a1cd=_0x418ad1;logger[_0x97be('0x28')](_0x97be('0x72'));logger[_0x97be('0x28')](_0x97be('0x60'),_0x26a1cd['id']);return setRelationship(_0x3f13b2,_0x2fa44d,_0x26a1cd,_0x97be('0x73'));})[_0x97be('0x3a')](function(){return setRelationship(_0x3f13b2,_0x3b0ec8,_0x26a1cd,_0x97be('0x61'));})[_0x97be('0x3a')](function(){return getServerInfo(_0x3f13b2);})[_0x97be('0x3a')](function(_0x650498){var _0x5aadd7=parseInt(_0x650498[_0x97be('0x62')][_0x97be('0x63')](0x0));var _0x44ee9b=util[_0x97be('0x22')](_0x97be('0x64'),_0x861807[_0x97be('0x54')],_0x26a1cd['id']);if(_0x5aadd7>0x6){_0x44ee9b=util[_0x97be('0x22')](_0x97be('0x65'),_0x861807[_0x97be('0x54')],_0x26a1cd['id']);}logger['info']('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x97be('0x22')](_0x97be('0x68'),_0x3aa1e5[_0x97be('0xc')]),_0x97be('0x69'),{'uri':_0x44ee9b});})[_0x97be('0x6a')](function(_0x5a9b97){logger[_0x97be('0x74')](_0x97be('0x6d'),JSON['stringify'](_0x5a9b97));});};exports[_0x97be('0x75')]=function(_0x274c9b,_0x2957ad,_0x581db6,_0x3d2d39,_0x16a682,_0x40d0ef){var _0x2c6a88,_0x329f55,_0x48e83f,_0x5745b0;_0x40d0ef[_0x97be('0x54')]=intUtil['stripTrailingSlash'](_0x40d0ef[_0x97be('0x54')]);_0x40d0ef[_0x97be('0x56')]=intUtil[_0x97be('0x55')](_0x40d0ef[_0x97be('0x56')]);def[_0x97be('0x57')]=util[_0x97be('0x22')](_0x97be('0x58'),_0x40d0ef[_0x97be('0x54')]);if(_0x16a682&&_0x16a682['monitor_format']){logger[_0x97be('0x28')]('['+_0x2957ad[_0x97be('0x76')]['toUpperCase']()+']',_0x97be('0x59'));_0x2957ad[_0x97be('0x5a')]=util[_0x97be('0x22')](_0x97be('0x5b'),_0x40d0ef[_0x97be('0x56')],_0x2957ad[_0x97be('0x5c')],md5(_0x2957ad[_0x97be('0x5c')]));}else{_0x2957ad['recordingURL']='';}return getConnection(_0x40d0ef)['then'](function(_0x11363f){_0x5745b0=_0x11363f;if(!_[_0x97be('0x77')](_0x3d2d39)){return getUser(_0x40d0ef,_0x3d2d39[_0x97be('0xc')],_0x5745b0);}else{return getUser(_0x40d0ef,null,_0x5745b0);}})[_0x97be('0x3a')](function(_0x588cb3){_0x2c6a88=_0x588cb3;logger['info']('The\x20User\x20ID\x20is:',_0x2c6a88['id']);return getEndUser(_0x40d0ef,_0x2957ad['calleridname'],_0x2957ad['calleridnum'],_0x5745b0);})['then'](function(_0x30d7c8){_0x329f55=_0x30d7c8;logger[_0x97be('0x28')]('The\x20Enduser\x20ID\x20is:',_0x329f55['id']);return getTicket(_0x40d0ef,_0x2c6a88,_0x329f55,_0x581db6,_0x2957ad,_0x581db6['Fields'],_0x5745b0,'Inbound');})['then'](function(_0x2c48c9){_0x48e83f=_0x2c48c9;logger[_0x97be('0x28')](_0x97be('0x72'));logger[_0x97be('0x28')](_0x97be('0x60'),_0x48e83f['id']);return setRelationship(_0x5745b0,_0x2c6a88,_0x48e83f,'users');})['then'](function(){return setRelationship(_0x5745b0,_0x329f55,_0x48e83f,'contacts');})['then'](function(){return getServerInfo(_0x5745b0);})[_0x97be('0x6a')](function(_0x36eeac){logger[_0x97be('0x74')]('['+_0x2957ad['lastevent']['toUpperCase']()+']',JSON[_0x97be('0x21')](_0x36eeac));});};
\ No newline at end of file
+var _0x9ef3=['users','[OUTBOUND]','trigger:browser:url','unmanaged','lastevent','toUpperCase','The\x20Enduser\x20ID\x20is:','md5','util','ioredis','./util','../../../../config/environment','sugarcrm','redis','defaults','localhost','POST','info','Creating\x20new\x20ticket...','name','getString','Subjects','created_by','description','Descriptions','toISOString','slice','duration_hours','duration_minutes','parent_id','parent_name','direction','forEach','variableName','push','idField','set_entry','JSON','stringify','Calls','format','Basic\x20%s','apiKey','toString','base64','get_server_info','isNil','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','length','find','name_value_list','Agent\x20found!','resolve','value','user_id','Searching\x20enduser\x20with\x20phone','Contacts','phone_home','Enduser\x20found!','first_name','<unknown>','Caller\x20-\x20%s','[HTTP]','merge','map','type','string','nameField','customField','content','variable','custom_fields','customVariable','Variable','toLowerCase','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridname','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','catch','error','outbound','uri','recordingFormat','none','destcalleridname','destcalleridnum','Outbound'];(function(_0x305486,_0x24acd4){var _0xa04940=function(_0x29e866){while(--_0x29e866){_0x305486['push'](_0x305486['shift']());}};_0xa04940(++_0x24acd4);}(_0x9ef3,0x1e7));var _0x39ef=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9ef3[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require('bluebird');var md5=require(_0x39ef('0x0'));var util=require(_0x39ef('0x1'));var Redis=require(_0x39ef('0x2'));var intUtil=require(_0x39ef('0x3'));var config=require(_0x39ef('0x4'));var logger=require('../../../../config/logger')(_0x39ef('0x5'));config[_0x39ef('0x6')]=_[_0x39ef('0x7')](config[_0x39ef('0x6')],{'host':_0x39ef('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var def={'method':_0x39ef('0x9'),'json':!![]};function emit(_0x27303c,_0xa1cb74,_0x258715){io['to'](_0x27303c)['emit'](_0xa1cb74,_0x258715);}function getTicket(_0x2aec9d,_0x19aa45,_0x5b659d,_0x56a3cf,_0x44f677,_0x47da0d,_0x413e72,_0x14f70f){logger[_0x39ef('0xa')](_0x39ef('0xb'));var _0x39ce38=new Date();var _0x4fa11c=[{'name':_0x39ef('0xc'),'value':intUtil[_0x39ef('0xd')](_0x56a3cf[_0x39ef('0xe')],_0x44f677,'\x20')},{'name':'assigned_user_id','value':_0x19aa45['id']},{'name':_0x39ef('0xf'),'value':_0x19aa45['id']},{'name':_0x39ef('0x10'),'value':intUtil[_0x39ef('0xd')](_0x56a3cf[_0x39ef('0x11')],_0x44f677,'\x0a')},{'name':'date_start','value':_0x39ce38[_0x39ef('0x12')]()[_0x39ef('0x13')](0x0,0x13)['replace']('T','\x20')},{'name':_0x39ef('0x14'),'value':'0'},{'name':_0x39ef('0x15'),'value':'15'},{'name':_0x39ef('0x16'),'value':_0x5b659d['id']},{'name':'parent_type','value':'Contacts'},{'name':_0x39ef('0x17'),'value':_0x5b659d['name']},{'name':_0x39ef('0x18'),'value':_0x14f70f}];if(_0x47da0d['length']){_[_0x39ef('0x19')](_0x47da0d,function(_0x1de24e){if(_0x44f677[_0x1de24e[_0x39ef('0x1a')]]){_0x4fa11c[_0x39ef('0x1b')]({'name':_0x1de24e[_0x39ef('0x1c')],'value':_0x44f677[_0x1de24e[_0x39ef('0x1a')]]});}});}return request({'form':{'method':_0x39ef('0x1d'),'input_type':_0x39ef('0x1e'),'response_type':_0x39ef('0x1e'),'rest_data':JSON[_0x39ef('0x1f')]({'session':_0x413e72['id'],'module_name':_0x39ef('0x20'),'name_value_list':_0x4fa11c})}});}function getAuth(_0x6d7a58){return util[_0x39ef('0x21')](_0x39ef('0x22'),new Buffer(_0x6d7a58[_0x39ef('0x23')]+':X')[_0x39ef('0x24')](_0x39ef('0x25')));}function getServerInfo(_0xce1c06){return request({'form':{'method':_0x39ef('0x26'),'input_type':_0x39ef('0x1e'),'response_type':_0x39ef('0x1e'),'rest_data':JSON[_0x39ef('0x1f')]({'session':_0xce1c06['id']})}});}function getUser(_0x4416e1,_0x50f4c6,_0x2a8c17){if(!_[_0x39ef('0x27')](_0x50f4c6)){logger[_0x39ef('0xa')](_0x39ef('0x28'),_0x50f4c6);return request({'form':{'method':_0x39ef('0x29'),'input_type':_0x39ef('0x1e'),'response_type':_0x39ef('0x1e'),'rest_data':JSON[_0x39ef('0x1f')]({'session':_0x2a8c17['id'],'module_name':_0x39ef('0x2a'),'query':util[_0x39ef('0x21')](_0x39ef('0x2b'),_0x50f4c6),'order_by':'','offset':'0','select_fields':['id',_0x39ef('0xc'),_0x39ef('0x2c')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x39ef('0x2d')](function(_0x3f34ad){if(_0x3f34ad[_0x39ef('0x2e')][_0x39ef('0x2f')]){var _0x107aaf=_[_0x39ef('0x30')](_0x3f34ad[_0x39ef('0x2e')],function(_0xfc309f){return _0xfc309f[_0x39ef('0x31')][_0x39ef('0x2c')]['value']===_0x50f4c6;});if(_0x107aaf){logger[_0x39ef('0xa')](_0x39ef('0x32'));return BPromise[_0x39ef('0x33')]({'id':_0x107aaf[_0x39ef('0x31')]['id'][_0x39ef('0x34')],'name':_0x107aaf[_0x39ef('0x31')]['name'][_0x39ef('0x34')]});}}logger[_0x39ef('0xa')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x39ef('0x33')]({'id':_0x2a8c17[_0x39ef('0x31')][_0x39ef('0x35')][_0x39ef('0x34')],'name':_0x2a8c17[_0x39ef('0x31')][_0x39ef('0x2c')][_0x39ef('0x34')]});});}else{logger[_0x39ef('0xa')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise[_0x39ef('0x33')]({'id':_0x2a8c17['name_value_list'][_0x39ef('0x35')][_0x39ef('0x34')],'name':_0x2a8c17[_0x39ef('0x31')][_0x39ef('0x2c')][_0x39ef('0x34')]});}}function getEndUser(_0x21e55c,_0x165fc8,_0x24837f,_0x27a25d){logger['info'](_0x39ef('0x36'),_0x24837f);return request({'form':{'method':_0x39ef('0x29'),'input_type':_0x39ef('0x1e'),'response_type':'JSON','rest_data':JSON[_0x39ef('0x1f')]({'session':_0x27a25d['id'],'module_name':_0x39ef('0x37'),'query':util['format']('contacts.phone_home\x20=\x20\x22%s\x22',_0x24837f),'order_by':'','offset':'0','select_fields':['id',_0x39ef('0xc'),_0x39ef('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x39ef('0x2d')](function(_0x22ce50){if(_0x22ce50[_0x39ef('0x2e')][_0x39ef('0x2f')]){var _0x2d9b08=_[_0x39ef('0x30')](_0x22ce50[_0x39ef('0x2e')],function(_0x35fc27){return _0x35fc27[_0x39ef('0x31')][_0x39ef('0x38')]['value']===_0x24837f;});if(_0x2d9b08){logger[_0x39ef('0xa')](_0x39ef('0x39'));return BPromise[_0x39ef('0x33')]({'id':_0x2d9b08[_0x39ef('0x31')]['id'][_0x39ef('0x34')],'name':_0x2d9b08['name_value_list'][_0x39ef('0xc')][_0x39ef('0x34')],'phone':_0x2d9b08[_0x39ef('0x31')][_0x39ef('0x38')][_0x39ef('0x34')]});}}else{logger[_0x39ef('0xa')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':_0x39ef('0x1d'),'input_type':_0x39ef('0x1e'),'response_type':_0x39ef('0x1e'),'rest_data':JSON['stringify']({'session':_0x27a25d['id'],'module_name':'Contacts','name_value_list':[{'name':_0x39ef('0x3a'),'value':_0x165fc8!==_0x39ef('0x3b')?_0x165fc8:util[_0x39ef('0x21')](_0x39ef('0x3c'),_0x24837f)},{'name':_0x39ef('0x38'),'value':_0x24837f}]})}})[_0x39ef('0x2d')](function(_0x425309){logger[_0x39ef('0xa')]('Enduser\x20created.');return BPromise['resolve']({'id':_0x425309['id'],'name':_0x425309[_0x39ef('0x2e')]['first_name'][_0x39ef('0x34')],'phone':_0x425309[_0x39ef('0x2e')][_0x39ef('0x38')]['value']});});}});}function request(_0x57888b){logger['debug'](_0x39ef('0x3d'),JSON[_0x39ef('0x1f')](_0x57888b));return rp(_[_0x39ef('0x3e')](def,_0x57888b));}function getTags(_0x2189c1,_0x1a0d46){var _0x2a33e7=[];if(_0x2189c1&&_0x2189c1[_0x39ef('0x2f')]>0x0){_0x2a33e7=_[_0x39ef('0x3f')](_0x2189c1,_0x1a0d46);}return _0x2a33e7;}function getCustomFields(_0x2c8e93,_0x1c829f){var _0x152cd2=[];var _0x354e32={'custom_fields':[]};if(_0x2c8e93[_0x39ef('0x2f')]>0x0){_[_0x39ef('0x19')](_0x2c8e93,function(_0x583f5b){if(_0x583f5b[_0x39ef('0x40')]===_0x39ef('0x41')&&_0x583f5b[_0x39ef('0x42')]&&!_0x583f5b[_0x39ef('0x43')]){_0x354e32[_0x583f5b[_0x39ef('0x42')]['toLowerCase']()]=_0x583f5b[_0x39ef('0x44')][_0x39ef('0x24')]();}else if(_0x583f5b[_0x39ef('0x40')]===_0x39ef('0x41')&&_0x583f5b[_0x39ef('0x1c')]&&_0x583f5b[_0x39ef('0x43')]){_0x354e32['custom_fields'][_0x39ef('0x1b')]({'id':_0x583f5b[_0x39ef('0x1c')],'value':_0x583f5b[_0x39ef('0x44')][_0x39ef('0x24')]()});}else if(_0x583f5b[_0x39ef('0x40')]===_0x39ef('0x45')&&_0x583f5b[_0x39ef('0x1a')]&&_0x583f5b[_0x39ef('0x1c')]&&_0x583f5b[_0x39ef('0x43')]){_0x1c829f[_0x583f5b['variableName']]&&_0x354e32[_0x39ef('0x46')]['push']({'id':_0x583f5b[_0x39ef('0x1c')],'value':_0x1c829f[_0x583f5b[_0x39ef('0x1a')]][_0x39ef('0x24')]()});}else if(_0x583f5b['type']===_0x39ef('0x47')&&_0x583f5b[_0x39ef('0x48')]&&_0x583f5b['Variable'][_0x39ef('0xc')]&&_0x583f5b[_0x39ef('0x1c')]&&_0x583f5b[_0x39ef('0x43')]){_0x1c829f[_0x583f5b[_0x39ef('0x48')][_0x39ef('0xc')][_0x39ef('0x49')]()]&&_0x354e32['custom_fields'][_0x39ef('0x1b')]({'id':_0x583f5b[_0x39ef('0x1c')],'value':_0x1c829f[_0x583f5b[_0x39ef('0x48')]['name'][_0x39ef('0x49')]()][_0x39ef('0x24')]()});}});}return _0x354e32;}function getConnection(_0x20b20a){return request({'method':_0x39ef('0x9'),'form':{'method':_0x39ef('0x4a'),'input_type':_0x39ef('0x1e'),'response_type':'JSON','rest_data':JSON[_0x39ef('0x1f')]({'user_auth':{'user_name':_0x20b20a[_0x39ef('0x4b')],'password':_0x20b20a[_0x39ef('0x4c')],'encryption':_0x39ef('0x4d')},'application':_0x39ef('0x4e')})}})[_0x39ef('0x2d')](function(_0x593f84){var _0x475cc3=_0x593f84;if(_0x475cc3['id']){def[_0x39ef('0x4f')]=_0x475cc3['id'];return BPromise[_0x39ef('0x33')](_0x475cc3);}else{throw new Error(util[_0x39ef('0x21')]('Account\x20%d\x20is\x20not\x20valid',_0x20b20a['id']));}});}function setRelationship(_0x271d3a,_0x200ce7,_0x46f8dc,_0x49c95e){return request({'form':{'method':_0x39ef('0x50'),'input_type':'JSON','response_type':_0x39ef('0x1e'),'rest_data':JSON[_0x39ef('0x1f')]({'session':_0x271d3a['id'],'module_name':_0x39ef('0x20'),'module_id':_0x46f8dc['id'],'link_field_name':_0x49c95e,'related_ids':[_0x200ce7['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x39ef('0x51')]=function(_0x4e7dcf,_0xe7f063,_0x2ac09c,_0x2c4559,_0x43f56d,_0x2156b1){var _0x3466e2,_0x4e970a,_0x532a88,_0x343b0d;_0x2156b1[_0x39ef('0x52')]=intUtil[_0x39ef('0x53')](_0x2156b1[_0x39ef('0x52')]);_0x2156b1[_0x39ef('0x54')]=intUtil[_0x39ef('0x53')](_0x2156b1[_0x39ef('0x54')]);def['uri']=util[_0x39ef('0x21')](_0x39ef('0x55'),_0x2156b1['remoteUri']);if(_0x43f56d&&_0x43f56d[_0x39ef('0x56')]){logger[_0x39ef('0xa')](_0x39ef('0x57'),_0x39ef('0x58'));_0xe7f063['recordingURL']=util[_0x39ef('0x21')](_0x39ef('0x59'),_0x2156b1[_0x39ef('0x54')],_0xe7f063[_0x39ef('0x5a')],md5(_0xe7f063[_0x39ef('0x5a')]));}else{_0xe7f063[_0x39ef('0x5b')]='';}return getConnection(_0x2156b1)[_0x39ef('0x2d')](function(_0x1f1a36){_0x343b0d=_0x1f1a36;return getUser(_0x2156b1,_0x2c4559[_0x39ef('0xc')],_0x343b0d);})[_0x39ef('0x2d')](function(_0x17707c){_0x3466e2=_0x17707c;logger['info'](_0x39ef('0x5c'),_0x3466e2['id']);return getEndUser(_0x2156b1,_0xe7f063[_0x39ef('0x5d')],_0xe7f063['calleridnum'],_0x343b0d);})[_0x39ef('0x2d')](function(_0x5c7118){_0x4e970a=_0x5c7118;logger[_0x39ef('0xa')]('The\x20Enduser\x20ID\x20is:',_0x4e970a['id']);return getTicket(_0x2156b1,_0x3466e2,_0x4e970a,_0x2ac09c,_0xe7f063,_0x2ac09c[_0x39ef('0x5e')],_0x343b0d,'Inbound');})[_0x39ef('0x2d')](function(_0x54890d){_0x532a88=_0x54890d;logger[_0x39ef('0xa')](_0x39ef('0x5f'));logger[_0x39ef('0xa')](_0x39ef('0x60'),_0x532a88['id']);return setRelationship(_0x343b0d,_0x3466e2,_0x532a88,'users');})['then'](function(){return setRelationship(_0x343b0d,_0x4e970a,_0x532a88,_0x39ef('0x61'));})['then'](function(){return getServerInfo(_0x343b0d);})[_0x39ef('0x2d')](function(_0x1df428){var _0x24c896=parseInt(_0x1df428[_0x39ef('0x62')][_0x39ef('0x63')](0x0));var _0x532bf4=util[_0x39ef('0x21')](_0x39ef('0x64'),_0x2156b1[_0x39ef('0x52')],_0x532a88['id']);if(_0x24c896>0x6){_0x532bf4=util[_0x39ef('0x21')](_0x39ef('0x65'),_0x2156b1[_0x39ef('0x52')],_0x532a88['id']);}logger['info']('[QUEUE]',_0x39ef('0x66'));emit(util['format'](_0x39ef('0x67'),_0x2c4559[_0x39ef('0xc')]),'trigger:browser:url',{'uri':_0x532bf4});})[_0x39ef('0x68')](function(_0x72dff9){logger[_0x39ef('0x69')](_0x39ef('0x57'),JSON['stringify'](_0x72dff9));});};exports[_0x39ef('0x6a')]=function(_0x1cf20e,_0x36a937,_0xd7428b,_0x509dfb,_0x3f74d8,_0x407755,_0x3542e0){var _0x47306e,_0xc758bd,_0x5ea2a2,_0x2bdf4e;_0x407755[_0x39ef('0x52')]=intUtil[_0x39ef('0x53')](_0x407755[_0x39ef('0x52')]);_0x407755['serverUrl']=intUtil[_0x39ef('0x53')](_0x407755[_0x39ef('0x54')]);def[_0x39ef('0x6b')]=util['format'](_0x39ef('0x55'),_0x407755[_0x39ef('0x52')]);if(_0x3542e0&&_0x3542e0[_0x39ef('0x6c')]&&_0x3542e0[_0x39ef('0x6c')]!==_0x39ef('0x6d')){logger['info']('[OUTBOUND]',_0x39ef('0x58'));_0x36a937[_0x39ef('0x5b')]=util[_0x39ef('0x21')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x407755[_0x39ef('0x54')],_0x36a937[_0x39ef('0x5a')],md5(_0x36a937['uniqueid']));}return getConnection(_0x407755)[_0x39ef('0x2d')](function(_0x5ed3dc){_0x2bdf4e=_0x5ed3dc;return getUser(_0x407755,_0x509dfb[_0x39ef('0xc')],_0x2bdf4e);})[_0x39ef('0x2d')](function(_0x2bf2cc){_0x47306e=_0x2bf2cc;logger[_0x39ef('0xa')](_0x39ef('0x5c'),_0x47306e['id']);return getEndUser(_0x407755,_0x36a937[_0x39ef('0x6e')],_0x36a937[_0x39ef('0x6f')],_0x2bdf4e);})[_0x39ef('0x2d')](function(_0xc7db51){_0xc758bd=_0xc7db51;logger['info']('The\x20Enduser\x20ID\x20is:',_0xc758bd['id']);return getTicket(_0x407755,_0x47306e,_0xc758bd,_0xd7428b,_0x36a937,_0xd7428b[_0x39ef('0x5e')],_0x2bdf4e,_0x39ef('0x70'));})[_0x39ef('0x2d')](function(_0x444267){_0x5ea2a2=_0x444267;logger[_0x39ef('0xa')]('Ticket\x20created!');logger[_0x39ef('0xa')]('The\x20Ticket\x20ID\x20is:',_0x5ea2a2['id']);return setRelationship(_0x2bdf4e,_0x47306e,_0x5ea2a2,_0x39ef('0x71'));})[_0x39ef('0x2d')](function(){return setRelationship(_0x2bdf4e,_0xc758bd,_0x5ea2a2,_0x39ef('0x61'));})[_0x39ef('0x2d')](function(){return getServerInfo(_0x2bdf4e);})[_0x39ef('0x2d')](function(_0x473582){var _0x450555=parseInt(_0x473582[_0x39ef('0x62')]['charAt'](0x0));var _0x2d42f6=util[_0x39ef('0x21')](_0x39ef('0x64'),_0x407755['remoteUri'],_0x5ea2a2['id']);if(_0x450555>0x6){_0x2d42f6=util['format'](_0x39ef('0x65'),_0x407755['remoteUri'],_0x5ea2a2['id']);}logger[_0x39ef('0xa')](_0x39ef('0x72'),_0x39ef('0x66'));emit(util[_0x39ef('0x21')](_0x39ef('0x67'),_0x509dfb[_0x39ef('0xc')]),_0x39ef('0x73'),{'uri':_0x2d42f6});})[_0x39ef('0x68')](function(_0xeeab80){logger[_0x39ef('0x69')](_0x39ef('0x72'),JSON['stringify'](_0xeeab80));});};exports[_0x39ef('0x74')]=function(_0x54e694,_0x3f7d6a,_0x134ad7,_0x110bc0,_0x383627,_0x5006a2){var _0x4c261c,_0x5ed6ad,_0x26fb02,_0x56846f;_0x5006a2['remoteUri']=intUtil[_0x39ef('0x53')](_0x5006a2[_0x39ef('0x52')]);_0x5006a2[_0x39ef('0x54')]=intUtil[_0x39ef('0x53')](_0x5006a2['serverUrl']);def[_0x39ef('0x6b')]=util[_0x39ef('0x21')]('%s/service/v4_1/rest.php',_0x5006a2[_0x39ef('0x52')]);if(_0x383627&&_0x383627['monitor_format']){logger[_0x39ef('0xa')]('['+_0x3f7d6a[_0x39ef('0x75')][_0x39ef('0x76')]()+']',_0x39ef('0x58'));_0x3f7d6a['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5006a2[_0x39ef('0x54')],_0x3f7d6a[_0x39ef('0x5a')],md5(_0x3f7d6a[_0x39ef('0x5a')]));}else{_0x3f7d6a[_0x39ef('0x5b')]='';}return getConnection(_0x5006a2)[_0x39ef('0x2d')](function(_0x30519c){_0x56846f=_0x30519c;if(!_['isNil'](_0x110bc0)){return getUser(_0x5006a2,_0x110bc0['name'],_0x56846f);}else{return getUser(_0x5006a2,null,_0x56846f);}})[_0x39ef('0x2d')](function(_0x386b98){_0x4c261c=_0x386b98;logger[_0x39ef('0xa')]('The\x20User\x20ID\x20is:',_0x4c261c['id']);return getEndUser(_0x5006a2,_0x3f7d6a['calleridname'],_0x3f7d6a['calleridnum'],_0x56846f);})[_0x39ef('0x2d')](function(_0x515b5a){_0x5ed6ad=_0x515b5a;logger[_0x39ef('0xa')](_0x39ef('0x77'),_0x5ed6ad['id']);return getTicket(_0x5006a2,_0x4c261c,_0x5ed6ad,_0x134ad7,_0x3f7d6a,_0x134ad7['Fields'],_0x56846f,'Inbound');})[_0x39ef('0x2d')](function(_0x27c5cb){_0x26fb02=_0x27c5cb;logger['info']('Ticket\x20created!');logger[_0x39ef('0xa')](_0x39ef('0x60'),_0x26fb02['id']);return setRelationship(_0x56846f,_0x4c261c,_0x26fb02,_0x39ef('0x71'));})[_0x39ef('0x2d')](function(){return setRelationship(_0x56846f,_0x5ed6ad,_0x26fb02,_0x39ef('0x61'));})[_0x39ef('0x2d')](function(){return getServerInfo(_0x56846f);})[_0x39ef('0x68')](function(_0x1a0f4d){logger['error']('['+_0x3f7d6a[_0x39ef('0x75')][_0x39ef('0x76')]()+']',JSON[_0x39ef('0x1f')](_0x1a0f4d));});};
\ No newline at end of file