Built motion from commit e1760111.|2.6.18
[motion2.git] / server / services / xdr / recordings.controller.js
index 894fcc2..203f6d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d1b=['hangup','[%s][recordings][hangup]','cause-txt','calleridnum','calleridname','connectedlinenum','connectedlinename','type','outbound','forEach','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','queue','blindtransfer','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','transfereruniqueid','lodash','util','./utils','./transfers.controller','info','format','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','accountcode','then','membername','UserId','request','CreateVoiceRecording','newchannel','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','exten','context','channel','error','debug','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','transfer','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','endsWith','value','replace','.wav49','.WAV','find','monitors'];(function(_0x22b9b9,_0x180942){var _0x7b5dfa=function(_0xe172e0){while(--_0xe172e0){_0x22b9b9['push'](_0x22b9b9['shift']());}};_0x7b5dfa(++_0x180942);}(_0x4d1b,0x12b));var _0xb4d1=function(_0x5f519b,_0x5b606f){_0x5f519b=_0x5f519b-0x0;var _0x2461e2=_0x4d1b[_0x5f519b];return _0x2461e2;};'use strict';var _=require(_0xb4d1('0x0'));var util=require(_0xb4d1('0x1'));var utils=require(_0xb4d1('0x2'));var transfers=require(_0xb4d1('0x3'));var recordings={};function writeDB(_0xc6b905){var _0x1c220f;utils[_0xb4d1('0x4')](util[_0xb4d1('0x5')](_0xb4d1('0x6'),_0xc6b905[_0xb4d1('0x7')]));if(transfers[_0xb4d1('0x8')][_0xc6b905[_0xb4d1('0x7')]]){_0x1c220f=_0xc6b905[_0xb4d1('0x7')];_0xc6b905[_0xb4d1('0x7')]=transfers['blinds'][_0xc6b905[_0xb4d1('0x7')]][_0xb4d1('0x9')];}if(_0xc6b905[_0xb4d1('0xa')]){utils['getUserByInternal'](_0xc6b905[_0xb4d1('0xa')])[_0xb4d1('0xb')](function(_0x33cd94){if(_0x33cd94){_0xc6b905[_0xb4d1('0xc')]=_0x33cd94['name'];_0xc6b905[_0xb4d1('0xd')]=_0x33cd94['id'];}utils[_0xb4d1('0xe')]('CreateVoiceRecording',_0xc6b905);});}else{utils[_0xb4d1('0xe')](_0xb4d1('0xf'),_0xc6b905);}if(_0x1c220f)delete transfers['blinds'][_0x1c220f];}exports[_0xb4d1('0x10')]=function(_0x3df4f1){try{utils['debug'](util[_0xb4d1('0x5')](_0xb4d1('0x11'),_0x3df4f1[_0xb4d1('0x7')]),_0x3df4f1);if(_0x3df4f1[_0xb4d1('0x7')]==_0x3df4f1[_0xb4d1('0x12')]){utils[_0xb4d1('0x4')](util[_0xb4d1('0x5')](_0xb4d1('0x13'),_0x3df4f1[_0xb4d1('0x7')],_0x3df4f1['context'],_0x3df4f1[_0xb4d1('0x14')]));recordings[_0x3df4f1[_0xb4d1('0x7')]]={'uniqueid':_0x3df4f1[_0xb4d1('0x7')],'accountcode':_0x3df4f1[_0xb4d1('0xa')],'exten':_0x3df4f1[_0xb4d1('0x14')],'context':_0x3df4f1[_0xb4d1('0x15')],'channel':_0x3df4f1[_0xb4d1('0x16')],'monitors':[]};}}catch(_0x295a45){utils[_0xb4d1('0x17')](util[_0xb4d1('0x5')](_0xb4d1('0x11'),_0x3df4f1[_0xb4d1('0x7')]),_0x295a45);}};exports['newstate']=function(_0x60b955){try{utils[_0xb4d1('0x18')](util[_0xb4d1('0x5')](_0xb4d1('0x19'),_0x60b955['uniqueid']),_0x60b955);if(!_[_0xb4d1('0x1a')](recordings[_0x60b955[_0xb4d1('0x7')]])&&_0x60b955[_0xb4d1('0x1b')]==0x6){utils['info'](util[_0xb4d1('0x5')](_0xb4d1('0x1c'),_0x60b955[_0xb4d1('0x7')],_0x60b955[_0xb4d1('0x15')],_0x60b955['channel']));}else if(!_[_0xb4d1('0x1a')](recordings[_0x60b955[_0xb4d1('0x12')]])&&_0x60b955['channelstate']==0x6&&_0x60b955[_0xb4d1('0x15')]!=_0xb4d1('0x1d')){utils[_0xb4d1('0x4')](util[_0xb4d1('0x5')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x60b955[_0xb4d1('0x7')],_0x60b955[_0xb4d1('0x12')],_0x60b955[_0xb4d1('0x15')],_0x60b955[_0xb4d1('0x16')]));recordings[_0x60b955['linkedid']]['accountcode']=_0x60b955[_0xb4d1('0xa')];}}catch(_0x447ae7){utils[_0xb4d1('0x17')](util[_0xb4d1('0x5')](_0xb4d1('0x19'),_0x60b955[_0xb4d1('0x7')]),_0x447ae7);}};exports['varset']=function(_0x362d75){try{if(!_[_0xb4d1('0x1a')](_0x362d75[_0xb4d1('0x1e')])&&!_['isNil'](_0x362d75[_0xb4d1('0x1e')][_0xb4d1('0x1f')])){utils[_0xb4d1('0x18')](util[_0xb4d1('0x5')](_0xb4d1('0x20'),_0x362d75[_0xb4d1('0x7')]),_0x362d75);utils['info'](util['format'](_0xb4d1('0x21'),_0x362d75[_0xb4d1('0x7')],_0x362d75[_0xb4d1('0x1e')],_0x362d75['value']));if(_[_0xb4d1('0x22')](_0x362d75['value'],'.wav49')){_0x362d75[_0xb4d1('0x23')]=_0x362d75['value'][_0xb4d1('0x24')](_0xb4d1('0x25'),_0xb4d1('0x26'));}if(recordings[_0x362d75[_0xb4d1('0x12')]]){var _0x2c8f33=_[_0xb4d1('0x27')](recordings[_0x362d75[_0xb4d1('0x12')]][_0xb4d1('0x28')],{'value':_0x362d75['value']});if(_[_0xb4d1('0x1a')](_0x2c8f33)){recordings[_0x362d75[_0xb4d1('0x12')]]['monitors']['push']({'value':_0x362d75[_0xb4d1('0x23')]});}}}}catch(_0x16e204){utils[_0xb4d1('0x17')](util[_0xb4d1('0x5')]('[%s][recordings][varset]',_0x362d75[_0xb4d1('0x7')]),_0x16e204);}};exports[_0xb4d1('0x29')]=function(_0x4dcfaf){try{if(!_['isNil'](recordings[_0x4dcfaf[_0xb4d1('0x7')]])){utils['debug'](util['format'](_0xb4d1('0x2a'),_0x4dcfaf['uniqueid']),_0x4dcfaf);utils[_0xb4d1('0x4')](util[_0xb4d1('0x5')]('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x4dcfaf[_0xb4d1('0x7')],_0x4dcfaf['calleridnum'],_0x4dcfaf['calleridname'],_0x4dcfaf[_0xb4d1('0x2b')]));recordings[_0x4dcfaf[_0xb4d1('0x7')]]['calleridnum']=_0x4dcfaf[_0xb4d1('0x2c')];recordings[_0x4dcfaf['uniqueid']][_0xb4d1('0x2d')]=_0x4dcfaf[_0xb4d1('0x2d')];recordings[_0x4dcfaf[_0xb4d1('0x7')]]['connectedlinenum']=_0x4dcfaf[_0xb4d1('0x2e')];recordings[_0x4dcfaf['uniqueid']][_0xb4d1('0x2f')]=_0x4dcfaf[_0xb4d1('0x2f')];if(recordings[_0x4dcfaf[_0xb4d1('0x7')]][_0xb4d1('0x30')]==_0xb4d1('0x31')&&recordings[_0x4dcfaf[_0xb4d1('0x7')]][_0xb4d1('0xa')]){recordings[_0x4dcfaf[_0xb4d1('0x7')]][_0xb4d1('0x2e')]=recordings[_0x4dcfaf['uniqueid']][_0xb4d1('0xa')];recordings[_0x4dcfaf[_0xb4d1('0x7')]][_0xb4d1('0x2f')]='';}recordings[_0x4dcfaf[_0xb4d1('0x7')]][_0xb4d1('0x28')][_0xb4d1('0x32')](function(_0x563cc2){var _0x2038b4=_['clone'](recordings[_0x4dcfaf[_0xb4d1('0x7')]]);_0x2038b4[_0xb4d1('0x23')]=_0x563cc2[_0xb4d1('0x23')];writeDB(_0x2038b4);});delete recordings[_0x4dcfaf['uniqueid']];}}catch(_0x1fdbfe){utils[_0xb4d1('0x17')](util[_0xb4d1('0x5')]('[%s][recordings][hangup]',_0x4dcfaf[_0xb4d1('0x7')]),_0x1fdbfe);}};exports[_0xb4d1('0x33')]=function(_0x3b6469){try{if(!_['isNil'](recordings[_0x3b6469['uniqueid']])){utils['debug'](util[_0xb4d1('0x5')](_0xb4d1('0x34'),_0x3b6469[_0xb4d1('0x7')]),_0x3b6469);utils['info'](util['format'](_0xb4d1('0x35'),_0x3b6469[_0xb4d1('0x7')],_0x3b6469[_0xb4d1('0x36')],_0x3b6469['appdata']));if(_0x3b6469[_0xb4d1('0x36')]['toLowerCase']()=='set'&&_['startsWith'](_0x3b6469['appdata'][_0xb4d1('0x37')](),'cdr')){var _0xadf537=_0x3b6469['appdata']['split']('=');var _0x16cbf5=_0xadf537[0x0][_0xb4d1('0x38')](_0xadf537[0x0][_0xb4d1('0x39')]('(')+0x1,_0xadf537[0x0][_0xb4d1('0x39')](')'));var _0x411afa=_0xadf537[0x1];recordings[_0x3b6469[_0xb4d1('0x7')]][_0x16cbf5]=_0x411afa;}}}catch(_0x3620aa){utils[_0xb4d1('0x17')](util[_0xb4d1('0x5')]('[%s][recordings][newexten]',_0x3b6469[_0xb4d1('0x7')]),_0x3620aa);}};exports[_0xb4d1('0x3a')]=function(_0x38a2b8){try{if(!_[_0xb4d1('0x1a')](recordings[_0x38a2b8['uniqueid']])){utils[_0xb4d1('0x18')](util[_0xb4d1('0x5')](_0xb4d1('0x3b'),_0x38a2b8[_0xb4d1('0x7')]),_0x38a2b8);utils[_0xb4d1('0x4')](util[_0xb4d1('0x5')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x38a2b8['uniqueid'],_0x38a2b8[_0xb4d1('0x3c')]));recordings[_0x38a2b8[_0xb4d1('0x7')]][_0xb4d1('0x3c')]=_0x38a2b8[_0xb4d1('0x3c')];}}catch(_0x4a961c){utils[_0xb4d1('0x17')](util[_0xb4d1('0x5')](_0xb4d1('0x3b'),_0x38a2b8[_0xb4d1('0x7')]),_0x4a961c);}};exports[_0xb4d1('0x3d')]=function(_0x35f3c2){try{utils['debug'](util['format']('[%s][recordings][blindtransfer]',_0x35f3c2['uniqueid']),_0x35f3c2);utils[_0xb4d1('0x4')](util['format'](_0xb4d1('0x3e'),_0x35f3c2['uniqueid'],_0x35f3c2[_0xb4d1('0x3f')],_0x35f3c2[_0xb4d1('0x40')],_0x35f3c2[_0xb4d1('0x41')],_0x35f3c2[_0xb4d1('0x42')]));if(recordings[_0x35f3c2[_0xb4d1('0x43')]]&&transfers[_0xb4d1('0x8')][_0x35f3c2['transfereruniqueid']]){transfers[_0xb4d1('0x8')][_0x35f3c2[_0xb4d1('0x43')]]['recording']=!![];}}catch(_0x3fa7b3){utils[_0xb4d1('0x17')](util[_0xb4d1('0x5')]('[%s][recordings][blindtransfer]',_0x35f3c2['uniqueid']),_0x3fa7b3);}};
\ No newline at end of file
+var _0xf11a=['forEach','clone','newexten','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','cdr','substring','lastIndexOf','[%s][recordings][newexten]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','[%s][recordings][queuecallerjoin]','lodash','util','./utils','info','format','[%s][recordings][writeDB]','uniqueid','accountcode','membername','name','UserId','CreateVoiceRecording','request','newchannel','debug','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','exten','context','newstate','[%s][recordings][newstate]','channelstate','channel','isNil','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','error','varset','variable','mixmonitor_filename','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','.wav49','replace','.WAV','find','monitors','push','[%s][recordings][varset]','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridname','cause-txt','calleridnum','connectedlinenum','connectedlinename','type'];(function(_0x1bb927,_0x3f1975){var _0x3df796=function(_0x57eacf){while(--_0x57eacf){_0x1bb927['push'](_0x1bb927['shift']());}};_0x3df796(++_0x3f1975);}(_0xf11a,0x189));var _0xaf11=function(_0x307086,_0x3bfe4e){_0x307086=_0x307086-0x0;var _0x699043=_0xf11a[_0x307086];return _0x699043;};'use strict';var _=require(_0xaf11('0x0'));var util=require(_0xaf11('0x1'));var utils=require(_0xaf11('0x2'));var recordings={};function writeDB(_0x512fc3){utils[_0xaf11('0x3')](util[_0xaf11('0x4')](_0xaf11('0x5'),_0x512fc3[_0xaf11('0x6')]));if(_0x512fc3['accountcode']){utils['getUserByInternal'](_0x512fc3[_0xaf11('0x7')])['then'](function(_0x4a4620){if(_0x4a4620){_0x512fc3[_0xaf11('0x8')]=_0x4a4620[_0xaf11('0x9')];_0x512fc3[_0xaf11('0xa')]=_0x4a4620['id'];}utils['request'](_0xaf11('0xb'),_0x512fc3);});}else{utils[_0xaf11('0xc')](_0xaf11('0xb'),_0x512fc3);}}exports[_0xaf11('0xd')]=function(_0x32fa11){try{utils[_0xaf11('0xe')](util[_0xaf11('0x4')](_0xaf11('0xf'),_0x32fa11['uniqueid']),_0x32fa11);if(_0x32fa11[_0xaf11('0x6')]==_0x32fa11[_0xaf11('0x10')]){utils[_0xaf11('0x3')](util[_0xaf11('0x4')](_0xaf11('0x11'),_0x32fa11[_0xaf11('0x6')],_0x32fa11['context'],_0x32fa11[_0xaf11('0x12')]));recordings[_0x32fa11[_0xaf11('0x6')]]={'uniqueid':_0x32fa11[_0xaf11('0x6')],'accountcode':_0x32fa11[_0xaf11('0x7')],'exten':_0x32fa11[_0xaf11('0x12')],'context':_0x32fa11[_0xaf11('0x13')],'channel':_0x32fa11['channel'],'monitors':[]};}}catch(_0x4140a3){utils['error'](util[_0xaf11('0x4')](_0xaf11('0xf'),_0x32fa11[_0xaf11('0x6')]),_0x4140a3);}};exports[_0xaf11('0x14')]=function(_0x32fda6){try{utils['debug'](util['format'](_0xaf11('0x15'),_0x32fda6['uniqueid']),_0x32fda6);if(!_['isNil'](recordings[_0x32fda6[_0xaf11('0x6')]])&&_0x32fda6[_0xaf11('0x16')]==0x6){utils[_0xaf11('0x3')](util[_0xaf11('0x4')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x32fda6['uniqueid'],_0x32fda6[_0xaf11('0x13')],_0x32fda6[_0xaf11('0x17')]));}else if(!_[_0xaf11('0x18')](recordings[_0x32fda6['linkedid']])&&_0x32fda6['channelstate']==0x6&&_0x32fda6[_0xaf11('0x13')]!='transfer'){utils['info'](util[_0xaf11('0x4')](_0xaf11('0x19'),_0x32fda6[_0xaf11('0x6')],_0x32fda6[_0xaf11('0x10')],_0x32fda6[_0xaf11('0x13')],_0x32fda6[_0xaf11('0x17')]));recordings[_0x32fda6[_0xaf11('0x10')]]['accountcode']=_0x32fda6[_0xaf11('0x7')];}}catch(_0x448626){utils[_0xaf11('0x1a')](util[_0xaf11('0x4')](_0xaf11('0x15'),_0x32fda6[_0xaf11('0x6')]),_0x448626);}};exports[_0xaf11('0x1b')]=function(_0x81bda7){try{if(!_['isNil'](_0x81bda7['variable'])&&!_[_0xaf11('0x18')](_0x81bda7[_0xaf11('0x1c')][_0xaf11('0x1d')])){utils[_0xaf11('0xe')](util[_0xaf11('0x4')]('[%s][recordings][varset]',_0x81bda7[_0xaf11('0x6')]),_0x81bda7);utils[_0xaf11('0x3')](util[_0xaf11('0x4')](_0xaf11('0x1e'),_0x81bda7[_0xaf11('0x6')],_0x81bda7[_0xaf11('0x1c')],_0x81bda7[_0xaf11('0x1f')]));if(_['endsWith'](_0x81bda7['value'],_0xaf11('0x20'))){_0x81bda7['value']=_0x81bda7['value'][_0xaf11('0x21')](_0xaf11('0x20'),_0xaf11('0x22'));}if(recordings[_0x81bda7[_0xaf11('0x10')]]){var _0x25c148=_[_0xaf11('0x23')](recordings[_0x81bda7[_0xaf11('0x10')]]['monitors'],{'value':_0x81bda7[_0xaf11('0x1f')]});if(_[_0xaf11('0x18')](_0x25c148)){recordings[_0x81bda7[_0xaf11('0x10')]][_0xaf11('0x24')][_0xaf11('0x25')]({'value':_0x81bda7[_0xaf11('0x1f')]});}}}}catch(_0x40bd78){utils[_0xaf11('0x1a')](util[_0xaf11('0x4')](_0xaf11('0x26'),_0x81bda7['uniqueid']),_0x40bd78);}};exports[_0xaf11('0x27')]=function(_0x4fe389){try{if(!_[_0xaf11('0x18')](recordings[_0x4fe389['uniqueid']])){utils[_0xaf11('0xe')](util[_0xaf11('0x4')](_0xaf11('0x28'),_0x4fe389[_0xaf11('0x6')]),_0x4fe389);utils[_0xaf11('0x3')](util[_0xaf11('0x4')](_0xaf11('0x29'),_0x4fe389['uniqueid'],_0x4fe389['calleridnum'],_0x4fe389[_0xaf11('0x2a')],_0x4fe389[_0xaf11('0x2b')]));recordings[_0x4fe389[_0xaf11('0x6')]][_0xaf11('0x2c')]=_0x4fe389[_0xaf11('0x2c')];recordings[_0x4fe389[_0xaf11('0x6')]][_0xaf11('0x2a')]=_0x4fe389[_0xaf11('0x2a')];recordings[_0x4fe389[_0xaf11('0x6')]][_0xaf11('0x2d')]=_0x4fe389[_0xaf11('0x2d')];recordings[_0x4fe389['uniqueid']][_0xaf11('0x2e')]=_0x4fe389[_0xaf11('0x2e')];if(recordings[_0x4fe389[_0xaf11('0x6')]][_0xaf11('0x2f')]=='outbound'&&recordings[_0x4fe389[_0xaf11('0x6')]]['accountcode']){recordings[_0x4fe389[_0xaf11('0x6')]]['connectedlinenum']=recordings[_0x4fe389[_0xaf11('0x6')]][_0xaf11('0x7')];recordings[_0x4fe389[_0xaf11('0x6')]]['connectedlinename']='';}recordings[_0x4fe389[_0xaf11('0x6')]][_0xaf11('0x24')][_0xaf11('0x30')](function(_0x39033c){var _0x1289bf=_[_0xaf11('0x31')](recordings[_0x4fe389[_0xaf11('0x6')]]);_0x1289bf['value']=_0x39033c[_0xaf11('0x1f')];writeDB(_0x1289bf);});delete recordings[_0x4fe389[_0xaf11('0x6')]];}}catch(_0x405c97){utils[_0xaf11('0x1a')](util[_0xaf11('0x4')]('[%s][recordings][hangup]',_0x4fe389['uniqueid']),_0x405c97);}};exports[_0xaf11('0x32')]=function(_0x441d95){try{if(!_[_0xaf11('0x18')](recordings[_0x441d95['uniqueid']])){utils[_0xaf11('0xe')](util[_0xaf11('0x4')]('[%s][recordings][newexten]',_0x441d95[_0xaf11('0x6')]),_0x441d95);utils[_0xaf11('0x3')](util[_0xaf11('0x4')](_0xaf11('0x33'),_0x441d95[_0xaf11('0x6')],_0x441d95[_0xaf11('0x34')],_0x441d95[_0xaf11('0x35')]));if(_0x441d95[_0xaf11('0x34')][_0xaf11('0x36')]()==_0xaf11('0x37')&&_['startsWith'](_0x441d95[_0xaf11('0x35')][_0xaf11('0x36')](),_0xaf11('0x38'))){var _0x124d36=_0x441d95[_0xaf11('0x35')]['split']('=');var _0x202b64=_0x124d36[0x0][_0xaf11('0x39')](_0x124d36[0x0]['lastIndexOf']('(')+0x1,_0x124d36[0x0][_0xaf11('0x3a')](')'));var _0x29ceda=_0x124d36[0x1];recordings[_0x441d95[_0xaf11('0x6')]][_0x202b64]=_0x29ceda;}}}catch(_0x38ab60){utils['error'](util['format'](_0xaf11('0x3b'),_0x441d95[_0xaf11('0x6')]),_0x38ab60);}};exports['queuecallerjoin']=function(_0x5a893e){try{if(!_[_0xaf11('0x18')](recordings[_0x5a893e[_0xaf11('0x6')]])){utils[_0xaf11('0xe')](util['format']('[%s][recordings][queuecallerjoin]',_0x5a893e[_0xaf11('0x6')]),_0x5a893e);utils[_0xaf11('0x3')](util[_0xaf11('0x4')](_0xaf11('0x3c'),_0x5a893e[_0xaf11('0x6')],_0x5a893e[_0xaf11('0x3d')]));recordings[_0x5a893e[_0xaf11('0x6')]]['queue']=_0x5a893e[_0xaf11('0x3d')];}}catch(_0xfde867){utils['error'](util[_0xaf11('0x4')](_0xaf11('0x3e'),_0x5a893e['uniqueid']),_0xfde867);}};
\ No newline at end of file